Imported Upstream version 7.44.0 13/65013/1
authorSeonah Moon <seonah1.moon@samsung.com>
Thu, 7 Apr 2016 01:07:19 +0000 (10:07 +0900)
committerSeonah Moon <seonah1.moon@samsung.com>
Thu, 7 Apr 2016 01:07:40 +0000 (10:07 +0900)
Change-Id: Iacb2e604edff0cb8e7687289419ad1908a7a9de6

1354 files changed:
CHANGES
CMake/FindGSS.cmake
CMakeLists.txt
MacOSX-Framework
Makefile
Makefile.am
Makefile.in
README
RELEASE-NOTES
acinclude.m4
aclocal.m4
buildconf
compile
configure
configure.ac
curl-config.in
depcomp
docs/BINDINGS
docs/BUGS
docs/CODE_OF_CONDUCT.md [new file with mode: 0644]
docs/CONTRIBUTE
docs/DISTRO-DILEMMA
docs/FAQ
docs/FEATURES
docs/HTTP-COOKIES
docs/HTTP2.md [new file with mode: 0644]
docs/INSTALL
docs/INSTALL.devcpp
docs/INTERNALS
docs/KNOWN_BUGS
docs/LIBCURL-STRUCTS [deleted file]
docs/LICENSE-MIXING
docs/MAIL-ETIQUETTE
docs/MANUAL
docs/Makefile.am
docs/Makefile.in
docs/RELEASE-PROCEDURE
docs/ROADMAP.md [new file with mode: 0644]
docs/SSL-PROBLEMS
docs/THANKS
docs/TODO
docs/TheArtOfHttpScripting
docs/VERSIONS
docs/curl-config.html
docs/curl-config.pdf
docs/curl.1
docs/curl.html
docs/curl.pdf
docs/examples/10-at-a-time.c
docs/examples/Makefile.in
docs/examples/Makefile.inc
docs/examples/Makefile.m32
docs/examples/Makefile.netware
docs/examples/anyauthput.c
docs/examples/asiohiper.cpp
docs/examples/cacertinmem.c
docs/examples/certinfo.c
docs/examples/chkspeed.c
docs/examples/cookie_interface.c
docs/examples/curlgtk.c
docs/examples/curlx.c
docs/examples/debug.c
docs/examples/evhiperfifo.c
docs/examples/externalsocket.c
docs/examples/fileupload.c
docs/examples/fopen.c
docs/examples/ftp-wildcard.c
docs/examples/ftpget.c
docs/examples/ftpgetinfo.c
docs/examples/ftpgetresp.c
docs/examples/ftpsget.c
docs/examples/ftpupload.c
docs/examples/ftpuploadresume.c
docs/examples/getinfo.c
docs/examples/getinmemory.c
docs/examples/ghiper.c
docs/examples/hiperfifo.c
docs/examples/href_extractor.c
docs/examples/htmltidy.c
docs/examples/htmltitle.cpp
docs/examples/http-post.c
docs/examples/http2-download.c [new file with mode: 0644]
docs/examples/http2-serverpush.c [new file with mode: 0644]
docs/examples/http2-upload.c [new file with mode: 0644]
docs/examples/httpcustomheader.c
docs/examples/httpput.c
docs/examples/https.c
docs/examples/imap-append.c
docs/examples/imap-ssl.c
docs/examples/multi-debugcallback.c
docs/examples/multi-double.c
docs/examples/multi-post.c
docs/examples/multi-single.c
docs/examples/multi-uv.c
docs/examples/multithread.c
docs/examples/opensslthreadlock.c
docs/examples/persistant.c
docs/examples/pop3-multi.c
docs/examples/pop3-retr.c
docs/examples/pop3-ssl.c
docs/examples/pop3-tls.c
docs/examples/post-callback.c
docs/examples/postinmemory.c
docs/examples/postit2.c
docs/examples/sftpget.c
docs/examples/smtp-mail.c
docs/examples/smtp-ssl.c
docs/examples/xmlstream.c
docs/libcurl/ABI
docs/libcurl/Makefile.am
docs/libcurl/Makefile.in
docs/libcurl/curl_easy_cleanup.3
docs/libcurl/curl_easy_cleanup.html
docs/libcurl/curl_easy_cleanup.pdf
docs/libcurl/curl_easy_duphandle.3
docs/libcurl/curl_easy_duphandle.html
docs/libcurl/curl_easy_duphandle.pdf
docs/libcurl/curl_easy_escape.3
docs/libcurl/curl_easy_escape.html
docs/libcurl/curl_easy_escape.pdf
docs/libcurl/curl_easy_getinfo.3
docs/libcurl/curl_easy_getinfo.html
docs/libcurl/curl_easy_getinfo.pdf
docs/libcurl/curl_easy_init.html
docs/libcurl/curl_easy_init.pdf
docs/libcurl/curl_easy_pause.html
docs/libcurl/curl_easy_pause.pdf
docs/libcurl/curl_easy_perform.3
docs/libcurl/curl_easy_perform.html
docs/libcurl/curl_easy_perform.pdf
docs/libcurl/curl_easy_recv.3
docs/libcurl/curl_easy_recv.html
docs/libcurl/curl_easy_recv.pdf
docs/libcurl/curl_easy_reset.html
docs/libcurl/curl_easy_reset.pdf
docs/libcurl/curl_easy_send.3
docs/libcurl/curl_easy_send.html
docs/libcurl/curl_easy_send.pdf
docs/libcurl/curl_easy_setopt.3
docs/libcurl/curl_easy_setopt.html
docs/libcurl/curl_easy_setopt.pdf
docs/libcurl/curl_easy_strerror.html
docs/libcurl/curl_easy_strerror.pdf
docs/libcurl/curl_easy_unescape.3
docs/libcurl/curl_easy_unescape.html
docs/libcurl/curl_easy_unescape.pdf
docs/libcurl/curl_escape.html
docs/libcurl/curl_escape.pdf
docs/libcurl/curl_formadd.3
docs/libcurl/curl_formadd.html
docs/libcurl/curl_formadd.pdf
docs/libcurl/curl_formfree.html
docs/libcurl/curl_formfree.pdf
docs/libcurl/curl_formget.3
docs/libcurl/curl_formget.html
docs/libcurl/curl_formget.pdf
docs/libcurl/curl_free.html
docs/libcurl/curl_free.pdf
docs/libcurl/curl_getdate.3
docs/libcurl/curl_getdate.html
docs/libcurl/curl_getdate.pdf
docs/libcurl/curl_getenv.html
docs/libcurl/curl_getenv.pdf
docs/libcurl/curl_global_cleanup.html
docs/libcurl/curl_global_cleanup.pdf
docs/libcurl/curl_global_init.html
docs/libcurl/curl_global_init.pdf
docs/libcurl/curl_global_init_mem.3
docs/libcurl/curl_global_init_mem.html
docs/libcurl/curl_global_init_mem.pdf
docs/libcurl/curl_mprintf.html
docs/libcurl/curl_mprintf.pdf
docs/libcurl/curl_multi_add_handle.html
docs/libcurl/curl_multi_add_handle.pdf
docs/libcurl/curl_multi_assign.html
docs/libcurl/curl_multi_assign.pdf
docs/libcurl/curl_multi_cleanup.html
docs/libcurl/curl_multi_cleanup.pdf
docs/libcurl/curl_multi_fdset.html
docs/libcurl/curl_multi_fdset.pdf
docs/libcurl/curl_multi_info_read.3
docs/libcurl/curl_multi_info_read.html
docs/libcurl/curl_multi_info_read.pdf
docs/libcurl/curl_multi_init.html
docs/libcurl/curl_multi_init.pdf
docs/libcurl/curl_multi_perform.3
docs/libcurl/curl_multi_perform.html
docs/libcurl/curl_multi_perform.pdf
docs/libcurl/curl_multi_remove_handle.3
docs/libcurl/curl_multi_remove_handle.html
docs/libcurl/curl_multi_remove_handle.pdf
docs/libcurl/curl_multi_setopt.3
docs/libcurl/curl_multi_setopt.html
docs/libcurl/curl_multi_setopt.pdf
docs/libcurl/curl_multi_socket.html
docs/libcurl/curl_multi_socket.pdf
docs/libcurl/curl_multi_socket_action.html
docs/libcurl/curl_multi_socket_action.pdf
docs/libcurl/curl_multi_strerror.html
docs/libcurl/curl_multi_strerror.pdf
docs/libcurl/curl_multi_timeout.3
docs/libcurl/curl_multi_timeout.html
docs/libcurl/curl_multi_timeout.pdf
docs/libcurl/curl_multi_wait.3
docs/libcurl/curl_multi_wait.html
docs/libcurl/curl_multi_wait.pdf
docs/libcurl/curl_share_cleanup.html
docs/libcurl/curl_share_cleanup.pdf
docs/libcurl/curl_share_init.html
docs/libcurl/curl_share_init.pdf
docs/libcurl/curl_share_setopt.html
docs/libcurl/curl_share_setopt.pdf
docs/libcurl/curl_share_strerror.html
docs/libcurl/curl_share_strerror.pdf
docs/libcurl/curl_slist_append.3
docs/libcurl/curl_slist_append.html
docs/libcurl/curl_slist_append.pdf
docs/libcurl/curl_slist_free_all.html
docs/libcurl/curl_slist_free_all.pdf
docs/libcurl/curl_strequal.html
docs/libcurl/curl_strequal.pdf
docs/libcurl/curl_unescape.html
docs/libcurl/curl_unescape.pdf
docs/libcurl/curl_version.html
docs/libcurl/curl_version.pdf
docs/libcurl/curl_version_info.3
docs/libcurl/curl_version_info.html
docs/libcurl/curl_version_info.pdf
docs/libcurl/index.html
docs/libcurl/libcurl-easy.html
docs/libcurl/libcurl-easy.pdf
docs/libcurl/libcurl-errors.3
docs/libcurl/libcurl-errors.html
docs/libcurl/libcurl-errors.pdf
docs/libcurl/libcurl-multi.3
docs/libcurl/libcurl-multi.html
docs/libcurl/libcurl-multi.pdf
docs/libcurl/libcurl-share.html
docs/libcurl/libcurl-share.pdf
docs/libcurl/libcurl-symbols.3 [new file with mode: 0644]
docs/libcurl/libcurl-symbols.html [new file with mode: 0644]
docs/libcurl/libcurl-symbols.pdf [new file with mode: 0644]
docs/libcurl/libcurl-thread.3 [new file with mode: 0644]
docs/libcurl/libcurl-thread.html [new file with mode: 0644]
docs/libcurl/libcurl-thread.pdf [new file with mode: 0644]
docs/libcurl/libcurl-tutorial.3
docs/libcurl/libcurl-tutorial.html
docs/libcurl/libcurl-tutorial.pdf
docs/libcurl/libcurl.3
docs/libcurl/libcurl.html
docs/libcurl/libcurl.pdf
docs/libcurl/mksymbolsmanpage.pl [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html
docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf
docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html
docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf
docs/libcurl/opts/CURLMOPT_MAXCONNECTS.html
docs/libcurl/opts/CURLMOPT_MAXCONNECTS.pdf
docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.html
docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.pdf
docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.html
docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.pdf
docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.html
docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf
docs/libcurl/opts/CURLMOPT_PIPELINING.3
docs/libcurl/opts/CURLMOPT_PIPELINING.html
docs/libcurl/opts/CURLMOPT_PIPELINING.pdf
docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.html
docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.pdf
docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.html
docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.pdf
docs/libcurl/opts/CURLMOPT_PUSHDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PUSHDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PUSHDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_SOCKETDATA.html
docs/libcurl/opts/CURLMOPT_SOCKETDATA.pdf
docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.html
docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.pdf
docs/libcurl/opts/CURLMOPT_TIMERDATA.html
docs/libcurl/opts/CURLMOPT_TIMERDATA.pdf
docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.html
docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.pdf
docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.html
docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.pdf
docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.html
docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.pdf
docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.html
docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.pdf
docs/libcurl/opts/CURLOPT_APPEND.html
docs/libcurl/opts/CURLOPT_APPEND.pdf
docs/libcurl/opts/CURLOPT_AUTOREFERER.html
docs/libcurl/opts/CURLOPT_AUTOREFERER.pdf
docs/libcurl/opts/CURLOPT_BUFFERSIZE.html
docs/libcurl/opts/CURLOPT_BUFFERSIZE.pdf
docs/libcurl/opts/CURLOPT_CAINFO.3
docs/libcurl/opts/CURLOPT_CAINFO.html
docs/libcurl/opts/CURLOPT_CAINFO.pdf
docs/libcurl/opts/CURLOPT_CAPATH.3
docs/libcurl/opts/CURLOPT_CAPATH.html
docs/libcurl/opts/CURLOPT_CAPATH.pdf
docs/libcurl/opts/CURLOPT_CERTINFO.3
docs/libcurl/opts/CURLOPT_CERTINFO.html
docs/libcurl/opts/CURLOPT_CERTINFO.pdf
docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.html
docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.pdf
docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
docs/libcurl/opts/CURLOPT_CHUNK_DATA.html
docs/libcurl/opts/CURLOPT_CHUNK_DATA.pdf
docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.html
docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.pdf
docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.html
docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.pdf
docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.html
docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.pdf
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.html
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.pdf
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.html
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.pdf
docs/libcurl/opts/CURLOPT_CONNECT_ONLY.html
docs/libcurl/opts/CURLOPT_CONNECT_ONLY.pdf
docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.html
docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf
docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.html
docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf
docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.html
docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf
docs/libcurl/opts/CURLOPT_COOKIE.3
docs/libcurl/opts/CURLOPT_COOKIE.html
docs/libcurl/opts/CURLOPT_COOKIE.pdf
docs/libcurl/opts/CURLOPT_COOKIEFILE.html
docs/libcurl/opts/CURLOPT_COOKIEFILE.pdf
docs/libcurl/opts/CURLOPT_COOKIEJAR.html
docs/libcurl/opts/CURLOPT_COOKIEJAR.pdf
docs/libcurl/opts/CURLOPT_COOKIELIST.3
docs/libcurl/opts/CURLOPT_COOKIELIST.html
docs/libcurl/opts/CURLOPT_COOKIELIST.pdf
docs/libcurl/opts/CURLOPT_COOKIESESSION.html
docs/libcurl/opts/CURLOPT_COOKIESESSION.pdf
docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.html
docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.pdf
docs/libcurl/opts/CURLOPT_CRLF.html
docs/libcurl/opts/CURLOPT_CRLF.pdf
docs/libcurl/opts/CURLOPT_CRLFILE.html
docs/libcurl/opts/CURLOPT_CRLFILE.pdf
docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.html
docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.pdf
docs/libcurl/opts/CURLOPT_DEBUGDATA.html
docs/libcurl/opts/CURLOPT_DEBUGDATA.pdf
docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.html
docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.pdf
docs/libcurl/opts/CURLOPT_DIRLISTONLY.html
docs/libcurl/opts/CURLOPT_DIRLISTONLY.pdf
docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.html
docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.pdf
docs/libcurl/opts/CURLOPT_DNS_INTERFACE.html
docs/libcurl/opts/CURLOPT_DNS_INTERFACE.pdf
docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.html
docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.pdf
docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.html
docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.pdf
docs/libcurl/opts/CURLOPT_DNS_SERVERS.html
docs/libcurl/opts/CURLOPT_DNS_SERVERS.pdf
docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.html
docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.pdf
docs/libcurl/opts/CURLOPT_EGDSOCKET.html
docs/libcurl/opts/CURLOPT_EGDSOCKET.pdf
docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
docs/libcurl/opts/CURLOPT_ERRORBUFFER.html
docs/libcurl/opts/CURLOPT_ERRORBUFFER.pdf
docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.html
docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.pdf
docs/libcurl/opts/CURLOPT_FAILONERROR.3
docs/libcurl/opts/CURLOPT_FAILONERROR.html
docs/libcurl/opts/CURLOPT_FAILONERROR.pdf
docs/libcurl/opts/CURLOPT_FILETIME.html
docs/libcurl/opts/CURLOPT_FILETIME.pdf
docs/libcurl/opts/CURLOPT_FNMATCH_DATA.html
docs/libcurl/opts/CURLOPT_FNMATCH_DATA.pdf
docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.html
docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.pdf
docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.html
docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.pdf
docs/libcurl/opts/CURLOPT_FORBID_REUSE.html
docs/libcurl/opts/CURLOPT_FORBID_REUSE.pdf
docs/libcurl/opts/CURLOPT_FRESH_CONNECT.html
docs/libcurl/opts/CURLOPT_FRESH_CONNECT.pdf
docs/libcurl/opts/CURLOPT_FTPPORT.html
docs/libcurl/opts/CURLOPT_FTPPORT.pdf
docs/libcurl/opts/CURLOPT_FTPSSLAUTH.html
docs/libcurl/opts/CURLOPT_FTPSSLAUTH.pdf
docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.html
docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.pdf
docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.html
docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf
docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.html
docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.pdf
docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.html
docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.pdf
docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.html
docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.pdf
docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.html
docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.pdf
docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.html
docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.pdf
docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.html
docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.pdf
docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.html
docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.pdf
docs/libcurl/opts/CURLOPT_FTP_USE_PRET.html
docs/libcurl/opts/CURLOPT_FTP_USE_PRET.pdf
docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.html
docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.pdf
docs/libcurl/opts/CURLOPT_HEADER.3
docs/libcurl/opts/CURLOPT_HEADER.html
docs/libcurl/opts/CURLOPT_HEADER.pdf
docs/libcurl/opts/CURLOPT_HEADERDATA.html
docs/libcurl/opts/CURLOPT_HEADERDATA.pdf
docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
docs/libcurl/opts/CURLOPT_HEADERFUNCTION.html
docs/libcurl/opts/CURLOPT_HEADERFUNCTION.pdf
docs/libcurl/opts/CURLOPT_HEADEROPT.3
docs/libcurl/opts/CURLOPT_HEADEROPT.html
docs/libcurl/opts/CURLOPT_HEADEROPT.pdf
docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
docs/libcurl/opts/CURLOPT_HTTP200ALIASES.html
docs/libcurl/opts/CURLOPT_HTTP200ALIASES.pdf
docs/libcurl/opts/CURLOPT_HTTPAUTH.html
docs/libcurl/opts/CURLOPT_HTTPAUTH.pdf
docs/libcurl/opts/CURLOPT_HTTPGET.html
docs/libcurl/opts/CURLOPT_HTTPGET.pdf
docs/libcurl/opts/CURLOPT_HTTPHEADER.3
docs/libcurl/opts/CURLOPT_HTTPHEADER.html
docs/libcurl/opts/CURLOPT_HTTPHEADER.pdf
docs/libcurl/opts/CURLOPT_HTTPPOST.html
docs/libcurl/opts/CURLOPT_HTTPPOST.pdf
docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.html
docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.pdf
docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.html
docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.pdf
docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.html
docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.pdf
docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
docs/libcurl/opts/CURLOPT_HTTP_VERSION.html
docs/libcurl/opts/CURLOPT_HTTP_VERSION.pdf
docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.html
docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.pdf
docs/libcurl/opts/CURLOPT_INFILESIZE.3
docs/libcurl/opts/CURLOPT_INFILESIZE.html
docs/libcurl/opts/CURLOPT_INFILESIZE.pdf
docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.html
docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.pdf
docs/libcurl/opts/CURLOPT_INTERFACE.html
docs/libcurl/opts/CURLOPT_INTERFACE.pdf
docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.html
docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.pdf
docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.html
docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.pdf
docs/libcurl/opts/CURLOPT_IOCTLDATA.html
docs/libcurl/opts/CURLOPT_IOCTLDATA.pdf
docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.html
docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.pdf
docs/libcurl/opts/CURLOPT_IPRESOLVE.html
docs/libcurl/opts/CURLOPT_IPRESOLVE.pdf
docs/libcurl/opts/CURLOPT_ISSUERCERT.html
docs/libcurl/opts/CURLOPT_ISSUERCERT.pdf
docs/libcurl/opts/CURLOPT_KEYPASSWD.html
docs/libcurl/opts/CURLOPT_KEYPASSWD.pdf
docs/libcurl/opts/CURLOPT_KRBLEVEL.html
docs/libcurl/opts/CURLOPT_KRBLEVEL.pdf
docs/libcurl/opts/CURLOPT_LOCALPORT.html
docs/libcurl/opts/CURLOPT_LOCALPORT.pdf
docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.html
docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.pdf
docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.html
docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.pdf
docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.html
docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.pdf
docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.html
docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.pdf
docs/libcurl/opts/CURLOPT_MAIL_AUTH.html
docs/libcurl/opts/CURLOPT_MAIL_AUTH.pdf
docs/libcurl/opts/CURLOPT_MAIL_FROM.html
docs/libcurl/opts/CURLOPT_MAIL_FROM.pdf
docs/libcurl/opts/CURLOPT_MAIL_RCPT.html
docs/libcurl/opts/CURLOPT_MAIL_RCPT.pdf
docs/libcurl/opts/CURLOPT_MAXCONNECTS.html
docs/libcurl/opts/CURLOPT_MAXCONNECTS.pdf
docs/libcurl/opts/CURLOPT_MAXFILESIZE.html
docs/libcurl/opts/CURLOPT_MAXFILESIZE.pdf
docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.html
docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.pdf
docs/libcurl/opts/CURLOPT_MAXREDIRS.html
docs/libcurl/opts/CURLOPT_MAXREDIRS.pdf
docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.html
docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.pdf
docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.html
docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.pdf
docs/libcurl/opts/CURLOPT_NETRC.html
docs/libcurl/opts/CURLOPT_NETRC.pdf
docs/libcurl/opts/CURLOPT_NETRC_FILE.html
docs/libcurl/opts/CURLOPT_NETRC_FILE.pdf
docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.html
docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.pdf
docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.html
docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.pdf
docs/libcurl/opts/CURLOPT_NOBODY.html
docs/libcurl/opts/CURLOPT_NOBODY.pdf
docs/libcurl/opts/CURLOPT_NOPROGRESS.html
docs/libcurl/opts/CURLOPT_NOPROGRESS.pdf
docs/libcurl/opts/CURLOPT_NOPROXY.html
docs/libcurl/opts/CURLOPT_NOPROXY.pdf
docs/libcurl/opts/CURLOPT_NOSIGNAL.html
docs/libcurl/opts/CURLOPT_NOSIGNAL.pdf
docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.html
docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.pdf
docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.html
docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.pdf
docs/libcurl/opts/CURLOPT_PASSWORD.html
docs/libcurl/opts/CURLOPT_PASSWORD.pdf
docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PATH_AS_IS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PATH_AS_IS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PIPEWAIT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PIPEWAIT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PIPEWAIT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PORT.html
docs/libcurl/opts/CURLOPT_PORT.pdf
docs/libcurl/opts/CURLOPT_POST.html
docs/libcurl/opts/CURLOPT_POST.pdf
docs/libcurl/opts/CURLOPT_POSTFIELDS.3
docs/libcurl/opts/CURLOPT_POSTFIELDS.html
docs/libcurl/opts/CURLOPT_POSTFIELDS.pdf
docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.html
docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.pdf
docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.html
docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.pdf
docs/libcurl/opts/CURLOPT_POSTQUOTE.html
docs/libcurl/opts/CURLOPT_POSTQUOTE.pdf
docs/libcurl/opts/CURLOPT_POSTREDIR.html
docs/libcurl/opts/CURLOPT_POSTREDIR.pdf
docs/libcurl/opts/CURLOPT_PREQUOTE.html
docs/libcurl/opts/CURLOPT_PREQUOTE.pdf
docs/libcurl/opts/CURLOPT_PRIVATE.3
docs/libcurl/opts/CURLOPT_PRIVATE.html
docs/libcurl/opts/CURLOPT_PRIVATE.pdf
docs/libcurl/opts/CURLOPT_PROGRESSDATA.html
docs/libcurl/opts/CURLOPT_PROGRESSDATA.pdf
docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.html
docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.pdf
docs/libcurl/opts/CURLOPT_PROTOCOLS.html
docs/libcurl/opts/CURLOPT_PROTOCOLS.pdf
docs/libcurl/opts/CURLOPT_PROXY.html
docs/libcurl/opts/CURLOPT_PROXY.pdf
docs/libcurl/opts/CURLOPT_PROXYAUTH.html
docs/libcurl/opts/CURLOPT_PROXYAUTH.pdf
docs/libcurl/opts/CURLOPT_PROXYHEADER.html
docs/libcurl/opts/CURLOPT_PROXYHEADER.pdf
docs/libcurl/opts/CURLOPT_PROXYPASSWORD.html
docs/libcurl/opts/CURLOPT_PROXYPASSWORD.pdf
docs/libcurl/opts/CURLOPT_PROXYPORT.html
docs/libcurl/opts/CURLOPT_PROXYPORT.pdf
docs/libcurl/opts/CURLOPT_PROXYTYPE.html
docs/libcurl/opts/CURLOPT_PROXYTYPE.pdf
docs/libcurl/opts/CURLOPT_PROXYUSERNAME.html
docs/libcurl/opts/CURLOPT_PROXYUSERNAME.pdf
docs/libcurl/opts/CURLOPT_PROXYUSERPWD.html
docs/libcurl/opts/CURLOPT_PROXYUSERPWD.pdf
docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.html
docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.pdf
docs/libcurl/opts/CURLOPT_PUT.html
docs/libcurl/opts/CURLOPT_PUT.pdf
docs/libcurl/opts/CURLOPT_QUOTE.html
docs/libcurl/opts/CURLOPT_QUOTE.pdf
docs/libcurl/opts/CURLOPT_RANDOM_FILE.html
docs/libcurl/opts/CURLOPT_RANDOM_FILE.pdf
docs/libcurl/opts/CURLOPT_RANGE.html
docs/libcurl/opts/CURLOPT_RANGE.pdf
docs/libcurl/opts/CURLOPT_READDATA.3
docs/libcurl/opts/CURLOPT_READDATA.html
docs/libcurl/opts/CURLOPT_READDATA.pdf
docs/libcurl/opts/CURLOPT_READFUNCTION.3
docs/libcurl/opts/CURLOPT_READFUNCTION.html
docs/libcurl/opts/CURLOPT_READFUNCTION.pdf
docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.html
docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.pdf
docs/libcurl/opts/CURLOPT_REFERER.3
docs/libcurl/opts/CURLOPT_REFERER.html
docs/libcurl/opts/CURLOPT_REFERER.pdf
docs/libcurl/opts/CURLOPT_RESOLVE.3
docs/libcurl/opts/CURLOPT_RESOLVE.html
docs/libcurl/opts/CURLOPT_RESOLVE.pdf
docs/libcurl/opts/CURLOPT_RESUME_FROM.html
docs/libcurl/opts/CURLOPT_RESUME_FROM.pdf
docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.html
docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.pdf
docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.html
docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.pdf
docs/libcurl/opts/CURLOPT_RTSP_REQUEST.html
docs/libcurl/opts/CURLOPT_RTSP_REQUEST.pdf
docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.html
docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.pdf
docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.html
docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.pdf
docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.html
docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.pdf
docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.html
docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.pdf
docs/libcurl/opts/CURLOPT_SASL_IR.html
docs/libcurl/opts/CURLOPT_SASL_IR.pdf
docs/libcurl/opts/CURLOPT_SEEKDATA.html
docs/libcurl/opts/CURLOPT_SEEKDATA.pdf
docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
docs/libcurl/opts/CURLOPT_SEEKFUNCTION.html
docs/libcurl/opts/CURLOPT_SEEKFUNCTION.pdf
docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SERVICE_NAME.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SERVICE_NAME.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SHARE.html
docs/libcurl/opts/CURLOPT_SHARE.pdf
docs/libcurl/opts/CURLOPT_SOCKOPTDATA.html
docs/libcurl/opts/CURLOPT_SOCKOPTDATA.pdf
docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.html
docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.pdf
docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.html
docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.pdf
docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.html
docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf
docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.html
docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.pdf
docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html
docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf
docs/libcurl/opts/CURLOPT_SSH_KEYDATA.html
docs/libcurl/opts/CURLOPT_SSH_KEYDATA.pdf
docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.html
docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.pdf
docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.html
docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.pdf
docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.html
docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.pdf
docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.html
docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.pdf
docs/libcurl/opts/CURLOPT_SSLCERT.html
docs/libcurl/opts/CURLOPT_SSLCERT.pdf
docs/libcurl/opts/CURLOPT_SSLCERTTYPE.html
docs/libcurl/opts/CURLOPT_SSLCERTTYPE.pdf
docs/libcurl/opts/CURLOPT_SSLENGINE.html
docs/libcurl/opts/CURLOPT_SSLENGINE.pdf
docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.html
docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.pdf
docs/libcurl/opts/CURLOPT_SSLKEY.html
docs/libcurl/opts/CURLOPT_SSLKEY.pdf
docs/libcurl/opts/CURLOPT_SSLKEYTYPE.html
docs/libcurl/opts/CURLOPT_SSLKEYTYPE.pdf
docs/libcurl/opts/CURLOPT_SSLVERSION.html
docs/libcurl/opts/CURLOPT_SSLVERSION.pdf
docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.html
docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.pdf
docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.html
docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.pdf
docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.html
docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.pdf
docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.html
docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.pdf
docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.html
docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.pdf
docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_FALSESTART.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_FALSESTART.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
docs/libcurl/opts/CURLOPT_SSL_OPTIONS.html
docs/libcurl/opts/CURLOPT_SSL_OPTIONS.pdf
docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.html
docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.pdf
docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.html
docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.pdf
docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.html
docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.pdf
docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_STDERR.3
docs/libcurl/opts/CURLOPT_STDERR.html
docs/libcurl/opts/CURLOPT_STDERR.pdf
docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.html
docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.pdf
docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.html
docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.pdf
docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.html
docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.pdf
docs/libcurl/opts/CURLOPT_TCP_NODELAY.html
docs/libcurl/opts/CURLOPT_TCP_NODELAY.pdf
docs/libcurl/opts/CURLOPT_TELNETOPTIONS.html
docs/libcurl/opts/CURLOPT_TELNETOPTIONS.pdf
docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.html
docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.pdf
docs/libcurl/opts/CURLOPT_TIMECONDITION.html
docs/libcurl/opts/CURLOPT_TIMECONDITION.pdf
docs/libcurl/opts/CURLOPT_TIMEOUT.3
docs/libcurl/opts/CURLOPT_TIMEOUT.html
docs/libcurl/opts/CURLOPT_TIMEOUT.pdf
docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
docs/libcurl/opts/CURLOPT_TIMEOUT_MS.html
docs/libcurl/opts/CURLOPT_TIMEOUT_MS.pdf
docs/libcurl/opts/CURLOPT_TIMEVALUE.html
docs/libcurl/opts/CURLOPT_TIMEVALUE.pdf
docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.html
docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.pdf
docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.html
docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.pdf
docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.html
docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.pdf
docs/libcurl/opts/CURLOPT_TRANSFERTEXT.html
docs/libcurl/opts/CURLOPT_TRANSFERTEXT.pdf
docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.html
docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.pdf
docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.html
docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.pdf
docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.html
docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.pdf
docs/libcurl/opts/CURLOPT_UPLOAD.html
docs/libcurl/opts/CURLOPT_UPLOAD.pdf
docs/libcurl/opts/CURLOPT_URL.3
docs/libcurl/opts/CURLOPT_URL.html
docs/libcurl/opts/CURLOPT_URL.pdf
docs/libcurl/opts/CURLOPT_USERAGENT.3
docs/libcurl/opts/CURLOPT_USERAGENT.html
docs/libcurl/opts/CURLOPT_USERAGENT.pdf
docs/libcurl/opts/CURLOPT_USERNAME.html
docs/libcurl/opts/CURLOPT_USERNAME.pdf
docs/libcurl/opts/CURLOPT_USERPWD.html
docs/libcurl/opts/CURLOPT_USERPWD.pdf
docs/libcurl/opts/CURLOPT_USE_SSL.html
docs/libcurl/opts/CURLOPT_USE_SSL.pdf
docs/libcurl/opts/CURLOPT_VERBOSE.html
docs/libcurl/opts/CURLOPT_VERBOSE.pdf
docs/libcurl/opts/CURLOPT_WILDCARDMATCH.html
docs/libcurl/opts/CURLOPT_WILDCARDMATCH.pdf
docs/libcurl/opts/CURLOPT_WRITEDATA.3
docs/libcurl/opts/CURLOPT_WRITEDATA.html
docs/libcurl/opts/CURLOPT_WRITEDATA.pdf
docs/libcurl/opts/CURLOPT_WRITEFUNCTION.html
docs/libcurl/opts/CURLOPT_WRITEFUNCTION.pdf
docs/libcurl/opts/CURLOPT_XFERINFODATA.html
docs/libcurl/opts/CURLOPT_XFERINFODATA.pdf
docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.html
docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.pdf
docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.html
docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.pdf
docs/libcurl/opts/Makefile.am
docs/libcurl/opts/Makefile.in
docs/libcurl/symbols-in-versions
docs/libcurl/symbols.pl
docs/mk-ca-bundle.html
docs/mk-ca-bundle.pdf
include/Makefile.in
include/curl/Makefile.in
include/curl/curl.h
include/curl/curlver.h
include/curl/mprintf.h
include/curl/multi.h
include/curl/typecheck-gcc.h
install-sh
lib/CMakeLists.txt
lib/Makefile.Watcom
lib/Makefile.am
lib/Makefile.b32
lib/Makefile.in
lib/Makefile.inc
lib/Makefile.m32
lib/Makefile.netware
lib/Makefile.vc10
lib/Makefile.vc11 [new file with mode: 0644]
lib/Makefile.vc12 [new file with mode: 0644]
lib/Makefile.vc14 [new file with mode: 0644]
lib/Makefile.vc6
lib/Makefile.vc7 [new file with mode: 0644]
lib/Makefile.vc8
lib/Makefile.vc9
lib/README.ares [deleted file]
lib/README.curl_off_t [deleted file]
lib/README.curlx [deleted file]
lib/README.encoding [deleted file]
lib/README.hostip [deleted file]
lib/README.httpauth [deleted file]
lib/README.memoryleak [deleted file]
lib/README.multi_socket [deleted file]
lib/README.pingpong [deleted file]
lib/README.pipelining [deleted file]
lib/amigaos.c
lib/asyn-ares.c
lib/asyn-thread.c
lib/base64.c
lib/bundles.c [deleted file]
lib/checksrc.pl
lib/checksrc.whitelist [new file with mode: 0644]
lib/config-amigaos.h
lib/config-dos.h
lib/config-mac.h
lib/config-symbian.h
lib/config-tpf.h
lib/config-vxworks.h
lib/config-win32.h
lib/config-win32ce.h
lib/conncache.c
lib/conncache.h
lib/connect.c
lib/cookie.c
lib/curl_addrinfo.c
lib/curl_config.h.cmake
lib/curl_config.h.in
lib/curl_des.c [new file with mode: 0644]
lib/curl_des.h [new file with mode: 0644]
lib/curl_endian.c
lib/curl_fnmatch.c
lib/curl_gssapi.c
lib/curl_gssapi.h
lib/curl_memory.h
lib/curl_memrchr.c
lib/curl_multibyte.c
lib/curl_multibyte.h
lib/curl_ntlm.c
lib/curl_ntlm_core.c
lib/curl_ntlm_core.h
lib/curl_ntlm_msgs.c
lib/curl_ntlm_wb.c
lib/curl_printf.h [new file with mode: 0644]
lib/curl_rtmp.c
lib/curl_sasl.c
lib/curl_sasl.h
lib/curl_sasl_gssapi.c
lib/curl_sasl_sspi.c
lib/curl_setup.h
lib/curl_sspi.c
lib/curl_sspi.h
lib/curl_threads.c
lib/curlx.h
lib/dict.c
lib/easy.c
lib/escape.c
lib/file.c
lib/fileinfo.c
lib/firefox-db2pem.sh
lib/formdata.c
lib/ftp.c
lib/ftp.h
lib/ftplistparser.c
lib/getinfo.c
lib/gopher.c
lib/hash.c
lib/hash.h
lib/hmac.c
lib/hostasyn.c
lib/hostcheck.c
lib/hostip.c
lib/hostip.h
lib/hostip4.c
lib/hostip6.c
lib/hostsyn.c
lib/http.c
lib/http.h
lib/http2.c
lib/http2.h
lib/http_chunks.c
lib/http_digest.c
lib/http_negotiate.c
lib/http_negotiate.h
lib/http_negotiate_sspi.c
lib/http_proxy.c
lib/http_proxy.h
lib/if2ip.c
lib/imap.c
lib/imap.h
lib/inet_ntop.c
lib/inet_ntop.h
lib/krb5.c
lib/ldap.c
lib/libcurl.plist
lib/md4.c
lib/md5.c
lib/memdebug.c
lib/memdebug.h
lib/mk-ca-bundle.pl
lib/multi.c
lib/multihandle.h
lib/multiif.h
lib/netrc.c
lib/nwlib.c
lib/openldap.c
lib/pingpong.c
lib/pipeline.c
lib/pipeline.h
lib/pop3.c
lib/pop3.h
lib/progress.c
lib/rtsp.c
lib/security.c
lib/select.c
lib/sendf.c
lib/setup-vms.h
lib/share.c
lib/share.h
lib/slist.c
lib/smb.c
lib/smtp.c
lib/smtp.h
lib/socks.c
lib/socks_gssapi.c
lib/socks_sspi.c
lib/splay.c
lib/ssh.c
lib/ssh.h
lib/strdup.c
lib/strerror.c
lib/telnet.c
lib/tftp.c
lib/timeval.c
lib/transfer.c
lib/transfer.h
lib/url.c
lib/url.h
lib/urldata.h
lib/version.c
lib/vtls/axtls.c
lib/vtls/axtls.h
lib/vtls/cyassl.c
lib/vtls/cyassl.h
lib/vtls/darwinssl.c [moved from lib/vtls/curl_darwinssl.c with 99% similarity]
lib/vtls/darwinssl.h [moved from lib/vtls/curl_darwinssl.h with 92% similarity]
lib/vtls/gskit.c
lib/vtls/gskit.h
lib/vtls/gtls.c
lib/vtls/gtls.h
lib/vtls/nss.c
lib/vtls/nssg.h
lib/vtls/openssl.c
lib/vtls/openssl.h
lib/vtls/polarssl.c
lib/vtls/polarssl.h
lib/vtls/polarssl_threadlock.c
lib/vtls/schannel.c [moved from lib/vtls/curl_schannel.c with 70% similarity]
lib/vtls/schannel.h [moved from lib/vtls/curl_schannel.h with 96% similarity]
lib/vtls/vtls.c
lib/vtls/vtls.h
lib/wildcard.c
lib/x509asn1.c
lib/x509asn1.h
m4/curl-confopts.m4
m4/curl-openssl.m4
maketgz
missing
mkinstalldirs [deleted file]
packages/AIX/Makefile.in
packages/AIX/RPM/Makefile.in
packages/EPM/Makefile.in
packages/Linux/Makefile.in
packages/Linux/RPM/Makefile.in
packages/Makefile.in
packages/OS400/README.OS400
packages/OS400/ccsidcurl.c
packages/OS400/ccsidcurl.h
packages/OS400/curl.inc.in
packages/OS400/makefile.sh
packages/OS400/os400sys.c
packages/Solaris/Makefile.in
packages/Symbian/group/libcurl.mmp
packages/TPF/curl.mak
packages/Win32/Makefile.in
packages/Win32/cygwin/Makefile.in
packages/vms/Makefile.in
packages/vms/build_gnv_curl_pcsi_desc.com
packages/vms/build_vms.com
packages/vms/gnv_link_curl.com
projects/README
projects/Windows/VC10/curl-all.sln [moved from projects/Windows/VC10/curl.sln with 86% similarity]
projects/Windows/VC10/lib/libcurl.sln
projects/Windows/VC10/lib/libcurl.vcxproj
projects/Windows/VC10/src/curl.sln [moved from projects/Windows/VC10/src/curlsrc.sln with 86% similarity]
projects/Windows/VC10/src/curl.vcxproj [moved from projects/Windows/VC10/src/curlsrc.vcxproj with 81% similarity]
projects/Windows/VC11/curl-all.sln [moved from projects/Windows/VC11/curl.sln with 86% similarity]
projects/Windows/VC11/lib/libcurl.sln
projects/Windows/VC11/lib/libcurl.vcxproj
projects/Windows/VC11/src/curl.sln [moved from projects/Windows/VC11/src/curlsrc.sln with 86% similarity]
projects/Windows/VC11/src/curl.vcxproj [moved from projects/Windows/VC11/src/curlsrc.vcxproj with 81% similarity]
projects/Windows/VC12/curl-all.sln [moved from projects/Windows/VC12/curl.sln with 86% similarity]
projects/Windows/VC12/lib/libcurl.sln
projects/Windows/VC12/lib/libcurl.vcxproj
projects/Windows/VC12/src/curl.sln [moved from projects/Windows/VC12/src/curlsrc.sln with 86% similarity]
projects/Windows/VC12/src/curl.vcxproj [moved from projects/Windows/VC12/src/curlsrc.vcxproj with 81% similarity]
projects/Windows/VC14/curl-all.sln [new file with mode: 0644]
projects/Windows/VC14/lib/libcurl.sln [new file with mode: 0644]
projects/Windows/VC14/lib/libcurl.vcxproj [new file with mode: 0644]
projects/Windows/VC14/src/curl.sln [new file with mode: 0644]
projects/Windows/VC14/src/curl.vcxproj [new file with mode: 0644]
projects/Windows/VC6/curl-all.dsw [moved from projects/Windows/VC6/curl.dsw with 87% similarity]
projects/Windows/VC6/lib/libcurl.dsp
projects/Windows/VC6/src/curl.dsp [moved from projects/Windows/VC6/src/curlsrc.dsp with 85% similarity]
projects/Windows/VC6/src/curl.dsw [moved from projects/Windows/VC6/src/curlsrc.dsw with 84% similarity]
projects/Windows/VC7.1/curl-all.sln [moved from projects/Windows/VC7.1/curl.sln with 99% similarity]
projects/Windows/VC7.1/lib/libcurl.vcproj
projects/Windows/VC7.1/src/curl.sln [moved from projects/Windows/VC7.1/src/curlsrc.sln with 98% similarity]
projects/Windows/VC7.1/src/curl.vcproj [moved from projects/Windows/VC7.1/src/curlsrc.vcproj with 93% similarity]
projects/Windows/VC7/curl-all.sln [moved from projects/Windows/VC7/curl.sln with 99% similarity]
projects/Windows/VC7/lib/libcurl.vcproj
projects/Windows/VC7/src/curl.sln [moved from projects/Windows/VC7/src/curlsrc.sln with 98% similarity]
projects/Windows/VC7/src/curl.vcproj [moved from projects/Windows/VC7/src/curlsrc.vcproj with 92% similarity]
projects/Windows/VC8/curl-all.sln [moved from projects/Windows/VC8/curl.sln with 99% similarity]
projects/Windows/VC8/lib/libcurl.sln
projects/Windows/VC8/lib/libcurl.vcproj
projects/Windows/VC8/src/curl.sln [moved from projects/Windows/VC8/src/curlsrc.sln with 99% similarity]
projects/Windows/VC8/src/curl.vcproj [moved from projects/Windows/VC8/src/curlsrc.vcproj with 86% similarity]
projects/Windows/VC9/curl-all.sln [moved from projects/Windows/VC9/curl.sln with 99% similarity]
projects/Windows/VC9/lib/libcurl.sln
projects/Windows/VC9/lib/libcurl.vcproj
projects/Windows/VC9/src/curl.sln [moved from projects/Windows/VC9/src/curlsrc.sln with 99% similarity]
projects/Windows/VC9/src/curl.vcproj [moved from projects/Windows/VC9/src/curlsrc.vcproj with 84% similarity]
projects/build-openssl.bat
projects/build-wolfssl.bat [new file with mode: 0644]
projects/checksrc.bat
scripts/zsh.pl [new file with mode: 0755]
src/CMakeLists.txt
src/Makefile.Watcom
src/Makefile.am
src/Makefile.b32
src/Makefile.in
src/Makefile.m32
src/Makefile.netware
src/Makefile.vc10
src/Makefile.vc11 [new file with mode: 0644]
src/Makefile.vc12 [new file with mode: 0644]
src/Makefile.vc14 [new file with mode: 0644]
src/Makefile.vc6
src/Makefile.vc7 [new file with mode: 0644]
src/Makefile.vc8
src/Makefile.vc9
src/checksrc.whitelist [new file with mode: 0644]
src/mkhelp.pl
src/tool_cb_dbg.c
src/tool_cb_hdr.c
src/tool_cb_wrt.c
src/tool_cb_wrt.h
src/tool_cfgable.c
src/tool_cfgable.h
src/tool_dirhie.c
src/tool_easysrc.c
src/tool_formparse.c
src/tool_getparam.c
src/tool_getpass.c
src/tool_help.c
src/tool_helpers.c
src/tool_homedir.c
src/tool_hugehelp.c
src/tool_metalink.c
src/tool_msgs.c
src/tool_msgs.h
src/tool_operate.c
src/tool_paramhlp.c
src/tool_parsecfg.c
src/tool_setopt.c
src/tool_setopt.h
src/tool_strdup.c
src/tool_urlglob.c
src/tool_urlglob.h
src/tool_version.h
src/tool_writeenv.c
src/tool_writeout.c
test-driver [new file with mode: 0755]
tests/FILEFORMAT
tests/Makefile.am
tests/Makefile.in
tests/README
tests/certs/EdelCurlRoot-ca.cacert
tests/certs/EdelCurlRoot-ca.crt
tests/certs/EdelCurlRoot-ca.csr
tests/certs/EdelCurlRoot-ca.der
tests/certs/EdelCurlRoot-ca.key
tests/certs/EdelCurlRoot-ca.prm
tests/certs/Makefile.am
tests/certs/Makefile.in
tests/certs/Server-localhost-sv.crl
tests/certs/Server-localhost-sv.crt
tests/certs/Server-localhost-sv.csr
tests/certs/Server-localhost-sv.der
tests/certs/Server-localhost-sv.dhp
tests/certs/Server-localhost-sv.key
tests/certs/Server-localhost-sv.p12 [deleted file]
tests/certs/Server-localhost-sv.pem
tests/certs/Server-localhost-sv.prm
tests/certs/Server-localhost-sv.pub.der
tests/certs/Server-localhost-sv.pub.pem
tests/certs/Server-localhost.nn-sv.crl
tests/certs/Server-localhost.nn-sv.crt
tests/certs/Server-localhost.nn-sv.csr
tests/certs/Server-localhost.nn-sv.der
tests/certs/Server-localhost.nn-sv.dhp
tests/certs/Server-localhost.nn-sv.key
tests/certs/Server-localhost.nn-sv.pem
tests/certs/Server-localhost.nn-sv.prm
tests/certs/Server-localhost.nn-sv.pub.der
tests/certs/Server-localhost.nn-sv.pub.pem
tests/certs/Server-localhost0h-sv.crl
tests/certs/Server-localhost0h-sv.crt
tests/certs/Server-localhost0h-sv.csr
tests/certs/Server-localhost0h-sv.der
tests/certs/Server-localhost0h-sv.dhp
tests/certs/Server-localhost0h-sv.key
tests/certs/Server-localhost0h-sv.p12 [deleted file]
tests/certs/Server-localhost0h-sv.pem
tests/certs/Server-localhost0h-sv.prm
tests/certs/Server-localhost0h-sv.pub.der
tests/certs/Server-localhost0h-sv.pub.pem
tests/certs/scripts/Makefile.in
tests/certs/scripts/genroot.sh
tests/certs/scripts/genserv.sh
tests/data/CMakeLists.txt [new file with mode: 0644]
tests/data/Makefile.am
tests/data/Makefile.in
tests/data/Makefile.inc
tests/data/test1001
tests/data/test1002
tests/data/test1030
tests/data/test1032
tests/data/test1040
tests/data/test1041
tests/data/test1042
tests/data/test1043
tests/data/test1058
tests/data/test1071
tests/data/test1075
tests/data/test1079
tests/data/test1087
tests/data/test1088
tests/data/test1095
tests/data/test1100
tests/data/test1101
tests/data/test1117
tests/data/test1121
tests/data/test1134
tests/data/test1135 [new file with mode: 0644]
tests/data/test12
tests/data/test1204
tests/data/test1212
tests/data/test1215
tests/data/test1229
tests/data/test1237
tests/data/test1241 [new file with mode: 0644]
tests/data/test130
tests/data/test1310
tests/data/test1331
tests/data/test1401
tests/data/test1412
tests/data/test1418
tests/data/test1421 [new file with mode: 0644]
tests/data/test1422 [new file with mode: 0644]
tests/data/test1423 [new file with mode: 0644]
tests/data/test1424 [new file with mode: 0644]
tests/data/test1428
tests/data/test1434
tests/data/test150
tests/data/test1510
tests/data/test1513
tests/data/test1527
tests/data/test153
tests/data/test1530 [new file with mode: 0644]
tests/data/test1531 [new file with mode: 0644]
tests/data/test154
tests/data/test155
tests/data/test159
tests/data/test16
tests/data/test1600 [new file with mode: 0644]
tests/data/test1601 [new file with mode: 0644]
tests/data/test1602 [new file with mode: 0644]
tests/data/test162
tests/data/test164
tests/data/test167
tests/data/test168
tests/data/test169
tests/data/test17
tests/data/test170
tests/data/test176
tests/data/test1801
tests/data/test184
tests/data/test185
tests/data/test188
tests/data/test189
tests/data/test1902
tests/data/test194
tests/data/test2
tests/data/test2023
tests/data/test2024
tests/data/test2025
tests/data/test2026
tests/data/test2027
tests/data/test2028
tests/data/test2029
tests/data/test2030
tests/data/test2031
tests/data/test2032
tests/data/test2033
tests/data/test2039 [new file with mode: 0644]
tests/data/test2040 [new file with mode: 0644]
tests/data/test2041 [new file with mode: 0644]
tests/data/test2042 [new file with mode: 0644]
tests/data/test2043 [new file with mode: 0644]
tests/data/test208
tests/data/test233
tests/data/test234
tests/data/test239
tests/data/test242
tests/data/test243
tests/data/test245
tests/data/test246
tests/data/test256
tests/data/test257
tests/data/test258
tests/data/test259
tests/data/test264
tests/data/test267
tests/data/test273
tests/data/test275
tests/data/test278
tests/data/test279
tests/data/test287
tests/data/test299
tests/data/test3
tests/data/test301
tests/data/test31
tests/data/test320
tests/data/test33
tests/data/test38
tests/data/test46
tests/data/test503
tests/data/test519
tests/data/test522
tests/data/test523
tests/data/test540
tests/data/test547
tests/data/test548
tests/data/test551
tests/data/test552
tests/data/test555
tests/data/test56
tests/data/test565
tests/data/test590
tests/data/test598
tests/data/test61
tests/data/test62
tests/data/test63
tests/data/test64
tests/data/test65
tests/data/test67
tests/data/test68
tests/data/test69
tests/data/test70
tests/data/test72
tests/data/test73
tests/data/test80
tests/data/test81
tests/data/test82
tests/data/test83
tests/data/test837 [new file with mode: 0644]
tests/data/test838 [new file with mode: 0644]
tests/data/test839 [new file with mode: 0644]
tests/data/test84
tests/data/test840 [new file with mode: 0644]
tests/data/test85
tests/data/test88
tests/data/test883 [new file with mode: 0644]
tests/data/test884 [new file with mode: 0644]
tests/data/test885 [new file with mode: 0644]
tests/data/test886 [new file with mode: 0644]
tests/data/test89
tests/data/test90
tests/data/test91
tests/data/test92
tests/data/test938
tests/data/test942 [new file with mode: 0644]
tests/data/test943 [new file with mode: 0644]
tests/data/test944 [new file with mode: 0644]
tests/data/test945 [new file with mode: 0644]
tests/data/test96
tests/data/test99
tests/extern-scan.pl [new file with mode: 0755]
tests/libtest/CMakeLists.txt [new file with mode: 0644]
tests/libtest/Makefile.am
tests/libtest/Makefile.in
tests/libtest/Makefile.inc
tests/libtest/first.c
tests/libtest/lib1515.c
tests/libtest/lib1527.c
tests/libtest/lib1530.c [new file with mode: 0644]
tests/libtest/lib1531.c [new file with mode: 0644]
tests/libtest/lib506.c
tests/libtest/lib530.c
tests/libtest/lib539.c
tests/libtest/lib557.c
tests/libtest/lib568.c
tests/libtest/lib569.c
tests/libtest/lib570.c
tests/libtest/lib571.c
tests/libtest/lib572.c
tests/libtest/lib582.c
tests/libtest/lib586.c
tests/libtest/test.h
tests/libtest/testtrace.c
tests/memanalyze.pl
tests/runtests.html
tests/runtests.pdf
tests/runtests.pl
tests/server/CMakeLists.txt [new file with mode: 0644]
tests/server/Makefile.am
tests/server/Makefile.in
tests/server/getpart.c
tests/server/rtspd.c
tests/server/sws.c
tests/server/tftpd.c
tests/testcurl.html
tests/testcurl.pdf
tests/testcurl.pl
tests/unit/Makefile.in
tests/unit/Makefile.inc
tests/unit/curlcheck.h
tests/unit/unit1305.c
tests/unit/unit1397.c
tests/unit/unit1600.c [new file with mode: 0644]
tests/unit/unit1601.c [moved from lib/bundles.h with 52% similarity]
tests/unit/unit1602.c [new file with mode: 0644]
winbuild/BUILD.WINDOWS.txt
winbuild/Makefile.vc
winbuild/MakefileBuild.vc

diff --git a/CHANGES b/CHANGES
index ddcd07e..056e274 100644 (file)
--- a/CHANGES
+++ b/CHANGES
 
                                   Changelog
 
-Version 7.40.0 (7 Jan 2015)
+Version 7.44.0 (11 Aug 2015)
 
-Daniel Stenberg (7 Jan 2015)
-- RELEASE-NOTES: version 7.40.0
+Daniel Stenberg (11 Aug 2015)
+- RELEASE-NOTES: synced with c75a1e775061
 
-- darwinssl: fix session ID keys to only reuse identical sessions
-  
-  ...to avoid a session ID getting cached without certificate checking and
-  then after a subsequent _enabling_ of the check libcurl could still
-  re-use the session done without cert checks.
-  
-  Bug: http://curl.haxx.se/docs/adv_20150108A.html
-  Reported-by: Marc Hesse
+- [Svyatoslav Mishyn brought this change]
 
-- tests: make sure CRLFs can't be used in URLs passed to proxy
+  curl_formget.3: correct return code
   
-  Bug: http://curl.haxx.se/docs/adv_20150108B.html
+  Closes #375
 
-- url-parsing: reject CRLFs within URLs
+- [Svyatoslav Mishyn brought this change]
+
+  libcurl-tutorial.3: fix formatting
   
-  Bug: http://curl.haxx.se/docs/adv_20150108B.html
-  Reported-by: Andrey Labunets
+  Closes #374
 
-Steve Holme (7 Jan 2015)
-- ldap: Convert attribute output to UTF-8 when Unicode
+- [Svyatoslav Mishyn brought this change]
 
-- ldap: Convert DN output to UTF-8 when Unicode
+  curl_easy_recv.3: fix formatting
 
-Daniel Stenberg (7 Jan 2015)
-- hostip: remove 'stale' argument from Curl_fetch_addr proto
-  
-  Also, remove the log output of the resolved name is NOT in the cache in
-  the spirit of only telling when something is actually happening.
+- [Anders Bakken brought this change]
 
-Steve Holme (7 Jan 2015)
-- ldap/imap: Fixed spelling mistake in comments and variable names
+  http2: discard frames with no SessionHandle
   
-  Reported-by: Michael Osipov
-
-Daniel Stenberg (7 Jan 2015)
-- RELEASE-NOTES: updated with ./contributors.sh output
+  Return 0 instead of NGHTTP2_ERR_CALLBACK_FAILURE if we can't locate the
+  SessionHandle. Apparently mod_h2 will sometimes send a frame for a
+  stream_id we're finished with.
+  
+  Use nghttp2_session_get_stream_user_data and
+  nghttp2_session_set_stream_user_data to identify SessionHandles instead
+  of a hash.
+  
+  Closes #372
 
-Dan Fandrich (5 Jan 2015)
-- curl_multibyte.h: Eliminated some trailing whitespace
+- RELEASE-NOTES: synced with 9ee40ce2aba
 
-Steve Holme (4 Jan 2015)
-- RELEASE-NOTES: Synced with ea93252ef1
+- [Viktor Szakats brought this change]
 
-- ldap: Fixed Unicode usage for all Win32 builds
+  build: refer to fixed libidn versions
   
-  Otherwise, the fixes in the previous commits would only be applicable
-  to IDN and SSPI based builds and not others such as OpenSSL with LDAP
-  enabled.
+  closes #371
 
-- ldap: Fixed memory leak from commit efb64fdf80
+- Revert "configure: disable libidn by default"
+  
+  This reverts commit e6749055d65398315fd77f5b5b8234c5552ac2d3.
+  
+  ... since libidn has since been fixed.
 
-- ldap: Fix memory leak from commit 3a805c5cc1
+- [Jakub Zakrzewski brought this change]
 
-- ldap: Fixed attribute variable warnings when Unicode is enabled
+  CMake: s/HAVE_GSS_API/HAVE_GSSAPI/ to match header define
   
-  Use 'TCHAR *' for local attribute variable rather than 'char *'.
-
-- ldap: Fixed DN variable warnings when Unicode is enabled
+  Otherwise the build only pretended to use GSS-API
   
-  Use 'TCHAR *' for local DN variable rather than 'char *'.
+  Closes #370
 
-- ldap: Remove the unescape_elements() function
+- SFTP: fix range request off-by-one in size check
   
-  Due to the recent modifications this function is no longer used.
-
-- ldap.c: Fixed compilation warning
+  Reported-by: Tim Stack
   
-  ldap.c:98: warning: extra tokens at end of #endif directive
+  Closes #359
 
-- ldap: Fixed support for Unicode filter in Win32 search call
-
-- ldap.c: Fixed compilation warning
+- test46: update cookie expire time
   
-  ldap.c:802: warning: comparison between signed and unsigned integer
-              expressions
+  ... since it went old and thus was expired and caused the test to fail!
 
-- ldap: Fixed support for Unicode attributes in Win32 search call
+Steve Holme (9 Aug 2015)
+- generate.bat: Use buildconf.bat for prerequisite file generation
 
-- ldap: Fixed memory leak from commit efb64fdf80
+- buildconf.bat: Tidy up of comments after recent commits
+
+- buildconf.bat: Added full generation of src\tool_hugehelp.c
   
-  The unescapped DN was not freed after a successful character conversion.
+  Added support for generating the full man page based on code from
+  generate.bat.
 
-- ldap.c: Fixed compilation error
+- buildconf.bat: Added detection of groff, nroff, perl and gzip
   
-  ldap.c:738: error: macro "LDAP_TRACE" passed 2 arguments, but takes
-              just 1
+  To allow for the full generation of tool_hugehelp.c added detection of
+  the required programs - based on code from generate.bat.
 
-- ldap.c: Fixed compilation warning
+- buildconf.bat: Move DOS variable clean-up code to separate function
   
-  ldap.c:89: warning: extra tokens at end of #endif directive
+  Rather than duplicate future variables, during clean-up of both success
+  and error conditions, use a common function that can be called by both.
 
-- ldap: Fixed support for Unicode DN in Win32 search call
+- RELEASE-NOTES: Synced with 39dcf352d2
 
-- ldap: Fixed Unicode user and password in Win32 bind calls
+- buildconf.bat: Added error messages on failure
 
-- ldap: Fixed Unicode host name in Win32 initialisation calls
+- buildconf.bat: Generate and clean files in the same order
 
-- ldap: Use host.dispname for infof() connection failure messages
+- buildconf.bat: Maintain compatibility with DOS based systems
   
-  As host.name may be encoded use dispname for infof() failure messages.
-
-- ldap: Prefer 'CURLcode result' for curl result codes
+  Commit f08e30d7bc broke compatibility with DOS and non Windows NT based
+  versions of Windows due to the use of the setlocal command.
 
-- ldap: Pass write length in all Curl_client_write() calls
+Jay Satiro (9 Aug 2015)
+- CURLOPT_RESOLVE.3: Note removal support was added in 7.42
   
-  As we get the length for the DN and attribute variables, and we know
-  the length for the line terminator, pass the length values rather than
-  zero as this will save Curl_client_write() from having to perform an
-  additional strlen() call.
+  Bug: http://curl.haxx.se/mail/lib-2015-08/0019.html
+  Reported-by: Inca R
 
-- ldap: Fixed attribute memory leaks on failed client write
+Steve Holme (8 Aug 2015)
+- checksrc.bat: Fixed error when missing *.c and *.h files
   
-  Fixed memory leaks from commit 086ad79970 as was noted in the commit
-  comments.
+  File Not Found
 
-- ldap: Fixed DN memory leaks on failed client write
+- checksrc.bat: Fixed incorrect 'lib\vtls' path check in commit 333c36b276
+
+- checksrc.bat: Fixed error when [directory] isn't a curl source directory
   
-  Fixed memory leaks from commit 086ad79970 as was noted in the commit
-  comments.
+  The system cannot find the file specified.
 
-- curl_ntlm_core.c: Fixed compilation warning from commit 1cb17b2a5d
+- checksrc.bat: Added check for unknown arguments
+
+- scripts: Added missing comments
+
+- scripts: Always perform setlocal and endlocal calls in pairs
   
-  curl_ntlm_core.c:146: warning: passing 'DES_cblock' (aka 'unsigned char
-                        [8]') to parameter of type 'char *' converts
-                        between pointers to integer types with different
-                        sign
+  Ensure that there isn't a mismatch between setlocal and endlocal calls,
+  which could have happened due to setlocal being called after certain
+  error conditions were checked for.
 
-- ntlm: Use extend_key_56_to_64() for all cryptography engines
+- scripts: Allow -help to be specified in any argument
   
-  Rather than duplicate the code in setup_des_key() for OpenSSL and in
-  extend_key_56_to_64() for non-OpenSSL based crypto engines, as it is
-  the same, use extend_key_56_to_64() for all engines.
+  Allow the -help command line argument to be specified in any argument
+  and not just as the first.
 
-- RELEASE-NOTES: Synced with 34f0bd110f
+Daniel Stenberg (6 Aug 2015)
+- [juef brought this change]
 
-- curl_ntlm_core.c: Fixed compilation warning
+  curl_multi_remove_handle.3: fix formatting
   
-  curl_ntlm_core.c:458: warning: 'ascii_uppercase_to_unicode_le' defined
-                        but not used
+  closes #366
 
-- endian: Fixed bit-shift in 64-bit integer read functions
+Steve Holme (6 Aug 2015)
+- README: Added notes about 'Running DLL based configurations'
   
-  From commit 43792592ca and 4bb5a351b2.
+  ...as well as a TODO for a future enhancement to the project files.
   
-  Reported-by: Michael Osipov
-
-- smb: Use endian functions for reading NBT and message size values
+  Thanks-to: Jay Satiro
 
-- endian: Added big endian read functions
+- RELEASE-NOTES: Synced with cf8975387f
 
-- endian: Added 64-bit integer read function
+- buildconf.bat: Synchronise no repository error with generate.bat
 
-- COPYING: Bumped copyright year to 2015
+- generate.bat: Added a check for the presence of a git repository
 
-- version: Bump copyright year to 2015
+- [Jay Satiro brought this change]
 
-- smb.c: Fixed compilation warnings
+  build: Added wolfSSL configurations to VC10+ project files
   
-  smb.c:780: warning: passing 'char *' to parameter of type 'unsigned
-             char *' converts between pointers to integer types with
-             different sign
-  smb.c:781: warning: passing 'char *' to parameter of type 'unsigned
-             char *' converts between pointers to integer types with
-             different sign
-  smb.c:804: warning: passing 'char *' to parameter of type 'unsigned
-             char *' converts between pointers to integer types with
-             different sign
+  URL: https://github.com/bagder/curl/pull/174
 
-- smb: Use endian functions for reading length and offset values
+- [Jay Satiro brought this change]
 
-- endian: Added 16-bit integer write function
+  build: Added wolfSSL build script for Visual Studio projects
+  
+  Added the wolfSSL build script, based on build-openssl.bat, as well as
+  the property sheet and header file required for the upcoming additions
+  to the Visual Studio project files.
 
-- endian: Fixed Linux compilation issues
+Daniel Stenberg (6 Aug 2015)
+- CHANGES: refer to the online changelog
   
-  Having files named endian.[c|h] seemed to cause issues under Linux so
-  renamed them both to have the curl_ prefix in the filenames.
+  Suggested-by: mc0e
 
-- [Julien Nabet brought this change]
+- [Isaac Boukris brought this change]
 
-  lib1900.c: Fixed cppcheck error
+  NTLM: handle auth for only a single request
   
-  lib1900.c:182: (style) Array index 'handlenum' is used before limits
-                 check
+  Currently when the server responds with 401 on NTLM authenticated
+  connection (re-used) we consider it to have failed.  However this is
+  legitimate and may happen when for example IIS is set configured to
+  'authPersistSingleRequest' or when the request goes thru a proxy (with
+  'via' header).
   
-  Bug: https://github.com/bagder/curl/pull/133
+  Implemented by imploying an additional state once a connection is
+  re-used to indicate that if we receive 401 we need to restart
+  authentication.
+  
+  Closes #363
 
-- endian: Added standard function descriptions
+Steve Holme (5 Aug 2015)
+- RELEASE-NOTES: Synced with 473807b95f
 
-- endian: Renamed functions for curl API naming convention
+- generate.bat: Use buildconf.bat for prerequisite file clean-up
 
-- endian: Moved write functions to new module
+- buildconf.bat: Added support for file clean-up via -clean
 
-- endian: Moved read functions to new module
+- buildconf.bat: Added progress output
 
-- endian: Introduced endian module
-  
-  To allow the little endian functions, currently used in two of the NTLM
-  source files, to be used by other modules such as the SMB module.
+- buildconf.bat: Avoid using goto for file not in repository
 
-- sepheaders.c: Applied curl oding standards
+Daniel Stenberg (5 Aug 2015)
+- curl_slist_append.3: add error checking to the example
 
-- [Julien Nabet brought this change]
+Steve Holme (5 Aug 2015)
+- buildconf.bat: Added display of usage text with -help
 
-  sepheaders.c: Fixed resource leak on failure
+- buildconf.bat: Added exit codes for error handling
 
-- vtls: Use '(void) arg' for unused parameters
+- buildconf.bat: Added our standard copyright header
+
+- buildconf.bat: Use lower-case for commands and reserved keywords
+
+- generate.bat: Only clean prerequisite files when in ALL mode
+
+- generate.bat: Moved error messages out of sub-routines
+
+- generate.bat: More use of lower-case for commands and reserved keywords
+
+Daniel Stenberg (3 Aug 2015)
+- libcurl.3: fix a single typo
   
-  Prefer void for unused parameters, rather than assigning an argument to
-  itself as a) unintelligent compilers won't optimize it out, b) it can't
-  be used for const parameters, c) it will cause compilation warnings for
-  clang with -Wself-assign and d) is inconsistent with other areas of the
-  curl source code.
+  Closes #361
 
-- smb.c: Fixed compilation warning
+- RELEASE-NOTES: synced with c4eb10e2f06f
+
+- SSH: three state machine fixups
   
-  smb.c:586: warning: conversion to 'short unsigned int' from 'int' may
-             alter its value
+  The SSH state machine didn't clear the 'rc' variable appropriately in a
+  two places which prevented it from looping the way it should. And it
+  lacked an 'else' statement that made it possible to erroneously get
+  stuck in the SSH_AUTH_AGENT state.
+  
+  Reported-by: Tim Stack
+  
+  Closes #357
 
-- [Bill Nagel brought this change]
+- curl_gssapi: remove 'const' to fix compiler warnings
+  
+  initialization discards 'const' qualifier from pointer target type
 
-  smb: Use the connection's upload buffer
+- docs: formpost needs the full size at start of upload
   
-  Use the connection's upload buffer instead of allocating our own send
-  buffer.
+  Closes #360
 
-- RELEASE-NOTES: Synced with 1933f9d33c
+Steve Holme (1 Aug 2015)
+- sspi: Fix typo from left over from old code which referenced NTLM
+  
+  References to NTLM in the identity generation should have been removed
+  in commit c469941293 but not all were.
 
-- schannel: Moved the ISC return flag definitions to the SSPI module
+- win32: Fix compilation warnings from commit 40c921f8b8
   
-  Moved our Initialize Security Context return attribute definitions to
-  the SSPI module, as a) these can be used by other SSPI based providers
-  and b) the ISC required attributes are defined there.
+  connect.c:953:5: warning: initializer element is not computable at load
+                   time
+  connect.c:953:5: warning: missing initializer for field 'dwMinorVersion'
+                   of 'OSVERSIONINFOEX'
+  curl_sspi.c:97:5: warning: initializer element is not computable at load
+                    time
+  curl_sspi.c:97:5: warning: missing initializer for field 'szCSDVersion'
+                    of 'OSVERSIONINFOEX'
 
-- [Bill Nagel brought this change]
+- schannel: Fix compilation warning from commit 7a8e861a56
+  
+  schannel.c:1125:5: warning: missing initializer for field 'dwMinorVersion'
+                     of 'OSVERSIONINFOEX' [-Wmissing-field-initializers
 
-  smb: Close the connection after a failed client write
+Daniel Stenberg (31 Jul 2015)
+- libcurl-thread.3: minor reformatting
 
-- darwinssl: Fixed compilation warning
+Jay Satiro (31 Jul 2015)
+- curl_global_init_mem.3: Warn threaded resolver needs thread safe funcs
   
-  vtls.c:683:43: warning: unused parameter 'data'
+  Bug: http://curl.haxx.se/mail/lib-2015-07/0149.html
+  Reported-by: Eric Ridge
 
-- sockfilt.c: Fixed compilation warnings
+- libcurl-thread.3: Warn memory functions must be thread safe
   
-  sockfilt.c:288: warning: conversion to 'DWORD' from 'size_t' may alter
-                  its value
-  sockfilt.c:291: warning: conversion to 'DWORD' from 'size_t' may alter
-                  its value
-  sockfilt.c:323: warning: conversion to 'DWORD' from 'size_t' may alter
-                  its value
-  sockfilt.c:326: warning: conversion to 'DWORD' from 'size_t' may alter
-                  its value
+  Bug: http://curl.haxx.se/mail/lib-2015-07/0149.html
+  Reported-by: Eric Ridge
 
-- test1509: Fixed compilation warning
+Steve Holme (31 Jul 2015)
+- RELEASE-NOTES: Synced with 8b1d00ac1a
+
+- INSTALL: Minor formatting correction in 'Legacy Windows and SSL' section
   
-  lib1509.c:93:18: warning: conversion to 'long int' from 'size_t' may
-                   alter its value
+  ...as well as some rewording.
 
-- test556: Fixed compilation warning
+Kamil Dudka (30 Jul 2015)
+- http: move HTTP/2 cleanup code off http_disconnect()
   
-  lib556.c:90: warning: conversion to 'unsigned int' from 'size_t' may
-               alter its value
+  Otherwise it would never be called for an HTTP/2 connection, which has
+  its own disconnect handler.
+  
+  I spotted this while debugging <https://bugzilla.redhat.com/1248389>
+  where the http_disconnect() handler was called on an FTP session handle
+  causing 'dnf' to crash.  conn->data->req.protop of type (struct FTP *)
+  was reinterpreted as type (struct HTTP *) which resulted in SIGSEGV in
+  Curl_add_buffer_free() after printing the "Connection cache is full,
+  closing the oldest one." message.
+  
+  A previously working version of libcurl started to crash after it was
+  recompiled with the HTTP/2 support despite the HTTP/2 protocol was not
+  actually used.  This commit makes it work again although I suspect the
+  root cause (reinterpreting session handle data of incompatible protocol)
+  still has to be fixed.  Otherwise the same will happen when mixing FTP
+  and HTTP/2 connections and exceeding the connection cache limit.
+  
+  Reported-by: Tomas Tomecek
+  Bug: https://bugzilla.redhat.com/1248389
 
-- sasl_gssapi: Fixed use of dummy username with real username
+Daniel Stenberg (30 Jul 2015)
+- [Viktor Szakats brought this change]
 
-- vtls: Fixed compilation warning and an ignored return code
+  ABI doc: use secure URL
+
+- ABI: remove the ascii logo
   
-  curl_schannel.h:123: warning: right-hand operand of comma expression
-                       has no effect
+  and made the indent level to 1
+
+- libcurl-multi.3: mention curl_multi_wait
   
-  Some instances of the curlssl_close_all() function were declared with a
-  void return type whilst others as int. The schannel version returned
-  CURLE_NOT_BUILT_IN and others simply returned zero, but in all cases the
-  return code was ignored by the calling function Curl_ssl_close_all().
+  ... and some general rewordings to improve this docs.
   
-  For the time being and to keep the internal API consistent, changed all
-  declarations to use a void return type.
+  Reported-by: Tim Stack
   
-  To reduce code we might want to consider removing the unimplemented
-  versions and use a void #define like schannel does.
+  Closes #356
 
-Daniel Stenberg (28 Dec 2014)
-- TODO: 2.3 Better support for same name resolves
+Steve Holme (30 Jul 2015)
+- maketgz: Fixed some VC makefiles missing from the release tarball
+  
+  VC7, VC11, VC12 and VC14 makefiles were missing from the release
+  tarball.
 
-Steve Holme (28 Dec 2014)
-- test1520: Fixed initial teething problems
+- RELEASE-NOTES: Synced with 2d7e165761
+
+- build: Added VC14 project files to Makefile.am
+
+- build: Added VC14 project files
   
-  * Missing initialisation of upload status caused a seg fault
-  * Missing data termination caused corrupt data to be uploaded
-  * Data verification should be performed in <upload> element
-  * Added missing recipient list cleanup
+  Updates to Makefile.am for the generation of the project files in
+  the tarball to follow.
 
-- test1520: Fixed compilation errors
+Jay Satiro (29 Jul 2015)
+- libcurl-thread.3: Clarify CURLOPT_NOSIGNAL takes long value 1L
 
-- tests: Added test for bug #1456
+Steve Holme (28 Jul 2015)
+- generate.bat: Use lower-case for commands and reserved keywords
+  
+  Whilst there are no coding standards for the batch files used in curl,
+  most tend to use lower-case for keywords and upper-case for variables.
 
-- checksrc.bat: Fixed a problem opening files with spaces in the filename
+- build: Added initial VC14 support to generate.bat
+  
+  Visual Studio project files and updates to makefile.am to follow.
 
-- openldap: Prefer use of 'CURLcode result'
+- build: Fixed missing .opensdf files from VC10+ .gitignore files
 
-- openldap: Use 'LDAPMessage *msg' for messages
+- build: Use $(ProjectName) macro for curl.exe and curld.exe filenames
   
-  This frees up the 'result' variable for CURLcode based result codes.
+  This wasn't possible with the old curlsrc project filenames, but like
+  commit 2a615a2b64 and 11397eb6dd for libcurl use the built in Visual
+  Studio macros for the output filenames.
 
-- nss: Don't ignore Curl_extract_certinfo() OOM failure
+- build: Renamed curl src Visual Studio project files
+  
+  Following commit 957fcd9049 and in preparation for adding the VC14
+  project files renamed the curl source project files.
 
-- nss: Don't ignore Curl_ssl_init_certinfo() OOM failure
+Daniel Stenberg (28 Jul 2015)
+- [Jay Satiro brought this change]
 
-- nss: Use 'CURLcode result' for curl result codes
+  libcurl-thread.3: Revert to stricter handle wording
   
-  ...and don't use CURLE_OK in failure/success comparisons.
+  .. also update formatting and add WinSSL and wolfSSL to the SSL/TLS
+  handlers list.
 
-- getinfo: Code style policing
+- [Jay Satiro brought this change]
 
-- getinfo: Use 'CURLcode result' for curl result codes
+  libcurl-thread.3: Consolidate thread safety info
+  
+  This is a new document to consolidate our thread safety information from
+  several documents (curl-www:features, libcurl.3, libcurl-tutorial.3).
+  Each document's section on multi-threading will now point to this one.
 
-- darwinssl: Use 'CURLcode result' for curl result codes
+Steve Holme (27 Jul 2015)
+- README: Corrected formatting for 'Legacy Windows and SSL' section
+  
+  ...as well as some wording.
 
-- polarssl: Use 'CURLcode result' for curl result codes
+- build-openssl.bat: Added support for VC14
 
-- docs: Updated following the addition of SASL GSSAPI via GSS-API libraries
+Daniel Stenberg (26 Jul 2015)
+- RELEASE-NOTES: synced with 0f645adc95390e8
+
+- test1902: attempt to make the test more reliable
   
-  As this feature has been implemented for 7.40.0.
+  Closes #355
 
-- asiohiper.cpp: No need to initialise members of ConnInfo
+- comment: fix comment about adding new option support
+
+Jay Satiro (25 Jul 2015)
+- build-openssl.bat: Show syntax if required args are missing
+
+Daniel Stenberg (26 Jul 2015)
+- TODO: improve how curl works in a windows console window
   
-  ...as calloc() automatically clears the area of memory with zeros.
+  Closes #322 for now
 
-- asiohiper.cpp: Updated for curl coding standards
+- 1.11 minimize dependencies with dynamicly loaded modules
   
-  ...with the exception of the start of block statement curly brackets.
+  Closes #349 for now
 
-- code/docs: Use correct case for IPv4 and IPv6
+Jay Satiro (25 Jul 2015)
+- tool_operate: Fix CURLOPT_SSL_OPTIONS for builds without HTTPS
   
-  For consistency, as we seem to have a bit of a mixed bag, changed all
-  instances of ipv4 and ipv6 in comments and documentations to use the
-  correct case.
-
-- runtests: Fixed detection of Unix Sockets feature
+  - Set CURLOPT_SSL_OPTIONS only if the tool enabled an SSL option.
   
-  ...following change in curl --version output.
-
-- code/docs: Use Unix rather than UNIX to avoid use of the trademark
+  Broken by me several days ago in 172b2be.
+  https://github.com/bagder/curl/commit/172b2be#diff-70b44ee478e58d4e1ddcf9c9a73d257b
   
-  Use Unix when generically writing about Unix based systems as UNIX is
-  the trademark and should only be used in a particular product's name.
+  Bug: http://curl.haxx.se/mail/lib-2015-07/0119.html
+  Reported-by: Dan Fandrich
 
-- ip2ip.c: Fixed compilation warning when IPv6 Scope ID not supported
+Daniel Stenberg (25 Jul 2015)
+- configure: check if OpenSSL linking wants -ldl
   
-  if2ip.c:119: warning: unused parameter 'remote_scope_id'
+  To make it easier to link with static versions of OpenSSL, the configure
+  script now checks if -ldl is needed for linking.
   
-  ...and some minor code style policing in the same function.
+  Help-by: TJ Saunders
 
-- vtls: Don't set cert info count until memory allocation is successful
+- [Michael Kaufmann brought this change]
+
+  HTTP: ignore "Content-Encoding: compress"
   
-  Otherwise Curl_ssl_init_certinfo() can fail and set the num_of_certs
-  member variable to the requested count, which could then be used
-  incorrectly as libcurl closes down.
+  Currently, libcurl rejects responses with "Content-Encoding: compress"
+  when CURLOPT_ACCEPT_ENCODING is set to "". I think that libcurl should
+  treat the Content-Encoding "compress" the same as other
+  Content-Encodings that it does not support, e.g. "bzip2". That means
+  just ignoring it.
 
-- vtls: Use CURLcode for Curl_ssl_init_certinfo() return type
+- [Marcel Raad brought this change]
+
+  openssl: work around MSVC warning
   
-  The return type for this function was 0 on success and 1 on error. This
-  was then examined by the calling functions and, in most cases, used to
-  return CURLE_OUT_OF_MEMORY.
+  MSVC 12 complains:
   
-  Instead use CURLcode for the return type and return the out of memory
-  error directly, propagating it up the call stack.
+  lib\vtls\openssl.c(1554): warning C4701: potentially uninitialized local
+  variable 'verstr' used It's a false positive, but as it's normally not,
+  I have enabled warning-as-error for that warning.
 
-- configure: Use camel case for UNIX sockets feature output
+- [Michał Fita brought this change]
+
+  configure: add --disable-rt option
   
-  To match the curl --version output.
+  This option disables any attempts in configure to create dependency on
+  stuff requiring linking to librt.so and libpthread.so, in this case this
+  means clock_gettime(CLOCK_MONOTONIC, &mt).
+  
+  We were in need to build curl which doesn't link libpthread.so to avoid
+  the following bug:
+  https://sourceware.org/bugzilla/show_bug.cgi?id=16628.
 
-Marc Hoersken (26 Dec 2014)
-- sockfilt.c: Reduce the number of individual memory allocations
+Kamil Dudka (23 Jul 2015)
+- http2: verify success of strchr() in http2_send()
   
-  Merge multiple internal arrays into one, even if some variables
-  will not not be used. They are all created with the number of
-  file descriptors as their size.
+  Detected by Coverity.
   
-  Also fix possible thread handle leak in CloseHandle-loop.
+  Error: NULL_RETURNS:
+  lib/http2.c:1301: returned_null: "strchr" returns null (checked 103 out of 109 times).
+  lib/http2.c:1301: var_assigned: Assigning: "hdbuf" = null return value from "strchr".
+  lib/http2.c:1302: dereference: Incrementing a pointer which might be null: "hdbuf".
+  1300|
+  1301|     hdbuf = strchr(hdbuf, 0x0a);
+  1302|->   ++hdbuf;
+  1303|
+  1304|     authority_idx = 0;
 
-- sockfilt.c: Replace 100ms sleep with thread throttle
+Jay Satiro (22 Jul 2015)
+- Windows: Fix VerifyVersionInfo calls
   
-  Improves performance of test cases 574 and 575 by 50%.
+  - Fix the VerifyVersionInfo calls, which we use to test for the OS major
+  version, to also test for the minor version as well as the service pack
+  major and minor versions.
   
-  A value of zero causes the thread to relinquish the remainder
-  of its time slice to any other thread of equal priority that is
-  ready to run. If there are no other threads of equal priority
-  ready to run, the function returns immediately, and the thread
-  continues execution.
+  MSDN: "If you are testing the major version, you must also test the
+  minor version and the service pack major and minor versions."
   
-  http://msdn.microsoft.com/library/windows/desktop/ms686307.aspx
-
-Steve Holme (25 Dec 2014)
-- tool_help: Use camel case for UNIX sockets feature output
+  https://msdn.microsoft.com/en-us/library/windows/desktop/ms725492.aspx
   
-  In line with the other features listed in the --version output,
-  capitalise the UNIX socket feature.
+  Bug: https://github.com/bagder/curl/pull/353#issuecomment-123493098
+  Reported-by: Marcel Raad <MarcelRaad@users.noreply.github.com>
 
-- vtls: Use bool for Curl_ssl_getsessionid() return type
-  
-  The return type of this function is a boolean value, and even uses a
-  bool internally, so use bool in the function declaration as well as
-  the variables that store the return value, to avoid any confusion.
+- [Marcel Raad brought this change]
 
-- schannel: Minor code style policing for casts
+  schannel: Replace deprecated GetVersion with VerifyVersionInfo
 
-- schannel: Prefer 'CURLcode result' for curl result codes
+Steve Holme (21 Jul 2015)
+- makefile: Added support for VC14
 
-- cyassl: Prefer 'CURLcode result' for curl result codes
+Patrick Monnerat (21 Jul 2015)
+- os400: ebcdic wrappers for new functions. Upgrade ILE/RPG bindings.
 
-- tool_xattr: Use 'CURLcode result' for curl result codes
+- libcurl: VERSIONINFO update
+  Addition of new procedures curl_pushheader_bynum and curl_pushheader_byname
+  requires VERSIONINFO updating.
 
-- curl_ntlm_core.c: Fixed compilation warnings
-  
-  curl_ntlm_core.c:301: warning: pointer targets in passing argument 2 of
-                        'CryptImportKey' differ in signedness
-  curl_ntlm_core.c:310: warning: passing argument 6 of 'CryptEncrypt' from
-                        incompatible pointer type
-  curl_ntlm_core.c:540: warning: passing argument 4 of 'CryptGetHashParam'
-                        from incompatible pointer type
+- http2: satisfy external references even if http2 is not compiled in.
 
-- RELEASE-NOTES: Synced with 8830df8b66
+Daniel Stenberg (20 Jul 2015)
+- http2: add stream != NULL checks for reliability
+  
+  They should not trigger, but in case of internal problems we at least
+  avoid crashes this way.
 
-- gtls: Use preferred 'CURLcode result'
+Jay Satiro (18 Jul 2015)
+- symbols-in-versions: Add new CURLSSLOPT_NO_REVOKE symbol
 
-- openldap: Use standard naming for setup connection function
+- SSL: Add an option to disable certificate revocation checks
   
-  Renamed ldap_setup() to ldap_setup_connection() to follow more widely
-  used function naming.
-
-- rtmp: Use standard naming for setup connection function
+  New tool option --ssl-no-revoke.
+  New value CURLSSLOPT_NO_REVOKE for CURLOPT_SSL_OPTIONS.
   
-  Renamed rtmp_setup() to rtmp_setup_connection() to follow more widely
-  used function naming.
-
-- smb: Use standard naming for setup connection function
+  Currently this option applies only to WinSSL where we have automatic
+  certificate revocation checking by default. According to the
+  ssl-compared chart there are other backends that have automatic checking
+  (NSS, wolfSSL and DarwinSSL) so we could possibly accommodate them at
+  some later point.
   
-  Renamed smb_setup() to smb_setup_connection() to follow more widely
-  used function naming.
-
-- config-win32.h: Fixed line length > 79 columns
-
-- openssl: Prefer we don't use NULL in comparisons
+  Bug: https://github.com/bagder/curl/issues/264
+  Reported-by: zenden2k <zenden2k@gmail.com>
 
-- build: Removed WIN32 definition from the Visual Studio projects
+- runtests: Allow for spaces in curl custom path
   
-  As this pre-processor definition is defined in curl_setup.h there is no
-  need to include it in the Visual Studio project files.
+  .. also fix some typos in test's FILEFORMAT spec.
 
-- build: Removed WIN64 definition from the libcurl Visual Studio projects
-  
-  Removed the WIN64 pre-processor definition from the libcurl project
-  files as:
+- [David Woodhouse brought this change]
+
+  ntlm_wb: Fix theoretical memory leak
   
-  * WIN64 is not used in our source code
-  * The curl projects files don't define it
-  * It isn't required by or used in the platform SDK
-  * For backwards compatability curl_setup.h defines WIN32
-  * The compiler automatically defines _WIN64 for x64 builds
+  Static analysis indicated that my commit 9008f3d564 ("ntlm_wb: Fix
+  hard-coded limit on NTLM auth packet size") introduced a potential
+  memory leak on an error path, because we forget to free the buffer
+  before returning an error.
   
-  Historically Visual Studio projects have defined WIN32, in addition to
-  the compiler defined _WIN32 definition, and I had incorrectly changed
-  that to WIN64 for the x64 libcurl builds but not in the curl projects.
+  Fix this.
   
-  As such, it is questionable whether this should be defined or not. For
-  more information see the following cache of a discussion that took
-  place on the microsoft.public.vc.mfc newsgroup:
+  Although actually, it never happens in practice because we never *get*
+  here with state == NTLMSTATE_TYPE1. The state is always zero. That
+  might want cleaning up in a separate patch.
   
-  http://www.tech-archive.net/Archive/VC/microsoft.public.vc.mfc/2008-06/msg00074.html
+  Reported-by: Terri Oda
 
-- openssl.c Fix for compilation errors with older versions of OpenSSL
+- strerror: Add CRYPT_E_REVOKED to SSPI error strings
+
+Kamil Dudka (14 Jul 2015)
+- libtest: call PR_Cleanup() on exit if NSPR is used
   
-  openssl.c:1408: error: 'TLS1_1_VERSION' undeclared
-  openssl.c:1411: error: 'TLS1_2_VERSION' undeclared
+  This prevents valgrind from reporting possibly lost memory that NSPR
+  uses for file descriptor cache and other globally allocated internal
+  data structures.
+  
+  Reported-by: Štefan Kremeň
 
-Daniel Stenberg (22 Dec 2014)
+Jay Satiro (14 Jul 2015)
 - [John Malmberg brought this change]
 
-  Fix comment edit in vms/backup_gnv_curl_src.com
+  openssl: VMS support for SHA256
   
-  packages/vms/backup_gnv_curl_src.com: Originally copied from Bash port.
-
-- curl: show size of inhibited data when using -v
+  setup-vms.h: More symbols for SHA256, hacks for older VAX
   
-  To offer some more info and yet it doesn't use more lines.
+  openssl.h: Use OpenSSL OPENSSL_NO_SHA256 macro to allow building on VAX.
+  
+  openssl.c: Use OpenSSL version checks and OPENSSL_NO_SHA256 macro to
+  allow building on VAX and 64 bit VMS.
 
-- openssl: fix SSL/TLS versions in verbose output
+- examples: Fix typo in multi-single.c
 
-- openssl: make it compile against openssl 1.1.0-DEV master branch
+Daniel Stenberg (7 Jul 2015)
+- [Tatsuhiro Tsujikawa brought this change]
 
-Marc Hoersken (22 Dec 2014)
-- sshserver.pl: clarify and streamline variable names
+  http2: Fix memory leak in push header array
 
-Daniel Stenberg (21 Dec 2014)
-- openssl: warn for SRP set if SSLv3 is used, not for TLS version
+Dan Fandrich (2 Jul 2015)
+- test2041: fixed line endings in protocol part
+
+- cyassl: fixed mismatched sha256sum function prototype
+
+Daniel Stenberg (1 Jul 2015)
+- [moparisthebest brought this change]
+
+  SSL: Pinned public key hash support
+
+- examples: provide <DESC> sections
+
+- [John Malmberg brought this change]
+
+  OpenVMS: VMS Software, Inc now the supplier.
   
-  ... as it requires TLS and it was was left to warn on the default from
-  when default was SSL...
+  setup-vms.h: Symbol case fixups submitted by Michael Steve
+  
+  build_gnv_curl_pcsi_desc.com: VSI aka as VMS Software, is now the
+  supplier of new versions of VMS.  The install kit needs to accept
+  VSI as a producer.
 
-- smb: use memcpy() instead of strncpy()
+Jay Satiro (30 Jun 2015)
+- multi: Move http2 push function declarations to header end
   
-  ... as it never copies the trailing zero anyway and always just the four
-  bytes so let's not mislead anyone into thinking it is actually treated
-  as a string.
+  This change necessary for binary compatibility.
   
-  Coverity CID: 1260214
+  Prior to this change test 1135 failed due to the order of functions.
 
-- [John E. Malmberg brought this change]
+- symbols-in-versions: Add new http2 push symbols
+  
+  Prior to this change test 1119 failed due to the missing symbols.
 
-  VMS: Updates for 0740-0D1220
+Daniel Stenberg (30 Jun 2015)
+- RELEASE-NOTES: synced with e6749055d653
+
+- configure: disable libidn by default
   
-  lib/setup-vms.h : VAX HP OpenSSL port is ancient, needs help.
-                    More defines to set symbols to uppercase.
+  For security reasons, until there is a fix.
   
-  src/tool_main.c : Fix parameter to vms_special_exit() call.
+  Bug: http://curl.haxx.se/mail/lib-2015-06/0143.html
+  Reported-by: Gustavo Grieco, Feist Josselin
+
+- SSL-PROBLEMS: mention WinSSL problems in WinXP
+
+- CODE_OF_CONDUCT.md: added
   
-  packages/vms/ :
-    backup_gnv_curl_src.com : Fix the error message to have the correct package.
+  Just to underscore how we treat each other in this project. Nothing new
+  really, but could be useful for newcomers and outsiders to see our
+  values.
+
+- tool_header_cb: fflush the header stream
   
-    build_curl-config_script.com : Rewrite to be more accurate.
+  Flush the header stream when -D is used so that they are sent off
+  earlier.
   
-    build_libcurl_pc.com : Use tool_version.h now.
+  Bug: https://github.com/bagder/curl/issues/324
+  Reported-by: Cédric Connes
+
+- [Roger Leigh brought this change]
+
+  tests: Distribute CMakeLists.txt files in subdirectories
+
+- CURLOPT_FAILONERROR.3: mention that it closes the connection
   
-    build_vms.com : Fix to handle lib/vtls directory.
+  Reported-by: bemoody
+  Bug: https://github.com/bagder/curl/issues/325
+
+- curl_multi_setopt.3: alpha sort the options
+
+- curl_multi_setopt.3: add the new push options
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  http2: Use nghttp2 library error code for error return value
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  http2: Harden header validation for curl_pushheader_byname
   
-    curl_gnv_build_steps.txt : Updated build procedure documentation.
+  Since we do prefix match using given header by application code
+  against header name pair in format "NAME:VALUE", and VALUE part can
+  contain ":", we have to careful about existence of ":" in header
+  parameter.  ":" should be allowed to match HTTP/2 pseudo-header field,
+  and other use of ":" in header must be treated as error, and
+  curl_pushheader_byname should return NULL.  This commit implements
+  this behaviour.
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  CURLMOPT_PUSHFUNCTION.3: Remove unused variable
+
+- CURLMOPT_PUSHFUNCTION.3: added example
+
+- http2: curl_pushheader_byname now takes a const char *
+
+- http2-serverpush.c: example code
+
+- http2: free all header memory after the push callback
+
+- http2: init the pushed transfer properly
+
+- http2: fixed the header accessor functions for the push callback
+
+- http2: setup the new pushed stream properly
+
+- http2: initial implementation of the push callback
+
+- http2: initial HTTP/2 server push types/docs
+
+- test1531: verify POSTFIELDSIZE set after add_handle
   
-    generate_config_vms_h_curl.com :
-         * VAX does not support 64 bit ints, so no NTLM support for now.
-         * VAX HP SSL port is ancient, needs some help.
-         * Disable NGHTTP2 for now, not ported to VMS.
-         * Disable UNIX_SOCKETS, not available on VMS yet.
-         * HP GSSAPI port does not have gss_nt_service_name.
+  Following the fix made in 903b6e05565bf.
+
+- pretransfer: init state.infilesize here, not in add_handle
   
-    gnv_link_curl.com : Update for new curl structure.
+  ... to properly support that options are set to the handle after it is
+  added to the multi handle.
   
-    pcsi_product_gnv_curl.com : Set up to optionally do a complete build.
+  Bug: http://curl.haxx.se/mail/lib-2015-06/0122.html
+  Reported-by: Stefan Bühler
 
-Marc Hoersken (21 Dec 2014)
-- sockfilt.c: use non-Ex functions that are available before WinXP
-  
-  It was initially reported by Guenter that GetFileSizeEx
-  requires (_WIN32_WINNT >= 0x0500) to be true.
+Jay Satiro (21 Jun 2015)
+- [Lior Kaplan brought this change]
 
-- tests: use Cygwin-style paths in SSH, SSHD and SFTP config files
+  tool_help: fix --tlsv1 help text to use >= for TLSv1
+
+- INSTALL: Advise use of non-native SSL for Windows <= XP
   
-  Second patch to enable Windows support using Cygwin-based OpenSSH.
+  Advise that WinSSL in versions <= XP will not be able to connect to
+  servers that no longer support the legacy handshakes and algorithms used
+  by those versions, and to use an alternate backend like OpenSSL instead.
   
-  Tested with CopSSH 5.0.0 free edition using an msys shell on Windows 7.
+  Bug: https://github.com/bagder/curl/issues/253
+  Reported-by: zenden2k <zenden2k@gmail.com>
 
-- tests: support spaces in paths to SSH, SSHD and SFTP binaries
+Kamil Dudka (19 Jun 2015)
+- curl_easy_setopt.3: restore contents removed by mistake
   
-  First patch to enable Windows support using Cygwin-based OpenSSH.
+  ... in commit curl-7_43_0-18-g570076e
 
-Steve Holme (20 Dec 2014)
-- non-ascii: Reduce variable usage
+Daniel Stenberg (19 Jun 2015)
+- curl_easy_setopt.3: mention CURLOPT_PIPEWAIT
+
+Jay Satiro (18 Jun 2015)
+- cookie: Fix bug in export if any-domain cookie is present
   
-  Removed 'next' variable in Curl_convert_form(). Rather than setting it
-  from 'form->next' and using that to set 'form' after the conversion
-  just use 'form = form->next' instead.
+  In 3013bb6 I had changed cookie export to ignore any-domain cookies,
+  however the logic I used to do so was incorrect, and would lead to a
+  busy loop in the case of exporting a cookie list that contained
+  any-domain cookies. The result of that is worse though, because in that
+  case the other cookies would not be written resulting in an empty file
+  once the application is terminated to stop the busy loop.
 
-- non-ascii: Prefer while loop rather than a do loop
+Dan Fandrich (18 Jun 2015)
+- FTP: fixed compiling with --disable-proxy, broken in b88f980a
+
+Daniel Stenberg (18 Jun 2015)
+- tool: always provide negotiate/kerberos options
   
-  This also removes the need to check that the 'form' argument is valid.
+  libcurl can still be built with it, even if the tool is not. Maintain
+  independence!
 
-- non-ascii: Reduce variable scope
+- TODO: Support IDNA2008
+
+- [Viktor Szakats brought this change]
+
+  Makefile.m32: add support for CURL_LDFLAG_EXTRAS
   
-  As 'result' isn't used out side the conversion callback code and
-  previously caused variable shadowing in the libiconv based code.
+  It is similar to existing CURL_CFLAG_EXTRAS, but for
+  extra linker option.
 
-- non-ascii: We prefer 'CURLcode result'
+- RTSP: removed another piece of dead code
   
-  This also fixes a variable shadowing issue when HAVE_ICONV is defined
-  as rc was declared for the result code of libiconv based functions.
+  Coverity CID 1306668
 
-Marc Hoersken (19 Dec 2014)
-- secureserver.pl: clean up formatting of config and fix verbose output
+- openssl: fix use of uninitialized buffer
   
-  Verbose output was not matching the actual configuration file,
-  because FIPS and Windows conditions were ignored.
+  Make sure that the error buffer is always initialized and simplify the
+  use of it to make the logic easier.
+  
+  Bug: https://github.com/bagder/curl/issues/318
+  Reported-by: sneis
 
-- secureserver.pl: update Windows detection and fix path conversion
+- examples: more descriptions
 
-- secureserver.pl: make OpenSSL CApath and cert absolute path values
+- examples: add descriptions with <DESC>
   
-  Recent stunnel versions (5.08) seem to have trouble with relative
-  paths on Windows. This turns the relative paths into absolute ones.
-
-Patrick Monnerat (18 Dec 2014)
-- if2ip: dummy scope parameter for Curl_if2ip() call in SIOCGIFADDR-enabled code.
+  Using this fixed format for example descriptions, we can generate a
+  better list on the web site.
 
-- [Kyle J. McKay brought this change]
+- libcurl-errors.3: fix typo
 
-  parseurlandfillconn(): fix improper non-numeric scope_id stripping.
-  Fixes SF bug 1149: http://sourceforge.net/p/curl/bugs/1449/
+- curl_easy_setopt.3: option order doesn't matter
 
-- IPV6: address scope != scope id
-  There was a confusion between these: this commit tries to disambiguate them.
-  - Scope can be computed from the address itself.
-  - Scope id is scope dependent: it is currently defined as 1-based local
-    interface index for link-local scoped addresses, and as a site index(?) for
-    (obsolete) site-local addresses. Linux only supports it for link-local
-    addresses.
-  The URL parser properly parses a scope id as an interface index, but stores it
-  in a field named "scope": confusion. The field has been renamed into "scope_id".
-  Curl_if2ip() used the scope id as it was a scope. This caused failures
-  to bind to an interface.
-  Scope is now computed from the addresses and Curl_if2ip() matches them.
-  If redundantly specified in the URL, scope id is check for mismatch with
-  the interface index.
+- openssl: fix build with BoringSSL
   
-  This commit should fix SF bug #1451.
+  OPENSSL_load_builtin_modules does not exist in BoringSSL. Regression
+  from cae43a1
 
-- connect: singleipconnect(): properly try other address families after failure
+- [Paul Howarth brought this change]
 
-Daniel Stenberg (16 Dec 2014)
-- SFTP: work-around servers that return zero size on STAT
+  openssl: Fix build with openssl < ~ 0.9.8f
   
-  Bug: http://curl.haxx.se/mail/lib-2014-12/0103.html
-  Pathed-by: Marc Renault
-
-- glob_next_url: make the loop count upwards
-  
-  As the former contruct apparently caused a compiler warning, mentioned
-  in d8efde07e556c.
-
-- tool_operate: we prefer 'CURLcode result'
+  The symbol SSL3_MT_NEWSESSION_TICKET appears to have been introduced at
+  around openssl 0.9.8f, and the use of it in lib/vtls/openssl.c breaks
+  builds with older openssls (certainly with 0.9.8b, which is the latest
+  older version I have to try with).
 
-- tool_urlglob: unify return codes to use CURLcode
+- FTP: do the HTTP CONNECT for data connection blocking
   
-  There was a mix of GlobCode, CURLcode and ints and they were mostly
-  passing around CURLcode errors. This change makes the functions use only
-  CURLcode and removes the GlobCode type completely.
-
-- tool_urlglob.c: partly reverse dc19789444
+  ** WORK-AROUND **
   
-  The loop in glob_next_url() needs to be done backwards to maintain the
-  logic. dc19789444 caused test 1235 to fail.
-
-- KNOWN_BUGS: the SFTP code doesn't support CURLINFO_FILETIME
-
-- [Jay Satiro brought this change]
-
-  opts: Warn CURLOPT_TIMEOUT overrides when set after CURLOPT_TIMEOUT_MS
+  The introduced non-blocking general behaviour for Curl_proxyCONNECT()
+  didn't work for the data connection establishment unless it was very
+  fast. The newly introduced function argument makes it operate in a more
+  blocking manner, more like it used to work in the past. This blocking
+  approach is only used when the FTP data connecting through HTTP proxy.
   
-  Change CURLOPT_TIMEOUT doc to warn that if CURLOPT_TIMEOUT and
-  CURLOPT_TIMEOUT_MS are both set whichever one is set last is the one
-  that will be used.
+  Blocking like this is bad. A better fix would make it work more
+  asynchronously.
   
-  Prior to this change that behavior was only noted in the
-  CURLOPT_TIMEOUT_MS doc.
+  Bug: https://github.com/bagder/curl/issues/278
 
-Nick Zitzmann (15 Dec 2014)
-- darwinssl: fix incorrect usage of aprintf()
-  
-  Commit b13923f changed an snprintf() to use aprintf(), but the API usage
-  wasn't correct, and was causing a crash to occur. This fixes it.
-
-Steve Holme (14 Dec 2014)
-- copyright: Updated the copyright year following recent updates
+- bump: start the journey toward 7.44.0
 
-Daniel Stenberg (14 Dec 2014)
-- tool_urlglob.c: reverse two loops
-  
-  By counting from 0 and up instead of backwards like before, we remove
-  the need for the "funny" check of the unsigned variable when decreased
-  passed zero. Easier to read and less risk for compiler warnings.
+Jay Satiro (17 Jun 2015)
+- CURLOPT_ERRORBUFFER.3: Fix example, escape backslashes
 
-Marc Hoersken (14 Dec 2014)
-- tool_urlglob.c: Added braces to clarify the conditions
+- CURLOPT_ERRORBUFFER.3: Improve example
 
-- tool_urlglob.c: Silence warning C6293: Ill-defined for-loop
-  
-  The >= 0 is actually not required, since i underflows and
-  the for-loop is stopped using the < condition, but this
-  makes the VS2012 compiler and code analysis happy.
-
-- tool_binmode.c: Explicitly ignore the return code of setmode
-  
-  Fixes code analysis warning C6031:
-  return value ignored: <function> could return unexpected value
-
-- lib: Fixed multiple code analysis warnings if SAL are available
-  
-  warning C28252: Inconsistent annotation for function:
-  parameter has another annotation on this instance
-
-Steve Holme (14 Dec 2014)
-- smb.c: Fixed code analysis warning
-  
-  smb.c:320: warning C6297: Arithmetic overflow: 32-bit value is shifted,
-             then cast to 64-bit value. Result may not be an expected
-             value
+Version 7.43.0 (17 Jun 2015)
 
-Marc Hoersken (14 Dec 2014)
-- tool_util.c: Use GetTickCount64 if it is available
+Daniel Stenberg (17 Jun 2015)
+- RELEASE-NOTES: 7.43.0 release
 
-Steve Holme (14 Dec 2014)
-- smb: Use HAVE_PROCESS_H for process.h inclusion
-  
-  Rather than testing against _WIN32 use the preferred HAVE_PROCESS_H
-  pre-processor define when including process.h.
+- THANKS: updated with 7.43.0 names
 
-Daniel Stenberg (14 Dec 2014)
-- darwinssl: aprintf() to allocate the session key
-  
-  ... to avoid using a fixed memory size that risks being too large or too
-  small.
+- [Kamil Dudka brought this change]
 
-Marc Hoersken (14 Dec 2014)
-- curl_schannel: Improvements to memory re-allocation strategy
+  http: do not leak basic auth credentials on re-used connections
   
-  - do not grow memory by doubling its size
-  - do not leak previously allocated memory if reallocation fails
-  - replace while-loop with a single check to make sure
-    that the requested amount of data fits into the buffer
+  CVE-2015-3236
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1450
-  Reported-by: Warren Menzer
-
-Steve Holme (14 Dec 2014)
-- asyn-ares: We prefer use of 'CURLcode result'
-
-Marc Hoersken (14 Dec 2014)
-- curl_schannel.c: Data may be available before connection shutdown
-
-Steve Holme (14 Dec 2014)
-- http2: Use 'CURLcode result' for curl result codes
-
-- asyn-thread:  We prefer 'CURLcode result'
-
-- smb: Fixed unnecessary initialisation of struct member variables
+  This partially reverts commit curl-7_39_0-237-g87c4abb
   
-  There is no need to set the 'state' and 'result' member variables to
-  SMB_REQUESTING (0) and CURLE_OK (0) after the allocation via calloc()
-  as calloc() initialises the contents to zero.
+  Reported-by: Tomas Tomecek, Kamil Dudka
+  Bug: http://curl.haxx.se/docs/adv_20150617A.html
 
-- ntlm: Fixed return code for bad type-2 Target Info
-  
-  Use CURLE_BAD_CONTENT_ENCODING for bad type-2 Target Info security
-  buffers just like we do for bad decodes.
+- [Kamil Dudka brought this change]
 
-- ntlm: Remove unnecessary casts in readshort_le()
-  
-  I don't think both of my fix ups from yesterday were needed to fix the
-  compilation warning, so remove the one that I think is unnecessary and
-  let the next Android autobuild prove/disprove it.
+  test2040: verify basic auth on re-used connections
 
-- curl_ntlm_msgs.c: Another attempt to fix compilation warning
+- SMB: rangecheck values read off incoming packet
   
-  curl_ntlm_msgs.c:170: warning: conversion to 'short unsigned int' from
-                        'int' may alter its value
-
-Guenter Knauf (13 Dec 2014)
-- synctime.c: added own user-agent string.
-
-Steve Holme (13 Dec 2014)
-- smb.c: Fixed line longer than 79 columns
-
-- curl_ntlm_msgs.c: Fixed compilation warning from commit 783b5c3b11
+  CVE-2015-3237
   
-  curl_ntlm_msgs.c:169: warning: conversion to 'short unsigned int' from
-                        'int' may alter its value
-
-Guenter Knauf (13 Dec 2014)
-- mk-ca-bundle.pl: restored forced run again.
-
-- synctime.c: removed another timeserver URL.
+  Detected by Coverity. CID 1299430.
   
-  worldtimeserver.com seems also no longer available.
+  Bug: http://curl.haxx.se/docs/adv_20150617B.html
 
-- synctime.c: fixed timeserver URLs.
+Jay Satiro (17 Jun 2015)
+- schannel: schannel_recv overhaul
   
-  For getting the date header its not necessary to access special
-  pages or even CGI scripts - all pages including the main index
-  reply with the date header, therefore shortened URLs to domain.
-  Removed worldtime.com; added pool.ntp.org.
-
-Steve Holme (13 Dec 2014)
-- ftp.c: Fixed compilation warning when no verbose string support
+  This commit is several drafts squashed together. The changes from each
+  draft are noted below. If any changes are similar and possibly
+  contradictory the change in the latest draft takes precedence.
   
-  ftp.c:819: warning: unused parameter 'lineno'
-
-- smb: Added state change functions to assist with debugging
+  Bug: https://github.com/bagder/curl/issues/244
+  Reported-by: Chris Araman
   
-  For debugging purposes, and as per other protocols within curl, added
-  state change functions rather than changing the states directly.
-
-- ntlm: Use short integer when decoding 16-bit values
-
-- RELEASE-NOTES: Synced with 6291a16b20
-
-- smtp.c: Fixed compilation warnings
+  %%
+  %% Draft 1
+  %%
+  - return 0 if len == 0. that will have to be documented.
+  - continue on and process the caches regardless of raw recv
+  - if decrypted data will be returned then set the error code to CURLE_OK
+  and return its count
+  - if decrypted data will not be returned and the connection has closed
+  (eg nread == 0) then return 0 and CURLE_OK
+  - if decrypted data will not be returned and the connection *hasn't*
+  closed then set the error code to CURLE_AGAIN --only if an error code
+  isn't already set-- and return -1
+  - narrow the Win2k workaround to only Win2k
   
-  smtp.c:2357 warning: adding 'size_t' (aka 'unsigned long') to a string
-              does not append to the string
-  smtp.c:2375 warning: adding 'size_t' (aka 'unsigned long') to a string
-              does not append to the string
-  smtp.c:2386 warning: adding 'size_t' (aka 'unsigned long') to a string
-              does not append to the string
+  %%
+  %% Draft 2
+  %%
+  - Trying out a change in flow to handle corner cases.
   
-  Used array index notation instead.
-
-- smb: Disable SMB when 64-bit integers are not supported
+  %%
+  %% Draft 3
+  %%
+  - Back out the lazier decryption change made in draft2.
   
-  This fixes compilation issues with compilers that don't support 64-bit
-  integers through long long or __int64.
-
-- ntlm: Disable NTLM v2 when 64-bit integers are not supported
+  %%
+  %% Draft 4
+  %%
+  - Some formatting and branching changes
+  - Decrypt all encrypted cached data when len == 0
+  - Save connection closed state
+  - Change special Win2k check to use connection closed state
   
-  This fixes compilation issues with compilers that don't support 64-bit
-  integers through long long or __int64 which was introduced in commit
-  07b66cbfa4.
-
-- ntlm: Allow NTLM2Session messages when USE_NTRESPONSES manually defined
+  %%
+  %% Draft 5
+  %%
+  - Default to CURLE_AGAIN in cleanup if an error code wasn't set and the
+  connection isn't closed.
   
-  Previously USE_NTLM2SESSION would only be defined automatically when
-  USE_NTRESPONSES wasn't already defined. Separated the two definitions
-  so that the user can manually set USE_NTRESPONSES themselves but
-  USE_NTLM2SESSION is defined automatically if they don't define it.
-
-- smtp.c: Fixed line longer than 79 columns
-
-- config-win32.h: Don't enable Windows Crypt API if using OpenSSL
+  %%
+  %% Draft 6
+  %%
+  - Save the last error only if it is an unrecoverable error.
   
-  As the OpenSSL and NSS Crypto engines are prefered by the core NTLM
-  routines, to the Windows Crypt API, don't define USE_WIN32_CRYPT
-  automatically when either OpenSSL or NSS are in use - doing so would
-  disable NTLM2Session responses in NTLM type-3 messages.
-
-- smtp: Fixed inappropriate free of the scratch buffer
+  Prior to this I saved the last error state in all cases; unfortunately
+  the logic to cover that in all cases would lead to some muddle and I'm
+  concerned that could then lead to a bug in the future so I've replaced
+  it by only recording an unrecoverable error and that state will persist.
   
-  If the scratch buffer was allocated in a previous call to
-  Curl_smtp_escape_eob(), a new buffer not allocated in the subsequent
-  call and no action taken by that call, then an attempt would be made to
-  try and free the buffer which, by now, would be part of the data->state
-  structure.
+  - Do not recurse on renegotiation.
   
-  This bug was introduced in commit 4bd860a001.
-
-- smtp: Fixed dot stuffing when EOL characters were at end of input buffers
+  Instead we'll continue on to process any trailing encrypted data
+  received during the renegotiation only.
   
-  Fixed a problem with the CRLF. detection when multiple buffers were
-  used to upload an email to libcurl and the line ending character(s)
-  appeared at the end of each buffer. This meant any lines which started
-  with . would not be escaped into .. and could be interpreted as the end
-  of transmission string instead.
+  - Move the err checks in cleanup after the check for decrypted data.
   
-  This only affected libcurl based applications that used a read function
-  and wasn't reproducible with the curl command-line tool.
+  In either case decrypted data is always returned but I think it's easier
+  to understand when those err checks come after the decrypted data check.
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1456
-  Assisted-by: Patrick Monnerat
-
-Daniel Stenberg (11 Dec 2014)
-- telnet: fix "cast increases required alignment of target type"
-
-- ntlm_wb_response: fix "statement not reached"
+  %%
+  %% Draft 7
+  %%
+  - Regardless of len value go directly to cleanup if there is an
+  unrecoverable error or a close_notify was already received. Prior to
+  this change we only acknowledged those two states if len != 0.
   
-  ... and I could use a break instead of a goto to end the loop.
+  - Fix a bug in connection closed behavior: Set the error state in the
+  cleanup, because we don't know for sure it's an error until that time.
   
-  Bug: http://curl.haxx.se/mail/lib-2014-12/0089.html
-  Reported-by: Tor Arntsen
-
-Steve Holme (10 Dec 2014)
-- RELEASE-NOTES: Synced with 1cc5194337
+  - (Related to above) In the case the connection is closed go "greedy"
+  with the decryption to make sure all remaining encrypted data has been
+  decrypted even if it is not needed at that time by the caller. This is
+  necessary because we can only tell if the connection closed gracefully
+  (close_notify) once all encrypted data has been decrypted.
   
-  Added some bug fixes that I had missed in previous synchronisations.
-
-Daniel Stenberg (10 Dec 2014)
-- Curl_unix2addr: avoid using the variable name 'sun'
+  - Do not renegotiate when an unrecoverable error is pending.
   
-  I suspect this causes compile failures on Solaris:
+  %%
+  %% Draft 8
+  %%
+  - Don't show 'server closed the connection' info message twice.
   
-  Bug: http://curl.haxx.se/mail/lib-2014-12/0081.html
+  - Show an info message if server closed abruptly (missing close_notify).
 
-Steve Holme (10 Dec 2014)
-- url.c: Fixed compilation warning when USE_NTLM is not defined
-  
-  url.c:3078: warning: variable 'credentialsMatch' set but not used
+Daniel Stenberg (16 Jun 2015)
+- [Paul Oliver brought this change]
 
-- parsedate.c: Fixed compilation warning
+  Fix typo in docs
   
-  parsedate.c:548: warning: 'parsed' may be used uninitialized in this
-                   function
-  
-  As curl_getdate() returns -1 when parsedate() fails we can initialise
-  parsed to -1.
+  s/curret/current/
 
-Daniel Stenberg (10 Dec 2014)
-- TODO: Cache negative name resolves
-  
-  Worth exploring
+- [Viktor Szakats brought this change]
 
-- ldap: check Curl_client_write() return codes
-  
-  There might be one or two memory leaks left in the error paths.
+  docs: update URLs
 
-- ldap: rename variables to comply to curl standards
+- RELEASE-NOTES: synced with f29f2cbd00dbe5f
 
-Dan Fandrich (10 Dec 2014)
-- sws.c: Fixed 'rc' may be used uninitialized warning
+- [Viktor Szakats brought this change]
 
-- cookies: Improved OOM handling in cookies
-  
-  This fixes the test 506 torture test. The internal cookie API really
-  ought to be improved to separate cookie parsing errors (which may be
-  ignored) with OOM errors (which should be fatal).
+  README: use secure protocol for Git repository
 
-Guenter Knauf (9 Dec 2014)
-- synctime.c: fixed user-agent setting.
-  
-  Some websites meanwhile refuse to reply to requests from ancient
-  browsers like IE6, therefore I've comment out this setting, but
-  also fixed the string to now fake IE8 if someone enables it.
+- [Viktor Szakats brought this change]
 
-Daniel Stenberg (9 Dec 2014)
-- smb: fix unused return code warning
+  HTTP2.md: use SSL/TLS IETF URLs
 
-Patrick Monnerat (9 Dec 2014)
-- Curl_client_write() & al.: chop long data, convert data only once.
+- [Viktor Szakats brought this change]
 
-Guenter Knauf (9 Dec 2014)
-- VC build: added sspi define for winssl-zlib builds.
-
-Daniel Stenberg (9 Dec 2014)
-- schannel_recv: return the correct code
+  LICENSE-MIXING: update URLs
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1462
-  Reported-by: Tae Hyoung Ahn
-
-- http2: avoid logging neg "failure" if h2 was not requested
-
-- openldap: do not ignore Curl_client_write() return codes
+  * use SSL/TLS where available
+  * follow permanent redirects
 
-- compile: warn on unused return code from Curl_client_write()
+- LICENSE-MIXING: refreshed
 
-Patrick Monnerat (8 Dec 2014)
-- SMB: Fix a data size mismatch that broke SMB on big-endian platforms
+- curl_easy_duphandle: see also *reset
 
-Steve Holme (7 Dec 2014)
-- smb: Fixed Windows autoconf builds following commit eb88d778e7
+- rtsp_do: fix DEAD CODE
   
-  As Windows based autoconf builds don't yet define USE_WIN32_CRYPTO
-  either explicitly through --enable-win32-cypto or automatically on
-  _WIN32 based platforms, subsequent builds broke with the following
-  error message:
+  "At condition p_request, the value of p_request cannot be NULL."
   
-  "Can't compile NTLM support without a crypto library."
-
-- RELEASE-NOTES: Synced with 526603ff05
-
-- [Bill Nagel brought this change]
+  Coverity CID 1306668.
 
-  smb: Build with SSPI enabled
+- security:choose_mech fix DEAD CODE warning
   
-  Build SMB/CIFS protocol support when SSPI is enabled.
-
-- [Bill Nagel brought this change]
-
-  ntlm: Use Windows Crypt API
+  ... by removing the "do {} while (0)" block.
   
-  Allow the use of the Windows Crypt API for NTLMv1 functions.
+  Coverity CID 1306669
 
-Dan Fandrich (7 Dec 2014)
-- cookie.c: Refactored cleanup code to simplify
-  
-  Also, fixed the outdated comments on the cookie API.
+- curl.1: netrc is in man section 5
 
-- get_url_file_name: Fixed crash on OOM on debug build
+- curl.1: small format fix
   
-  This caused a null-pointer dereference which caused a few dozen
-  torture tests to fail.
+  use \fI-style instead of .BR for references
 
-Steve Holme (6 Dec 2014)
-- sws.c: Fixed compilation warning
+- urldata: store POST size in state.infilesize too
   
-  sws.c:2191 warning: 'rc' may be used uninitialized in this function
-
-- ftp.c: Fixed compilation warnings when proxy support disabled
+  ... to simplify checking when PUT _or_ POST have completed.
   
-  ftp.c:1827 warning: unused parameter 'newhost'
-  ftp.c:1827 warning: unused parameter 'newport'
+  Reported-by: Frank Meier
+  Bug: http://curl.haxx.se/mail/lib-2015-06/0019.html
 
-- smb: Fixed a problem with large file transfers
-  
-  Fixed an issue with the message size calculation where the raw bytes
-  from the buffer were interpreted as signed values rather than unsigned
-  values.
-  
-  Reported-by: Gisle Vanem
-  Assisted-by: Bill Nagel
+Dan Fandrich (14 Jun 2015)
+- test1530: added http to required features
 
-- smb: Moved the URL decoding into a separate function
+Jay Satiro (14 Jun 2015)
+- [Drake Arconis brought this change]
 
-- smb: Fixed URL encoded URLs not working
+  build: Fix typo from OpenSSL 1.0.2 version detection fix
 
-- Makefile.inc: Added our standard header and updated file formatting
+- [Drake Arconis brought this change]
 
-- Makefile.inc: Updated file formatting
-  
-  Aligned continuation character and used space as the separator
-  character as per other makefile files.
+  build: Properly detect OpenSSL 1.0.2 when using configure
 
-- curl_md4.h: Updated copyright year following recent edit
-  
-  ...and minor layout adjustment.
+- curl_multi_info_read.3: fix example formatting
 
-Patrick Monnerat (5 Dec 2014)
-- SMB: Fix big endian problems. Make it OS/400 aware.
+Daniel Stenberg (13 Jun 2015)
+- BINDINGS: there's a new R binding in town!
 
-- OS400: enable NTLM authentication
+- BINDINGS: added the Xojo binding
 
-Steve Holme (5 Dec 2014)
-- multi.c: Fixed compilation warning
+Jay Satiro (11 Jun 2015)
+- [Joel Depooter brought this change]
+
+  schannel: Add support for optional client certificates
   
-  multi.c:2695: warning: declaration of `exp' shadows a global declaration
+  Some servers will request a client certificate, but not require one.
+  This change allows libcurl to connect to such servers when using
+  schannel as its ssl/tls backend. When a server requests a client
+  certificate, libcurl will now continue the handshake without one,
+  rather than terminating the handshake. The server can then decide
+  if that is acceptable or not. Prior to this change, libcurl would
+  terminate the handshake, reporting a SEC_I_INCOMPLETE_CREDENTIALS
+  error.
 
-Guenter Knauf (5 Dec 2014)
-- build: updated dependencies in makefiles.
+Daniel Stenberg (11 Jun 2015)
+- curl_easy_cleanup.3: provide more SEE ALSO
 
-Steve Holme (5 Dec 2014)
-- sasl: Corrected formatting of function descriptions
+- debug: remove http2 debug leftovers
 
-- sasl_gssapi: Added missing function description
+- VERSIONS: now using markdown
 
-- RELEASE-NOTES: Provided better descriptions
-  
-  As it is often difficult to choose the best description for a single
-  feature when it spans many commits, updated the descriptions for the
-  recent SMB/CIFS protocol and GSS-API additions.
+- RELEASE-PROCEDURE: remove ascii logo at the top of file
 
-- sasl_sspi: Corrected some typos
+- INTERNALS: absorbed docs/LIBCURL-STRUCTS
 
-- sasl_sspi: Don't use hard coded sizes in Kerberos V5 security data
+- INTERNALS: cat lib/README* >> INTERNALS
   
-  Don't use a hard coded size of 4 for the security layer and buffer size
-  in Curl_sasl_create_gssapi_security_message(), instead, use sizeof() as
-  we have done in the sasl_gssapi module.
-
-- sasl_sspi: Free the Kerberos V5 challenge as soon as we're done with it
+  and a conversion to markdown. Removed the lib/README.* files. The idea
+  being to move toward having INTERNALS as the one and only "book" of
+  internals documentation.
   
-  Reduced the amount of free's required for the decoded challenge message
-  in Curl_sasl_create_gssapi_security_message() as a result of coding it
-  differently in the sasl_gssapi module.
-
-- gssapi: Corrected typo in comments
-
-- sasl_gssapi: Added body to Curl_sasl_create_gssapi_security_message()
-
-Daniel Stenberg (4 Dec 2014)
-- [Stefan Bühler brought this change]
+  Added a TOC to top of the document.
 
-  http_perhapsrewind: don't abort CONNECT requests
+Jay Satiro (8 Jun 2015)
+- openssl: LibreSSL and BoringSSL do not use TLS_client_method
   
-  ...they never have a body
-
-- [Stefan Bühler brought this change]
-
-  HTTP: Free (proxy)userpwd for NTLM/Negotiate after sending a request
+  Although OpenSSL 1.1.0+ deprecated SSLv23_client_method in favor of
+  TLS_client_method LibreSSL and BoringSSL didn't and still use
+  SSLv23_client_method.
   
-  Sending NTLM/Negotiate header again after successful authentication
-  breaks the connection with certain Proxies and request types (POST to MS
-  Forefront).
+  Bug: https://github.com/bagder/curl/commit/49a6642#commitcomment-11578009
+  Reported-by: asavah@users.noreply.github.com
 
-- [Stefan Bühler brought this change]
+Daniel Stenberg (9 Jun 2015)
+- RELEASE-NOTES: synced with 20ac3458068
 
-  HTTP: don't abort connections with pending Negotiate authentication
+- CURLOPT_OPENSOCKETFUNCTION: return error at once
   
-  ... similarly to how NTLM works as Negotiate is in fact often NTLM with
-  another name.
+  When CURL_SOCKET_BAD is returned in the callback, it should be treated
+  as an error (CURLE_COULDNT_CONNECT) if no other socket is subsequently
+  created when trying to connect to a server.
+  
+  Bug: http://curl.haxx.se/mail/lib-2015-06/0047.html
 
-- [Stefan Bühler brought this change]
+- fopen.c: fix a few compiler warnings
 
-  fix gdb libtool invocation path
+- [Ville Skyttä brought this change]
 
-Steve Holme (4 Dec 2014)
-- sasl_gssapi: Fixed missing include from commit d3cca934ee
+  docs: Spelling fixes
 
-Daniel Stenberg (4 Dec 2014)
-- [Jay Satiro brought this change]
+- [Ville Skyttä brought this change]
 
-  examples: remove sony.com from 10-at-a-time
-  
-  Prior to this change the 10-at-a-time example showed CURLE_RECV_ERROR
-  for the sony website because it ends the connection when the request is
-  missing a user agent.
+  docs: man page indentation and syntax fixes
 
-Steve Holme (4 Dec 2014)
-- sasl_gssapi: Fixed missing decoding debug failure message
+Linus Nielsen (8 Jun 2015)
+- help: Add --proxy-service-name and --service-name to the --help output
 
-- sasl_gssapi: Fixed honouring of no mutual authentication
+Jay Satiro (7 Jun 2015)
+- openssl: Fix verification of server-sent legacy intermediates
+  
+  - Try building a chain using issuers in the trusted store first to avoid
+  problems with server-sent legacy intermediates.
+  
+  Prior to this change server-sent legacy intermediates with missing
+  legacy issuers would cause verification to fail even if the client's CA
+  bundle contained a valid replacement for the intermediate and an
+  alternate chain could be constructed that would verify successfully.
+  
+  https://rt.openssl.org/Ticket/Display.html?id=3621&user=guest&pass=guest
 
-- sasl_sspi: Added more Kerberos V5 decoding debug failure messages
+Daniel Stenberg (5 Jun 2015)
+- BINDINGS: update several URLs
+  
+  Stop linking to the curl.haxx.se anchor pages, they are usually only
+  themselves pointers to the real page so better point there directly
+  instead.
 
-Daniel Stenberg (4 Dec 2014)
-- [Anthon Pang brought this change]
+- BINDINGS: the curl-rust binding
 
-  docs: Fix FAILONERROR typos
+- curl.h: add CURL_HTTP_VERSION_2
   
-  It returns error for >= 400 HTTP responses.
+  The protocol is named "HTTP/2" after all. It is an alias for the
+  existing CURL_HTTP_VERSION_2_0 enum.
+
+- openssl: removed error string #ifdef
   
-  Bug: https://github.com/bagder/curl/pull/129
+  ERR_error_string_n() was introduced in 0.9.6, no need to #ifdef anymore
 
-- [Peter Wu brought this change]
+- openssl: removed USERDATA_IN_PWD_CALLBACK kludge
+  
+  Code for OpenSSL 0.9.4 serves no purpose anymore!
 
-  tool: fix CURLOPT_UNIX_SOCKET_PATH in --libcurl output
+- openssl: remove SSL_get_session()-using code
   
-  Mark CURLOPT_UNIX_SOCKET_PATH as string to ensure that it ends up as
-  option in the file generated by --libcurl.
+  It was present for OpenSSL 0.9.5 code but we only support 0.9.7 or
+  later.
+
+- openssl: remove dummy callback use from SSL_CTX_set_verify()
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  The existing callback served no purpose.
 
-- [Peter Wu brought this change]
+- LIBCURL-STRUCTS: clarify for multiplexing
 
-  opts: fix CURLOPT_UNIX_SOCKET_PATH formatting
+Jay Satiro (3 Jun 2015)
+- cookie: Stop exporting any-domain cookies
   
-  Add .nf and .fi such that the code gets wrapped in a pre on the web.
-  Fixed grammar, fixed formatting of the "See also" items.
+  Prior to this change any-domain cookies (cookies without a domain that
+  are sent to any domain) were exported with domain name "unknown".
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
-
-Patrick Monnerat (4 Dec 2014)
-- OS400: enable Unix sockets.
+  Bug: https://github.com/bagder/curl/issues/292
 
-Daniel Stenberg (3 Dec 2014)
-- RELEASE-NOTES: synced with b216427e73b5e9
+Daniel Stenberg (3 Jun 2015)
+- RELEASE-PROCEDURE: refreshed 'coming dates'
 
-- opts: added CURLOPT_UNIX_SOCKET_PATH to Makefile.am
-
-- updateconninfo: clear destination struct before getsockname()
+Jay Satiro (2 Jun 2015)
+- curl_setup: Change fopen text macros to use 't' for MSDOS
   
-  Otherwise we may read uninitialized bytes later in the unix-domain
-  sockets case.
-
-- curl.1: added --unix-socket
+  Bug: https://github.com/bagder/curl/pull/258#issuecomment-107915198
+  Reported-by: Gisle Vanem
 
-- [Peter Wu brought this change]
+Daniel Stenberg (2 Jun 2015)
+- curl_multi_timeout.3: added example
 
-  tool: add --unix-socket option
-  
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+- curl_multi_perform.3: added example
 
-- [Peter Wu brought this change]
+- curl_multi_info_read.3: added example
 
-  libcurl: add UNIX domain sockets support
-  
-  The ability to do HTTP requests over a UNIX domain socket has been
-  requested before, in Apr 2008 [0][1] and Sep 2010 [2]. While a
-  discussion happened, no patch seems to get through. I decided to give it
-  a go since I need to test a nginx HTTP server which listens on a UNIX
-  domain socket.
-  
-  One patch [3] seems to make it possible to use the
-  CURLOPT_OPENSOCKETFUNCTION function to gain a UNIX domain socket.
-  Another person wrote a Go program which can do HTTP over a UNIX socket
-  for Docker[4] which uses a special URL scheme (though the name contains
-  cURL, it has no relation to the cURL library).
-  
-  This patch considers support for UNIX domain sockets at the same level
-  as HTTP proxies / IPv6, it acts as an intermediate socket provider and
-  not as a separate protocol. Since this feature affects network
-  operations, a new feature flag was added ("unix-sockets") with a
-  corresponding CURL_VERSION_UNIX_SOCKETS macro.
-  
-  A new CURLOPT_UNIX_SOCKET_PATH option is added and documented. This
-  option enables UNIX domain sockets support for all requests on the
-  handle (replacing IP sockets and skipping proxies).
+- checksrc: detect fopen() for text without the FOPEN_* macros
   
-  A new configure option (--enable-unix-sockets) and CMake option
-  (ENABLE_UNIX_SOCKETS) can disable this optional feature. Note that I
-  deliberately did not mark this feature as advanced, this is a
-  feature/component that should easily be available.
+  Follow-up to e8423f9ce150 with discussionis in
+  https://github.com/bagder/curl/pull/258
   
-   [0]: http://curl.haxx.se/mail/lib-2008-04/0279.html
-   [1]: http://daniel.haxx.se/blog/2008/04/14/http-over-unix-domain-sockets/
-   [2]: http://sourceforge.net/p/curl/feature-requests/53/
-   [3]: http://curl.haxx.se/mail/lib-2008-04/0361.html
-   [4]: https://github.com/Soulou/curl-unix-socket
-  
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  This check scans for fopen() with a mode string without 'b' present, as
+  it may indicate that an FOPEN_* define should rather be used.
 
-- [Peter Wu brought this change]
+- curl_getdate.3: update RFC reference
 
-  tests: add two HTTP over UNIX socket tests
-  
-  test1435: a simple test that checks whether a HTTP request can be
-  performed over the UNIX socket. The hostname/port are interpreted
-  by sws and should be ignored by cURL.
+Jay Satiro (1 Jun 2015)
+- curl_setup: Add macros for FOPEN_READTEXT, FOPEN_WRITETEXT
   
-  test1436: test for the ability to do two requests to the same host,
-  interleaved with one to a different hostname.
+  - Change fopen calls to use FOPEN_READTEXT instead of "r" or "rt"
+  - Change fopen calls to use FOPEN_WRITETEXT instead of "w" or "wt"
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
-
-- [Peter Wu brought this change]
-
-  tests: add HTTP UNIX socket server testing support
+  This change is to explicitly specify when we need to read/write text.
+  Unfortunately 't' is not part of POSIX fopen so we can't specify it
+  directly. Instead we now have FOPEN_READTEXT, FOPEN_WRITETEXT.
   
-  The variable `$ipvnum` can now contain "unix" besides the integers 4
-  and 6 since the variable. Functions which receive this parameter
-  have their `$port` parameter renamed to `$port_or_path` to support a
-  path to the UNIX domain socket (as a "port" is only meaningful for TCP).
+  Prior to this change we had an issue on Windows if an application that
+  uses libcurl overrides the default file mode to binary. The default file
+  mode in Windows is normally text mode (translation mode) and that's what
+  libcurl expects.
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Bug: https://github.com/bagder/curl/pull/258#issuecomment-107093055
+  Reported-by: Orgad Shaneh
 
-- [Peter Wu brought this change]
+Daniel Stenberg (1 Jun 2015)
+- http2-upload.c: use PIPEWAIT for playing HTTP/2 better
 
-  sws: try to remove socket and retry bind
+- http2-download: check for CURLPIPE_MULTIPLEX properly
   
-  If sws is killed it might leave a stale socket file on the filesystem
-  which would cause an EADDRINUSE error. After this patch, it is checked
-  whether the socket is really stale and if so, the socket file gets
-  removed and another bind is executed.
-  
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Bug: http://curl.haxx.se/mail/lib-2015-06/0001.html
+  Reported-by: Rafayel Mkrtchyan
 
-- [Peter Wu brought this change]
+- [Isaac Boukris brought this change]
 
-  sws: add UNIX domain socket support
-  
-  This extends sws with a --unix-socket option which causes the port to
-  be ignored (as the server now listens on the path specified by
-  --unix-socket). This feature will be available in the following patch
-  that enables checking for UNIX domain socket support.
+  HTTP-NTLM: fail auth on connection close instead of looping
   
-  Proxy support (CONNECT) is not considered nor tested. It does not make
-  sense anyway, first connecting through a TCP proxy, then let that TCP
-  proxy connect to a UNIX socket.
-  
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Bug: https://github.com/bagder/curl/issues/256
 
-- [Peter Wu brought this change]
+- 5.6 Refuse "downgrade" redirects
 
-  sws: restrict TCP_NODELAY to IP sockets
-  
-  TCP_NODELAY does not make sense for Unix sockets, so enable it only if
-  the socket is using IP.
-  
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+- README.pingpong: removed
 
-Dan Fandrich (3 Dec 2014)
-- [Dave Reisner brought this change]
+- ROADMAP: remove HTTP/2 multiplexing - its here now
 
-  curl.1: fix trivial typo
+- HTTP2.md: formatted properly
 
-Steve Holme (3 Dec 2014)
-- sasl_gssapi: Added body to Curl_sasl_create_gssapi_user_message()
+- HTTP2: moved docs into docs/ and make it markdown
 
-- sasl_gssapi: Added body to Curl_sasl_gssapi_cleanup()
+- README.http2: refreshed and added multiplexing info
 
-- sasl_gssapi: Added Curl_sasl_build_gssapi_spn() function
-  
-  Added helper function for returning a GSS-API compatible SPN.
+- dist: add the http2 examples
 
-Daniel Stenberg (3 Dec 2014)
-- NSS: enable the CAPATH option
-  
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1457
-  Patch-by: Tomasz Kojm
+- http2 examples: clean up some comments
 
-Steve Holme (3 Dec 2014)
-- sasl_gssapi: Enable USE_KERBEROS5 for GSS-API based builds
+- examples: added two programs doing multiplexed HTTP/2
 
-- sasl_gssapi: Added GSS-API based Kerberos V5 variables
+- scripts: moved contributors.sh and contrithanks.sh into subdir
 
-- sws.c: Fixed compilation warning when IPv6 is disabled
-  
-  sws.c:69: warning: comma at end of enumerator list
+- RELEASE-NOTES: synced with c005790ff1c0a
 
-- sasl_gssapi: Made log_gss_error() a common GSS-API function
-  
-  Made log_gss_error() a common function so that it can be used in both
-  the http_negotiate code as well as the curl_sasl_gssapi code.
+- [Daniel Melani brought this change]
 
-- sasl_gssapi: Introduced GSS-API based SASL module
-  
-  Added the initial version of curl_sasl_gssapi.c and updated the project
-  files in preparation for adding GSS-API based Kerberos V5 support.
+  openssl: typo in comment
 
-- smb: Don't try to connect with empty credentials
+Jay Satiro (27 May 2015)
+- openssl: Use TLS_client_method for OpenSSL 1.1.0+
   
-  On some platforms curl would crash if no credentials were used. As such
-  added detection of such a use case to prevent this from happening.
+  SSLv23_client_method is deprecated starting in OpenSSL 1.1.0. The
+  equivalent is TLS_client_method.
   
-  Reported-by: Gisle Vanem
-
-- smb.c: Coding policing of pointer usage
+  https://github.com/openssl/openssl/commit/13c9bb3#diff-708d3ae0f2c2973b272b811315381557
 
-- configure: Fixed inclusion of SMB when no crypto engines available
+Daniel Stenberg (26 May 2015)
+- FAQ: How do I port libcurl to my OS?
 
-Guenter Knauf (1 Dec 2014)
-- build: in Makefile.m32 simplified autodetection.
-
-Daniel Stenberg (30 Nov 2014)
-- [Peter Wu brought this change]
-
-  sws: move away from IPv4/IPv4-only assumption
+Jay Satiro (25 May 2015)
+- CURLOPT_COOKIELIST.3: Explain Set-Cookie without a domain
   
-  Instead of depending the socket domain type on use_ipv6, specify the
-  domain type (AF_INET / AF_INET6) as variable. An enum is used here with
-  switch to avoid compiler warnings in connect_to, complaining that rc
-  is possibly undefined (which is not possible as socket_domain is
-  always set).
+  Document that if Set-Cookie is used without a domain then the cookie is
+  sent for any domain and will not be modified.
   
-  Besides abstracting the socket type, make the debugging messages be
-  independent on IP (introduce location_str which points to "port XXXXX").
-  Rename "ipv_inuse" to "socket_type" and tighten the scope (main).
-  
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Bug: http://curl.haxx.se/mail/lib-2015-05/0137.html
+  Reported-by: Alexander Dyagilev
 
-- [Peter Wu brought this change]
+Daniel Stenberg (25 May 2015)
+- [Tatsuhiro Tsujikawa brought this change]
 
-  lib/connect: restrict IP/TCP options to said sockets
+  http2: Copy data passed in Curl_http2_switched into HTTP/2 connection buffer
   
-  This patch prepares for adding UNIX domain sockets support.
+  Previously, after seeing upgrade to HTTP/2, we feed data followed by
+  upgrade response headers directly to nghttp2_session_mem_recv() in
+  Curl_http2_switched().  But it turns out that passed buffer, mem, is
+  part of stream->mem, and callbacks called by
+  nghttp2_session_mem_recv() will write stream specific data into
+  stream->mem, overwriting input data.  This will corrupt input, and
+  most likely frame length error is detected by nghttp2 library.  The
+  fix is first copy the passed data to HTTP/2 connection buffer,
+  httpc->inbuf, and call nghttp2_session_mem_recv().
+
+Jay Satiro (24 May 2015)
+- CURLOPT_COOKIE.3: Explain that the cookies won't be modified
   
-  TCP_NODELAY and TCP_KEEPALIVE are specific to TCP/IP sockets, so do not
-  apply these to other socket types. bindlocal only works for IP sockets
-  (independent of TCP/UDP), so filter that out too for other types.
+  The CURLOPT_COOKIE doc says it "sets the cookie header explicitly in the
+  outgoing request(s)." However there seems to be some user confusion
+  about cookie modification. Document that the cookies set by this option
+  are not modified by the cookie engine.
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Bug: http://curl.haxx.se/mail/lib-2015-05/0115.html
+  Reported-by: Alexander Dyagilev
+
+- CURLOPT_COOKIELIST.3: Add example
 
-- smb.c: use size_t as input argument types for msg sizes
+Dan Fandrich (24 May 2015)
+- testcurl.pl: use rel2abs to make the source directory absolute
   
-  This fixes warnings about conversions to int
+  This function makes a platform-specific absolute path which uses
+  backslashes on Windows. This form works when passing it on the
+  command-line, as well as if the source is on another drive.
 
-Steve Holme (30 Nov 2014)
-- version: The next release will become 7.40.0
+- conncache: fixed memory leak on OOM (torture tests)
 
-- [Bill Nagel brought this change]
+Daniel Stenberg (24 May 2015)
+- perl: remove subdir, not touched in 9 years
 
-  docs: Updated for the SMB protocol
-  
-  This patch updates the documentation for the SMB/CIFS protocol.
+- log2changes.pl: moved to scripts/
 
-- curl tool: Exclude SMB from the protocol redirect
-  
-  As local files could be accessed through \\localhost\c$.
+- [Alessandro Ghedini brought this change]
 
-- [Bill Nagel brought this change]
+  scripts: add zsh.pl for generating zsh completion
 
-  curl tool: Enable support for the SMB protocol
-  
-  This patch enables SMB/CIFS support in the curl command-line tool.
+Dan Fandrich (23 May 2015)
+- test1510: another flaky test
 
-- smb.c: Fixed compilation warnings
+Daniel Stenberg (22 May 2015)
+- security: fix "Unchecked return value" from sscanf()
   
-  smb.c:398: warning: comparison of integers of different signs:
-             'ssize_t' (aka 'long') and 'unsigned long'
-  smb.c:443: warning: comparison of integers of different signs:
-             'ssize_t' (aka 'long') and 'unsigned long'
-
-- libcurl: Exclude SMB from the protocol redirect
+  By (void) prefixing it and adding a comment. Did some minor related
+  cleanups.
   
-  As local files could be accessed through \\localhost\c$.
-
-- [Bill Nagel brought this change]
+  Coverity CID 1299423.
 
-  libcurl: Enable support for the SMB protocol
+- security: simplify choose_mech
   
-  This patch enables SMB/CIFS support in libcurl.
-
-- smb.c: Fixed compilation warnings
+  Coverity CID 1299424 identified dead code because of checks that could
+  never equal true (if the mechanism's name was NULL).
   
-  smb.c:322: warning: conversion to 'short unsigned int' from 'unsigned
-             int' may alter its value
-  smb.c:323: warning: conversion to 'short unsigned int' from 'unsigned
-             int' may alter its value
-  smb.c:482: warning: conversion to 'short unsigned int' from 'int' may
-             alter its value
-  smb.c:521: warning: conversion to 'unsigned int' from 'curl_off_t' may
-             alter its value
-  smb.c:549: warning: conversion to 'unsigned int' from 'curl_off_t' may
-             alter its value
-  smb.c:550: warning: conversion to 'short unsigned int' from 'int' may
-             alter its value
+  Simplified the function by removing a level of pointers and removing the
+  loop and array that weren't used.
 
-- smb.c: Renamed SMB command message variables to avoid compiler warnings
+- RTSP: catch attempted unsupported requests better
   
-  smb.c:489: warning: declaration of 'close' shadows a global declaration
-  smb.c:511: warning: declaration of 'read' shadows a global declaration
-  smb.c:528: warning: declaration of 'write' shadows a global declaration
-
-- smb.c: Fixed compilation warnings
+  Replace use of assert with code that properly catches bad input at
+  run-time even in non-debug builds.
   
-  smb.c:212: warning: unused parameter 'done'
-  smb.c:380: warning: ISO C does not allow extra ';' outside of a function
-  smb.c:812: warning: unused parameter 'premature'
-  smb.c:822: warning: unused parameter 'dead'
+  This flaw was sort of detected by Coverity CID 1299425 which claimed the
+  "case RTSPREQ_NONE" was dead code.
 
-- smb.c: Fixed compilation warnings
+- share_init: fix OOM crash
   
-  smb.c:311: warning: conversion from 'unsigned __int64' to 'u_short',
-             possible loss of data
-  smb.c:425: warning: conversion from '__int64' to 'unsigned short',
-             possible loss of data
-  smb.c:452: warning: conversion from '__int64' to 'unsigned short',
-             possible loss of data
-
-- smb.c: Fixed compilation warnings
+  A failed calloc() would lead to NULL pointer use.
   
-  smb.c:162: error: comma at end of enumerator list
-  smb.c:469: warning: conversion from 'size_t' to 'unsigned short',
-             possible loss of data
-  smb.c:517: warning: conversion from 'curl_off_t' to 'unsigned int',
-             possible loss of data
-  smb.c:545: warning: conversion from 'curl_off_t' to 'unsigned int',
-             possible loss of data
+  Coverity CID 1299427.
 
-- [Bill Nagel brought this change]
-
-  smb: Added initial SMB functionality
+- parse_proxy: switch off tunneling if non-HTTP proxy
   
-  Initial implementation of the SMB/CIFS protocol.
+  non-HTTP proxy implies not using CURLOPT_HTTPPROXYTUNNEL
+  
+  Bug: http://curl.haxx.se/mail/lib-2015-05/0056.html
+  Reported-by: Sean Boudreau
 
-- [Bill Nagel brought this change]
+- curl: fix potential NULL dereference
+  
+  Coverity CID 1299428: Dereference after null check (FORWARD_NULL)
 
-  smb: Added SMB handler interfaces
+- http2: on_frame_recv: return early on stream 0
   
-  Added the SMB and SMBS handler interface structures and associated
-  functions required for SMB/CIFS operation.
+  Coverity CID 1299426 warned about possible NULL dereference otherwise,
+  but that would only ever happen if we get invalid HTTP/2 data with
+  frames for stream 0. Avoid this risk by returning early when stream 0 is
+  used.
 
-- transfer: Code style policing
+- http: removed self assignment
+  
+  Follow-up fix from b0143a2a33f0
   
-  Prefer ! rather than NULL in if statements, added comments and updated
-  function spacing, argument spacing and line spacing to be more readble.
+  Detected by coverity. CID 1299429
+
+- [Tatsuhiro Tsujikawa brought this change]
 
-- transfer: Fixed existing scratch buffer being checked for NULL twice
+  http2: Make HTTP Upgrade work
   
-  If the scratch buffer already existed when the CRLF conversion was
-  performed then the buffer pointer would be checked twice for NULL. This
-  second check is only necessary if the call to malloc() was performed by
-  the first check.
+  This commit just add implicitly opened stream 1 to streams hash.
 
-- smtp: Fixed dot stuffing being performed when no new data read
+Jay Satiro (22 May 2015)
+- strerror: Change SEC_E_ILLEGAL_MESSAGE description
   
-  Whilst I had moved the dot stuffing code from being performed before
-  CRLF conversion takes place to after it, in commit 4bd860a001, I had
-  moved it outside the 'when something read' block of code when meant
-  it could perform the dot stuffing twice on partial send if nread
-  happened to contain the right values. It also meant the function could
-  potentially read past the end of buffer. This was highlighted by the
-  following warning:
+  Prior to this change the description for SEC_E_ILLEGAL_MESSAGE was OS
+  and language specific, and invariably translated to something not very
+  helpful like: "The message received was unexpected or badly formatted."
   
-  warning: `nread' might be used uninitialized in this function
+  Bug: https://github.com/bagder/curl/issues/267
+  Reported-by: Michael Osipov
 
-Daniel Stenberg (29 Nov 2014)
-- smb.h: fixed picky compiler warning
+- telnet: Fix read-callback change for Windows builds
   
-  smb.h:30:16: error: comma at end of enumerator list [-Werror=pedantic]
-
-Steve Holme (29 Nov 2014)
-- tests: Disable test 1013 until SMB is fully added
+  Refer to b0143a2 for more information on the read-callback change.
 
-- [Bill Nagel brought this change]
+Daniel Stenberg (21 May 2015)
+- CURLOPT_HTTPPROXYTUNNEL.3: only works with a HTTP proxy!
 
-  smb: Added SMB protocol and port definitions
+Dan Fandrich (21 May 2015)
+- testcurl.pl: allow source to be in an arbitrary directory
   
-  Added the necessary protocol and port definitions in order to support
-  SMB/CIFS.
+  This way, the build directory can be located on an entirely different
+  filesystem from the source code (e.g. a tmpfs).
 
-- [Bill Nagel brought this change]
+Daniel Stenberg (20 May 2015)
+- read_callback: move to SessionHandle from connectdata
+  
+  With many easy handles using the same connection for multiplexing, it is
+  important we store and keep the transfer-oriented stuff in the
+  SessionHandle so that callbacks and callback data work fine even when
+  many easy handles share the same physical connection.
 
-  smb: Added internal SMB definitions and structures
+- http2: show stream IDs in decimal
   
-  Added the internal definitions and structures necessary for SMB/CIFS
-  support.
+  It makes them easier to match output from the nghttpd test server.
 
-- [Bill Nagel brought this change]
+- [Tatsuhiro Tsujikawa brought this change]
 
-  smb: Added SMB connection structure
+  http2: Faster http2 upload
   
-  Added the connection structure that will be required in urldata.h for
-  SMB/CIFS based connections.
+  Previously, when we send all given buffer in data_source_callback, we
+  return NGHTTP2_ERR_DEFERRED, and nghttp2 library removes this stream
+  temporarily for writing.  This itself is good.  If this is the sole
+  stream in the session, nghttp2_session_want_write() returns zero,
+  which means that libcurl does not check writeability of the underlying
+  socket.  This leads to very slow upload, because it seems curl only
+  upload 16k something per 1 second.  To fix this, if we still have data
+  to send, call nghttp2_session_resume_data after nghttp2_session_send.
+  This makes nghttp2_session_want_write() returns nonzero (if connection
+  window still opens), and as a result, socket writeability is checked,
+  and upload speed becomes normal.
 
-- [Bill Nagel brought this change]
+- [Dmitry Eremin-Solenikov brought this change]
 
-  smb: Added initial source files for SMB
+  gtls: don't fail on non-fatal alerts during handshake
   
-  Added the initial source files and updated the relevant project files in
-  order to support SMB/CIFS.
+  Stop curl from failing when non-fatal alert is received during
+  handshake.  This e.g. fixes lots of problems when working with https
+  sites through proxies.
 
-- [Bill Nagel brought this change]
+- curl_easy_unescape.3: update RFC reference
+  
+  Reported-by: bsammon
+  Bug: https://github.com/bagder/curl/issues/282
 
-  smb: Added configuration options for SMB
+Jay Satiro (20 May 2015)
+- CURLOPT_POSTFIELDS.3: Mention curl_easy_escape
   
-  Added --enable-smb and --disable-smb configuration options for the
-  upcoming SMB/CIFS protocol support.
+  .. also correct some variable naming in curl_easy_escape.3
+  
+  Bug: https://github.com/bagder/curl/issues/281
+  Reported-by: bsammon@users.noreply.github.com
 
-Daniel Stenberg (28 Nov 2014)
-- [Peter Wu brought this change]
+Daniel Stenberg (19 May 2015)
+- [Brian Prodoehl brought this change]
 
-  runtests.pl: fix startup of IPv6 servers
-  
-  Commit curl-7_23_1-143-g8218064 changed the parameter of
-  responsive_http_server to accept types other than IPv6 (converting
-  from a boolean to a string), but only considered the lower-case "ipv6"
-  and not the "IPv6" variant. This caused all servers to start in IPv4
-  mode instead.
+  openssl: Use SSL_CTX_set_msg_callback and SSL_CTX_set_msg_callback_arg
   
-  This patch converts the remaining cases to "ipv6". While not strictly
-  necessary for the run*server variants, these got also converted for
-  consistency and to prevent future errors.
+  BoringSSL removed support for direct callers of SSL_CTX_callback_ctrl
+  and SSL_CTX_ctrl, so move to a way that should work on BoringSSL and
+  OpenSSL.
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  re #275
 
-- [Peter Wu brought this change]
+Jay Satiro (19 May 2015)
+- curl.1: fix missing space in section --data
 
-  runtests.pl: fix warning message, remove duplicate value
+Daniel Stenberg (19 May 2015)
+- transfer: remove erroneous and misleading comment
+
+Kamil Dudka (19 May 2015)
+- http: silence compile-time warnings without USE_NGHTTP2
+  
+  Error: CLANG_WARNING:
+  lib/http.c:173:16: warning: Value stored to 'http' during its initialization is never read
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Error: COMPILER_WARNING:
+  lib/http.c: scope_hint: In function ‘http_disconnect’
+  lib/http.c:173:16: warning: unused variable ‘http’ [-Wunused-variable]
 
-Steve Holme (27 Nov 2014)
-- http.c: Fixed compilation warnings from features being disabled
+Jay Satiro (19 May 2015)
+- transfer: Replace __func__ instances with function name
   
-  warning: unused variable 'data'
-  warning: variable 'addcookies' set but not used
+  .. also make __func__ replacement in multi.
   
-  ...and some very minor coding style policing.
+  Prior to this change debug builds would fail to build if the compiler
+  was building pre-c99 and didn't support __func__.
 
-- RELEASE-NOTES: Synced with c5399c827d
+Daniel Stenberg (19 May 2015)
+- [Viktor Szakats brought this change]
 
-- tests: Added SMTP with --crlf test case
+  build: bump version in default nghttp2 paths
 
-- docs: Updated for commit 4bd860a001 and SMTP Unix line ending conversion
+- INTERNALS: we require nghttp2 1.0.0+ now
 
-- smtp: Fixed const'ness of nread parameter in Curl_smtp_escape_eob()
-  
-  ...and some comment typos!
+Jay Satiro (18 May 2015)
+- http: Add some include guards for the new HTTP/2 stuff
 
-- smtp: Added support for the conversion of Unix newlines during mail send
-  
-  Added support for the automatic conversion of Unix newlines to CRLF
-  during mail uploads.
+Daniel Stenberg (18 May 2015)
+- http2: store upload state per stream
   
-  Feature: http://curl.haxx.se/bug/view.cgi?id=1456
+  Use a curl_off_t for upload left
 
-- CURLOPT_CRLF.3: Fixed inclusion of SMTP in listed protocols
+- http2: fix build when NOT h2-enabled
 
-Daniel Stenberg (25 Nov 2014)
-- curl*3: added small examples
+- http2: switch to use Curl_hash_destroy()
   
-  and some minor edits
+  as after 4883f7019d3, the *_clean() function only flushes the hash.
 
-- libcurl.3: fix formatting
+- curlver: restore LIBCURL_VERSION_NUM defined as a full number
   
-  refer to functions with the man page section properly
+  As it breaks configure, curl-config and test 1023 if not.
 
-- man pages: SEE ALSO curl_multi_wait
+- [Anthony Avina brought this change]
 
-- curl_multi_wait.3: clarify numfds being used if not NULL
-
-- multi-single.c: switch to use curl_multi_wait
+  hostip: fix unintended destruction of hash table
   
-  Makes the example much easier and straight-forward!
+  .. and added unit1602 for hash.c
 
-- testcurl: bump the version of this script!
+- curlver: introducing new version number (checking) macros
 
-- testcurl: skip reading the setup file if given enough cmdline info
-  
-  This makes it much easier to run multiple tests in the same directory,
-  just altering the command lines used.
+- runtests.pl: use 'h2c' now, no -14 anymore
 
-- select.c: fix compilation for VxWorks
-  
-  Reported-by: Brian
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1455
+- [Tatsuhiro Tsujikawa brought this change]
 
-Patrick Monnerat (24 Nov 2014)
-- [moparisthebest brought this change]
+  http2: Ignore if we have stream ID not in hash in on_stream_close
+  
+  We could get stream ID not in the hash in on_stream_close.  For
+  example, if we decided to reject stream (e.g., PUSH_PROMISE), then we
+  don't create stream and store it in hash with its stream ID.
 
-  SSL: Add PEM format support for public key pinning
+- [Tatsuhiro Tsujikawa brought this change]
 
-Kamil Dudka (24 Nov 2014)
-- Revert "repository: ignore patch files generated by git"
+  Require nghttp2 v1.0.0
   
-  This reverts commit 217024a687ce86eb6d2317822ed81c7e5abc4b61.
+  This commit requires nghttp2 v1.0.0 to compile, and migrate to v1.0.0,
+  and utilize recent version of nghttp2 to simplify the code,
   
-  Bug: https://github.com/bagder/curl/commit/217024a6#commitcomment-8693738
-
-Steve Holme (23 Nov 2014)
-- multi.c: Fixed compilation warnings when no verbose string support
+  First we use nghttp2_option_set_no_recv_client_magic function to
+  detect nghttp2 v1.0.0.  That function only exists since v1.0.0.
   
-  warning: variable 'connection_id' set but not used
-  warning: unused parameter 'lineno'
-
-- RELEASE-NOTES: Synced with 1450712e76
+  Since nghttp2 v0.7.5, nghttp2 ensures header field ordering, and
+  validates received header field.  If it found error, RST_STREAM with
+  PROTOCOL_ERROR is issued.  Since we require v1.0.0, we can utilize
+  this feature to simplify libcurl code.  This commit does this.
+  
+  Migration from 0.7 series are done based on nghttp2 migration
+  document.  For libcurl, we removed the code sending first 24 bytes
+  client magic.  It is now done by nghttp2 library.
+  on_invalid_frame_recv callback signature changed, and is updated
+  accordingly.
 
-- sasl: Tidied up some parameter comments
+- http2: infof length in on_frame_send()
 
-- sasl: Reduced the need for two sets of NTLM functions
+- pipeline: switch some code over to functions
+  
+  ... to "compartmentalize" a bit and make it easier to change behavior
+  when multiplexing is used instead of good old pipelining.
 
-- ntlm: Moved NSS initialisation to base decode function
+- symbols-in-versions: add CURLOPT_PIPEWAIT
 
-- http_ntlm: Fixed additional NSS initialisation call when decoding type-2
+- CURLOPT_PIPEWAIT: added
   
-  After commit 48d19acb7c the HTTP code would call Curl_nss_force_init()
-  twice when decoding a NTLM type-2 message, once directly and the other
-  through the call to Curl_sasl_decode_ntlm_type2_message().
+  By setting this option to 1 libcurl will wait for a connection to reveal
+  if it is possible to pipeline/multiplex on before it continues.
 
-- ntlm: Fixed static'ness of local decode function
+- Curl_http_readwrite_headers: minor code simplification
 
-- ntlm: Corrected some parameter names and comments
+- IsPipeliningPossible: fixed for http2
 
-- runtests.pl: Re-aligned feature support comments
+- http2: bump the h2 buffer size to 32K for speed
 
-- runtests.pl: Use Kerberos and SPNEGO as proxies for the crypto feature
-  
-  In addition to NTLM, use Kerberos and SPNEGO as proxies to the crypto
-  feature.
+- http2: remove the stream from the hash in stream_close callback
   
-  ...and converted tab characters, from commit 4b4e8a5853, to spaces.
+  ... and suddenly things work much better!
 
-- runtests.pl: Added support for SPNEGO
+- http2: if there is paused data, do not clear the drain field
 
-- runtests.pl: Added Kerberos detection
+- http2: rename s/data/pausedata
 
-- runtests.pl: Added GSS-API detection
+- http2: "stream %x" in all outputs to make it easier to search for
 
-- FILEFORMAT: Added SSPI, GSS-API and Kerberos to the features list
-
-- FILEFORMAT: Added test requires feature not present information
+- http2: Curl_expire() all handles with incoming traffic
   
-  Such as !SSPI as we do for the NTLM and Digest tests.
-
-Daniel Stenberg (20 Nov 2014)
-- http.c: log if it notices HTTP 1.1 after a upgrade to http2
+  ... so that they'll get handled next in the multi loop.
 
-- test1801: first real http2 test case
+- http2: don't signal settings change for same values
 
-- sws: initial tiny steps toward http2 support
+- http2: set default concurrency, fix ConnectionExists for multiplex
 
-- FILEFORMAT: mention the new upgrade support
+- bundles: store no/default/pipeline/multiplex
+  
+  to allow code to act differently on the situation.
+  
+  Also added some more info message for the connection re-use function to
+  make it clearer when connections are not re-used.
 
-- test1800: first plain-text http2 test case
+- http2: lazy init header_recvbuf
   
-  Verifies the upgrade request, but gets a plain 1.1 response
+  It makes us use less memory when not doing HTTP/2 and subsequently also
+  makes us not have to cleanup HTTP/2 related data when not using HTTP/2!
 
-- [Tatsuhiro Tsujikawa brought this change]
+- http2: separate multiplex/pipelining + cleanup memory leaks
 
-  http: Disable pipelining for HTTP/2 and upgraded connections
-  
-  This commit disables pipelining for HTTP/2 or upgraded connections.  For
-  HTTP/2, we do not support multiplexing.  In general, requests cannot be
-  pipelined in an upgraded connection, since it is now different protocol.
+- CURLMOPT_PIPELINE: bit 1 is for multiplexing
 
-- [Brad Harder brought this change]
+- [Tatsuhiro Tsujikawa brought this change]
 
-  CURLOPT_POSTFIELDS.3: mention the COPYPOSTFIELDS option
+  http2: Fix bug that data to be drained are overwritten by pending "paused" data
 
-Steve Holme (19 Nov 2014)
-- multi-uv.c: Updated for curl coding standards
+- [Tatsuhiro Tsujikawa brought this change]
 
-- conncache: Fixed specifiers in infof() for long and size_t variables
+  http2: Don't call nghttp2_session_mem_recv while it is paused by a stream
 
-- [Peter Wu brought this change]
+- [Tatsuhiro Tsujikawa brought this change]
 
-  cmake: add Kerberos to the supported features
+  http2: Read data left in connection buffer after pause
   
-  Updated following commit eda919f and a4b7f71.
-  
-  Acked-by: Brad King <brad.king@kitware.com>
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Previously when we do pause because of out of buffer, we just throw
+  away unread data in connection buffer.  This just broke protocol
+  framing, and I saw occasional FRAME_SIZE_ERROR.  This commit fix this
+  issue by remembering how much data read, and in the next iteration, we
+  process remaining data.
 
-- [Peter Wu brought this change]
+- [Tatsuhiro Tsujikawa brought this change]
 
-  cmake: fix NTLM detection when CURL_DISABLE_HTTP defined
+  http2: Fix streams get stuck
   
-  Updated following changes in commit f0d860d.
+  This commit fixes the bug that streams get stuck if stream gets some
+  DATA, and stream->closed becomes true at the same time.  Previously,
+  in this condition, after we processed DATA, we are going to try to
+  read data from underlying transport, but there is no data, and gets
+  EAGAIN.  There was no code path to evaludate stream->closed.
+
+- http2: store incoming h2 SETTINGS
+
+- pipeline: move function to pipeline.c and make static
   
-  Acked-by: Brad King <brad.king@kitware.com>
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  ... as it was only used from there.
 
-Daniel Stenberg (19 Nov 2014)
-- RELEASE-NOTES: synced with cb13fad733e
+- IsPipeliningPossible: http2 can always "pipeline" (multiplex)
 
-- [Jay Satiro brought this change]
+- http2: remove debug logging from on_frame_recv
 
-  examples: Wait recommended 100ms when no file descriptors are ready
-  
-  Prior to this change when no file descriptors were ready on platforms
-  other than Windows the multi examples would sleep whatever was in
-  timeout, which may or may not have been less than the minimum
-  recommended value [1] of 100ms.
+- http2: remove the closed check in http2_recv
   
-  [1]: http://curl.haxx.se/libcurl/c/curl_multi_fdset.html
+  With the "drained" functionality we can get here slightly asynchronously
+  so the stream have have been closed but there is pending data left to
+  read.
 
-- [Waldek Kozba brought this change]
+- http2: bump the h2 buffer to 8K
 
-  multi-uv.c: close the file handle after download
+- http2: Curl_read should not use the single buffer
+  
+  ... as it does for pipelining when we're multiplexing, as we need the
+  different buffers to store incoming data correctly for all streams.
 
-- [Jon Spencer brought this change]
+- http2: more debug outputs
 
-  multi: inform about closed sockets before they are closed
+- http2: leave WAITPERFORM when conn is multiplexed
   
-  When the connection code decides to close a socket it informs the multi
-  system via the Curl_multi_closed function. The multi system may, in
-  turn, invoke the CURLMOPT_SOCKETFUNCTION function with
-  CURL_POLL_REMOVE. This happens after the socket has already been
-  closed. Reorder the code so that CURL_POLL_REMOVE is called before the
-  socket is closed.
+  No need to wait for our "spot" like for pipelining
 
-Guenter Knauf (19 Nov 2014)
-- build: in Makefile.m32 moved target autodetection.
+- http2: force "drainage" of streams
   
-  Moved target autodetection block after defining CC macro.
-
-- build: in Makefile.m32 simplify platform flags.
+  ... which is necessary since the socket won't be readable but there is
+  data waiting in the buffer.
 
-- build: in Makefile.m32 try to detect 64bit target.
+- http2: move the mem+len pair to the stream struct
 
-Daniel Stenberg (19 Nov 2014)
-- [Brad King brought this change]
+- http2: more stream-oriented data, stream ID 0 is for connections
 
-  CMake: Simplify if() conditions on check result variables
+- http2: move lots of state data to the 'stream' struct
   
-  Remove use of an old hack that takes advantage of the auto-dereference
-  behavior of the if() command to detect if a variable is defined.  The
-  hack has the form:
+  ... from the connection struct. The stream one being the 'struct HTTP'
+  which is kept in the SessionHandle struct (easy handle).
   
-   if("${VAR} MATCHES "^${VAR}$")
-  
-  where "${VAR}" is a macro argument reference.  Use if(DEFINED) instead.
-  This also avoids warnings for CMake Policy CMP0054 in CMake 3.1.
+  lookup streams for incoming frames in the stream hash, hashing is based
+  on the stream id and we get the SessionHandle for the incoming stream
+  that way.
 
-- TODO-RELEASE: removed
+- HTTP: partial start at fixing up hash-lookups on http2 frame receival
 
-- [Carlo Wood brought this change]
+- http: a stream hash for h2 multiplexing
 
-  debug: added new connection cache output, plus fixups
-  
-  Debug output 'typo' fix.
+- http: a stream hash for h2 multiplexing
+
+- http2: debug log when receiving unexpected stream_id
+
+- http2: move stream_id to the HTTP struct (per-stream)
+
+- Curl_http2_setup: only do it once and enable multiplex on the server
   
-  Don't print an extra "0x" in
-    * Pipe broke: handle 0x0x2546d88, url = /
+  Once we know we are HTTP/2 enabled we know the server can multiplex.
+
+- http: switch on "pipelining" (multiplexing) for HTTP/2 servers
   
-  Add debug output.
-  Print the number of connections in the connection cache when
-    adding one, and not only when one is removed.
+  ... and do not blacklist any.
+
+- README.pipelining: removed
   
-  Fix typos in comments.
+  All the details mentioned here are better documented in man pages
 
-- multi: move the ending condition into the loop as well
+Dan Fandrich (14 May 2015)
+- build: removed bundles.c from make files
   
-  ... as it was before I changed the loop in commit e04ccbd50. It caused
-  test 2030 and 2032 to fail.
+  This file was removed in commit fd137786
+
+Daniel Stenberg (14 May 2015)
+- Curl_conncache_add_conn: fix memory leak on OOM
 
-Steve Holme (18 Nov 2014)
-- multi: Prefer we don't use CURLE_OK and NULL in comparisons
+- CURLMOPT_MAX_HOST_CONNECTIONS: host = host name + port number
 
-Daniel Stenberg (18 Nov 2014)
-- multi_runsingle: use 'result' for local CURLcode storage
+- conncache: keep bundles on host+port bases, not only host names
   
-  ... and assign data->result only at the end. Makes the code more compact
-  (easier to read) and more similar to other code.
+  Previously we counted all connections to a specific host name and that
+  would be used for the CURLMOPT_MAX_HOST_CONNECTIONS check for example,
+  while servers on different port numbers are normally considered
+  different "origins" on the web and should thus be considered different
+  hosts.
 
-- multi_runsingle: rename result to rc
+- bundles: merged into conncache.c
   
-  save 'result' for CURLcode types
+  All the existing Curl_bundle* functions were only ever used from within
+  the conncache.c file, so I moved them over and made them static (and
+  removed the Curl_ prefix).
 
-- multi: make multi_runsingle loop internally
+- hostcache: made all host caches use structs, not pointers
   
-  simplifies the use of this function at little cost.
+  This avoids unnecessary dynamic allocs and as this also removed the last
+  users of *hash_alloc() and *hash_destroy(), those two functions are now
+  removed.
 
-- [Carlo Wood brought this change]
+- multi: converted socket hash into non-allocated struct
+  
+  avoids extra dynamic allocation
 
-  multi: when leaving for timeout, close accordingly
+- connection cache: avoid Curl_hash_alloc()
   
-  Fixes the problem when a transfer in a pipeline times out.
+  ... by using plain structs instead of pointers for the connection cache,
+  we can avoid several dynamic allocations that weren't necessary.
 
-Guenter Knauf (18 Nov 2014)
-- build: in Makefile.m32 add -m32 flag for 32bit.
+- proxy: add newline to info message
 
-- mk-ca-bundle.vbs: update copyright year.
+Patrick Monnerat (8 May 2015)
+- FTP: fix dangling conn->ip_addr dereference on verbose EPSV.
 
-- build: in Makefile.m32 pass -F flag to windres.
+- FTP: Make EPSV use the control IP address rather than the original host.
+  This ensures an alternate address is not used.
+  Does not apply to proxy tunnel.
 
-Steve Holme (17 Nov 2014)
-- config-win32: Fixed build targets for the VS2012+ Windows XP toolset
-  
-  Even though commit 23e70e1cc6 mentioned the v110_xp toolset, I had
-  forgotten to include the relevant pre-processor definitions.
+Daniel Stenberg (8 May 2015)
+- [Alessandro Ghedini brought this change]
 
-- sasl_sspi: Removed note about the NTLM functions being a wrapper
+  tool_help: fix formatting for --next option
 
-- connect.c: Fixed compilation warning when no verbose string support
-  
-  warning: unused parameter 'reason'
+- [Egon Eckert brought this change]
 
-- easy.c: Fixed compilation warning when no verbose string support
-  
-  warning: unused parameter 'easy'
+  opts: improved the TCP keepalive examples
 
-- win32: Updated some legacy APIs to use the newer extended versions
+Jay Satiro (8 May 2015)
+- winbuild: Document the option used to statically link the CRT
   
-  Updated the usage of some legacy APIs, that are preventing curl from
-  compiling for Windows Store and Windows Phone build targets.
+  - Document option RTLIBCFG (runtime library configuration).
   
-  Suggested-by: Stefan Neis
-  Feature: http://sourceforge.net/p/curl/feature-requests/82/
+  Bug: https://github.com/bagder/curl/issues/254
+  Reported-by: Bert Huijben
 
-- config-win32: Introduce build targets for VS2012+
-  
-  Visual Studio 2012 introduced support for Windows Store apps as well as
-  supporting Windows Phone 8. Introduced build targets that allow more
-  modern APIs to be used as certain legacy ones are not available on these
-  new platforms.
+- [Orgad Shaneh brought this change]
 
-- sasl_sspi: Fixed compilation warnings when no verbose string support
-
-- sasl_sspi: Added base64 decoding debug failure messages
+  netrc: Read in text mode when cygwin
+  
+  Use text mode when cygwin to eliminate trailing carriage returns.
   
-  Just like in the NTLM code, added infof() failure messages for
-  DIGEST-MD5 and GSSAPI authentication when base64 decoding fails.
+  Bug: https://github.com/bagder/curl/pull/258
 
-- ntlm: Moved the SSPI based Type-3 message generation into the SASL module
+Patrick Monnerat (5 May 2015)
+- OS400: Add SPNEGO service name options to ILE/RPG binding.
 
-- ntlm: Moved the SSPI based Type-2 message decoding into the SASL module
+Daniel Stenberg (4 May 2015)
+- curl_multi_info_read.3: fix typo
+  
+  Reported-by: Liviu Chircu
 
-- ntlm: Moved the SSPI based Type-1 message generation into the SASL module
+- MANUAL: language fix
+  
+  Reported-by: Fred Stluka
+  Bug: https://github.com/bagder/curl/issues/255
 
-- [Michael Osipov brought this change]
+- [Alessandro Ghedini brought this change]
 
-  kerberos: Use symbol qualified with _KERBEROS5
+  gtls: properly retrieve certificate status
   
-  For consistency renamed USE_KRB5 to USE_KERBEROS5.
+  Also print the revocation reason if appropriate.
 
-Daniel Stenberg (15 Nov 2014)
-- [Jay Satiro brought this change]
+- OpenSSL: conditional check for SSL3_RT_HEADER
+  
+  The symbol is fairly new.
+  
+  Reported-by: Kamil Dudka
 
-  examples: Don't call select() to sleep on windows
+- openssl: skip trace outputs for ssl_ver == 0
   
-  Windows does not support using select() for sleeping without a dummy
-  socket. Instead use Windows' Sleep() and sleep for 100ms which is the
-  minimum suggested value in the curl_multi_fdset() doc.
+  The OpenSSL trace callback is wonderfully undocumented but given a
+  journey in the source code, it seems the cases were ssl_ver is zero
+  doesn't follow the same pattern and thus turned out confusing and
+  misleading. For now, we skip doing any CURLINFO_TEXT logging on those
+  but keep sending them as CURLINFO_SSL_DATA_OUT/IN.
   
-  Prior to this change the multi examples would exit prematurely since
-  select() would error instead of sleeping when called without an fd.
+  Also, I added direction to the text info and I edited some functions
+  slightly.
   
-  Reported-by: Johan Lantz
-  Bug: http://curl.haxx.se/mail/lib-2014-11/0221.html
+  Bug: https://github.com/bagder/curl/issues/219
+  Reported-by: Jay Satiro, Ashish Shukla
 
-- [Tatsuhiro Tsujikawa brought this change]
+Marc Hoersken (2 May 2015)
+- schannel.c: Small changes
+
+- schannel.c: Improve code path and readability
 
-  http2: Don't send Upgrade headers when we already do HTTP/2
+- schannel.c: Improve error and return code handling upon aa99a63f03
 
-Steve Holme (15 Nov 2014)
-- sasl: Corrected Curl_sasl_build_spn() function description
+- [Chris Araman brought this change]
+
+  schannel: fix regression in schannel_recv
+  
+  https://github.com/bagder/curl/issues/244
   
-  There was a mismatch in function parameter names.
+  Commit 145c263 changed the behavior when Curl_read_plain returns
+  CURLE_AGAIN. We now handle CURLE_AGAIN and SEC_I_CONTEXT_EXPIRED
+  correctly.
 
-- tool: Removed krb4 from the supported features
+- Bug born in changes made several days ago 9a91e80.
   
-  Although libcurl would never return CURL_VERSION_KERBEROS4 after 7.33,
-  so would not be output with --version, removed krb4 from the supported
-  features output.
+  Commit: https://github.com/bagder/curl/commit/926cb9f
+  Reported-by: Ray Satiro
 
+Daniel Stenberg (30 Apr 2015)
 - [Michael Osipov brought this change]
 
-  tool: Use Kerberos for supported features
-
-- urldata: Don't define sec_complete when no GSS-API support present
+  configure: remove missing and make it autogenerate
   
-  This variable is only used with HAVE_GSSAPI is defined by the FTP code
-  so let's place the definition with the other GSS-API based variables.
+  The missing file has not been autogenerated because a temporary fix was
+  employed in acinclude.m4 which blocked update. Removed that fix and a recent
+  version of missing is copied to build root.
 
 - [Michael Osipov brought this change]
 
-  docs: Use consistent naming for Kerberos
+  acinclude.m4: fix test for default CA cert bundle/path
+  
+  test(1) on HP-UX requires a single equals sign and fails with two.
+  Let's use one and make every OS happy.
+
+- CONTRIBUTING.md: remove the sourceforge mention
+  
+  Reported-By: Michael Osipov
 
-- TODO: Lets support QOP options in GSSAPI authentication
+Dan Fandrich (30 Apr 2015)
+- http_negotiate_sspi: added missing data variable
 
-- sasl_sspi: Corrected a couple of comment typos
+Daniel Stenberg (30 Apr 2015)
+- [Michael Osipov brought this change]
 
-- sasl: Moved Curl_sasl_gssapi_cleanup() definition into header file
+  configure: remove --automake from libtoolize call
+  
+  That option is not mentioned in the man page of libtoolize 2.4.4.19-fda4.
+  Moveover, a comment in line 2623 says "--automake is for 1.5 compatibility".
   
-  Rather than define the function as extern in the source files that use
-  it, moved the function declaration into the SASL header file just like
-  the Digest and NTLM clean-up functions.
+  This option is redundant now.
+
+- [Viktor Szakats brought this change]
+
+  build: update depedency versions, urls, example makefiles
   
-  Additionally, added a function description comment block.
+  - update default versions of dependencies (except for rare/old platforms)
+  - update urls
+  - sync examples makefiles with main ones
+  - remove line ending space
 
-- sasl_sspi: Added missing RFC reference for HTTP Digest authentication
+- [Michael Osipov brought this change]
 
-- ntlm: Clean-up and standardisation of base64 decoding
+  configure: remove autogenerated files by autoconf
+  
+  * install-sh is always regenerated
+  * mkinstalldirs was already redudant years ago. Automake uses install for
+    that. See: http://lists.gnu.org/archive/html/automake/2007-03/msg00015.html
 
-- ntlm: We prefer 'CURLcode result'
+- [Anders Bakken brought this change]
 
-Daniel Stenberg (13 Nov 2014)
-- [Brad King brought this change]
+  curl_multi_add_handle: next is already NULL
 
-  CMake: Restore order-dependent library checks
+Jay Satiro (30 Apr 2015)
+- schannel: Fix out of bounds array
   
-  Revert commit 2257deb502 (Cmake: Avoid cycle directory dependencies,
-  2014-08-22) and add a comment explaining the purpose of the original
-  code.
+  Bug born in changes made several days ago 9a91e80.
   
-  The check_library_exists_concat macro is intended to be called multiple
-  times on a sequence of possibly dependent libraries.  Later libraries
-  may depend on earlier libraries when they are static.  They cannot be
-  safely linked in reverse order on some platforms.
+  Bug: http://curl.haxx.se/mail/lib-2015-04/0199.html
+  Reported-by: Brian Chrisman
+
+- docs/libcurl: gitignore libcurl-symbols.3
   
-  Signed-off-by: Brad King <brad.king@kitware.com>
+  Bug: http://curl.haxx.se/mail/lib-2015-04/0191.html
+  Reported-by: Michael Osipov
 
-- [Brad King brought this change]
+- [Viktor Szakats brought this change]
 
-  CMake: Restore order-dependent header checks
-  
-  Revert commit 1269df2e3b (Cmake: Don't check for all headers each
-  time, 2014-08-15) and add a comment explaining the purpose of the
-  original code.
-  
-  The check_include_file_concat macro is intended to be called multiple
-  times on a sequence of possibly dependent headers.  Later headers
-  may depend on earlier headers to provide declarations.  They cannot
-  be safely included independently on some platforms.
+  lib/makefile.m32: add arch -m32/-m64 to LDFLAGS
   
-  For example, many POSIX APIs document including sys/types.h before some
-  other headers.  Also on some OS X versions sys/socket.h must be included
-  before net/if.h or the check for the latter will fail.
+  This fixes using a multi-target mingw distro to build curl .dll for the
+  non-default target.
+  (mirroring the same patch present in src/makefile.m32)
+
+Daniel Stenberg (29 Apr 2015)
+- RELEASE-NOTES: synced with cd39b944afc
   
-  Signed-off-by: Brad King <brad.king@kitware.com>
+  I've not mentioned the bug fixes that were shipped in 7.42.1 from the
+  7_42 branch.
 
-- [Peter Wu brought this change]
+- THANKS: merged from the 7.42.1 release
 
-  test22: expand a backtick command
+- CURLOPT_HEADEROPT: default to separate
   
-  This is the only user of the backtick operator in the command. As the
-  commands will soon not be executed by a shell anymore (but by perl),
-  replace the command with its output.
+  Make the HTTP headers separated by default for improved security and
+  reduced risk for information leakage.
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Bug: http://curl.haxx.se/docs/adv_20150429.html
+  Reported-by: Yehezkel Horowitz, Oren Souroujon
 
-- RELEASE-NOTES: synced with 2ee3c63b13
+Linus Nielsen (28 Apr 2015)
+- docs/libcurl: Corrected a typo in the CURLOPT_PROXY_SERVICE_NAME documentation
 
-- http2: fix switched macro when http2 is not enabled
+Daniel Stenberg (28 Apr 2015)
+- hash: simplify Curl_str_key_compare()
 
-- [Tatsuhiro Tsujikawa brought this change]
+- dist: ship CURLOPT_PROXY_SERVICE_NAME and CURLOPT_SERVICE_NAME
 
-  http2: Deal with HTTP/2 data inside response header buffer
-  
-  Previously if HTTP/2 traffic is appended to HTTP Upgrade response header
-  (thus they are in the same buffer), the trailing HTTP/2 traffic is not
-  processed and lost.  The appended data is most likely SETTINGS frame.
-  If it is lost, nghttp2 library complains server does not obey the HTTP/2
-  protocol and issues GOAWAY frame and curl eventually drops connection.
-  This commit fixes this problem and now trailing data is processed.
+- [Linus Nielsen brought this change]
 
-Steve Holme (11 Nov 2014)
-- configure: Fixed inclusion of krb5 when CURL_DISABLE_CRYPTO_AUTH is defined
+  Negotiate: custom service names for SPNEGO.
   
-  Commit fe0f8967bf fixed a problem with krb5 not being defined as a
-  supported feature when HAVE_GSSAPI is defined, however, it should
-  only be included if CURL_DISABLE_CRYPTO_AUTH is not set, like when
-  SPNEGO is listed as a feature.
+  * Add new options, CURLOPT_PROXY_SERVICE_NAME and CURLOPT_SERVICE_NAME.
+  * Add new curl options, --proxy-service-name and --service-name.
+
+- http2: unify http_conn variable names to 'c'
 
-Daniel Stenberg (10 Nov 2014)
-- multi: removed Curl_multi_set_easy_connection
+- ConnectionExists: call it multi-use instead of pipelining
   
-  It isn't used anywhere!
+  So that it fits HTTP/2 as well
+
+Kamil Dudka (27 Apr 2015)
+- [Paul Howarth brought this change]
+
+  nss: fix compilation failure with old versions of NSS
   
-  Reported-by: Carlo Wood
+  Bug: http://curl.haxx.se/mail/lib-2015-04/0095.html
 
-- [Peter Wu brought this change]
+Daniel Stenberg (27 Apr 2015)
+- sws: init http2 state properly
+  
+  It would otherwise cause problems when running tests after 1801 etc.
 
-  symbol-scan.pl: do not require autotools
+- curl_easy_getinfo.3: document 'internals' in CURLINFO_TLS_SESSION
   
-  Makes test1119 pass when building with cmake.
+  ... as it was previouly undocumented what the pointer was.
+
+- runtests: use a DISABLED.local file too
   
-  configurehelp.pm is generated by configure (autotools). As cmake does
-  not provide a separate variable for the C preprocessor, default to cpp.
-  Before commit ef24ecde68a5f577a7f0f423a767620f09a0ab16 ("symbol-scan:
-  use configure script knowledge about how to run the C preprocessor"),
-  this tool would also use 'cpp'.
+  ... and have git ignore that. Allows for a dev to add tests to ignore in
+  local tests and yet don't obstruct a normal git work flow.
+
+Marc Hoersken (26 Apr 2015)
+- schannel.c: Fix typo introduced with 3447c973d0
+
+- schannel.c: Fix possible SEC_E_BUFFER_TOO_SMALL error
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Reported-by: Brian Chrisman
 
-- [Peter Wu brought this change]
+Daniel Stenberg (26 Apr 2015)
+- schannel: re-indented file to follow curl style better
+  
+  white space changes only
 
-  cmake: add ENABLE_THREADED_RESOLVER, rename ARES
+- Curl_ossl_init: load builtin modules
   
-  Fix detection of the AsynchDNS feature which not just depends on
-  pthreads support, but also on whether USE_POSIX_THREADS is set or not.
-  Caught by test 1014.
+  To have engine modules work, we must tell openssl to load builtin
+  modules first.
   
-  This patch adds a new ENABLE_THREADED_RESOLVER option (corresponding to
-  --enable-threaded-resolver of autotools) which also needs a check for
-  HAVE_PTHREAD_H.
+  Bug: https://github.com/bagder/curl/pull/206
+
+- configure: follow-up fix for krb5-config
   
-  For symmetry with autotools, CURL_USE_ARES is renamed to ENABLE_ARES
-  (--enable-ares). Checks that test for the availability actually use
-  USE_ARES instead as that is the result of whether a-res is available or
-  not (in practice this does not matter as CARES is marked as required
-  package, but nevertheless it is better to write the intent).
+  commit 5b66860652 was incomplete so here's a follow-up fix
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Reported-by: Dagobert Michelsen
+  Bug: https://github.com/bagder/curl/commit/5b668606527613179d0349f21b4ab0df2971e3d2#commitcomment-10473445
 
-- [Peter Wu brought this change]
-
-  cmake: build libhostname for test suite
+- openssl: fix serial number output
   
-  Used by some test cases via LD_PRELOAD in order to fake the host name.
+  The code extracting the cert serial number was broken and didn't display
+  it properly.
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Bug: https://github.com/bagder/curl/issues/235
+  Reported-by: dkjjr89
 
-- [Peter Wu brought this change]
+- [Grant Pannell brought this change]
 
-  cmake: fix HAVE_GETHOSTNAME definition
+  sasl_sspi: Populate domain from the realm in the challenge
   
-  Otherwise Curl_gethostname always fails. Windows has gethostname
-  since Vista according to
-  http://msdn.microsoft.com/en-us/library/ms738527%28VS.85%29.aspx, but
-  accordings to byte_bucket's VC 2005 documentation, it is available even
-  in Windows 95. (possibly after installing a Platform SDK, the
-  Windows Server 2003 SP1 Platform SDK should be sufficient).
+  Without this, SSPI based digest auth was broken.
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Bug: https://github.com/bagder/curl/pull/141.patch
 
-- [Peter Wu brought this change]
+Jay Satiro (25 Apr 2015)
+- [Anthony Avina brought this change]
 
-  tests: fix libhostname visibility
-  
-  I noticed that a patched cmake build would pass tests with a fake local
-  hostname, but the autotools build skips them:
+  tool: New option --data-raw to HTTP POST data, '@' allowed.
   
-      got unexpected host name back, LD_PRELOAD failed
+  Add new option --data-raw which is almost the same as --data but does
+  not have a special interpretation of the @ character.
   
-  It turns out that -fvisibility=hidden hides the symbol, and since the
-  tests are not part of libcurl, it fails too. Just remove the LIBCURL
-  guard.
+  Prior to this change there was no (easy) way to pass the @ character as
+  the first character in POST data without it being interpreted as a
+  special character.
   
-  Broken since cURL 7.30 (commit 83a42ee20ea7fc25abb61c0b7ef56ebe712d7093,
-  "curl.h: stricter CURL_EXTERN linkage decorations logic").
-  
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
-
-- [Peter Wu brought this change]
+  Bug: https://github.com/bagder/curl/issues/198
+  Reported-by: Jens Rantil
 
-  tests: fix memleak in server/resolve.c
-  
-  This makes LeakSanitizer happy.
-  
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+Dan Fandrich (25 Apr 2015)
+- test2039: fixed line endings that caused a test failure
 
-- configure: assume krb5 when gss-api works
-  
-  To please test 1014 while we work out if this is truly the a correct
-  assumption.
+Daniel Stenberg (24 Apr 2015)
+- [Viktor Szakats brought this change]
 
-Steve Holme (9 Nov 2014)
-- vtls.h: Fixed compiler warning when compiled without SSL
-  
-  vtls.c:185:46: warning: unused parameter 'data'
+  netrc: add unit tests for 'default' support
 
-- RELEASE-NOTES: Synced with 2fbf23875f
+- [Viktor Szakats brought this change]
 
-- ntlm: Added separate SSPI based functions
+  netrc: support 'default' token
   
-  In preparation for moving the NTLM message code into the SASL module,
-  and separating the native code from the SSPI code, added functions that
-  simply call the functions in curl_ntlm_msg.c.
-
-- http_ntlm: Use the SASL functions instead
+  The 'default' token has no argument and means to match _any_ domain.
+  It must be placed last if there are 'machine <name>' tokens in the same file.
   
-  In preparation for moving the NTLM message code into the SASL module
-  use the SASL functions in the HTTP code instead.
+  See full description here:
+  https://www.gnu.org/software/inetutils/manual/html_node/The-_002enetrc-File.html
 
-Daniel Stenberg (9 Nov 2014)
-- libssh2: detect features based on version, not configure checks
+- ROADMAP.md: extended the HTTP/2 section, reformatted
   
-  ... so that non-configure builds get the correct functions too based on
-  the libssh2 version used.
-
-- [Nobuhiro Ban brought this change]
+  Elaborated on several of the remaining HTTP/2 parts and made document
+  use a format that ends up nicer on the web page:
+  http://curl.haxx.se/dev/roadmap.html
 
-  SSH: use the port number as well for known_known checks
+Kamil Dudka (23 Apr 2015)
+- curl -z: do not write empty file on unmet condition
   
-  ... if the libssh2 version is new enough.
+  This commit fixes a regression introduced in curl-7_41_0-186-g261a0fe.
+  It also introduces a regression test 1424 based on tests 78 and 1423.
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1448
+  Reported-by: Viktor Szakats
+  Bug: https://github.com/bagder/curl/issues/237
 
-Steve Holme (9 Nov 2014)
-- INSTALL: Updated pre-processor references to the old VC6 project files
+Dan Fandrich (23 Apr 2015)
+- tool: fixed a comment typo
+
+- README: convert to UTF-8
+
+Jay Satiro (22 Apr 2015)
+- cyassl: Implement public key pinning
   
-  Reworked the two sections that discuss modifying the Visual Studio pre-
-  processor settings, and vc6libcurl.dsw/vc6libcurl.dsp, to remove the
-  project files references as they have been superseded by a more thorough
-  set of project files for VC6 through VC12, but to also give the correct
-  reference to this setting in later versions of Visual Studio.
+  Also add public key extraction example to CURLOPT_PINNEDPUBLICKEY doc.
+
+Dan Fandrich (22 Apr 2015)
+- [Alessandro Ghedini brought this change]
 
-- INSTALL: Added email protocols to the "Disabling in Win32 builds" section
+  curl.1: fix typo
 
-- configure: Fixed NTLM missing from features when CURL_DISABLE_HTTP defined
+Kamil Dudka (22 Apr 2015)
+- docs: distribute the CURLOPT_PINNEDPUBLICKEY(3) man page, too
 
-- build: Fixed no NTLM support for email when CURL_DISABLE_HTTP is defined
+- tests/unit/.gitignore: hide unit1601 and above, too
+
+Daniel Stenberg (22 Apr 2015)
+- connectionexists: follow-up to fd9d3a1ef1f
   
-  USE_NTLM would only be defined if: HTTP support was enabled, NTLM and
-  cryptography weren't disabled, and either a supporting cryptography
-  library or Windows SSPI was being compiled against.
+  PROTOPT_CREDSPERREQUEST still needs to be checked even when NTLM is not
+  enabled.
   
-  This means it was not possible to build libcurl without HTTP support
-  and use NTLM for other protocols such as IMAP, POP3 and SMTP. Rather
-  than introduce a new SASL pre-processor definition, removed the HTTP
-  prerequisite just like USE_SPNEGO and USE_KRB5.
+  Mistake-caught-by: Kamil Dudka
+
+- connectionexists: fix build without NTLM
   
-  Note: Winbind support still needs to be dependent on CURL_DISABLE_HTTP
-  as it is only available to HTTP at present.
+  Do not access NTLM-specific struct fields when built without NTLM
+  enabled!
   
-  This bug dates back to August 2011 when I started to add support for
-  NTLM to SMTP.
+  bug: http://curl.haxx.se/?i=231
+  Reported-by: Patrick Rapin
 
-- ntlm: Removed an unnecessary free of native Target Info
-  
-  Due to commit 40ee1ba0dc the free in Curl_ntlm_decode_type2_target() is
-  longer required.
+- bump: start working toward 7.43.0
 
-- ntlm: Moved the native Target Info clean-up from HTTP specific function
+Kamil Dudka (22 Apr 2015)
+- nss: implement public key pinning for NSS backend
+  
+  Bug: https://bugzilla.redhat.com/1195771
 
-- ntlm: Moved SSPI clean-up code into SASL module
+Daniel Stenberg (22 Apr 2015)
+- dist: include {src,lib}/checksrc.whitelist
 
-- Makefile.dist: Added support for WinIDN
+Version 7.42.0 (22 Apr 2015)
 
-- Makefile.vc6: Added support for WinIDN
+Daniel Stenberg (22 Apr 2015)
+- RELEASE-NOTES: updated for 7.42.0
 
-- Makefile.dist: Added some missing SSPI configurations
+- THANKS: added contributors from 7.42.0 release notes
 
-- Makefile.dist: Separated the groups of SSL configurations from each other
+- THANKS-filter: a few more alterations to squash
 
-- Makefile.dist: Grouped the x64 configurations next to their x86 counterparts
+- contrithanks.sh: helper script for maintaining THANKS
 
-- curl.h: Tidy up of CURL_VERSION_* flags
+- http_done: close Negotiate connections when done
+  
+  When doing HTTP requests Negotiate authenticated, the entire connnection
+  may become authenticated and not just the specific HTTP request which is
+  otherwise how HTTP works, as Negotiate can basically use NTLM under the
+  hood. curl was not adhering to this fact but would assume that such
+  requests would also be authenticated per request.
   
-  As the list has gotten a little messy and hard to read, especially with
-  the introduction of deprecated items, aligned the values and comments
-  into clean columns and reworked some of the comments in the process.
+  CVE-2015-3148
+  
+  Bug: http://curl.haxx.se/docs/adv_20150422B.html
+  Reported-by: Isaac Boukris
 
-- curl_tool: Added krb5 to the supported features
+- fix_hostname: zero length host name caused -1 index offset
+  
+  If a URL is given with a zero-length host name, like in "http://:80" or
+  just ":80", `fix_hostname()` will index the host name pointer with a -1
+  offset (as it blindly assumes a non-zero length) and both read and
+  assign that address.
+  
+  CVE-2015-3144
+  
+  Bug: http://curl.haxx.se/docs/adv_20150422D.html
+  Reported-by: Hanno Böck
 
-- configure: Added krb5 to the supported features
+- cookie: cookie parser out of boundary memory access
+  
+  The internal libcurl function called sanitize_cookie_path() that cleans
+  up the path element as given to it from a remote site or when read from
+  a file, did not properly validate the input. If given a path that
+  consisted of a single double-quote, libcurl would index a newly
+  allocated memory area with index -1 and assign a zero to it, thus
+  destroying heap memory it wasn't supposed to.
+  
+  CVE-2015-3145
+  
+  Bug: http://curl.haxx.se/docs/adv_20150422C.html
+  Reported-by: Hanno Böck
 
-- version info: Added Kerberos V5 to the supported features
+- ConnectionExists: for NTLM re-use, require credentials to match
+  
+  CVE-2015-3143
+  
+  Bug: http://curl.haxx.se/docs/adv_20150422A.html
+  Reported-by: Paras Sethia
 
-Guenter Knauf (7 Nov 2014)
-- mk-ca-bundle.vbs: switch to new certdata.txt url.
+Jay Satiro (21 Apr 2015)
+- [byronhe brought this change]
 
-Steve Holme (7 Nov 2014)
-- RELEASE-NOTES: Synced with dcad09e125
+  openssl: add OPENSSL_NO_SSL3_METHOD check
 
-- http_digest: Fixed some memory leaks introduced in commit 6f8d8131b1
+Daniel Stenberg (20 Apr 2015)
+- CURLOPT_HEADERFUNCTION.3: match parameter name in synopsis and desc
   
-  Fixed a couple of memory leaks as a result of moving code that used to
-  populate allocuserpwd and relied on it's clean up.
+  Bug: https://github.com/bagder/curl/issues/229
+  Reported-by: bsammon
 
-- docs: Updated following the addition of SSPI based HTTP digest auth
+Kamil Dudka (20 Apr 2015)
+- [Mostyn Bramley-Moore brought this change]
 
-- sasl_sspi: Tidy up of the existing digest code
-  
-  Following the addition of SSPI support for HTTP digest, synchronised
-  elements of the email digest code with that of the new HTTP code.
+  configure --with-nss: remove unneeded libs from the fallback
 
-- http_digest: Post SSPI support tidy up
-  
-  Post tidy up to ensure commonality of code style and variable names.
+Daniel Stenberg (20 Apr 2015)
+- contributors.sh: fix help output, filter out (-prefix from names
 
-Dan Fandrich (6 Nov 2014)
-- test552: Don't run HTTP digest tests for SSPI based builds
-  
-  Technical difficulties prevented this from going into the
-  previous commit.
+- RELEASE-NOTES: synced with cc0e7ebc3be0
 
-Steve Holme (6 Nov 2014)
-- tests: Don't run HTTP digest tests for SSPI based builds
-  
-  Added !SSPI to the features list of the HTTP digest tests, as SSPI
-  based builds now use the Windows SSPI messaging API rather than the
-  internal functions, and we can't control the random numbers that get
-  used as part of the digest.
+- [Michael Stapelberg brought this change]
 
-Daniel Stenberg (6 Nov 2014)
-- curl.1: show zone index use in a URL
+  CURLMOPT_TIMERFUNCTION.3: Clarify, add an example
 
-Steve Holme (6 Nov 2014)
-- http_digest: Fixed auth retry loop when SSPI based authentication fails
+- [Viktor Szakáts brought this change]
 
-- http_digest: Reworked the SSPI based input token storage
-  
-  Reworked the input token (challenge message) storage as what is passed
-  to the buf and desc in the response generation are typically blobs of
-  data rather than strings, so this is more in keeping with other areas
-  of the SSPI code, such as the NTLM message functions.
+  vtls/openssl: use https in URLs and a comment typo fixed
 
-- sasl_sspi: Fixed compilation warning from commit 2d2a62e3d9
+- curl_version_info.3: fixed the 'protocols' variable type
   
-  Added void reference to unused 'data' parameter back to fix compilation
-  warning.
+  Reported-by: John Marshall
+  Bug: https://github.com/bagder/curl/issues/225
 
-- sspi: Align definition values to even columns as we use 2 char spacing
+Dan Fandrich (18 Apr 2015)
+- test1423: added missing "file" to server section
 
-- sspi: Fixed missing definition of ISC_REQ_USE_HTTP_STYLE
+Daniel Stenberg (17 Apr 2015)
+- TheArtOfHttpScripting: Multiple URLs + Multiple HTTP methods
   
-  Some versions of Microsoft's sspi.h don't define this.
+  ... and some minor edits
 
-- sasl: Removed non-SSPI Digest functions and defines from SSPI based builds
+- Revert "HTTP: don't abort connections with pending Negotiate authentication"
+  
+  This reverts commit 5dc68dd6092a789bb5e0a67a1c1356ba87fdcbc6.
   
-  Introduced in commit 7e6d51a73c these functions and definitions are only
-  required by the internal challenge-response functions now.
+  Bug: https://github.com/bagder/curl/issues/223
+  Reported-by: Michael Osipov
 
-- sasl_sspi: Added HTTP digest response generation code
+Jay Satiro (17 Apr 2015)
+- cyassl: Fix include order
+  
+  Prior to this change CyaSSL's build options could redefine some generic
+  build symbols.
+  
+  http://curl.haxx.se/mail/lib-2015-04/0069.html
 
-- http_digest: Added SSPI based challenge decoding code
+Kamil Dudka (17 Apr 2015)
+- configure --with-nss: drop redundant if statement
 
-- http_digest: Added SSPI based clean-up code
+- configure --with-nss=PATH: query pkg-config if available
+  
+  Bug: https://github.com/bagder/curl/pull/171
 
-- http_digest: Added SSPI based authentication functions
+Daniel Stenberg (17 Apr 2015)
+- parsecfg: do not continue past a zero termination
   
-  This temporarily breaks HTTP digest authentication in SSPI based builds,
-  causing CURLE_NOT_BUILT_IN to be returned. A follow up commit will
-  resume normal operation.
+  When a config file line ends without newline, the parsing function could
+  continue reading beyond that point in memory.
+  
+  Reported-by: Hanno Böck
 
-- http_digest: Added required SSPI based variables to digest structure
+Jay Satiro (16 Apr 2015)
+- gitignore: Ignore Windows build output directories
 
-Daniel Stenberg (6 Nov 2014)
-- [Frank Gevaerts brought this change]
+Daniel Stenberg (15 Apr 2015)
+- RELEASE-NOTES: synced with 1ba6e4c88e0
 
-  contributors.sh: --releasenotes reads in names from RELEASE-NOTES
-  
-  This is very handy when updating the RELEASE-NOTES as then we sometimes
-  have names added manually in the existing list and we use this script to
-  update the set.
+- TODO: 17.9 Choose the name of file in braces for complex URLs
 
-- RELEASE-NOTES: synced with 68542e72a9
+- TODO: a little caution that maybe not all ideas are still good
 
-- curl_easy_setopt.3: add CURLOPT_PINNEDPUBLICKEY
-  
-  Reported-by: Christian Hägele
-  Bug: http://curl.haxx.se/mail/lib-2014-11/0078.html
+- TODO: 17.8 offer color-coded HTTP header output
 
-Steve Holme (5 Nov 2014)
-- build: Fixed Visual Studio project file generation of strdup.[c|h]
-  
-  As the curl command-line tool now includes it's own version of strdup(),
-  for platforms that don't have it, fixed up the git respository Visual
-  Studio project file generator to not include the version from lib in the
-  tool project files, rather than having both lib\strdup.[c|h] and
-  src\tool_strdup.[c|h] present.
+- TODO: 17.7 warning when sending binary output to terminal
 
-Daniel Stenberg (5 Nov 2014)
-- tool_strdup.c: include the tool strdup.h
-  
-  ... not the lib/ one that the tool no longer uses!
+- KNOWN_BUGS: #90 IMAP "SEARCH ALL" truncates output on large boxes
 
-- THANKS-filter: added another Michał Górny version we've used
+Jay Satiro (14 Apr 2015)
+- cyassl: Add support for TLS extension SNI
 
-- contributors.sh: split lists using " and "
-  
-  ... and require the space after the filtering to make the filter able to
-  remove names.
+Daniel Stenberg (13 Apr 2015)
+- [Matthew Hall brought this change]
 
-Steve Holme (5 Nov 2014)
-- http_digest: Fixed memory leaks from commit 6f8d8131b1
+  gitignore: ignore test-driver file
 
-- sasl: Fixed compilation warning from commit 25264131e2
-  
-  Added forward declaration of digestdata to overcome the following
-  compilation warning:
-  
-  warning: 'struct digestdata' declared inside parameter list
-  
-  Additionally made the ntlmdata forward declaration dependent on
-  USE_NTLM similar to how digestdata and kerberosdata are.
+- [Matthew Hall brought this change]
 
-- sasl: Fixed HTTP digest challenges with spaces between auth parameters
-  
-  Broken as part of the rework, in commit 7e6d51a73c, to assist with the
-  addition of HTTP digest via Windows SSPI.
+  vtls_openssl: improve PKCS#12 load failure error message
 
-- http_digest: Fixed compilation errors from commit 6f8d8131b1
-  
-  error: invalid operands to binary
-  warning: pointer targets in assignment differ in signedness
+- [Matthew Hall brought this change]
 
-- http_digest: Moved response generation into SASL module
+  vtls_openssl: fix minor typo in PKCS#12 load routine
 
-- http_digest: Moved challenge decoding into SASL module
+- [Matthew Hall brought this change]
 
-- http_digest: Moved clean-up function into SASL module
+  vtls_openssl: improve client certificate load failure error messages
 
-- http_digest: Moved algorithm definitions to SASL module
+- [Matthew Hall brought this change]
 
-- [Gisle Vanem brought this change]
+  vtls_openssl: remove ambiguous SSL_CLIENT_CERT_ERR constant
 
-  ssh: Fixed build on platforms where R_OK is not defined
-  
-  Bug: http://curl.haxx.se/mail/lib-2014-11/0035.html
-  Reported-by: Jan Ehrhardt
+- BUGS: refer to the github issue tracker now as primary
 
-- strdup: Removed irrelevant comment
+- firefox-db2pem: fix wildcard to find Firefox default profile
   
-  ...as Curl_memdup() duplicates an area of fix size memory, that may be
-  binary, and not a null terminated string.
-
-- url.c: Fixed compilation warning
+  At some point, Firefox has changed and generates different directory
+  names for the default profile that made this script fail to find them.
   
-  conversion from 'curl_off_t' to 'size_t', possible loss of data
+  Bug: https://github.com/bagder/curl/issues/207
+  Reported-by: sneakyimp
 
-- http_digest: Use CURLcode instead of CURLdigest
+Jay Satiro (11 Apr 2015)
+- cyassl: Include the CyaSSL build config
   
-  To provide consistent behaviour between the various HTTP authentication
-  functions use CURLcode based error codes for Curl_input_digest()
-  especially as the calling code doesn't use the specific error code just
-  that it failed.
+  CyaSSL >= 2.6.0 may have an options.h that was generated during
+  its build by configure.
 
-Daniel Stenberg (5 Nov 2014)
-- contributors.sh: filter common alternative name spellings
+- build: Generate source prerequisites for Visual Studio in generate.bat
   
-  docs/THANKS-filter is a new filter file for converting contributor names
-  we get or have recorded in alternative formats to the one we already use
-  in THANKS. To help us show individual contributors using a single
-  presentation of their names.
-
-- THANKS: added missing contributor from 2012
+  Prior to this change Visual Studio builds could fail due to missing
+  prerequisites src/tool_hugehelp.c and include/curl/curlbuild.h.
+  
+  http://curl.haxx.se/mail/lib-2015-04/0034.html
 
-- [Frank Gevaerts brought this change]
+Daniel Stenberg (9 Apr 2015)
+- [Viktor Szakats brought this change]
 
-  Remove duplicate names.
+  lib/makefile.m32: add missing libs to build libcurl.dll
   
-  The removed names also appear as:
-  Andrés García, François Charlier, Gökhan Şengün, Michał Górny, Sébastien
-  Willemijns, Christopher Conroy, John E. Malmberg, Luca Altea, Peter Su,
-  S. Moonesamy, Samuel Listopad, Yasuharu Yamada, Karl Moerder
+  Add 'gdi32' and 'crypt32' Windows implibs to avoid failure
+  while building libcurl.dll using the mingw compiler.
+  The same logic is used in 'src/makefile.m32' when
+  building curl.exe.
 
-Steve Holme (5 Nov 2014)
-- sspi: Define authentication package name constants
+Kamil Dudka (8 Apr 2015)
+- test142[23]: verify that an empty file is stored on success
+
+- src/tool_operate: create output file on successful download
   
-  These were previously hard coded, and whilst defined in security.h,
-  they may or may not be present in old header files given that these
-  defines were never used in the original code.
+  ... of an empty file
   
-  Not only that, but there appears to be some ambiguity between the ANSI
-  and UNICODE NTLM definition name in security.h.
+  Bug: https://github.com/bagder/curl/issues/183
+
+- src/tool_cb_wrt: separate fnc for output file creation
 
-Patrick Monnerat (5 Nov 2014)
-- Adjust OS400-specific support to last release
+Daniel Stenberg (7 Apr 2015)
+- [Da-Yoon Chung brought this change]
 
-Daniel Stenberg (5 Nov 2014)
-- THANKS: added two missing names and removed a duplicate
+  lib/transfer.c: Remove factor of 8 from sleep time calculation
   
-  ./contributors.sh found these extra ones that somehow had fallen
-  through the cracks and never gotten added here.
+  The factor of 8 is a bytes-to-bits conversion factor, but pkt_size and
+  rate_bps are both in bytes. When using the rate limiting option, curl
+  waits 8 times too long, and then transfers very quickly until the
+  average rate reaches the limit. The average rate follows the limit over
+  time, but the actual traffic is bursty.
   
-  Reported-by: Frank Gevaerts
-
-- bump: towards next release
+  Thanks-to: Benjamin Gilbert
 
-- THANKS: added names from 7.39.0 release notes
+- [Jay Satiro brought this change]
 
-Version 7.39.0 (5 Nov 2014)
+  x509asn1: Silence x64 loss-of-data warning on RSA key length assignment
+  
+  The key length in bits will always fit in an unsigned long so the
+  loss-of-data warning assigning the result of x64 pointer arithmetic to
+  an unsigned long is unnecessary.
 
-Daniel Stenberg (5 Nov 2014)
-- RELEASE-NOTES: 7.39.0 release (commit b3875606925)
+- [Jay Satiro brought this change]
 
-- curl_easy_duphandle: CURLOPT_COPYPOSTFIELDS read out of bounds
-  
-  When duplicating a handle, the data to post was duplicated using
-  strdup() when it could be binary and contain zeroes and it was not even
-  zero terminated! This caused read out of bounds crashes/segfaults.
+  cyassl: Use CYASSL_MAX_ERROR_SZ for error buffer size
   
-  Since the lib/strdup.c file no longer is easily shared with the curl
-  tool with this change, it now uses its own version instead.
+  Also fix it so that all ERR_error_string calls use an error buffer.
+  CyaSSL's implementation of ERR_error_string only writes the error when
+  an error buffer is passed.
   
-  Bug: http://curl.haxx.se/docs/adv_20141105.html
-  CVE: CVE-2014-3707
-  Reported-By: Symeon Paraschoudis
+  http://www.yassl.com/forums/topic599-openssl-compatibility-and-errerrorstring.html
 
-- lib544.c: use duphandle for test 545
-  
-  To verify that curl_easy_duphandle() works fine on a handle that has
-  gotten data stored with *_COPYPOSTFIELDS.
+- [Jay Satiro brought this change]
 
-- tests: add new feature 'SSLpinning'
+  cyassl: Remove 'Connecting to' message from cyassl_connect_step2
   
-  ... and make test 2034 and 2035 require it, and have it set when built
-  with OpenSSL or GnuTLS.
+  Prior to this change libcurl could show multiple 'CyaSSL: Connecting to'
+  messages since cyassl_connect_step2 is called multiple times, typically.
+  The message is superfluous even once since libcurl already informs the
+  user elsewhere in code that it is connecting.
 
-- buildconf: update copyright year
+- [Viktor Szakats brought this change]
 
-Steve Holme (4 Nov 2014)
-- INSTALL: Consistent spacing in section headings, paragraphs and examples
+  checksrc.bat: quotes to support an SRC_DIR with spaces
 
-Daniel Stenberg (4 Nov 2014)
-- buildconf: stop checking for libtool
+- hostip: fix compiler warnings
   
-  As we only use libtoolize, only check for that!
+  introduced in the previous mini-series of 3 commits
 
-Steve Holme (4 Nov 2014)
-- INSTALL: Corrected MIT Kerberos and Heimdal package names
-
-- README: Corrected inconsistent use of --help
+- [Stefan Bühler brought this change]
 
-- INSTALL: Use GSS-API rather than GSSAPI
+  actually implement CURLOPT_RESOLVE removals
   
-  As implementations are refereed to GSS-API libraries as per the RFC and
-  GSSAPI typically refers to the SASL authentication mechanism.
-  
-  ...and minor rewording on the same paragraph.
+  - also log when a CURLOPT_RESOLVE entry couldn't get parsed
+
+- [Stefan Bühler brought this change]
 
-- README: Added note about using Visual Studio projects out of git repository
+  move Curl_share_lock and ref counting into Curl_fetch_addr
 
-Daniel Stenberg (4 Nov 2014)
-- [K. R. Walker brought this change]
+- [Stefan Bühler brought this change]
 
-  cmake: fix ZLIB_INCLUDE_DIRS use
+  fix refreshing of obsolete dns cache entries
   
-  CMake 2.8's FindZLIB.cmake documents ZLIB_INCLUDE_DIRS, see
-  http://www.cmake.org/cmake/help/v2.8.0/cmake.html#module:FindZLIB
-  
-  Bug: https://github.com/bagder/curl/pull/123
+  - cache entries must be also refreshed when they are in use
+  - have the cache count as inuse reference too, freeing timestamp == 0 special
+    value
+  - use timestamp == 0 for CURLOPT_RESOLVE entries which don't get refreshed
+  - remove CURLOPT_RESOLVE special inuse reference (timestamp == 0 will prevent refresh)
+  - fix Curl_hostcache_clean - CURLOPT_RESOLVE entries don't have a special
+    reference anymore, and it would also release non CURLOPT_RESOLVE references
+  - fix locking in Curl_hostcache_clean
+  - fix unit1305.c: hash now keeps a reference, need to set inuse = 1
+
+- RELEASE-NOTES: synced with abf6bddc14a
 
 - [Jay Satiro brought this change]
 
-  SSL: PolarSSL default min SSL version TLS 1.0
-  
-  - Prior to this change no SSL minimum version was set by default at
-  runtime for PolarSSL. Therefore in most cases PolarSSL would probably
-  have defaulted to a minimum version of SSLv3 which is no longer secure.
+  checksrc.bat: Check lib\vtls source
 
-- opts-Makefile: put more man pages into dist and make hmtl+pdf
+- [Jay Satiro brought this change]
 
-- curl_multi_setopt.3: refer to stand-alone pages
+  cyassl: Set minimum protocol version before CTX callback
   
-  ... instead of duplicating info.
+  This change is to allow the user's CTX callback to change the minimum
+  protocol version in the CTX without us later overriding it, as we did
+  prior to this change.
 
-- opts: more multi options as stand-alone man pages
+- [Jay Satiro brought this change]
 
-- Makefile.am: two cmake files are gone
+  build-openssl.bat: Fix mixed line endings
   
-  8cb010144 removed the CurlCheckCSourceCompiles.cmake and
-  CurlCheckCSourceRuns.cmake files
-
-- opts: made stand-alone man-pages for several multi options
+  Use LF not CRLF, throughout.  msysgit will only convert a file to CRLF
+  on checkout if it's not mixed.
 
-- [Carlo Wood brought this change]
+- [Jay Satiro brought this change]
 
-  Curl_single_getsock: fix hold/pause sock handling
+  cyassl: Fix certificate load check
   
-  The previous condition that checked if the socket was marked as readable
-  when also adding a writable one, was incorrect and didn't take the pause
-  bits properly into account.
+  SSL_CTX_load_verify_locations can return negative values on fail,
+  therefore to check for failure we check if load is != 1 (success)
+  instead of if load is == 0 (failure), the latter being incorrect given
+  that behavior.
 
-- [Peter Wu brought this change]
+- [Tatsuhiro Tsujikawa brought this change]
 
-  cmake: fix struct sockaddr_storage check
+  http2: Fix missing nghttp2_session_send call in Curl_http2_switched
   
-  CHECK_TYPE_SIZE_PREINCLUDE is an internal, undocumented variable which
-  was removed in cmake 2.8.1. According to the MSDN docs[1], inclusion
-  of winsock2.h is sufficient. WIN32_LEAN_AND_MEAN does not really seem
-  to affect the tests, so remove it too[2].
+  Previously in Curl_http2_switched, we called nghttp2_session_mem_recv to
+  parse incoming data which were already received while curl was handling
+  upgrade.  But we didn't call nghttp2_session_send, and it led to make
+  curl not send any response to the received frames.  Most likely, we
+  received SETTINGS from server at this point, so we missed opportunity to
+  send SETTINGS + ACK.  This commit adds missing nghttp2_session_send call
+  in Curl_http2_switched to fix this issue.
+  
+  Bug: https://github.com/bagder/curl/issues/192
+  Reported-by: Stefan Eissing
+
+- cookie: handle spaces after the name in Set-Cookie
   
-  For the non-windows case, remove inet headers as POSIX only requires
-  sys/socket.h.
+  "name =value" is fine and the space should just be skipped.
   
-   [1]: http://msdn.microsoft.com/en-us/library/windows/desktop/ms740504%28v=vs.85%29.aspx
-   [2]: http://stackoverflow.com/questions/11040133/what-does-defining-win32-lean-and-mean-exclude-exactly
+  Updated test 31 to also test for this.
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Bug: https://github.com/bagder/curl/issues/195
+  Reported-by: cromestant
+  Help-by: Frank Gevaerts
 
-- [Peter Wu brought this change]
+- [Jay Satiro brought this change]
 
-  cmake: clean OtherTests, fixing -Werror
+  cyassl: Fix library initialization return value
   
-  There were several -Wunused warnings and one duplicate macro definition.
-  The EXTRA_DEFINES variable of the CurlCheckCSources macro was being
-  abused ("__unused1\n#undef inline\n#define __unused2", seriously?) to
-  insert extra C code. Avoid this broken abstraction and use cmake's
-  check_c_source_compiles directly (works fine with CMake 2.8, maybe
-  even cmake 2.6).
+  (Curl_cyassl_init)
+  - Return 1 on success, 0 in failure.
   
-  After cleaning up all related variables (EXTRA_DEFINES,
-  HEADER_INCLUDES, auxiliary headers_hack), also remove a duplicate
-  add_headers_include macro and remove duplicate header additions before
-  the struct timeval check.
+  Prior to this change the fail path returned an incorrect value and the
+  evaluation to determine whether CyaSSL_Init had succeeded was incorrect.
+  Ironically that combined with the way curl_global_init tests SSL library
+  initialization (!Curl_ssl_init()) meant that CyaSSL having been
+  successfully initialized would be seen as that even though the code path
+  and return value in Curl_cyassl_init were wrong.
+
+- [Thomas Ruecker brought this change]
+
+  CURLOPT_HTTP200ALIASES.3: Mainly SHOUTcast servers use "ICY 200"
   
-  Oh, and now the code is converted to use CheckCSourceRuns and
-  CheckCSourceCompiles, the two curl-specific helpers can be removed.
-  Unfortunately, the cmake output is now slightly more verbose. Before:
+  Icecast versions 1.3.0 through 1.3.12 would reply with "ICY 200"
+  under certain conditions:
   
-      Performing Test int send(int, const void *, size_t, int) (curl_cv_func_send_test)
-      Performing Test int send(int, const void *, size_t, int) (curl_cv_func_send_test) - Failed
+      client_wants_icy_headers (connection_t *con)
+      {
+              const char *val;
   
-  Since check_c_source_compiles prints the varname, now you see:
+              if (!con)
+                      return 1;
   
-      Performing Test curl_cv_func_send_test
-      Performing Test curl_cv_func_send_test - Failed
-      Tested: int send(int, const void *, size_t, int)
+              val = get_user_agent (con);
+              if (!val || !val[0] || strcmp (val, "(null)") == 0)
+                      return 1;
   
-  Compared cmake output with each other using vimdiff, no functional
-  differences were found. Tested with GCC 4.9.1 and Clang 3.5.0.
+              if (con->food.client->use_icy)
+                      return 1;
+              if (strncasecmp (val, "winamp", 6) == 0)
+                      return 1;
+              if (strncasecmp (val, "Shoutcast", 9) == 0)
+                      return 1;
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
-
-- [Peter Wu brought this change]
-
-  cmake: fix gethostby{addr,name}_r in CurlTests
+              return 0;
+      }
   
-  This patch cleans up the automatically-generated (?) code and fixes one
-  case that will always fail due to syntax error.
+  So mainly if there is no 'user agent' or it is '(null)' or contains
+  'winamp' or 'Shoutcast'.
   
-  HAVE_GETHOSTBYADDR_R_5_REENTRANT always failed because of a trailing
-  character ("int length;q"). Several parameter type and unused variable
-  warnings popped up. This causes a detection failure with -Werror.
+  No mainstream distribution carries Icecast 1.3.x anymore, after all
+  it was released in 2002 and superseded by Icecast 2.x.
+
+Dan Fandrich (31 Mar 2015)
+- axtls: add timeout within Curl_axtls_connect
   
-  Observe that the REENTRANT cases are exactly the same as their
-  non-REENTRANT cases except for a `_REENTRANT` macro definition.
-  Merge all these pieces and build one big main function with different
-  cases, but reusing variables where logical.
+  This allows test 405 to pass on axTLS.
+
+Daniel Stenberg (30 Mar 2015)
+- [Jay Satiro brought this change]
+
+  checksrc: Windows-specific input fixes
   
-  For the cases where the parameters where NULL, I looked at
-  lib/hostip4.c to get an idea of the parameters types.
+  lib/config-win32ce.h
+  - Fix whitespace for checksrc compliance.
   
-  void-cast variables such as 'rc' to avoid -Wuninitialized errors.
+  lib/checksrc.pl
+  - Remove trailing carriage returns from input.
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  projects/checksrc.bat
+  - Ignore tool_hugehelp.c.
 
-- [Peter Wu brought this change]
+- [Dagobert Michelsen brought this change]
 
-  cmake: drop _BSD_SOURCE macro usage
+  configure: Use KRB5CONFIG for krb5-config
   
-  autotools does not use features.h nor _BSD_SOURCE. As this macro
-  triggers warnings since glibc 2.20, remove it. It should not have
-  functional differences.
+  Allows the user to easier override its path.
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1486
 
-Steve Holme (2 Nov 2014)
-- RELEASE-NOTES: Synced with d71ea7c01e
+- multi: remove_handle: move pending connections
   
-  Additionally, updated "GSSAPI" to "GSS-API" for a Cmake related change
-  as GSSAPI can be confused with the authentication mechanism rather than
-  a GSS-API implementation library such as MIT or Heimdal.
-
-- build: Added WinIDN build configuration options
+  If the handle removed from the multi handle happens to be the one
+  "owning" the pipeline other transfers will be waiting indefinitely. Now
+  we move such handles back to connect to have them race (again) for
+  getting the connection and thus avoid hanging.
   
-  Added support for WinIDN build configurations to the VC6 project files.
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1465
+  Reported-by: Jiri Dvorak
 
-- build: Added WinIDN build configuration options
+- KNOWN_BUGS: 89 is bug #1411
   
-  Added support for WinIDN build configurations to the VC7 and VC7.1
-  project files.
+  Disabling pipelining on multi handle with in-progress pipelined requests
+  leads to heap corruption and crash
 
-- build: Fixed the pre-processor separator in Visual Studio project files
-  
-  A left over from the VC6 project files, so mainly cosmetic in Visual
-  Studio .NET as it can handle both comma and semi-colon characters for
-  separating multiple pre-processor definitions.
+- [Jay Satiro brought this change]
+
+  cyassl: CTX callback cosmetic changes and doc fix
   
-  However, the IDE uses semi-colons if the value is edited, and as such,
-  this may cause problems in future for anyone updating the files or
-  merging patches.
+  - More descriptive fail message for NO_FILESYSTEM builds.
+  - Cosmetic changes.
+  - Change more of CURLOPT_SSL_CTX_* doc to not be OpenSSL specific.
+
+- RELEASE-NOTES: synced with d2feb71752f
+
+Dan Fandrich (28 Mar 2015)
+- tool_operate: only set SSL options if SSL is enabled
+
+- runtests.pl: detect WolfSSL as yassl
+
+Daniel Stenberg (27 Mar 2015)
+- [Kyle L. Huff brought this change]
+
+  cyassl: add SSL context callback support for CyaSSL
   
-  Used the Visual Studio IDE to correct the separator character.
+  Adds support for CURLOPT_SSL_CTX_FUNCTION when using CyaSSL, and better
+  handles CyaSSL instances using NO_FILESYSTEM.
 
-- build: Added optional specific version generation of VC project files
+- [Kyle L. Huff brought this change]
+
+  cyassl: remove undefined reference to CyaSSL_no_filesystem_verify
   
-  ..when working from the git repository. This is particularly useful
-  for single development environments where the project files for all
-  supported versions of Visual Studio may not be required.
+  CyaSSL_no_filesystem_verify is not (or no longer) defined by cURL or
+  CyaSSL. This reference causes build errors when compiling with
+  NO_FILESYSTEM.
 
 - [Jay Satiro brought this change]
 
-  build-openssl.bat: Fix x64 release build
+  build: Fix libcurl.sln erroneous mixed configurations
   
-  Prior to this change if x64 release was specified a failed attempt was
-  made to build x86 release instead.
+  Prior to this change some Release configurations had an active
+  configuration assignment to their Debug counterpart.
+
+- [Jay Satiro brought this change]
 
-- CURLOPT_XOAUTH2_BEARER.3: Corrected the OAuth version number
+  vtls: Don't accept unknown CURLOPT_SSLVERSION values
 
-- CURLOPT_SASL_IR.3: Added supported mechanism information
-  
-  ...and removed duplication of what protocols are supported from the
-  description text.
+- [Jay Satiro brought this change]
+
+  url: Don't accept CURLOPT_SSLVERSION unless USE_SSL is defined
 
-- opts: Use common wording for MAIL related names
+- [Paul Howarth brought this change]
+
+  build: link curl to openssl libraries when openssl support is enabled
+  
+  This fixes a build failure where openssl and libmetalink are used
+  together and the system linker does not do implicit linking (e.g.
+  Fedora 13 and later releases). The MD5 functions required for
+  metalink support must be pulled in from the openssl crypto library.
+  
+  This is similar to commit c6e7cbb94e669b85d3eb8e015ec51d0072112133,
+  which fixes the same sort of problem for NSS builds.
 
-- opts: Use common wording for TLS user/password option names
+- multi: on a request completion, check all CONNECT_PEND transfers
   
-  ...and revised the proxy wording a little as well.
+  ... even if they don't have an associated connection anymore. It could
+  leave the waiting transfers pending with no active one on the
+  connection.
+  
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1465
+  Reported-by: Jiri Dvorak
+
+- [Emil Lerner brought this change]
 
-- CURLOPT_MAXCONNECTS.3: Reworked the description to be less confusing
+  globbing: fix url number calculation when using range with step
   
-  ...and corrected a related typo in curl_easy_setopt.3.
+  In function glob_range, the number of urls was multiplied by (max - min
+  + 1), regardless of step. The correct formula is (max - min) / step + 1
 
-Guenter Knauf (2 Nov 2014)
-- RELEASE-NOTES: removed obsolete entry; fixed entry.
+- README.http2: refreshed and added TODO items
 
-Steve Holme (2 Nov 2014)
-- RELEASE-NOTES: Synced with e7da67f5d3
+- [Emil Lerner brought this change]
 
-- docs: Added mention of Kerberos for CURL_VERSION_SSPI
+  globbing: fix step parsing for character globbing ranges
   
-  As this has been present for SOCKSv5 proxy since v7.19.4 and for IMAP,
-  POP3 and SMTP authentication since v7.38.0.
+  The glob_range function used wrong offset (3 instead of 4) for parsing
+  integer step inside character range specification, which led to 'bad
+  range' error when using character ranges with explicitly specified step
+  (such as '[a-z:2]')
 
-- CURL_VERSION_KERBEROS4: Mark as deprecated
+- polarssl: called mbedTLS in 1.3.10 and later
+
+- polarssl: remove dead code
+  
+  and simplify code by changing if-elses to a switch()
   
-  Support for Kerberos V4 was removed in v7.33.0.
+  CID 1291706: Logically dead code. Execution cannot reach this statement
 
-- sasl: Fixed Kerberos V5 inclusion when CURL_DISABLE_CRYPTO_AUTH is used
+- polarssl: remove superfluous for(;;) loop
   
-  Typically the USE_WINDOWS_SSPI definition would not be used when the
-  CURL_DISABLE_CRYPTO_AUTH define is, however, it is still a valid build
-  configuration and, as such, the SASL Kerberos V5 (GSSAPI) authentication
-  data structures and functions would incorrectly be used when they
-  shouldn't be.
+  "unreachable: Since the loop increment is unreachable, the loop body
+  will never execute more than once."
   
-  Introduced a new USE_KRB5 definition that takes into account the use of
-  CURL_DISABLE_CRYPTO_AUTH like USE_SPNEGO and USE_NTLM do.
+  Coverity CID 1291707
 
-- openssl: Use 'CURLcode result'
+- Curl_ssl_md5sum: return CURLcode
   
-  More CURLcode fixes.
+  ... since the funciton can fail on OOM. Check this return code.
+  
+  Coverity CID 1291705.
+
+- [Jay Satiro brought this change]
 
-Daniel Stenberg (1 Nov 2014)
-- resume: consider a resume from [content-length] to be OK
+  cyassl: default to highest possible TLS version
   
-  Basically since servers often then don't respond well to this and
-  instead send the full contents and then libcurl would instead error out
-  with the assumption that the server doesn't support resume. As the data
-  is then already transfered, this is now considered fine.
+  (cyassl_connect_step1)
+  - Use TLS 1.0-1.2 by default when available.
   
-  Test case 1434 added to verify this. Test case 1042 slightly modified.
+  CyaSSL/wolfSSL >= v3.3.0 supports setting a minimum protocol downgrade
+  version.
   
-  Reported-by: hugo
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1443
+  cyassl/cyassl@322f79f
 
-Steve Holme (1 Nov 2014)
-- openssl: Use 'CURLcode result'
-  
-  More standardisation of CURLcode usage and coding style.
+- [Jay Satiro brought this change]
 
-- openssl: Use 'CURLcode result'
-  
-  ...and some minor code style changes.
+  cyassl: Check for invalid length parameter in Curl_cyassl_random
+
+- [Jay Satiro brought this change]
 
-- ftplistparser: We prefer 'CURLcode result'
+  cyassl: If wolfSSL then identify as such in version string
 
-- opts: Use common wording for user/password option names
+Dan Fandrich (24 Mar 2015)
+- symbols-in-versions: added CURLOPT_PATH_AS_IS
 
-- CURLOPT_CONNECT_ONLY.3: Removed "This option is implemented for..." text
+- testcurl.pl: add the --notes option to supply more info about a build
   
-  As this is covered by the PROTOCOLS section and saves having to update
-  two parts of the document with the same information in future.
+  Support for notes has been in place for a while, but it required
+  being added to the setup file manually.
 
-- CURLOPT_GSSAPI_DELEGATION.3: Use GSS-API rather than GSSAPI
+- curl_memory: make curl_memory.h the second-last header file loaded
   
-  As implementations are refereed to GSS-API libraries as per the RFC and
-  GSSAPI typically refers to an authentication mechanism.
+  This header file must be included after all header files except
+  memdebug.h, as it does similar memory function redefinitions and can be
+  similarly affected by conflicting definitions in system or dependent
+  library headers.
 
-- CURLOPT_CONNECT_ONLY.3: Fixed incomplete protocol list
+Daniel Stenberg (24 Mar 2015)
+- openssl: do the OCSP work-around for libressl too
   
-  Added missing IMAP to the protocol list.
+  I tested with libressl git master now (v2.1.4-27-g34bf96c) and it seems to
+  still require the work-around for stapling to work.
 
-- code cleanup: Use 'CURLcode result'
+- openssl: verifystatus: only use the OCSP work-around <= 1.0.2a
+  
+  URL: http://curl.haxx.se/mail/lib-2015-03/0205.html
+  Reported-by: Alessandro Ghedini
 
-- curl_easy_setopt.3: Fixed lots of typos
+- openssl: adapt to ASN1/X509 things gone opaque in 1.1
 
-- curl_easy_setopt.3: Moved CURLOPT_DIRLISTONLY into PROTOCOL OPTIONS
-  
-  ...as this option affects more that just FTP.
+Dan Fandrich (24 Mar 2015)
+- [Jay Satiro brought this change]
+
+  curl_easy_setopt.3: Fix misspelling in CURLOPT_PATH_AS_IS description
 
-Guenter Knauf (30 Oct 2014)
-- build: added Watcom support to build with WinSSL.
+- [Viktor Szakáts brought this change]
+
+  CURLOPT_HTTPHEADER.3: fix typo in recent commit
+
+- [Viktor Szakáts brought this change]
 
-Daniel Stenberg (30 Oct 2014)
-- CURLOPT_PINNEDPUBLICKEY.3: added details
+  CURLOPT_PATH_AS_IS.3: add type 'long' to prototype
 
-Steve Holme (30 Oct 2014)
-- CURLOPT_CUSTOMREQUEST.3: Fixed incomplete protocol list
+- vtls: fix compile with --disable-crypto-auth but with SSL
   
-  Whilst the description included information about SMTP, the protocol
-  list only showed "TTP, FTP, IMAP, POP3".
+  This is a strange combination of options, but is allowed.
 
-- CURLOPT_DIRLISTONLY.3: Added information about the usage in POP3
+Patrick Monnerat (24 Mar 2015)
+- os400: define new options in ILE/RPG binding.
 
-Daniel Stenberg (29 Oct 2014)
-- openssl: enable NPN separately from ALPN
+Daniel Stenberg (24 Mar 2015)
+- RELEASE-NOTES: synced with f6878609361
+
+- curl_easy_setopt.3: Add CURLOPT_PATH_AS_IS
+
+- CURLOPT_PATH_AS_IS: added
   
-  ... and allow building with nghttp2 but completely without NPN and ALPN,
-  as nghttp2 can still be used for plain-text HTTP.
+  --path-as-is is the command line option
   
-  Reported-by: Lucas Pardue
-
-- configure.ac: remove checks for OpenSSL NPN/ALPN funcs again
+  Added docs in curl.1 and CURLOPT_PATH_AS_IS.3
   
-  ... since the conditional in the code are now based on OpenSSL versions
-  instead to better support non-configure builds.
+  Added test in test 1241
+
+- [Yamada Yasuharu brought this change]
 
-- opts: added some "SEE ALSO" references
+  curl_easy_recv/send: make them work with the multi interface
+  
+  By making sure Curl_getconnectinfo() uses the correct connection cache
+  to find the last connection.
 
-Steve Holme (29 Oct 2014)
-- RELEASE-NOTES: Synced with 32913182dc
+- http2: move the init too for when its actually needed
+  
+  ... it would otherwise lead to memory leakage if we never actually do
+  the switch.
 
-- vtls.c: Fixed compilation warning
+Dan Fandrich (23 Mar 2015)
+- dict: rename byte to avoid compiler shadowed declaration warning
   
-  conversion from 'size_t' to 'unsigned int', possible loss of data
+  This conflicted with a WolfSSL typedef.
 
-- sspi: Return CURLE_LOGIN_DENIED on AcquireCredentialsHandle() failure
+- cyassl: include version.h to ensure the version macros are defined
+
+- test1513: eliminated race condition in test run
   
-  Return a more appropriate error, rather than CURLE_OUT_OF_MEMORY when
-  acquiring the credentials handle fails. This is then consistent with
-  the code prior to commit f7e24683c4 when log-in credentials were empty.
+  It seems that some systems (e.g. fairly consistently in some recent
+  Solaris autobuilds) would manage to get to the connect phase before the
+  progress callback was called, resulting in a CURLE_COULDNT_CONNECT
+  error. Reworked the test to point at a test server that never returns a
+  full result so the progress callback always gets a chance to be called
+  before the transfer can complete in some other way.
 
-- sasl_sspi: Allow DIGEST-MD5 to use current windows credentials
+Nick Zitzmann (21 Mar 2015)
+- darwinsssl: add support for TLS False Start
   
-  Fixed the ability to use the current log-in credentials with DIGEST-MD5.
-  I had previously disabled this functionality in commit 607883f13c as I
-  couldn't get this to work under Windows 8, however, from testing HTTP
-  Digest authentication through Windows SSPI and then further testing of
-  this code I have found it works in Windows 7.
+  TLS False Start support requires iOS 7.0 or later, or OS X 10.9 or later.
+
+Daniel Stenberg (21 Mar 2015)
+- gtls: add check of return code
   
-  Some further investigation is required to see what the differences are
-  between Windows 7 and 8, but for now enable this functionality as the
-  code will return an error when AcquireCredentialsHandle() fails.
+  Coverity CID 1291167 pointed out that 'rc' was received but never used when
+  gnutls_credentials_set() was used. Added return code check now.
 
-Kamil Dudka (29 Oct 2014)
-- transfer: drop the code handling the ssl_connect_retry flag
+- gtls: dereferencing NULL pointer
   
-  Its last use has been removed by the previous commit.
+  Coverity CID 1291165 pointed out 'chainp' could be dereferenced when
+  NULL if gnutls_certificate_get_peers() had previously failed.
 
-- nss: drop the code for libcurl-level downgrade to SSLv3
+- gtls: avoid uninitialized variable.
   
-  This code was already deactivated by commit
-  ec783dc142129d3860e542b443caaa78a6172d56.
+  Coverity CID 1291166 pointed out that we could read this variable
+  uninitialized.
 
-- openssl: fix a line length warning
+Dan Fandrich (21 Mar 2015)
+- tests/certs: rebuild certificates with modified key usage bits
+  
+  The certificates were missing the digitalSignature and keyAgreement
+  usage types, of which at least digitalSignature was checked by CyaSSL.
+  This caused the test server in test 310 (among others) to fail the
+  startup verification and therefore run (see
+  http://curl.haxx.se/mail/lib-2014-07/0303.html).
 
-Guenter Knauf (29 Oct 2014)
-- Added NetWare support to build with nghttp2.
+- tests/certs: added make target to rebuild certificates
+  
+  The certificate generation scripts were also updated to better match the
+  format of the certificates currently checked in.
 
-- Fixed error message since we require ALPN support.
+Daniel Stenberg (21 Mar 2015)
+- x509asn1: add /* fallthrough */ in switch() case
 
-- Check for ALPN via OpenSSL version number.
+- x509asn1: minor edit to unconfuse Coverity
   
-  This check works also with to non-configure platforms.
+  CID 1202732 warns on the previous use, although I cannot fine any
+  problems with it. I'm doing this change only to make the code use a more
+  familiar approach to accomplish the same thing.
 
-Steve Holme (28 Oct 2014)
-- sasl_sspi: Fixed typo in comment
+- [Dagobert Michelsen brought this change]
 
-- code cleanup: We prefer 'CURLcode result'
+  testcurl: Allow '=' in values given on command line
 
-Daniel Stenberg (28 Oct 2014)
-- TODO: consider supporting STAT
+- nss: error: unused variable 'connssl'
 
-- mk-ca-bundle: spell fix "version"
+Dan Fandrich (21 Mar 2015)
+- test938: added missing closing tags
 
-- HTTP: return larger than 3 digit response codes too
-  
-  HTTP 1.1 is clearly specified to only allow three digit response codes,
-  and libcurl used sscanf("%3d") for that purpose. This made libcurl
-  support smaller numbers but not larger. It does now, but we will not
-  make any specific promises nor document this further since it is going
-  outside of what HTTP is.
-  
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1441
-  Reported-by: Balaji
+- cyassl: use new library version macro when available
 
-- src/: remove version.h.dist from gitignore
-  
-  It has not been used since commit f7bfdbab in 2011
+Kamil Dudka (20 Mar 2015)
+- [Alessandro Ghedini brought this change]
 
-Steve Holme (26 Oct 2014)
-- ntlm: We prefer 'CURLcode result'
-  
-  Continuing commit 0eb3d15ccb more return code variable name changes.
+  curl: add --false-start option
+
+- [Alessandro Ghedini brought this change]
 
-Guenter Knauf (26 Oct 2014)
-- Cosmetics: lowercase non-special subroutine names.
+  nss: add support for TLS False Start
 
-Steve Holme (26 Oct 2014)
-- RELEASE-NOTES: Synced with 07ac29a058
+- [Alessandro Ghedini brought this change]
 
-- http_negotiate: We prefer 'CURLcode result'
+  url: add CURLOPT_SSL_FALSESTART option
   
-  Continuing commit 0eb3d15ccb more return code variable name changes.
+  This option can be used to enable/disable TLS False Start defined in the RFC
+  draft-bmoeller-tls-falsestart.
+
+Patrick Monnerat (20 Mar 2015)
+- [Alessandro Ghedini brought this change]
 
-- http_negotiate: Fixed missing check for USE_SPNEGO
+  gtls: implement CURLOPT_CERTINFO
 
-- sspi: Synchronization of cleanup code between auth mechanisms
+Daniel Stenberg (20 Mar 2015)
+- [Alessandro Ghedini brought this change]
+
+  openssl: try to avoid accessing OCSP structs when possible
 
-- sspi: Renamed max token length variables
+- CURLOPT_URL.3: spelling!
   
-  Code cleanup to try and synchronise code between the different SSPI
-  based authentication mechanisms.
+  Reported-by: Frank Gevaerts
+
+- CURLOPT_URL.3: Added "SECURITY CONCERNS"
 
-- sspi: Renamed expiry time stamp variables
+- CURLOPT_HTTPHEADER.3: add a "SECURITY CONCERNS" section
+
+Dan Fandrich (19 Mar 2015)
+- cyassl: detect the library as renamed wolfssl
   
-  Code cleanup to try and synchronise code between the different SSPI
-  based authentication mechanisms.
+  This change was made in CyaSSL/WolfSSL ver. 3.4.0
 
-- sspi: Only call CompleteAuthToken() when complete is needed
+Daniel Stenberg (19 Mar 2015)
+- HTTP: don't switch to HTTP/2 from 1.1 until we get the 101
   
-  Don't call CompleteAuthToken() after InitializeSecurityContext() has
-  returned SEC_I_CONTINUE_NEEDED as this return code only indicates the
-  function should be called again after receiving a response back from
-  the server.
+  We prematurely changed protocol handler to HTTP/2 which made things very
+  slow (and wrong).
   
-  This only affected the Digest and NTLM authentication code.
+  Reported-by: Stefan Eissing
+  Bug: https://github.com/bagder/curl/issues/169
 
-Dan Fandrich (26 Oct 2014)
-- Added the "flaky" keyword to a number of tests
-  
-  Each shows evidence of flakiness on at least one platform on
-  the autobuilds. Users can use this keyword to skip these tests
-  if desired.
+Dan Fandrich (19 Mar 2015)
+- axtls: version 1.5.2 now requires that config.h be manually included
 
-Steve Holme (26 Oct 2014)
-- ntlm: Return all errors from Curl_ntlm_core_mk_nt_hash()
+Daniel Stenberg (19 Mar 2015)
+- metalink: fix resource leak in OOM
   
-  For consistency with other areas of the NTLM code propagate all errors
-  from Curl_ntlm_core_mk_nt_hash() up the call stack rather than just
-  CURLE_OUT_OF_MEMORY.
+  Coverity CID 1288826
 
-- ntlm: Return CURLcode from Curl_ntlm_core_mk_lm_hash()
+Dan Fandrich (18 Mar 2015)
+- docs/libcurl: clean up libcurl-symbols.3
 
-- ntlm: Use 'CURLcode result'
+- docs/libcurl: check that all options with man pages are referenced
   
-  Continuing commit 0eb3d15ccb more return code variable name changes.
+  If a man page exists in the opts/ directory, it must also be referenced
+  either in curl_easy_setopt.3 or curl_multi_setopt.3
 
-- ntlm: Only define ntlm data structure when USE_NTLM is defined
+- curl_easy_setopt.3: added a few missing options
 
-- ntlm: Changed handles to be dynamic like other SSPI handles
+Kamil Dudka (18 Mar 2015)
+- nss: explicitly tell NSS to disable NPN/ALPN
   
-  Code cleanup to try and synchronise code between the different SSPI
-  based authentication mechanisms.
+  ... if disabled at libcurl level.  Otherwise, we would allow to
+  negotiate NPN despite curl was invoked with the --no-npn option.
 
-- ntlm: Renamed handle variables to match other SSPI structures
-  
-  Code cleanup to try and synchronise code between the different SSPI
-  based authentication mechanisms.
+Daniel Stenberg (18 Mar 2015)
+- [Jay Satiro brought this change]
 
-- ntlm: Renamed SSPI based input token variables
+  mkhelp: Remove trailing carriage return from every line of input
   
-  Code cleanup to try and synchronise code between the different SSPI
-  based authentication mechanisms.
-
-- ntlm: We prefer 'CURLcode result'
+  - Get rid of this flood of warnings in Windows mingw build:
+  warning: missing terminating " character
   
-  Continuing commit 0eb3d15ccb more return code variable name changes.
+  The warning is due to the carriage return. When msysgit checks out files
+  from the repo by default it converts the line endings to CRLF. Prior to
+  this change when mkhelp.pl processed the MANUAL and curl.1 in CRLF
+  format the trailing carriage returns caused unnecessary CR in the
+  output.
 
-- build: Added WinIDN build configuration options
-  
-  Added support for WinIDN build configurations to the VC8 and VC9
-  project files.
+- RELEASE-NOTES: synced with e539f01567
 
-Nick Zitzmann (24 Oct 2014)
-- darwinssl: detect possible future removal of SSLv3 from the framework
+- [Christian Weisgerber brought this change]
+
+  docs/libcurl: make portability fix
   
-  If Apple ever drops SSLv3 support from the Security framework, we'll fail with an error if the user insists on using SSLv3.
+  Using $< in a non-suffix rule context is a GNU make idiom.  This bug was
+  introduced in 7.41.0.
 
-Patrick Monnerat (24 Oct 2014)
-- gskit.c: remove SSLv3 from SSL default.
+Dan Fandrich (17 Mar 2015)
+- checksrc: Fix whitelist on out-of-tree builds
 
-- gskit.c: use 'CURLcode result'
+Daniel Stenberg (17 Mar 2015)
+- [Stefan Bühler brought this change]
 
-Daniel Stenberg (24 Oct 2014)
-- [Jay Satiro brought this change]
+  Curl_sh_entry: remove unused 'timestamp'
 
-  SSL: Remove SSLv3 from SSL default due to POODLE attack
-  
-  - Remove SSLv3 from SSL default in darwinssl, schannel, cyassl, nss,
-  openssl effectively making the default TLS 1.x. axTLS is not affected
-  since it supports only TLS, and gnutls is not affected since it already
-  defaults to TLS 1.x.
+- HTTP: don't use Expect: headers when on HTTP/2
   
-  - Update CURLOPT_SSLVERSION doc
+  Reported-by: Stefan Eissing
+  Bug: https://github.com/bagder/curl/issues/169
 
-- pipelining: only output "is not blacklisted" in debug builds
+- checksrc: detect and remove space before trailing semicolons
 
-- *.3: add/extend "SEE ALSO" sections
+- checksrc: introduce a whitelisting concept
 
-- curl_easy_pause.3: minor wording edit
+- checksrc: use space after comma
 
-- curl_getdate.3: provide a "SEE ALSO" section
+- checksrc: use space before paren in "return (expr);"
 
-- curl_global_init.3: minor formatting fix, add version info
+- CONTRIBUTE: refer to git log instead of deprecated CHANGES file
 
-- url.c: use 'CURLcode result'
+- CURLOPT_*.3: more examples and edits
 
-- code cleanup: we prefer 'CURLcode result'
-  
-  ... for the local variable name in functions holding the return
-  code. Using the same name universally makes code easier to read and
-  follow.
-  
-  Also, unify code for checking for CURLcode errors with:
+- CURLOPT_*.3: added lots of small example sections
+
+- CURLOPT_PRIVATE.3: provide an example
+
+- CURLOPT_*TIMEOUT.3: provide examples
+
+- CURLOPT_USERAGENT.3: added an example
+
+- CURLOPT_STDERR.3: added an example
+
+- curl_easy_perform.3: remove superfluous close brace from example
+
+- free: instead of Curl_safefree()
   
-   if(result) or if(!result)
+  Since we just started make use of free(NULL) in order to simplify code,
+  this change takes it a step further and:
   
-  instead of
+  - converts lots of Curl_safefree() calls to good old free()
+  - makes Curl_safefree() not check the pointer before free()
   
-   if(result == CURLE_OK), if(CURLE_OK == result) or if(result != CURLE_OK)
+  The (new) rule of thumb is: if you really want a function call that
+  frees a pointer and then assigns it to NULL, then use Curl_safefree().
+  But we will prefer just using free() from now on.
 
-- Curl_add_timecondition: skip superfluous varible assignment
-  
-  Detected by cppcheck.
+- [Markus Elfring brought this change]
 
-- Curl_pp_flushsend: skip superfluous assignment
+  Bug #149: Deletion of unnecessary checks before a few calls of cURL functions
   
-  Detected by cppcheck.
-
-- Curl_pp_readresp: remove superfluous assignment
+  The following functions return immediately if a null pointer was passed.
+  * Curl_cookie_cleanup
+  * curl_formfree
   
-  Variable already assigned a few lines up.
+  It is therefore not needed that a function caller repeats a corresponding check.
   
-  Detected by cppcheck.
+  This issue was fixed by using the software Coccinelle 1.0.0-rc24.
+  
+  Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
+
+- [Markus Elfring brought this change]
 
-- Curl_proxyCONNECT: remove superfluous statement
+  Bug #149: Deletion of unnecessary checks before calls of the function "free"
   
-  The variable is already assigned, skip the duplicate assignment.
+  The function "free" is documented in the way that no action shall occur for
+  a passed null pointer. It is therefore not needed that a function caller
+  repeats a corresponding check.
+  http://stackoverflow.com/questions/18775608/free-a-null-pointer-anyway-or-check-first
   
-  Pointed out by cppcheck.
+  This issue was fixed by using the software Coccinelle 1.0.0-rc24.
+  
+  Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
 
-Guenter Knauf (24 Oct 2014)
-- Added MinGW support to build with nghttp2.
+- [Jay Satiro brought this change]
 
-- Added VC ssh2 target to main Makefile.
+  connect: Fix happy eyeballs logic for IPv4-only builds
+  
+  Bug: https://github.com/bagder/curl/pull/168
+  
+  (trynextip)
+  - Don't try the "other" protocol family unless IPv6 is available. In an
+  IPv4-only build the other family can only be IPv6 which is unavailable.
+  
+  This change essentially stops IPv4-only builds from attempting the
+  "happy eyeballs" secondary parallel connection that is supposed to be
+  used by the "other" address family.
+  
+  Prior to this change in IPv4-only builds that secondary parallel
+  connection attempt could be erroneously used by the same family (IPv4)
+  which caused a bug where every address after the first for a host could
+  be tried twice, often in parallel. This change fixes that bug. An
+  example of the bug is shown below.
+  
+  Assume MTEST resolves to 3 addresses 127.0.0.2, 127.0.0.3 and 127.0.0.4:
+  
+  * STATE: INIT => CONNECT handle 0x64f4b0; line 1046 (connection #-5000)
+  * Rebuilt URL to: http://MTEST/
+  * Added connection 0. The cache now contains 1 members
+  * STATE: CONNECT => WAITRESOLVE handle 0x64f4b0; line 1083
+  (connection #0)
+  *   Trying 127.0.0.2...
+  * STATE: WAITRESOLVE => WAITCONNECT handle 0x64f4b0; line 1163
+  (connection #0)
+  *   Trying 127.0.0.3...
+  * connect to 127.0.0.2 port 80 failed: Connection refused
+  *   Trying 127.0.0.3...
+  * connect to 127.0.0.3 port 80 failed: Connection refused
+  *   Trying 127.0.0.4...
+  * connect to 127.0.0.3 port 80 failed: Connection refused
+  *   Trying 127.0.0.4...
+  * connect to 127.0.0.4 port 80 failed: Connection refused
+  * connect to 127.0.0.4 port 80 failed: Connection refused
+  * Failed to connect to MTEST port 80: Connection refused
+  * Closing connection 0
+  * The cache now contains 0 members
+  * Expire cleared
+  curl: (7) Failed to connect to MTEST port 80: Connection refused
+  
+  The bug was born in commit bagder/curl@2d435c7.
+
+- mksymbolsmanpage.pl: use std header and generate better nroff header
 
-- Some cosmetics and simplifies.
+- [Frank Meier brought this change]
 
-- Remove dependency on openssl and cut.
+  closesocket: call multi socket cb on close even with custom close
   
-  Prefer usage of Perl modules for sha1 calculation since there
-  might be systems where openssl is not installed or not in path.
-  If openssl is used for sha1 calculation then dont rely on cut
-  since it is usually not available on other systems than Linux.
-
-Daniel Stenberg (23 Oct 2014)
-- RELEASE-NOTES: synced with e116d0a62
+  In function Curl_closesocket() in connect.c the call to
+  Curl_multi_closed() was wrongly omitted if a socket close function
+  (CURLOPT_CLOSESOCKETFUNCTION) is registered.
+  
+  That would lead to not removing the socket from the internal hash table
+  and not calling the multi socket callback appropriately.
+  
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1493
 
-- CURLOPT_RESOLVE.3: add an example
+- [Tobias Stoeckmann brought this change]
 
-- gnutls: removed dead code
+  hostip: Fix signal race in Curl_resolv_timeout.
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1437
-  Reported-by: Julien
-
-- Curl_rand: Uninitialized variable: r
+  A signal handler for SIGALRM is installed in Curl_resolv_timeout. It is
+  configured to interrupt system calls and uses siglongjmp to return into
+  the function if alarm() goes off.
+  
+  The signal handler is installed before curl_jmpenv is initialized.
+  This means that an already installed alarm timer could trigger the
+  newly installed signal handler, leading to undefined behavior when it
+  accesses the uninitialized curl_jmpenv.
   
-  This is not actually used uninitialized but we silence warnings.
+  Even if there is no previously installed alarm available, the code in
+  Curl_resolv_timeout itself installs an alarm before the environment is
+  fully set up. If the process is sent into suspend right after that, the
+  signal handler could be called too early as in previous scenario.
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1437
-  Reported-by: Julien
+  To fix this, the signal handler should only be installed and the alarm
+  timer only be set after sigsetjmp has been called.
 
-- opts: provide more and updated examples
+- http2: detect prematures close without data transfered
+  
+  ... by using the regular Curl_http_done() method which checks for
+  that. This makes test 1801 fail consistently with error 56 (which seems
+  fine) to that test is also updated here.
+  
+  Reported-by: Ben Darnell
+  Bug: https://github.com/bagder/curl/issues/166
 
-- CURLOPT_RANGE.3: works for SFTP as well
+Dan Fandrich (13 Mar 2015)
+- test320: Expect the Host header to be the first header
   
-  ... and added a small example
+  Required for the test to work after a5d994941c2b.
 
-- curl.1: edited for clarity
+Daniel Stenberg (12 Mar 2015)
+- RELEASE-NOTES: synced with 186e46d88dd
 
-- CURLOPT_SSLVERSION.3: provide an example
+- openssl: use colons properly in the ciphers list
+  
+  While the previous string worked, this is the documented format.
+  
+  Reported-by: Richard Moore
 
-- docs/libcurl/ABI: more markdown friendly
+- openssl: sort the ciphers on strength
+  
+  This makes curl pick better (stronger) ciphers by default. The strongest
+  available ciphers are fine according to the HTTP/2 spec so an OpenSSL
+  built curl is no longer rejected by string HTTP/2 servers.
+  
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1487
 
-- docs: edited lots of libcurl docs for clarity
+- [Fabian Keil brought this change]
 
-- opts: added examples
+  test203[0-3]: Expect the Host header to be the first header
+  
+  Required for the tests to work after a5d994941c2b.
 
-- HISTORY: two glimpses in 2014
+- openssl: show the cipher selection to use
 
-Kamil Dudka (20 Oct 2014)
-- nss: reset SSL handshake state machine
+- http: always send Host: header as first header
+  
+  ...after the method line:
+  
+   "Since the Host field-value is critical information for handling a
+   request, a user agent SHOULD generate Host as the first header field
+   following the request-line." / RFC 7230 section 5.4
   
-  ... when the handshake succeeds
+  Additionally, this will also make libcurl ignore multiple specified
+  custom Host: headers and only use the first one. Test 1121 has been
+  updated accordingly
   
-  This fixes a connection failure when FTPS handle is reused.
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1491
+  Reported-by: Rainer Canavan
 
-Daniel Stenberg (20 Oct 2014)
-- [Peter Wu brought this change]
+- [Alexander Pepper brought this change]
 
-  cmake: generate pkg-config and curl-config
+  mk-ca-bundle bugfix: Don't report SHA1 numbers with "-q".
   
-  Initial work to generate a pkg-config and curl-config script. Static
-  linking (`curl-config --static-libs` and `pkg-config --shared --libs
-  libcurl`) is broken and therefore disabled.
+  Also unified printing to STDERR by creating the helper method "report".
+
+- proxy: re-use proxy connections (regression)
   
-  CONFIGURE_OPTIONS does not make sense for CMake, use an empty string
-  for now.
+  When checking for a connection to re-use, a proxy-using request must
+  check for and use a proxy connection and not one based on the host
+  name!
   
-  At least `curl-config --features` and `curl-config --protocols` work
-  which is needed by runtests.pl.
+  Added test 1421 to verify
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1492
 
-- [Peter Wu brought this change]
+- [Jay Satiro brought this change]
 
-  cmake: use LIBCURL_VERSION from curlver.h
-  
-  This matches the behavior from autotools. The auxiliary major, minor
-  and patch components are not needed anymore and therefore removed.
-  
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  memanalyze.pl: handle free(NULL)
 
-- [Peter Wu brought this change]
+- [Jay Satiro brought this change]
 
-  cmake: add SUPPORT_FEATURES and SUPPORT_PROTOCOLS
+  .travis.yml: Change CI make test to make test-full
   
-  For compatibility with autoconf, it will be used later for curl-config
-  and pkg-config. Not all features and or protocols can be enabled as
-  these are missing additional checks (see new TODOs).
+  - Change the continuous integration script to use 'make test-full'
+  instead of just 'make test' so that the diagnostic log output is
+  printed to stdout when a test fails.
   
-  SUPPORT_PROTOCOLS is partially scripted (grep for SUPPORT_PROTOCOLS=)
-  and manually verified/modified. SUPPORT_FEATURES is manually added.
+  - Change the continuous integration script to use
+  './configure --enable-debug' instead of just './configure' so that the
+  memory analyzer will work during testing.
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Prior to this change Travis used its default C test script:
+  ./configure && make && make test
 
-- cmake: add CMake/Macros.cmake to the release tarball
+- [Alessandro Ghedini brought this change]
 
-- test545: make it not use a trailing zero
-  
-  CURLOPT_COPYPOSTFIELDS with a given CURLOPT_POSTFIELDSIZE does not
-  require a trailing zero of the data and by making sure this test doesn't
-  use one we know it works (combined with valgrind).
+  gtls: correctly align certificate status verification messages
 
-Steve Holme (16 Oct 2014)
-- ntlm: Fixed empty type-2 decoded message info text
-  
-  Updated the info text when the base-64 decode of the type-2 message
-  returns a null buffer to be more specific.
+- [Alessandro Ghedini brought this change]
 
-- ntlm: Fixed empty/bad base-64 decoded buffer return codes
+  gtls: don't print double newline after certificate dates
 
-- ntlm: Avoid unnecessary buffer allocation for SSPI based type-2 token
+- [Alessandro Ghedini brought this change]
 
-Daniel Stenberg (16 Oct 2014)
-- httpcustomheader.c: make use of more CURLOPT_HTTPHEADER features
+  gtls: print negotiated TLS version and full cipher suite name
   
-  ... and only do a single request for clarity.
+  Instead of priting cipher and MAC algorithms names separately, print the
+  whole cipher suite string which also includes the key exchange algorithm,
+  along with the negotiated TLS version.
+
+- gtls: fix compiler warnings
+
+- [Alessandro Ghedini brought this change]
+
+  gtls: add support for CURLOPT_CAPATH
 
-Steve Holme (15 Oct 2014)
-- sasl_sspi: Fixed some typos
+- [stopiccot brought this change]
 
-- sasl_sspi: Fixed Kerberos response buffer not being allocated when using SSO
+  MacOSX-Framework: use @rpath instead of @executable_path
+  
+  Bug: https://github.com/bagder/curl/pull/157
 
-Daniel Stenberg (15 Oct 2014)
-- [Bruno Thomsen brought this change]
+- RELEASE-NOTES: synced with c19349951
 
-  mk-ca-bundle: added SHA-384 signature algorithm
+- multi: fix *getsock() with CONNECT
+  
+  The code used some happy eyeballs logic even _after_ CONNECT has been
+  sent to a proxy, while the happy eyeball phase is already (should be)
+  over by then.
   
-  Certificates based on SHA-1 are being phased out[1].
-  So we should expect a rise in certificates based on SHA-2.
-  Adding SHA-384 as a valid signature algorithm.
+  This is solved by splitting the multi state into two separate states
+  introducing the new SENDPROTOCONNECT state.
   
-  [1] https://blog.mozilla.org/security/2014/09/23/phasing-out-certificates-with-sha-1-based-signature-algorithms/
+  Bug: http://curl.haxx.se/mail/lib-2015-01/0170.html
+  Reported-by: Peter Laser
+
+- conncontrol: only log changes to the connection bit
+
+- http2: use CURL_HTTP_VERSION_* symbols instead of NPN_*
   
-  Signed-off-by: Bruno Thomsen <bth@kamstrup.dk>
+  Since they already exist and will make comparing easier
+
+- http2: make the info-message about receiving HTTP2 headers debug-only
+
+- [Alessandro Ghedini brought this change]
+
+  urldata: remove unused asked_for_h2 field
+
+- [Alessandro Ghedini brought this change]
+
+  polarssl: make it possible to enable ALPN/NPN without HTTP2
+
+- [Alessandro Ghedini brought this change]
+
+  nss: make it possible to enable ALPN/NPN without HTTP2
 
-Patrick Monnerat (14 Oct 2014)
-- OS400: fix bugs in curl_*escape_ccsid() and reduce variables scope
+- [Alessandro Ghedini brought this change]
+
+  gtls: make it possible to enable ALPN/NPN without HTTP2
+
+- [Alessandro Ghedini brought this change]
 
-- Implement pinned public key in GSKit backend
+  openssl: make it possible to enable ALPN/NPN without HTTP2
 
-Daniel Stenberg (14 Oct 2014)
-- CURLOPT_TLSAUTH_*.3: fix reference typos
+- metalink: add some error checks
+  
+  malloc() and strdup() calls without checking return codes.
+  
+  Reported-by: Markus Elfring
+  Bug: https://github.com/bagder/curl/issues/150
 
-- cleanups: reduce variable scope
+- curl_easy_setopt.3: added CURLOPT_SSL_VERIFYSTATUS
   
-  cppcheck pointed these out.
+  Reported-by: Jonathan Cardoso
 
-- singleipconnect: remove dead assignment never used
+- urldata: fix gnutls build
+
+Steve Holme (5 Mar 2015)
+- openssl: Removed use of USE_SSLEAY from the Visual Studio project files
   
-  cppcheck pointed this out.
+  In addition to commit 709cf76f6b, removed the USE_SSLEAY preprocessor
+  variable from the Visual Studio project files as it isn't required
+  anymore.
 
-- pinning: minor code style policing
+Daniel Stenberg (5 Mar 2015)
+- multi: fix memory-leak on timeout (regression)
+  
+  Since 1342a96ecfe0d44, a timeout detected in the multi state machine didn't
+  necesarily clear everything up, like formpost data.
+  
+  Bug: https://github.com/bagder/curl/issues/147
+  Reported-by: Michel Promonet
+  Patched-by: Michel Promonet
 
-Patrick Monnerat (13 Oct 2014)
-- Factorize pinned public key code into generic file handling and backend specific
+- configure: follow-up fix from 709cf76f6
+  
+  OpenSSL handling was a little broken.
 
-- vtls: remove QsoSSL
+- openssl: remove all uses of USE_SSLEAY
+  
+  SSLeay was the name of the library that was subsequently turned into
+  OpenSSL many moons ago (1999). curl does not work with the old SSLeay
+  library since years. This is now reflected by only using USE_OPENSSL in
+  code that depends on OpenSSL.
 
-- gskit: supply dummy randomization function
+- [Sergei Nikulov brought this change]
 
-- vtls/*: deprecate have_curlssl_md5sum and set-up default md5sum implementation
+  cmake: handle build definitions CURLDEBUG/DEBUGBUILD
+  
+  Acked-by: Brad King
 
-Daniel Stenberg (13 Oct 2014)
-- [Peter Wu brought this change]
+- FAQ: 4.21 Why is there a HTTP/1.1 in my HTTP/2 request?
 
-  tests: move TESTCASES to Makefile.inc, add show for cmake
+- symbols.pl: handle '-' in the deprecated field
   
-  This change allows runtests.pl to be run from the CMake builddir:
+  ... which otherwise made the script skip the _LAST define for some
+  symbols.
   
-      export srcdir=/tmp/curl/tests;
-      perl -I$srcdir $srcdir/runtests.pl -l
+  Reported-by: Jeroen Ooms
+  Bug: http://curl.haxx.se/mail/lib-2015-03/0052.html
+
+- curl.1: fix "The the" typo
   
-  In order to make this possible, all test cases have been moved from
-  Makefile.am to Makefile.inc.
+  Reported-by: Jon Seymour
+
+- vtls: use curl_printf.h all over
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  No need to use _MPRINTF_REPLACE internally.
+
+- tool: use ENABLE_CURLX_PRINTF instead of _MPRINTF_REPLACE
+
+- tool_writeenv: remove _MPRINTF_REPLACE define, it wasn't used
 
-- [Peter Wu brought this change]
+- [Sergei Nikulov brought this change]
 
-  cmake: enable IPv6 by default if available
+  libtest: fixed linker errors on msvc
   
-  ENABLE_IPV6 depends on HAVE_GETADDRINFO or you will get a
-  Curl_getaddrinfo_ex error. Enable IPv6 by default, disabling it if
-  struct sockaddr_in6 is not found in netinet/in.h.
+  Bug: https://github.com/bagder/curl/pull/144
+
+- mprintf.h: remove #ifdef CURLDEBUG
+  
+  ... and as a consequence, introduce curl_printf.h with that re-define
+  magic instead and make all libcurl code use that instead.
+
+- tool_getpass: remove unused curl/mprintf.h include
+
+- CONTRIBUTING.md: file for advice on github
+
+- [Viktor Szakáts brought this change]
+
+  BINDINGS: add link to Harbour bindings
   
-  Note that HAVE_GETADDRINFO_THREADSAFE is still not set as it needs more
-  platform checks even though POSIX requires a thread-safe getaddrinfo.
+  And UTF8-fix a few names
+
+- CURLOPT_HEADERFUNCTION.3: typo in error code name
   
-  Verified on Arch Linux x86_64 with glibc 2.20-2 and Linux 3.16-rc7.
+  Reported-by: Jonathan Cardoso
+
+- BINDINGS: tclcurl moved
   
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  Reporte-by: Steve Havelka
+
+- [Jay Satiro brought this change]
+
+  opts: Fix pipelining examples
+
+- [Jay Satiro brought this change]
+
+  curl_multi_setopt.3: Link to CURLMOPT_MAXCONNECTS
+
+- CONTRIBUTE: the new more github-friendly attitude!
 
-- [Peter Wu brought this change]
+Steve Holme (28 Feb 2015)
+- RELEASE-NOTES: Synced with 921d195187
 
-  cmake: build tool_hugehelp (ENABLE_MANUAL)
+Kamil Dudka (28 Feb 2015)
+- tool: wrap lines longer than 79 columns
   
-  Rather than always outputting an empty manual page for the '-M' option,
-  generate a full manual page as done by autotools. For simplicity in
-  CMake, always generate the gzipped page as it will not be used anyway
-  when zlib is not available.
-  
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+  ... to avoid a build failure when configured with --enable-debug
 
-- [Peter Wu brought this change]
+Steve Holme (27 Feb 2015)
+- [Tatsuhiro Tsujikawa brought this change]
 
-  tests/http_pipe.py: Python 3 support
+  http2: Return error if stream was closed with other than NO_ERROR
   
-  The 2to3 tool converted socketserver (which I manually fixed up with an
-  import fallback) and the print(e) line. The xrange option was converted
-  to range, but it seems better to use the '*' operator here for
-  simplicity.
-  
-  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
-
-- SECURITY: slightly nicer markdown format
+  Previously, we just ignored error code passed to
+  on_stream_close_callback and just return 0 (success) after stream
+  closure even if stream was reset with error.  This patch records error
+  code in on_stream_close_callback, and return -1 and use CURLE_HTTP2
+  error code on abnormal stream closure.
 
-- RELEASE-PROCEDURE: better markdown, more content
+- tool: Updated the warnf() function to use the GlobalConfig structure
+  
+  As the 'error' and 'mute' options are now part of the GlobalConfig,
+  rather than per Operation, updated the warnf() function to use this
+  structure rather than the OperationConfig.
 
-- RELEASE-NOTES: synced with 6637b237e6eb
+- build: Removed DataExecutionPrevention directive from VC9+ project files
   
-  ... and bumped the planned release version.
+  Removed the DataExecutionPrevention directive from the project files for
+  Visual Studio 2008 and above. The XML value in the VC9 project files was
+  set to "0" (Default) whilst the VC10+ project files contained an empty
+  XML element.
 
-- vtls: have vtls.h include the backend header files
+- build: Use default RandomizedBaseAddress directive in VC9+ project files
+  
+  Visual Studio 2008 introduced support for the address space layout
+  randomization (ASLR) feature of Windows Vista. However, upgrading the
+  VC8 project files to VC9 and above disabled this feature.
   
-  It turned out some features were not enabled in the build since for
-  example url.c #ifdefs on features that are defined on a per-backend
-  basis but vtls.h didn't include the backend headers.
+  Removed the RandomizedBaseAddress directive to enabled the default
+  setting (/DYNAMICBASE). Note: This doesn't appear to have any negative
+  impact when compiled and ran on Windows XP.
+
+- build: Added support to Generate.bat for files in the upcoming vauth folder
+
+Daniel Stenberg (25 Feb 2015)
+- http2: return recv error on unexpected EOF
   
-  CURLOPT_CERTINFO was one such feature that was accidentally disabled.
+  Pointed-out-by: Tatsuhiro Tsujikawa
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1487
 
-- test2036: verify -O with no slash at all in the URL
+Kamil Dudka (25 Feb 2015)
+- dist: add symbol-scan.pl to the tarball
   
-  Similar to test 76 but that test's URL has a slash just no file name
-  part.
+  ... in order to make test1135 succeed
 
-- get_url_file_name: make no slash equal empty string
+Daniel Stenberg (25 Feb 2015)
+- http2: move lots of verbose output to be debug-only
 
-- get_url_file_name: never return a NULL string *and* OK
+Kamil Dudka (25 Feb 2015)
+- curl-config.in: eliminate double quotes around CURL_CA_BUNDLE
   
-  Change 987a4a73 assumes that as it simplifies life in the calling
-  function.
+  Otherwise it expands to:
   
-  Reported-by: Fabian Keil
+      echo ""/etc/pki/tls/certs/ca-bundle.crt""
+  
+  Detected by ShellCheck:
+  
+      curl-config:74:16: warning: The double quotes around this do
+      nothing.  Remove or escape them. [SC2140]
 
-- [Jakub Zakrzewski brought this change]
+- nss: do not skip Curl_nss_seed() if data is NULL
+  
+  In that case, we only skip writing the error message for failed NSS
+  initialization (while still returning the correct error code).
 
-  Cmake: Build with GSSAPI (MIT or Heimdal)
+- nss: improve error handling in Curl_nss_random()
   
-  It tries hard to recognise SDK's on different platforms. On windows MIT
-  Kerberos installs SDK with other things and puts path into registry.
-  Heimdal have separate zip archive. On linux pkg-config is tried, then
-  krb5-config script and finally old-style libs and headers detection.
+  The vtls layer now checks the return value, so it is no longer necessary
+  to abort if a random number cannot be provided by NSS.  This also fixes
+  the following Coverity report:
   
-  Command line args:
-  * CMAKE_USE_GSSAPI - enables GSSAPI detection
-  * GSS_ROOT_DIR - if set, should point to the root of GSSAPI installation
-                   (the one with include and lib directories)
+  Error: FORWARD_NULL (CWE-476):
+  lib/vtls/nss.c:1918: var_compare_op: Comparing "data" to null implies that "data" might be null.
+  lib/vtls/nss.c:1923: var_deref_model: Passing null pointer "data" to "Curl_failf", which dereferences it.
+  lib/sendf.c:154:3: deref_parm: Directly dereferencing parameter "data".
 
-- [Jakub Zakrzewski brought this change]
-
-  Cmake: Got rid of setup_curl_dependencies
+Daniel Stenberg (25 Feb 2015)
+- RELEASE-PROCEDURE: add some more future release dates
   
-  There is no need for such function. Include_directories propagate by
-  themselves and having a function with one simple link statement makes
-  little sense.
+  ... and remove some old ones
 
-- [Jakub Zakrzewski brought this change]
+- sws: timeout idle CONNECT connections
 
-  Cmake: Avoid cycle directory dependencies.
-  
-  Because we prepended libraries to list, CMake had troubles resolving
-  link directory order as it detected some cycles. Appending to list ensures
-  that dependencies will preceed dependees.
+- bump: start working toward 7.42.0
 
-- [Jakub Zakrzewski brought this change]
+Version 7.41.0 (25 Feb 2015)
 
-  Cmake: Fix library list provided to cURL tests.
-  
-  The list must be set after those nice CMake tests as we mess with
-  CMAKE_REQUIRED_LIBRARIES there.
+Daniel Stenberg (25 Feb 2015)
+- THANKS: added contributors from the 7.41.0 RELEASE-NOTES
 
-- [Jakub Zakrzewski brought this change]
+- RELEASE-NOTES: sync with ffc2aeec6e (7.41.0 release time!)
 
-  Cmake: Check for OpenSSL before OpenLDAP.
+Marc Hoersken (25 Feb 2015)
+- Revert "telnet.c: fix handling of 0 being returned from custom read function"
   
-  OpenLDAP might have been build with OpenSSL. Checking for OpenLDAP first
-  may result in undefined symbols. Of course, the found OpenSSL libraries
-  must also be linked whenever OpenLDAP is.
-
-- curl_multi_fdset.3: improved the formatting slightly
+  This reverts commit 03fa576833643c67579ae216c4e7350fa9b5f2fe.
 
-- curl_multi_fdset: explain the fd_set arguments
+- telnet.c: fix invalid use of custom read function if not being set
+  
+  obj_count can be 1 if the custom read function is set or the stdin
+  handle is a reference to a pipe. Since the pipe should be handled
+  using the PeekNamedPipe-check below, the custom read function should
+  only be used if it is actually enabled.
 
-Kamil Dudka (8 Oct 2014)
-- nss: do not fail if a CRL is already cached
+- telnet.c: fix handling of 0 being returned from custom read function
+  
+  According to [1]: "Returning 0 will signal end-of-file to the library
+  and cause it to stop the current transfer."
+  This change makes the Windows telnet code handle this case accordingly.
   
-  This fixes a copy-paste mistake from commit 2968f957.
+   [1] http://curl.haxx.se/libcurl/c/CURLOPT_READFUNCTION.html
 
-Patrick Monnerat (8 Oct 2014)
-- OS400: upgrade interface for pinned public key (no implementation yet)
+Daniel Stenberg (24 Feb 2015)
+- sws: stop logging about TPC_NODELAY nonsense
 
-Daniel Stenberg (8 Oct 2014)
-- FormAdd: precaution against memdup() of NULL pointer
+- lib530: make it less timing sensible
   
-  Coverity CID 252518. This function is in general far too complicated for
-  its own good and really should be broken down into several smaller
-  funcitons instead - but I'm adding this protection here now since it
-  seems there's a risk the code flow can end up here and dereference a
-  NULL pointer.
+  ... by making sure the first request is completed before doing the
+  remainder.
 
-- operate: avoid NULL dereference
+Kamil Dudka (23 Feb 2015)
+- connect: wait for IPv4 connection attempts
   
-  Coverity CID 1241948. dumpeasysrc() would get called with
-  config->current set to NULL which could be dereferenced by a warnf()
-  call.
-
-- do_sec_send: remove dead code
+  ... even if the last IPv6 connection attempt has failed.
   
-  Coverity CID 1241951. The condition 'len >= 0' would always be true at
-  that point and thus not necessary to check for.
+  Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1187531#c4
 
-- krb5_encode: remove unused argument
+- connect: avoid skipping an IPv4 address
   
-  Coverity CID 1241957. Removed the unused argument. As this struct and
-  pointer now are used only for krb5, there's no need to keep unused
-  function arguments around.
-
-- operate_do: skip superfluous check for NULL pointer
+  ... in case the protocol versions are mixed in a DNS response
+  (IPv6 -> IPv4 -> IPv6).
   
-  Coverity CID 1243583. get_url_file_name() cannot fail and return a NULL
-  file name pointer so skip the check for that - it tricks coverity into
-  believing it can happen and it then warns later on when we use 'outfile'
-  without checking for NULL.
+  Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1187531#c3
 
-- curl_easy_getinfo.3: spell-fix
-  
-  Reported-By: Luan Cestari
+Daniel Stenberg (23 Feb 2015)
+- RELEASE-NOTES: synced with 5e4395eab839d
 
-- [moparisthebest brought this change]
+- ROADMAP: curl_easy_setopt.3 has already been split up
+  
+  Remove cmake as marked for removal. It is in much better state now.
 
-  GnuTLS: Implement public key pinning
+- ROADMAP: extend the HTTP/2 stuff, remove SPDY
 
-- [moparisthebest brought this change]
+- [Julian Ospald brought this change]
 
-  SSL: implement public key pinning
+  configure: allow both --with-ca-bundle and --with-ca-path
   
-  Option --pinnedpubkey takes a path to a public key in DER format and
-  only connect if it matches (currently only implemented with OpenSSL).
+  SSL_CTX_load_verify_locations by default (and if given non-Null
+  parameters) searches the CAfile first and falls back to CApath.  This
+  allows for CAfile to be a basis (e.g. installed by the package manager)
+  and CApath to be a user configured directory.
   
-  Provides CURLOPT_PINNEDPUBLICKEY for curl_easy_setopt().
+  This wasn't reflected by the previous configure constraint which this
+  patch fixes.
   
-  Extract a public RSA key from a website like so:
-  openssl s_client -connect google.com:443 2>&1 < /dev/null | \
-  sed -n '/-----BEGIN/,/-----END/p' | openssl x509 -noout -pubkey \
-  | openssl rsa -pubin -outform DER > google.com.der
+  Bug: https://github.com/bagder/curl/pull/139
 
-- multi_runsingle: fix possible memory leak
-  
-  Coverity CID 1202837. 'newurl' can in fact be allocated even when
-  Curl_retry_request() returns failure so free it if need be.
-
-- ares::Curl_resolver_cancel: skip checking for NULL conn
-  
-  Coverity CID 1243581. 'conn' will never be NULL here, and if it would be
-  the subsequent statement would dereference it!
+- [Ben Boeckel brought this change]
 
-- parseconfig: skip a NULL check
-  
-  Coverity CID 1154198. This NULL check implies that the pointer _can_ be
-  NULL at this point, which it can't. Thus it is dead code. It tricks
-  static analyzers to warn about dereferencing the pointer since the code
-  seems to imply it can be NULL.
+  cmake: install the dll file to the correct directory
 
-- [Waldek Kozba brought this change]
+- [Alessandro Ghedini brought this change]
 
-  multi-uv.c: call curl_multi_info_read() better
+  nss: fix NPN/ALPN protocol negotiation
   
-  Improves it for low-latency cases (like the communication with
-  localhost)
-
-- tool_go_sleep: use (void) to spell out we ignore the return value
+  Correctly check for memcmp() return value (it returns 0 if the strings match).
   
-  Coverity CID 1222080.
+  This is not really important, since curl is going to use http/1.1 anyway, but
+  it's still a bug I guess.
 
-- ssh_statemach_act: split out assignment from check
-  
-  just a minor code style thing to make the code clearer
+- [Alessandro Ghedini brought this change]
 
-Marc Hoersken (4 Oct 2014)
-- curl_schannel.c: Fixed possible memory or handle leak
+  polarssl: fix ALPN protocol negotiation
   
-  First try to fix possible memory leaks, in this case:
-  Only connssl->ctxt xor onnssl->cred being initialized.
+  Correctly check for strncmp() return value (it returns 0 if the strings
+  match).
 
-Daniel Stenberg (4 Oct 2014)
-- getparameter: remove dead code
-  
-  Coverity CID 1061126. 'parse' will always be non-NULL here.
+- [Sergei Nikulov brought this change]
 
-- getparameter: comment a switch FALLTHROUGH
+  CMake: Fix generation of tool_hugehelp.c on windows
   
-  Coverity CID 1061118. Point out that it is on purpose.
-
-- choose_mech: fix return code
+  Use "cmake -E echo" instead of "echo".
   
-  Coverity CID 1241950. The pointer is never NULL but it might point to
-  NULL.
+  Reviewed-by: Brad King <brad.king@kitware.com>
 
-- Curl_sec_read_msg: spell out that we ignore return code
-  
-  Coverity CID 1241947. Since if sscanf() fails, the previously set value
-  remains set.
+- [Sergei Nikulov brought this change]
 
-- nonblock: call with (void) to show we ignore the return code
+  CMake: fix winsock2 detection on windows
   
-  Coverity pointed out several of these.
-
-- parse_proxy: remove dead code.
+  Set CMAKE_REQUIRED_DEFINITIONS to include definitions needed to get
+  the winsock2 API from windows.h.  Simplify the order of checks to
+  avoid extra conditions.
   
-  Coverity CID 982331.
+  Use check_include_file instead of check_include_file_concat to look
+  for OpenSSL headers.  They do not need to participate in a sequence
+  of dependent system headers.  Also they may cause winsock.h to be
+  included before ws2tcpip.h, causing the latter to not be detected
+  in the sequence.
+  
+  Reviewed-by: Brad King <brad.king@kitware.com>
 
-- Curl_debug: document switch fallthroughs
+- [Alessandro Ghedini brought this change]
 
-- curl_multi_remove_handle: remove dead code
-  
-  Coverify CID 1157776. Removed a superfluous if() that always evaluated
-  true (and an else clause that never ran), and then re-indented the
-  function accordingly.
+  gtls: fix build with HTTP2
 
-- Curl_pipeline_server_blacklisted: handle a NULL server name
-  
-  Coverity CID 1215284. The server name is extracted with
-  Curl_copy_header_value() and passed in to this function, and
-  copy_header_value can actually can fail and return NULL.
+Steve Holme (16 Feb 2015)
+- Makefile.vc6: Corrected typos in rename of darwinssl.obj
 
-- ssh: comment "fallthrough" in switch statement
+Nick Zitzmann (15 Feb 2015)
+- By request, change the name of "curl_darwinssl.[ch]" to "darwinssl.[ch]"
 
-- [Jeremy Lin brought this change]
+Steve Holme (14 Feb 2015)
+- RELEASE-NOTES: Synced with 6f89f86c3d
 
-  ssh: improve key file search
-  
-  For private keys, use the first match from: user-specified key file
-  (if provided), ~/.ssh/id_rsa, ~/.ssh/id_dsa, ./id_rsa, ./id_dsa
-  
-  Note that the previous code only looked for id_dsa files. id_rsa is
-  now generally preferred, as it supports larger key sizes.
-  
-  For public keys, use the user-specified key file, if provided.
-  Otherwise, try to extract the public key from the private key file.
-  This means that passing --pubkey is typically no longer required,
-  and makes the key-handling behavior more like OpenSSH.
+- tests/README: Updated to reflect email test ranges
+
+- [Alessandro Ghedini brought this change]
 
-- CURLOPT_HTTPHEADER.3: libcurl doesn't copy the whole list
+  curl.1: --cert-status is also supported by OpenSSL now
 
-- detect_proxy: fix possible single-byte memory leak
+- build: Removed Visual Studio SuppressStartupBanner directive for VC8+
   
-  Coverity CID 1202836. If the proxy environment variable returned an empty
-  string, it would be leaked. While an empty string is not really a proxy, other
-  logic in this function already allows a blank string to be returned so allow
-  that here to avoid the leak.
+  Visual Studio 2005 and above defaults to disabling the startup banner
+  for the Compiler, Linker and MIDL tools (with /NOLOGO). As such there
+  is no need to explicitly set the SuppressStartupBanner directive, as
+  this is a leftover from the VC7 and VC7.1 projects being upgraded to
+  VC8 and above.
 
-- multi_runsingle: fix memory leak
+Kamil Dudka (12 Feb 2015)
+- openssl: fix a compile-time warning
   
-  Coverity CID 1202837. There's a potential risk that 'newurl' gets
-  overwritten when it was already pointing to allocated memory.
+  lib/vtls/openssl.c:1450:7: warning: extra tokens at end of #endif directive
 
-- pop3_perform_authentication: fix memory leak
+Steve Holme (11 Feb 2015)
+- openssl: Use OPENSSL_IS_BORINGSSL for BoringSSL detection
   
-  Coverity CID 1215287. There's a potential risk for a memory leak in
-  here, and moving the free call to be unconditional seems like a cheap
-  price to remove the risk.
+  For consistency with other conditionally compiled code in openssl.c,
+  use OPENSSL_IS_BORINGSSL rather than HAVE_BORINGSSL and try to use
+  HAVE_BORINGSSL outside of openssl.c when the OpenSSL header files are
+  not included.
 
-- imap_perform_authentication: fix memory leak
-  
-  Coverity CID 1215296. There's a potential risk for a memory leak in
-  here, and moving the free call to be unconditional seems like a cheap
-  price to remove the risk.
+Patrick Monnerat (11 Feb 2015)
+- ftp: accept all 2xx responses to the PORT command
 
-- wait_or_timeout: return failure when Curl_poll() fails
+Steve Holme (9 Feb 2015)
+- openssl: Disable OCSP in old versions of OpenSSL
   
-  Coverity detected this. CID 1241954. When Curl_poll() returns a negative value
-  'mcode' was uninitialized. Pretty harmless since this is debug code only and
-  would at worst cause an error to _not_ be returned...
+  Versions of OpenSSL prior to v0.9.8h do not support the necessary
+  functions for OCSP stapling.
+
+Daniel Stenberg (9 Feb 2015)
+- [Tatsuhiro Tsujikawa brought this change]
 
-- curl.1: mention quoting in the URL section
+  http2: Fix bug that associated stream canceled on PUSH_PROMISE
   
-  and separate the example URLs with newlines
+  Previously we don't ignore PUSH_PROMISE header fields in on_header
+  callback.  It makes header values mixed with following HEADERS,
+  resulting protocol error.
 
-Steve Holme (30 Sep 2014)
-- [Bill Nagel brought this change]
+- [Jay Satiro brought this change]
 
-  smtp: Fixed intermittent "SSL3_WRITE_PENDING: bad write retry" error
+  polarssl: Fix exclusive SSL protocol version options
   
-  This patch fixes the "SSL3_WRITE_PENDING: bad write retry" error that
-  sometimes occurs when sending an email over SMTPS with OpenSSL. OpenSSL
-  appears to require the same pointer on a write that follows a retry
-  (CURLE_AGAIN) as discussed here:
+  Prior to this change the options for exclusive SSL protocol versions did
+  not actually set the protocol exclusive.
   
-  http://stackoverflow.com/questions/2997218/why-am-i-getting-error1409f07fssl-routinesssl3-write-pending-bad-write-retr
+  http://curl.haxx.se/mail/lib-2015-01/0002.html
+  Reported-by: Dan Fandrich
 
-Daniel Stenberg (30 Sep 2014)
-- RELEASE-NOTES: synced with 53cbea22310f15
+- [Jay Satiro brought this change]
 
-- file: reject paths using embedded %00
-  
-  Mostly because we use C strings and they end at a binary zero so we know
-  we can't open a file name using an embedded binary zero.
+  gskit: Fix exclusive SSLv3 option
+
+- curl.1: clarify that -X is used for all requests
   
-  Reported-by: research@g0blin.co.uk
+  Reported-by: Jon Seymour
+
+- curl.1: add warning when using -H and redirects
 
-Dan Fandrich (26 Sep 2014)
-- test506: Fixed a couple of memory leaks in test
+Steve Holme (7 Feb 2015)
+- schannel: Removed curl_ prefix from source files
+  
+  Removed the curl_ prefix from the schannel source files as discussed
+  with Marc and Daniel at FOSDEM.
 
-Daniel Stenberg (25 Sep 2014)
-- [Yousuke Kimoto brought this change]
+Daniel Stenberg (6 Feb 2015)
+- md5: use axTLS's own MD5 functions when available
 
-  CURLOPT_COOKIELIST: Added "RELOAD" command
+- MD(4|5): make the MD4_* and MD5_* functions static
 
-- [Michael Wallner brought this change]
+- axtls: fix conversion from size_t to int warning
 
-  CURLOPT_POSTREDIR.3: Added availability for CURL_REDIR_POST_303
+Steve Holme (5 Feb 2015)
+- ftp: Use 'CURLcode result' for curl result codes
 
-- threaded-resolver: revert Curl_expire_latest() switch
+Daniel Stenberg (5 Feb 2015)
+- openssl: SSL_SESSION->ssl_version no longer exist
   
-  The switch to using Curl_expire_latest() in commit cacdc27f52b was a
-  mistake and was against the advice even mentioned in that commit. The
-  comparison in asyn-thread.c:Curl_resolver_is_resolved() makes
-  Curl_expire() the suitable function to use.
+  The struct went private in 1.0.2 so we cannot read the version number
+  from there anymore. Use SSL_version() instead!
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1426
-  Reported-By: graysky
+  Reported-by: Gisle Vanem
+  Bug: http://curl.haxx.se/mail/lib-2015-02/0034.html
 
-- libcurl docs: improvements all over
+Dan Fandrich (4 Feb 2015)
+- unit1600: Fix compilation when NTLM is disabled
 
-Steve Holme (19 Sep 2014)
-- build: Added WinIDN build configuration options
+Daniel Stenberg (4 Feb 2015)
+- MD5: fix compiler warnings and code style nits
+
+- MD5: replace implementation
+  
+  The previous one was "encumbered" by RSA Inc - to avoid the licensing
+  restrictions it has being replaced. This is the initial import,
+  inserting the md5.c and md5.h files from
+  http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
   
-  Added initial support for WinIDN build configurations to the VC10+
-  project files.
+  Code-by: Alexander Peslyak
 
-Daniel Stenberg (19 Sep 2014)
-- tutorial: signals aren't used for the threaded resolver
+- MD4: fix compiler warnings and code style nits
 
-- FAQ: update the pronunciation section
+- MD4: replace implementation
   
-  As we weren't using the correct phonetic description and doing it correctly
-  involves funny letters that I'm sure will cause problems for people in a text
-  document so I instead rephrased it and link to a WAV file with a person
-  actually saying 'curl'.
+  The previous one was "encumbered" by RSA Inc - to avoid the licensing
+  restrictions it has being replaced. This is the initial import,
+  inserting the md4.c and md4.h files from
+  http://openwall.info/wiki/people/solar/software/public-domain-source-code/md4
   
-  Reported-By: Dimitar Boevski
+  Code-by: Alexander Peslyak
 
-- CURLOPT_COOKIE*: added more cross-references
+Steve Holme (4 Feb 2015)
+- telnet: Prefer 'CURLcode result' for curl result codes
 
-- BINDINGS: add node-libcurl
-  
-  Reported-By: Jonathan Cardoso Machado
-  URL: http://curl.haxx.se/mail/lib-2014-09/0102.html
+- hostasyn: Prefer 'CURLcode result' for curl result codes
+
+- schannel: Prefer 'CURLcode result' for curl result codes
 
-- README.http2: updated to reflect current status
+Daniel Stenberg (3 Feb 2015)
+- unit1601: MD5 unit tests
 
-- formdata: removed unnecessary USE_SSLEAY use
+- unit1600: unit test for Curl_ntlm_core_mk_nt_hash
 
-- curlssl: make tls backend symbols use curlssl in the name
+- unit1600: NTLM unit test
 
-- url: let the backend decide CURLOPT_SSL_CTX_ support
-  
-  ... to further remove specific TLS backend knowledge from url.c
+- tests/README: add a new range, clean up some language
 
-- vtls: have the backend tell if it supports CERTINFO
+- [Jay Satiro brought this change]
 
-- [Catalin Patulea brought this change]
+  opts: CURLOPT_CAINFO availability depends on SSL engine
 
-  configure: allow --with-ca-path with PolarSSL too
-  
-  Missed this in af45542c.
+- getpass: protect include with proper #ifdef
   
-  Signed-off-by: Catalin Patulea <cat@vv.carleton.ca>
+  Reported-by: Tamir
 
-- CURLOPT_CAPATH: return failure if set without backend support
+- getpass_r: read from stdin, not stdout!
+  
+  The file number used was wrong. This bug was introduced over 10 years
+  ago, proving this function isn't used much...
+  
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1476
+  Reported-by: Tamir
 
-- [Tatsuhiro Tsujikawa brought this change]
+- test1135: verify the CURL_EXTERN order in header files
 
-  http2: Fix busy loop when EOF is encountered
+- Makefile.am: fix 'make distcheck'
+  
+  ... by removing generated files from the *_DIST variable [*] and instead
+  generate them with a .dist suffix, since that is then handled and put
+  into the release archive by our generic dist-hook.
   
-  Previously we did not handle EOF from underlying transport socket and
-  wrongly just returned error code CURL_AGAIN from http2_recv, which
-  caused busy loop since socket has been closed.  This patch adds the
-  code to handle EOF situation and tells the upper layer that we got
-  EOF.
+  [*] = 'make distcheck' fails with non-existing files listed there
 
-Steve Holme (13 Sep 2014)
-- build: Added batch wrapper to checksrc.pl
+Steve Holme (2 Feb 2015)
+- curl_sasl.c: More code policing
+  
+  Better use of 80 character line limit, comment corrections and line
+  spacing preferences.
 
-- RELEASE-NOTES: Synced with bd3df5ec6d
+Daniel Stenberg (2 Feb 2015)
+- libcurl-symbols: first basic shot for autogenerated docs
 
-- [Marcel Raad brought this change]
+- FAQ: minor edit of 3.22
 
-  sasl_sspi: Fixed Unicode build
+Steve Holme (2 Feb 2015)
+- build: Added removal of Visual Studio project files
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1422
-  Verified-by: Steve Holme
+  Added the removal of the locally generated project files so one
+  may revert to a clean repository.
 
-Daniel Stenberg (12 Sep 2014)
-- libcurl-tutorial.3: fix GnuTLS link to thread-safety guidelines
+- build: Renamed top level Visual Studio solution files
   
-  The former link was turned into a 404 at some point.
+  In preparation for adding the test suite and examples projects renamed
+  the top level "all" solution files to better describe what they are.
   
-  Reported-By: Askar Safin
+  This will also enable us to use "curl" rather than "curlsrc" for the
+  command line tool solution and project files, which will simplify some
+  of the configuration.
 
-- contributors.sh: split list of names at comma
+- build: Enabled DEBUGBUILD in Visual Studio debug builds
   
-  ... to support a list of names provided in a commit message.
+  Defined the DEBUGBUILD pre-processor variable to allow extra logging,
+  which is particularly useful in debug builds, as we use this and Visual
+  Studio typically uses _DEBUG.
+  
+  We could define DEBUBBUILD, in curl_setup.h, when _MSC_VER and _DEBUG is
+  defined but that would also affect the makefile based builds which we
+  probably don't want to do.
 
-Steve Holme (12 Sep 2014)
-- [Ulrich Telle brought this change]
+- build: Removed unused Visual Studio bscmake settings
 
-  ntlm: Fixed HTTP proxy authentication when using Windows SSPI
-  
-  Removed ISC_REQ_* flags from calls to InitializeSecurityContext to fix
-  bug in NTLM handshake for HTTP proxy authentication.
+Daniel Stenberg (2 Feb 2015)
+- CURLOPT_HTTP_VERSION.3: CURL_HTTP_VERSION_2_0 added in 7.33.0
   
-  NTLM handshake for HTTP proxy authentication failed with error
-  SEC_E_INVALID_TOKEN from InitializeSecurityContext for certain proxy
-  servers on generating the NTLM Type-3 message.
+  And modify the text to refer to HTTP 2 as it isn't called "2.0".
   
-  The flag ISC_REQ_CONFIDENTIALITY seems to cause the problem according
-  to the observations and suggestions made in a bug report for the
-  QT project (https://bugreports.qt-project.org/browse/QTBUG-17322).
-  
-  Removing all the flags solved the problem.
-  
-  Bug: http://curl.haxx.se/mail/lib-2014-08/0273.html
-  Reported-by: Ulrich Telle
-  Assisted-by: Steve Holme, Daniel Stenberg
+  Reported-By: Michael Wallner
 
-Daniel Stenberg (12 Sep 2014)
-- [Ray Satiro brought this change]
+Marc Hoersken (31 Jan 2015)
+- TODO: moved WinSSL/SChannel todo items into docs
 
-  newlines: fix mixed newlines to LF-only
-  
-  I use the curl repo mainly on Windows with the typical Windows git
-  checkout which converts the LF line endings in the curl repo to CRLF
-  automatically on checkout. The automatic conversion is not done on files
-  in the repo with mixed line endings. I recently noticed some weird
-  output with projects/build-openssl.bat that I traced back to mixed line
-  endings, so I scanned the repo and there are files (excluding the
-  test data) that have mixed line endings.
+Daniel Stenberg (29 Jan 2015)
+- [Michael Kaufmann brought this change]
+
+  CURLOPT_SEEKFUNCTION.3: also when server closes a connection
+
+Steve Holme (29 Jan 2015)
+- curl_sasl.c: Fixed compilation warning when cryptography is disabled
   
-  I used this command below to do the scan. Unfortunately it's not as easy
-  as git grep, at least not on Windows. This gets the names of all the
-  files in the repo's HEAD, gets each of those files raw from HEAD, checks
-  for mixed line endings of both LF and CRLF, and prints the name if
-  mixed. I excluded path tests/data/test* because those can have mixed
-  line endings if I understand correctly.
+  curl_sasl.c:1506: warning: unused variable 'chlg'
+
+- curl_sasl.c: Fixed compilation warning when verbose debug output disabled
   
-  for f in `git ls-tree --name-only --full-tree -r HEAD`;
-  do if [ -n "${f##tests/data/test*}" ];
-      then git show "HEAD:$f" | \
-          perl -0777 -ne 'exit 1 if /([^\r]\n.*\r\n)|(\r\n.*[^\r]\n)/';
-      if [ $? -ne 0 ];
-          then echo "$f";
-      fi;
-  fi;
-  done
+  curl_sasl.c:1317: warning: unused parameter 'conn'
 
-- [Viktor Szakáts brought this change]
+- ntlm_core: Use own odd parity function when crypto engine doesn't have one
+
+- ntlm_core: Prefer sizeof(key) rather than hard coded sizes
 
-  mk-ca-bundle.pl: converted tabs to spaces, deleted trailing spaces
+- ntlm_core: Added consistent comments to DES functions
 
-- ROADMAP: markdown eats underscores
+- des: Added Curl_des_set_odd_parity()
   
-  It interprets them as italic indictors unless we backtick the word.
+  Added Curl_des_set_odd_parity() for use when cryptography engines
+  don't include this functionality.
 
-- ROADMAP: tiny formatting edit for nicer web output
+- tests: Grouped SMTP SASL EXTERNAL tests with other SMTP tests
 
-Steve Holme (10 Sep 2014)
-- ROADMAP.md: Updated GSSAPI authentication following 7.38.0 additions
+- tests: Grouped POP3 SASL EXTERNAL tests with other POP3 tests
 
-- INTERNALS: Added email and updated Kerberos details
+- tests: Grouped IMAP SASL EXTERNAL tests with other IMAP tests
 
-- FEATURES: Updated Kerberos details
-  
-  Added support for Kerberos 5 to the email protocols following the recent
-  additions in 7.38.0.
-  
-  Removed Kerberos 4 as this has been gone for a while now.
+- sasl: Minor code policing and grammar corrections
 
-Daniel Stenberg (10 Sep 2014)
-- [Paul Howarth brought this change]
+Daniel Stenberg (28 Jan 2015)
+- [Gisle Vanem brought this change]
 
-  openssl: build fix for versions < 0.9.8e
-  
-  Bug: http://curl.haxx.se/mail/lib-2014-09/0064.html
+  ldap: build with BoringSSL
 
-- mk-ca-bundle.pl: first, try downloading HTTPS with curl
-  
-  As a sort of step forward, this script will now first try to get the
-  data from the HTTPS URL using curl, and only if that fails it will
-  switch back to the HTTP transfer using perl's native LWP functionality.
-  To reduce the risk of this script being tricked.
+- security: avoid compiler warning
   
-  Using HTTPS to get a cert bundle introduces a chicken-and-egg problem so
-  we can't really ever completely disable HTTP, but chances are that most
-  users already have a ca cert bundle that trusts the mozilla.org site
-  that this script downloads from.
+  Possible access to uninitialised memory '&nread' at line 140 of
+  lib/security.c in function 'ftp_send_command'.
   
-  A future version of this script will probably switch to require a
-  dedicated "insecure" command line option to allow downloading over HTTP
-  (or unverified HTTPS).
+  Reported-by: Rich Burridge
 
-- LICENSE-MIXING: removed krb4 info
-  
-  krb4 has been dropped since a while now
+- runtests: identify BoringSSL and libressl
 
-- bump: on the 7.38.1-DEV train now!
+Patrick Monnerat (27 Jan 2015)
+- docs: cite SASL external authentication.
 
-- SSLCERTS: minor updates
-  
-  Edited format to look better on the web, added a "it is about trust"
-  section.
+- sasl: remove XOAUTH2 from default enabled authentication mechanism.
 
-Version 7.38.0 (10 Sep 2014)
+- test: add test cases for sasl external authentication (imap/pop3/smtp).
 
-Daniel Stenberg (10 Sep 2014)
-- dist: two cmake files are no more
-  
-  CMake/FindOpenSSL.cmake and FindZLIB.cmake are gone since 14aa8f0c117b
+- imap: remove automatic password setting: it breaks external sasl authentication
 
-- RELEASE-NOTES: final update for 7.38.0
+- sasl: implement EXTERNAL authentication mechanism.
+    Its use is only enabled by explicit requirement in URL (;AUTH=EXTERNAL) and
+  by not setting the password.
 
-- cookies: reject incoming cookies set for TLDs
+Steve Holme (27 Jan 2015)
+- openssl: Fixed Curl_ossl_cert_status_request() not returning FALSE
   
-  Test 61 was modified to verify this.
+  Modified the Curl_ossl_cert_status_request() function to return FALSE
+  when built with BoringSSL or when OpenSSL is missing the necessary TLS
+  extensions.
+
+- openssl: Fixed compilation errors when OpenSSL built with 'no-tlsext'
   
-  CVE-2014-3620
+  Fixed the build of openssl.c when OpenSSL is built without the necessary
+  TLS extensions for OCSP stapling.
   
-  Reported-by: Tim Ruehsen
-  URL: http://curl.haxx.se/docs/adv_20140910B.html
+  Reported-by: John E. Malmberg
 
-- [Tim Ruehsen brought this change]
+- [Brad Spencer brought this change]
 
-  cookies: only use full host matches for hosts used as IP address
-  
-  By not detecting and rejecting domain names for partial literal IP
-  addresses properly when parsing received HTTP cookies, libcurl can be
-  fooled to both send cookies to wrong sites and to allow arbitrary sites
-  to set cookies for others.
-  
-  CVE-2014-3613
+  curl_setup: Disable SMB/CIFS support when HTTP only
+
+- RELEASE-NOTES: Synced with 37824498a3
+
+Daniel Stenberg (22 Jan 2015)
+- configure: remove detection of the old yassl emulation API
   
-  Bug: http://curl.haxx.se/docs/adv_20140910A.html
+  ... as that is ancient history and not used.
 
-- HISTORY: fix the 1998 title position
+- OCSP stapling: disabled when build with BoringSSL
 
-- HISTORY: extended and now markdown
+- [Alessandro Ghedini brought this change]
 
-- SSLCERTS: converted to markdown
+  openssl: add support for the Certificate Status Request TLS extension
   
-  Only minor edits to make it generate nice HTML output using markdown, as
-  this document serves both in source release tarballs as on the web site.
+  Also known as "status_request" or OCSP stapling, defined in RFC6066
+  section 8.
   
-  URL: http://curl.haxx.se/docs/sslcerts.html
+  Thanks-to: Joe Mason
+  - for the work-around for the OpenSSL bug.
 
-- ftp-wildcard.c: spell fix
+- BoringSSL: fix build for non-configure builds
   
-  Reported-By: Frank Gevaerts
+  HAVE_BORINGSSL gets defined now by configure and should be defined by
+  other build systems in case a BoringSSL build is desired.
 
-- RELEASE-NOTES: synced with 921a0c22a6f
+- configure: fix BoringSSL detection and detect libresssl
 
-- THANKS: synced with RELEASE-NOTES for 921a0c22a6f
+Steve Holme (22 Jan 2015)
+- curl_sasl: Reinstate the sasl_ prefix for locally scoped functions
+  
+  Commit 7a8b2885e2 made some functions static and removed the public
+  Curl_ prefix. Unfortunately, it also removed the sasl_ prefix, which
+  is the naming convention we use in this source file.
 
-- polarassl: avoid memset() when clearing the first byte is enough
+- curl_sasl: Minor code policing following recent commits
 
-- [Catalin Patulea brought this change]
+Daniel Stenberg (22 Jan 2015)
+- [John Malmberg brought this change]
 
-  polarssl: support CURLOPT_CAPATH / --capath
+  openvms: Handle openssl/0.8.9zb version parsing
   
-  Signed-off-by: Catalin Patulea <cat@vv.carleton.ca>
+  packages/vms/gnv_link_curl.com was assuming only a single letter suffix
+  in the openssl version.  That assumption has been fixed for 7.40.
 
-- SECURITY: eh, make more sense!
+- BoringSSL: detected by configure, switches off NTLM
 
-- SECURITY: how to join the curl-security list
+- BoringSSL: no PKCS12 support nor ERR_remove_state
 
-- RELEASE-NOTES: fix the required nghttp2 version typo
+- [Leith Bade brought this change]
 
-- [Brandon Casey brought this change]
+  BoringSSL: fix build
 
-  Ensure progress.size_dl/progress.size_ul are always >= 0
-  
-  Historically the default "unknown" value for progress.size_dl and
-  progress.size_ul has been zero, since these values are initialized
-  implicitly by the calloc that allocates the curl handle that these
-  variables are a part of.  Users of curl that install progress
-  callbacks may expect these values to always be >= 0.
+Steve Holme (20 Jan 2015)
+- curl_sasl.c: chlglen is not used when cryptography is disabled
+
+- curl_sasl.c: Fixed compilation warning when cyptography is disabled
   
-  Currently it is possible for progress.size_dl and progress.size_ul
-  to by set to a value of -1, if Curl_pgrsSetDownloadSize() or
-  Curl_pgrsSetUploadSize() are passed a "size" of -1 (which a few
-  places currently do, and a following patch will add more).  So
-  lets update Curl_pgrsSetDownloadSize() and Curl_pgrsSetUploadSize()
-  so they make sure that these variables always contain a value that
-  is >= 0.
+  curl_sasl.c:1453: warning C4101: 'serverdata' : unreferenced local
+                    variable
+
+- curl_sasl.c: Fixed compilation error when USE_WINDOWS_SSPI defined
   
-  Updates test579 and test599.
+  curl_sasl.c:1221: error C2065: 'mechtable' : undeclared identifier
   
-  Signed-off-by: Brandon Casey <drafnel@gmail.com>
+  This error could also happen for non-SSPI builds when cryptography is
+  disabled (CURL_DISABLE_CRYPTO_AUTH is defined).
 
-Steve Holme (7 Sep 2014)
-- tests: Added test1420 to the makefile
+Patrick Monnerat (20 Jan 2015)
+- SASL: make some procedures local-scoped
 
-- test1420: Removed unnecessary CURLOPT setting
+- SASL: common state engine for imap/pop3/smtp
 
-- tests: Added more "Clear Text" authentication keywords
+- SASL: common URL option and auth capabilities decoders for all protocols
 
-- tests: Updated "based on" text due to email test renumbering
+- IMAP/POP3/SMTP: use a per-connection sub-structure for SASL parameters.
 
-- tests: For consistency added --libcurl to test name
+Daniel Stenberg (20 Jan 2015)
+- ipv6: enclose AF_INET6 uses with proper #ifdefs for ipv6
+  
+  Reported-by: Chris Young
 
-- tests: Added --libcurl for IMAP test case
+- [Chris Young brought this change]
 
-- multi.c: Avoid invalid memory read after free() from commit 3c8c873252
+  timeval: typecast for better type (on Amiga)
   
-  As the current element in the list is free()d by Curl_llist_remove(),
-  when the associated connection is pending, reworked the loop to avoid
-  accessing the next element through e->next afterward.
-
-- multi.c: Fixed compilation warning from commit 3c8c873252
+  There is an issue with conflicting "struct timeval" definitions with
+  certain AmigaOS releases and C libraries, depending on what gets
+  included when.  It's a minor difference - the OS one is unsigned,
+  whereas the common structure has signed elements.  If the OS one ends up
+  getting defined, this causes a timing calculation error in curl.
   
-  warning: implicit conversion from enumeration type 'CURLMcode' to
-  different enumeration type 'CURLcode'
+  It's easy enough to resolve this at the curl end, by casting the
+  potentially errorneous calculation to a signed long.
 
-- url.c: Use CURLAUTH_NONE constant rather than 0
+- openssl: do public key pinning check independently
   
-  Small follow up to commit 898808fa8c to use auth constants rather than
-  hard code value when clearing picked authentication mechanism.
-
-- RELEASE-NOTES: Synced with fd1ce3856a
+  ... of the other cert verification checks so that you can set verifyhost
+  and verifypeer to FALSE and still check the public key.
+  
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1471
+  Reported-by: Kyle J. McKay
 
-Nick Zitzmann (4 Sep 2014)
-- [Vilmos Nebehaj brought this change]
+Patrick Monnerat (19 Jan 2015)
+- OS400: CURLOPT_SSL_VERIFYSTATUS for ILE/RPG too.
 
-  darwinssl: Use CopyCertSubject() to check CA cert.
+Steve Holme (18 Jan 2015)
+- ldap: Renamed the CURL_LDAP_WIN definition to USE_WIN32_LDAP
   
-  SecCertificateCopyPublicKey() is not available on iPhone. Use
-  CopyCertSubject() instead to see if the certificate returned by
-  SecCertificateCreateWithData() is valid.
+  For consistency with other USE_WIN32_ defines as well as the
+  USE_OPENLDAP define.
+
+- http_negotiate: Use dynamic buffer for SPN generation
   
-  Reported-by: Toby Peterson
+  Use a dynamicly allocated buffer for the temporary SPN variable similar
+  to how the SASL GSS-API code does, rather than using a fixed buffer of
+  2048 characters.
 
-Steve Holme (4 Sep 2014)
-- RELEASE-NOTES: Clarify email Kerberos support is currently via Windows SSPI
+- sasl_gssapi: Make Curl_sasl_build_gssapi_spn() public
 
-Daniel Stenberg (4 Sep 2014)
-- MAIL-ETIQUETTE: "1.8 I posted, now what?"
+- sasl_gssapi: Fixed memory leak with local SPN variable
 
-- CURLOPT_CA*: better refering between *CAINFO and *CAPATH
-  
-  ... and a minor wording edit
+Daniel Stenberg (17 Jan 2015)
+- http_negotiate.c: unused variable 'ret'
 
-- THANKS: added Dennis Clarke
+Steve Holme (17 Jan 2015)
+- gskit.h: Code policing of function pointer arguments
+
+- vtls: Removed unimplemented overrides of curlssl_close_all()
+  
+  Carrying on from commit 037cd0d991, removed the following unimplemented
+  instances of curlssl_close_all():
   
-  Dennis Clarke from Blastwave.org for ensuring that nightly builds run
-  smooth on Solaris!
+  Curl_axtls_close_all()
+  Curl_darwinssl_close_all()
+  Curl_cyassl_close_all()
+  Curl_gskit_close_all()
+  Curl_gtls_close_all()
+  Curl_nss_close_all()
+  Curl_polarssl_close_all()
 
-- curl_multi_cleanup: remove superfluous NULL assigns
+- vtls: Separate the SSL backend definition from the API setup
   
-  ... as the struct is free()d in the end anyway. It was first pointed out
-  to me that one of the ->msglist assignments were supposed to have been
-  ->pending but was a copy and paste mistake when I realized none of the
-  clearing of pointers had to be there.
+  Slight code cleanup as the SSL backend #define is mixed up with the API
+  function setup.
 
-- multi: convert CURLM_STATE_CONNECT_PEND handling to a list
+- vtls: Fixed compilation errors when SSL not used
   
-  ... instead of scanning through all handles, stash only the actual
-  handles that are in that state in the new ->pending list and scan that
-  list only. It should be mostly empty or very short. And only used for
-  pipelining.
+  Fixed the following warning and error from commit 3af90a6e19 when SSL
+  is not being used:
   
-  This avoids a rather hefty slow-down especially notable if you add many
-  handles to the same multi handle. Regression introduced in commit
-  0f147887 (version 7.30.0).
+  url.c:2004: warning C4013: 'Curl_ssl_cert_status_request' undefined;
+              assuming extern returning int
   
-  Bug: http://curl.haxx.se/mail/lib-2014-07/0206.html
-  Reported-by: David Meyer
+  error LNK2019: unresolved external symbol Curl_ssl_cert_status_request
+                 referenced in function Curl_setopt
 
-- RELEASE-NOTES: synced with e608324f9f9
+- http_negotiate: Added empty decoded challenge message info text
 
-- [Andre Heinecke brought this change]
+- http_negotiate: Return CURLcode in Curl_input_negotiate() instead of int
 
-  polarssl: implement CURLOPT_SSLVERSION
+- http_negotiate_sspi: Prefer use of 'attrs' for context attributes
   
-  Forwards the setting as minimum ssl version (if set) to polarssl.  If
-  the server does not support the requested version the SSL Handshake will
-  fail.
-  
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1419
+  Use the same variable name as other areas of SSPI code.
 
-nickzman (1 Sep 2014)
-- Merge pull request #115 from ldx/darwinsslfixpr
+- http_negotiate_sspi: Use correct return type for QuerySecurityPackageInfo()
   
-  darwinssl: now accepts cacert bundles in PEM format in addition to single certs
+  Use the SECURITY_STATUS typedef rather than a unsigned long for the
+  QuerySecurityPackageInfo() return and rename the variable as per other
+  areas of SSPI code.
+
+- http_negotiate_sspi: Use 'CURLcode result' for CURL result code
 
-Vilmos Nebehaj (1 Sep 2014)
-- Check CA certificate in curl_darwinssl.c.
+- curl_endian: Fixed build when 64-bit integers are not supported (Part 2)
   
-  SecCertificateCreateWithData() returns a non-NULL SecCertificateRef even
-  if the buffer holds an invalid or corrupt certificate. Call
-  SecCertificateCopyPublicKey() to make sure cacert is a valid
-  certificate.
+  Missed Curl_read64_be() in commit bb12d44471 :(
+
+Daniel Stenberg (16 Jan 2015)
+- CURLOPT_SSL_VERIFYSTATUS.3: mention it is added in version 7.41.0
+
+- curlver.h: next release is 7.41.0 due to the changes
+
+- RELEASE-NOTES: mention the new OCSP stapling options, bump version
+
+- opts: add CURLOPT_SSL_VERIFYSTATUS* to docs/Makefile
+
+- help: add --cert-status to --help output
+
+- copyright years: after OCSP stapling changes
 
-Daniel Stenberg (31 Aug 2014)
-- low-speed-limit: avoid timeout flood
+- [Alessandro Ghedini brought this change]
+
+  curl: add --cert-status option
   
-  Introducing Curl_expire_latest(). To be used when we the code flow only
-  wants to get called at a later time that is "no later than X" so that
-  something can be checked (and another timeout be added).
+  This enables the CURLOPT_SSL_VERIFYSTATUS functionality.
+
+- [Alessandro Ghedini brought this change]
+
+  nss: add support for the Certificate Status Request TLS extension
   
-  The low-speed logic for example could easily be made to set very many
-  expire timeouts if it would be called faster or sooner than what it had
-  set its own timer and this goes for a few other timers too that aren't
-  explictiy checked for timer expiration in the code.
+  Also known as "status_request" or OCSP stapling, defined in RFC6066 section 8.
   
-  If there's no condition the code that says if(time-passed >= TIME), then
-  Curl_expire_latest() is preferred to Curl_expire().
+  This requires NSS 3.15 or higher.
+
+- [Alessandro Ghedini brought this change]
+
+  gtls: add support for the Certificate Status Request TLS extension
   
-  If there exists such a condition, it is on the other hand important that
-  Curl_expire() is used and not the other.
+  Also known as "status_request" or OCSP stapling, defined in RFC6066 section 8.
   
-  Bug: http://curl.haxx.se/mail/lib-2014-06/0235.html
-  Reported-by: Florian Weimer
+  This requires GnuTLS 3.1.3 or higher to build, however it's recommended to use
+  at least GnuTLS 3.3.11 since previous versions had a bug that caused the OCSP
+  response verfication to fail even on valid responses.
 
-- [Michael Wallner brought this change]
+- [Alessandro Ghedini brought this change]
 
-  resolve: cache lookup for async resolvers
+  url: add CURLOPT_SSL_VERIFYSTATUS option
   
-  While waiting for a host resolve, check if the host cache may have
-  gotten the name already (by someone else), for when the same name is
-  resolved by several simultanoues requests.
+  This option can be used to enable/disable certificate status verification using
+  the "Certificate Status Request" TLS extension defined in RFC6066 section 8.
   
-  The resolver thread occasionally gets stuck in getaddrinfo() when the
-  DNS or anything else is crappy or slow, so when a host is found in the
-  DNS cache, leave the thread alone and let itself cleanup the mess.
+  This also adds the CURLE_SSL_INVALIDCERTSTATUS error, to be used when the
+  certificate status verification fails, and the Curl_ssl_cert_status_request()
+  function, used to check whether the SSL backend supports the status_request
+  extension.
 
-Vilmos Nebehaj (30 Aug 2014)
-- Fix CA certificate bundle handling in darwinssl.
-  
-  If the --cacert option is used with a CA certificate bundle that
-  contains multiple CA certificates, iterate through it, adding each
-  certificate as a trusted root CA.
+- TheArtOfHttpScripting: skip the date at the top, we have git
 
-Daniel Stenberg (29 Aug 2014)
-- [Askar Safin brought this change]
+- TheArtOfHttpScripting: phrase it TLS lib agnostic
 
-  getinfo-times: Typo fixed
+Steve Holme (16 Jan 2015)
+- TODO: Added some SMB ideas
 
-- [Askar Safin brought this change]
+- RELEASE-NOTES: Synced with 5f09947d28
 
-  libcurl.3: Typo fixed
+- build-openssl.bat: Added check for Perl installation
 
-- curl_formadd.3: setting CURLFORM_CONTENTSLENGTH 0 zero means strlen
+- checksrc.bat: Better detection of Perl installation
+
+- curl_endian: Fixed build when 64-bit integers are not supported
+  
+  Bug: http://curl.haxx.se/mail/lib-2015-01/0094.html
+  Reported-by: John E. Malmberg
 
-- curl.1: add an example for -H
+Daniel Stenberg (15 Jan 2015)
+- [Yun SangHo brought this change]
 
-- FAQ: mention -w in the 4.20 answer as well
+  curl.h: remove extra space
 
-- FAQ: 4.20 curl doesn't return error for HTTP non-200 responses
+- Curl_pretransfer: reset expected transfer sizes
+  
+  Reported-by: Mohammad AlSaleh
+  Bug: http://curl.haxx.se/mail/lib-2015-01/0065.html
 
-- CURLOPT_NOBODY.3: clarify this option is for downloads
+Marc Hoersken (12 Jan 2015)
+- curl_schannel.c: mark session as removed from cache if not freed
   
-  When enabling CURLOPT_NOBODY, libcurl effectively switches off upload
-  mode and will do a download (without a body). This is now better
-  explained in this man page.
+  If the session is still used by active SSL/TLS connections, it
+  cannot be closed yet. Thus we mark the session as not being cached
+  any longer so that the reference counting mechanism in
+  Curl_schannel_shutdown is used to close and free the session.
   
-  Bug: http://curl.haxx.se/mail/lib-2014-08/0236.html
-  Reported-by: John Coffey
+  Reported-by: Jean-Francois Durand
 
-- INTERNALS: nghttp2 must be 0.6.0 or later
+Steve Holme (9 Jan 2015)
+- RELEASE-NOTES: Synced with d21b66835f
 
-- [Tatsuhiro Tsujikawa brought this change]
+Guenter Knauf (9 Jan 2015)
+- Merge pull request #134 from vszakats/mingw-m64
+  
+  add -m64 CFLAGS when targeting mingw64, add -m32/-m64 to LDFLAGS
 
-  Compile with latest nghttp2
+- Merge pull request #136 from vszakats/mingw-allow-custom-cflags
+  
+  mingw build: allow to pass custom CFLAGS
 
-Dan Fandrich (26 Aug 2014)
-- THANKS: removed a few more duplicates
+Daniel Stenberg (9 Jan 2015)
+- NSS: fix compiler error when built http2-enabled
 
-Daniel Stenberg (26 Aug 2014)
-- RELEASE-NOTES: synced with 007242257683a
+Steve Holme (9 Jan 2015)
+- gssapi: Remove need for duplicated GSS_C_NT_HOSTBASED_SERVICE definitions
   
-  ... and bumped the contributor amount after recount
+  Better code reuse and consistency in calls to gss_import_name().
 
-- THANKS: added 52 missing contributors
+Viktor Szakats (9 Jan 2015)
+- mingw build: allow to pass custom CFLAGS
+
+Daniel Stenberg (8 Jan 2015)
+- FTP: if EPSV fails on IPV6 connections, bail out
   
-  I re-ran contributors.sh on all changes since 7.10 and I found these
-  contributors who are mentioned in the commits but never were added to
-  THANKS before!
+  ... instead of trying PASV, since PASV can't work with IPv6.
   
-  I also removed a couple of duplicates (mostly due to different
-  spellings).
-
-- contributors: grep and sort case insensitively
-
-- [Michael Osipov brought this change]
+  Reported-by: Vojtěch Král
 
-  configure.ac: Add support for recent GSS-API implementations for HP-UX
+- FTP: fix IPv6 host using link-local address
   
-  By default, configure script assumes that libcurl will use the
-  HP-supplied GSS-API implementation which does not have krb5-config.
-  If a dev needs a more recent version which has that config script,
-  the change will allow to pass an appropriate GSSAPI_ROOT.
-
-- CONNECT: close proxy connections that fail to CONNECT
+  ... and make sure we can connect the data connection to a host name that
+  is longer than 48 bytes.
   
-  This is usually due to failed auth. There's no point in us keeping such
-  a connection alive since it shouldn't be re-used anyway.
+  Also simplifies the code somewhat by re-using the original host name
+  more, as it is likely still in the DNS cache.
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1381
-  Reported-by: Marcel Raad
+  Original-Patch-by: Vojtěch Král
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1468
 
-- RELEASE-NOTES: added two missing HTTP/2 bug fixes
-  
-  And renamed all http2 references to HTTP/2 in this file
+Steve Holme (8 Jan 2015)
+- [Sam Schanken brought this change]
 
-- RELEASE-NOTES: synced with f646e9075f47
+  winbuild: Added option to build with c-ares
+  
+  Added support for a WITH_CARES option to be used when invoking nmake
+  via Makefile.vc. This option enables linking against both the DLL and
+  static versions of the c-ares libraries, as well as the debug and
+  release varients, depending on the value of DEBUG. The USE_ARES
+  preprocessor symbol is also defined.
 
-- [Jakub Zakrzewski brought this change]
+Guenter Knauf (8 Jan 2015)
+- NetWare build: added TLS-SRP enabled build.
 
-  Cmake: Possibility to use OpenLDAP, OpenSSL, LibSSH2 on windows
+Steve Holme (8 Jan 2015)
+- sasl_gssapi: Fixed build on NetBSD with built-in GSS-API
   
-  At this point I can build libcurl on windows. It provides at least the same
-  list of protocols as for linux build and works with our software.
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1469
+  Reported-by: Thomas Klausner
 
-- [Jakub Zakrzewski brought this change]
+Viktor Szakats (8 Jan 2015)
+- add -m64 clags when targeting mingw64, add -m32/-m64 to LDFLAGS
 
-  Cmake: Removed repeated content from ending blocks
-  
-  They are unnecesary in modern CMake and removing them improves readability.
+Daniel Stenberg (8 Jan 2015)
+- bump: start working towards 7.40.1
 
-- [Jakub Zakrzewski brought this change]
+- THANKS: 14 new contributors from the 7.40.0 release notes
+
+Version 7.40.0 (7 Jan 2015)
+
+Daniel Stenberg (7 Jan 2015)
+- RELEASE-NOTES: version 7.40.0
 
-  Cmake: Removed some useless empty SET statements.
+- darwinssl: fix session ID keys to only reuse identical sessions
+  
+  ...to avoid a session ID getting cached without certificate checking and
+  then after a subsequent _enabling_ of the check libcurl could still
+  re-use the session done without cert checks.
   
-  Undefined variables resolve to empty strings and we do not ever test if
-  the variable is defined thus those SETs are superfluous.
+  Bug: http://curl.haxx.se/docs/adv_20150108A.html
+  Reported-by: Marc Hesse
 
-- [Jakub Zakrzewski brought this change]
+- tests: make sure CRLFs can't be used in URLs passed to proxy
+  
+  Bug: http://curl.haxx.se/docs/adv_20150108B.html
 
-  Cmake: Removed useless comments from CMakeLists.txt
+- url-parsing: reject CRLFs within URLs
   
-  They look like some relics after changes.
+  Bug: http://curl.haxx.se/docs/adv_20150108B.html
+  Reported-by: Andrey Labunets
 
-- [Jakub Zakrzewski brought this change]
+Steve Holme (7 Jan 2015)
+- ldap: Convert attribute output to UTF-8 when Unicode
 
-  Cmake: Don't check for all headers each time
-  
-  One header at a time is the right way. Apart from that the output on
-  windows goes from:
-  ...
-  -- Looking for include files I:/src/libssh2-1.4.3/include/libssh2.h, ws2tcpip.h
-  -- Looking for include files I:/src/libssh2-1.4.3/include/libssh2.h, ws2tcpip.h
-  - found
-  -- Looking for 3 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wins
-  ock2.h
-  -- Looking for 3 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wins
-  ock2.h - found
-  -- Looking for 4 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., stdi
-  o.h
-  -- Looking for 4 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., stdi
-  o.h - found
-  -- Looking for 5 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wind
-  ows.h
-  -- Looking for 5 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wind
-  ows.h - found
-  -- Looking for 6 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wins
-  ock.h
-  -- Looking for 6 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wins
-  ock.h - found
-  -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
-  filio.h
-  -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
-  filio.h - not found
-  -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
-  ioctl.h
-  -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
-  ioctl.h - not found
-  -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
-  resource.h
-  ...
-  
-  To much nicer:
-  ...
-  -- Looking for ws2tcpip.h
-  -- Looking for ws2tcpip.h - found
-  -- Looking for winsock2.h
-  -- Looking for winsock2.h - found
-  -- Looking for stdio.h
-  -- Looking for stdio.h - found
-  -- Looking for windows.h
-  -- Looking for windows.h - found
-  -- Looking for winsock.h
-  -- Looking for winsock.h - found
-  -- Looking for sys/filio.h
-  -- Looking for sys/filio.h - not found
-  -- Looking for sys/ioctl.h
-  -- Looking for sys/ioctl.h - not found
-  -- Looking for sys/resource.h
+- ldap: Convert DN output to UTF-8 when Unicode
 
-- [Jakub Zakrzewski brought this change]
+Daniel Stenberg (7 Jan 2015)
+- hostip: remove 'stale' argument from Curl_fetch_addr proto
+  
+  Also, remove the log output of the resolved name is NOT in the cache in
+  the spirit of only telling when something is actually happening.
 
-  Cmake: Append OpenSSL include directory to search path
+Steve Holme (7 Jan 2015)
+- ldap/imap: Fixed spelling mistake in comments and variable names
   
-  At this point I can build libcurl with OpenSSL, OpenLDAP and LibSSH2.
-  Supported protocols are at least:
-  HTTP, HTTPS, FTP, SFTP, TFTP, LDAP, LDAPS, POP3, SMTP
-  (those are the ones we have regression tests for
-  in our product's testsuite)
+  Reported-by: Michael Osipov
 
-- [Jakub Zakrzewski brought this change]
+Daniel Stenberg (7 Jan 2015)
+- RELEASE-NOTES: updated with ./contributors.sh output
 
-  Cmake: Search for liblber, LDAP SSL headers, swith for using OpenLDAP code.
+Dan Fandrich (5 Jan 2015)
+- curl_multibyte.h: Eliminated some trailing whitespace
 
-- [Jakub Zakrzewski brought this change]
+Steve Holme (4 Jan 2015)
+- RELEASE-NOTES: Synced with ea93252ef1
 
-  Cmake: LibSSH2 detection and use.
+- ldap: Fixed Unicode usage for all Win32 builds
+  
+  Otherwise, the fixes in the previous commits would only be applicable
+  to IDN and SSPI based builds and not others such as OpenSSL with LDAP
+  enabled.
 
-- [Jakub Zakrzewski brought this change]
+- ldap: Fixed memory leak from commit efb64fdf80
 
-  Cmake: Moved macros out of the main CMakeLists.txt
+- ldap: Fix memory leak from commit 3a805c5cc1
 
-- [Jakub Zakrzewski brought this change]
+- ldap: Fixed attribute variable warnings when Unicode is enabled
+  
+  Use 'TCHAR *' for local attribute variable rather than 'char *'.
 
-  Cmake: Added missing protocol-disable switches
+- ldap: Fixed DN variable warnings when Unicode is enabled
   
-  They already have their defines in config.h. This makes it possible to
-  disable the protocols from command line during configure step.
+  Use 'TCHAR *' for local DN variable rather than 'char *'.
 
-- [Jakub Zakrzewski brought this change]
+- ldap: Remove the unescape_elements() function
+  
+  Due to the recent modifications this function is no longer used.
 
-  Cmake: Made boolean defines be defined to "1" instead of "ON"
+- ldap.c: Fixed compilation warning
   
-  It's by convention, for compatibility and because the comments say so.
-  Just mabe someone have written a test like "#if HAVE_XX==1"
+  ldap.c:98: warning: extra tokens at end of #endif directive
 
-- [Jakub Zakrzewski brought this change]
+- ldap: Fixed support for Unicode filter in Win32 search call
 
-  Cmake: Require at least CMake 2.8.
+- ldap.c: Fixed compilation warning
   
-  CMake 2.6 is already a bit old. Many bugs have been fixed since
-  its release. We use 2.8 in our company and we have no intention
-  of polluting our environment with old software, so 2.6 would
-  not be tested. This shouldn't be a problem since all one need
-  to build CMake from source is C and C++ compiler.
+  ldap.c:802: warning: comparison between signed and unsigned integer
+              expressions
 
-- disconnect: don't touch easy-related state on disconnects
-  
-  This was done to make sure NTLM state that is bound to a connection
-  doesn't survive and gets used for the subsequent request - but
-  disconnects can also be done to for example make room in the connection
-  cache and thus that connection is not strictly related to the easy
-  handle's current operation.
+- ldap: Fixed support for Unicode attributes in Win32 search call
+
+- ldap: Fixed memory leak from commit efb64fdf80
   
-  The http authentication state is still kept in the easy handle since all
-  http auth _except_ NTLM is connection independent and thus survive over
-  multiple connections.
+  The unescapped DN was not freed after a successful character conversion.
+
+- ldap.c: Fixed compilation error
   
-  Bug: http://curl.haxx.se/mail/lib-2014-08/0148.html
-  Reported-by: Paras S
+  ldap.c:738: error: macro "LDAP_TRACE" passed 2 arguments, but takes
+              just 1
 
-- curl.1: clarify --limit-rate's effect on both directions
+- ldap.c: Fixed compilation warning
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1414
-  Reported-by: teo8976
+  ldap.c:89: warning: extra tokens at end of #endif directive
+
+- ldap: Fixed support for Unicode DN in Win32 search call
 
-- curl.1: mention the --post30x options within the --location desc
+- ldap: Fixed Unicode user and password in Win32 bind calls
 
-Dan Fandrich (22 Aug 2014)
-- sasl: Fixed a memory leak on OOM
+- ldap: Fixed Unicode host name in Win32 initialisation calls
 
-Daniel Stenberg (22 Aug 2014)
-- [Frank Meier brought this change]
+- ldap: Use host.dispname for infof() connection failure messages
+  
+  As host.name may be encoded use dispname for infof() failure messages.
+
+- ldap: Prefer 'CURLcode result' for curl result codes
 
-  NTLM: ignore CURLOPT_FORBID_REUSE during NTLM HTTP auth
+- ldap: Pass write length in all Curl_client_write() calls
   
-  Problem: if CURLOPT_FORBID_REUSE is set, requests using NTLM failed
-  since NTLM requires multiple requests that re-use the same connection
-  for the authentication to work
+  As we get the length for the DN and attribute variables, and we know
+  the length for the line terminator, pass the length values rather than
+  zero as this will save Curl_client_write() from having to perform an
+  additional strlen() call.
+
+- ldap: Fixed attribute memory leaks on failed client write
   
-  Solution: Ignore the forbid reuse flag in case the NTLM authentication
-  handshake is in progress, according to the NTLM state flag.
+  Fixed memory leaks from commit 086ad79970 as was noted in the commit
+  comments.
+
+- ldap: Fixed DN memory leaks on failed client write
   
-  Fixed known bug #77.
+  Fixed memory leaks from commit 086ad79970 as was noted in the commit
+  comments.
 
-Steve Holme (22 Aug 2014)
-- openssl.c: Fixed longer than 79 columns
+- curl_ntlm_core.c: Fixed compilation warning from commit 1cb17b2a5d
+  
+  curl_ntlm_core.c:146: warning: passing 'DES_cblock' (aka 'unsigned char
+                        [8]') to parameter of type 'char *' converts
+                        between pointers to integer types with different
+                        sign
 
-- openssl.c: Fixed compilation warning
+- ntlm: Use extend_key_56_to_64() for all cryptography engines
   
-  warning: declaration of 'minor' shadows a global declaration
+  Rather than duplicate the code in setup_des_key() for OpenSSL and in
+  extend_key_56_to_64() for non-OpenSSL based crypto engines, as it is
+  the same, use extend_key_56_to_64() for all engines.
 
-Daniel Stenberg (21 Aug 2014)
-- [Haris Okanovic brought this change]
+- RELEASE-NOTES: Synced with 34f0bd110f
 
-  win32: Fixed WinSock 2 #if
-  
-  A conditionally compiled block in connect.c references WinSock 2
-  symbols, but used `#ifdef HAVE_WINSOCK_H` instead of `#ifdef
-  HAVE_WINSOCK2_H`.
+- curl_ntlm_core.c: Fixed compilation warning
   
-  Bug: http://curl.haxx.se/mail/lib-2014-08/0155.html
+  curl_ntlm_core.c:458: warning: 'ascii_uppercase_to_unicode_le' defined
+                        but not used
 
-- Curl_disconnect: don't free the URL
+- endian: Fixed bit-shift in 64-bit integer read functions
   
-  The URL is not a property of the connection so it should not be freed in
-  the connection disconnect but in the Curl_close() that frees the easy
-  handle.
+  From commit 43792592ca and 4bb5a351b2.
   
-  Bug: http://curl.haxx.se/mail/lib-2014-08/0148.html
-  Reported-by: Paras S
+  Reported-by: Michael Osipov
 
-- help output: minor whitespace edits
-  
-  Should've been amended in the previous commit but wasn't due to a
-  mistake.
+- smb: Use endian functions for reading NBT and message size values
 
-- [Zearin brought this change]
+- endian: Added big endian read functions
 
-  help output: use ≥2 spaces between option and description
-  
-  ... and some other cleanups
+- endian: Added 64-bit integer read function
 
-- FAQ: some actually sometimes get paid...
+- COPYING: Bumped copyright year to 2015
 
-Steve Holme (17 Aug 2014)
-- sasl_sspi: Fixed a memory leak with the GSSAPI base-64 decoded challenge
+- version: Bump copyright year to 2015
 
-- sasl_sspi: Renamed GSSAPI mutual authentication parameter
+- smb.c: Fixed compilation warnings
   
-  ...From "mutual" to "mutual_auth" which better describes what it is.
+  smb.c:780: warning: passing 'char *' to parameter of type 'unsigned
+             char *' converts between pointers to integer types with
+             different sign
+  smb.c:781: warning: passing 'char *' to parameter of type 'unsigned
+             char *' converts between pointers to integer types with
+             different sign
+  smb.c:804: warning: passing 'char *' to parameter of type 'unsigned
+             char *' converts between pointers to integer types with
+             different sign
 
-- sasl_sspi: Corrected some of the GSSAPI security message error codes
-  
-  Corrected a number of the error codes that can be returned from the
-  Curl_sasl_create_gssapi_security_message() function when things go
-  wrong.
-  
-  It makes more sense to return CURLE_BAD_CONTENT_ENCODING when the
-  inbound security challenge can't be decoded correctly or doesn't
-  contain the KERB_WRAP_NO_ENCRYPT flag and CURLE_OUT_OF_MEMORY when
-  EncryptMessage() fails. Unfortunately the previous error code of
-  CURLE_RECV_ERROR was a copy and paste mistakes on my part and should
-  have been correct in commit 4b491c675f :(
+- smb: Use endian functions for reading length and offset values
 
-- docs: Escaped single backslash
+- endian: Added 16-bit integer write function
 
-- TODO: Updated following GSSAPI (Kerberos V5) additions
-  
-  Updated "FTP 4.6 GSSAPI via Windows SSPI" and "SASL 14.1 Other
-  authentication mechanisms" following recent additions.
+- endian: Fixed Linux compilation issues
   
-  Added SASL 14.2 GSSAPI via GSS-API libraries.
+  Having files named endian.[c|h] seemed to cause issues under Linux so
+  renamed them both to have the curl_ prefix in the filenames.
 
-- CURLOPT_USERNAME.3: Added Kerberos V5 and NTLM domain information
-  
-  This repeats what has already been documented in both the curl manpage
-  and CURLOPT_USERPWD documentation but is provided here for completeness
-  as someone may not especially read the latter when using libcurl.
+- [Julien Nabet brought this change]
 
-- CURLOPT_USERPWD.3: Updated following Kerberos V5 SSPI changes
+  lib1900.c: Fixed cppcheck error
   
-  Added information about Kerberos V5 requiring the domain part in the
-  user name.
+  lib1900.c:182: (style) Array index 'handlenum' is used before limits
+                 check
   
-  Mentioned that the user name can be specified in UPN format, and not
-  just in Down-Level Logon Name format, following the information
-  added in commit 7679cb3fa8 reworking the exisitng information in the
-  process.
+  Bug: https://github.com/bagder/curl/pull/133
 
-- docs: Added Kerberos V5 and NTLM domain information to --user
+- endian: Added standard function descriptions
 
-- docs: Added Kerberos V5 to the --user SSPI current credentials usage
+- endian: Renamed functions for curl API naming convention
 
-- sasl_sspi: Tell the server we don't support a GSSAPI receive buffer
+- endian: Moved write functions to new module
 
-- smtp: Added support for GSSAPI (Kerberos V5) authentication via Windows SSPI
+- endian: Moved read functions to new module
 
-- pop3: Added support for GSSAPI (Kerberos V5) authentication via Windows SSPI
+- endian: Introduced endian module
+  
+  To allow the little endian functions, currently used in two of the NTLM
+  source files, to be used by other modules such as the SMB module.
 
-- imap: Added support for GSSAPI (Kerberos V5) authentication via Windows SSPI
+- sepheaders.c: Applied curl oding standards
 
-- email: Added mutual authentication flag
+- [Julien Nabet brought this change]
 
-Daniel Stenberg (15 Aug 2014)
-- RELEASE-NOTES: synced with 0187c9e11d079
+  sepheaders.c: Fixed resource leak on failure
 
-- http: fix the Content-Range: parser
+- vtls: Use '(void) arg' for unused parameters
   
-  ... to handle "*/[total]". Also, removed the strange hack that made
-  CURLOPT_FAILONERROR on a 416 response after a *RESUME_FROM return
-  CURLE_OK.
+  Prefer void for unused parameters, rather than assigning an argument to
+  itself as a) unintelligent compilers won't optimize it out, b) it can't
+  be used for const parameters, c) it will cause compilation warnings for
+  clang with -Wself-assign and d) is inconsistent with other areas of the
+  curl source code.
+
+- smb.c: Fixed compilation warning
   
-  Reported-by: Dimitrios Siganos
-  Bug: http://curl.haxx.se/mail/lib-2014-06/0221.html
+  smb.c:586: warning: conversion to 'short unsigned int' from 'int' may
+             alter its value
 
-Steve Holme (14 Aug 2014)
-- email: Introduced the GSSAPI states
+- [Bill Nagel brought this change]
 
-- curl_sasl_sspi.c: Fixed more compilation warnings from commit 4b491c675f
-  
-  warning: unused variable 'resp'
+  smb: Use the connection's upload buffer
   
-  warning: no previous prototype for 'Curl_sasl_gssapi_cleanup'
+  Use the connection's upload buffer instead of allocating our own send
+  buffer.
 
-- SHA-1: 61c93383b7f6cf79d12ff99e9dced1d1cc2a7064
-  
-  * curl_sasl_sspi.c: Fixed compilation warning from commit 4b491c675f
-  
-  warning: declaration of 'result' shadows a previous local
+- RELEASE-NOTES: Synced with 1933f9d33c
 
-- curl_sasl.h: Fixed compilation error from commit 4b491c675f
-  
-  warning: 'struct kerberos5data' declared inside parameter list
+- schannel: Moved the ISC return flag definitions to the SSPI module
   
-  Due to missing forward declaration.
+  Moved our Initialize Security Context return attribute definitions to
+  the SSPI module, as a) these can be used by other SSPI based providers
+  and b) the ISC required attributes are defined there.
 
-- urldata.h: Fixed compilation warnings from commit 3ec253532e
-  
-  warning: extra tokens at end of #endif directive
+- [Bill Nagel brought this change]
 
-- sasl_sspi: Added GSSAPI message functions
+  smb: Close the connection after a failed client write
 
-- urldata: Introduced a GSSAPI (Kerberos V5) data structure
+- darwinssl: Fixed compilation warning
   
-  Added a kerberos5data structure which is similar in nature to the
-  ntlmdata and negotiatedata structures.
+  vtls.c:683:43: warning: unused parameter 'data'
 
-- sspi: Moved KERB_WRAP_NO_ENCRYPT from socks_sspi module
+- sockfilt.c: Fixed compilation warnings
   
-  In preparation for the upcoming SSPI implementation of GSSAPI
-  authentication, moved the definition of KERB_WRAP_NO_ENCRYPT from
-  socks_sspi.c to curl_sspi.h allowing it to be shared amongst other
-  SSPI based code.
-
-Daniel Stenberg (13 Aug 2014)
-- mk-ca-bundle.pl: add missing $
+  sockfilt.c:288: warning: conversion to 'DWORD' from 'size_t' may alter
+                  its value
+  sockfilt.c:291: warning: conversion to 'DWORD' from 'size_t' may alter
+                  its value
+  sockfilt.c:323: warning: conversion to 'DWORD' from 'size_t' may alter
+                  its value
+  sockfilt.c:326: warning: conversion to 'DWORD' from 'size_t' may alter
+                  its value
 
-- mk-ca-bundle.pl: switched to using hg.mozilla.org
-  
-  ... as mxr.mozilla.org is due to be retired.
-  
-  The new host doesn't support If-Modified-Since nor ETags, meaning that
-  the script will now defer to download and do a post-transfer checksum
-  check to see if a new output is to be generated. The new output format
-  will hold the SHA1 checksum of the source file for that purpose.
-  
-  We call this version 1.22
+- test1509: Fixed compilation warning
   
-  Reported-by: Ed Morley
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1409
-
-- [Jose Alf brought this change]
+  lib1509.c:93:18: warning: conversion to 'long int' from 'size_t' may
+                   alter its value
 
-  openssl: fix version report for the 0.9.8 branch
+- test556: Fixed compilation warning
   
-  Fixed libcurl to correctly output the newer versions of OpenSSL 0.9.8,
-  starting from openssl-0.9.8za.
+  lib556.c:90: warning: conversion to 'unsigned int' from 'size_t' may
+               alter its value
 
-- [Frank Meier brought this change]
+- sasl_gssapi: Fixed use of dummy username with real username
 
-  create_conn: prune dead connections
+- vtls: Fixed compilation warning and an ignored return code
   
-  Bringing back the old functionality that was mistakenly removed when the
-  connection cache was remade. When creating a new connection, all the
-  existing ones are checked and those that are known to be dead get
-  disconnected for real and removed from the connection cache. It helps
-  the cache from holding on to very many stale connections and aids in
-  keeping down the number of system sockets in wait states.
+  curl_schannel.h:123: warning: right-hand operand of comma expression
+                       has no effect
   
-  Help-by: Jonatan Vela <jonatan.vela@ergon.ch>
+  Some instances of the curlssl_close_all() function were declared with a
+  void return type whilst others as int. The schannel version returned
+  CURLE_NOT_BUILT_IN and others simply returned zero, but in all cases the
+  return code was ignored by the calling function Curl_ssl_close_all().
   
-  Bug: http://curl.haxx.se/mail/lib-2014-06/0189.html
-
-Kamil Dudka (11 Aug 2014)
-- docs/SSLCERTS: update the section about NSS database
+  For the time being and to keep the internal API consistent, changed all
+  declarations to use a void return type.
   
-  Bug: http://curl.haxx.se/mail/lib-2014-07/0335.html
-  Reported-by: David Shaw
+  To reduce code we might want to consider removing the unimplemented
+  versions and use a void #define like schannel does.
 
-Daniel Stenberg (11 Aug 2014)
-- [Peter Wang brought this change]
+Daniel Stenberg (28 Dec 2014)
+- TODO: 2.3 Better support for same name resolves
 
-  Curl_poll + Curl_wait_ms: fix timeout return value
-  
-  Curl_poll and Curl_wait_ms require the fix applied to Curl_socket_check
-  in commits b61e8b8 and c771968:
+Steve Holme (28 Dec 2014)
+- test1520: Fixed initial teething problems
   
-  When poll or select are interrupted and coincides with the timeout
-  elapsing, the functions return -1 indicating an error instead of 0 for
-  the timeout.
-
-Steve Holme (10 Aug 2014)
-- config-tpf.h: Fixed up line lengths > 79 characters
-
-- config-symbian.h: Fixed up line lengths > 79 characters
+  * Missing initialisation of upload status caused a seg fault
+  * Missing data termination caused corrupt data to be uploaded
+  * Data verification should be performed in <upload> element
+  * Added missing recipient list cleanup
 
-- tool_hugehelp.c.cvs: Added copyright
-  
-  Added copyright due to warning from checksrc.pl.
+- test1520: Fixed compilation errors
 
-- RELEASE-NOTES: Synced with cd6ecf6a89
+- tests: Added test for bug #1456
 
-- sasl_sspi: Fixed hard coded buffer for response generation
-  
-  Given the SSPI package info query indicates a token size of 4096 bytes,
-  updated to use a dynamic buffer for the response message generation
-  rather than a fixed buffer of 1024 bytes.
+- checksrc.bat: Fixed a problem opening files with spaces in the filename
 
-- sasl_sspi: Fixed missing free of challenge buffer on SPN failure
+- openldap: Prefer use of 'CURLcode result'
 
-- http_negotiate_sspi: Tidy up to remove the get_gss_name() function
+- openldap: Use 'LDAPMessage *msg' for messages
   
-  Due to the reduction of code in commit 3b924b29 of get_gss_name() the
-  function isn't necessary anymore.
+  This frees up the 'result' variable for CURLcode based result codes.
 
-- http_negotiate_sspi: Use a dynamic buffer for SPN generation
-  
-  Updated to use a dynamic buffer for the SPN generation via the recently
-  introduced Curl_sasl_build_spn() function rather than a fixed buffer of
-  1024 characters, which should have been more than enough, but by using
-  the new function removes the need for another variable sname to do the
-  wide character conversion in Unicode builds.
+- nss: Don't ignore Curl_extract_certinfo() OOM failure
 
-- sasl: Tidy up to rename SPN variable from URI
+- nss: Don't ignore Curl_ssl_init_certinfo() OOM failure
 
-- sasl: Use a dynamic buffer for SPN generation
+- nss: Use 'CURLcode result' for curl result codes
   
-  Updated Curl_sasl_create_digest_md5_message() to use a dynamic buffer
-  for the SPN generation via the recently introduced Curl_sasl_build_spn()
-  function rather than a fixed buffer of 128 characters.
+  ...and don't use CURLE_OK in failure/success comparisons.
 
-- sasl_sspi: Fixed SPN not being converted to wchar under Unicode builds
-  
-  Curl_sasl_create_digest_md5_message() would simply cast the SPN variable
-  to a TCHAR when calling InitializeSecurityContext(). This meant that,
-  under Unicode builds, it would not be valid wide character string.
-  
-  Updated to use the recently introduced Curl_sasl_build_spn() function
-  which performs the correct conversion for us.
+- getinfo: Code style policing
 
-- sasl: Introduced Curl_sasl_build_spn() for building a SPN
-  
-  Various parts of the libcurl source code build a SPN for inclusion in
-  authentication data. This information is either used by our own native
-  generation routines or passed to authentication functions in third-party
-  libraries such as SSPI. However, some of these instances use fixed
-  buffers rather than dynamically allocated ones and not all of those that
-  should, convert to wide character strings in Unicode builds.
-  
-  Implemented a common function that generates a SPN and performs the
-  wide character conversion where necessary.
+- getinfo: Use 'CURLcode result' for curl result codes
 
-- sasl_sspi: Fixed memory leak with not releasing Package Info struct
-  
-  Curl_sasl_create_digest_md5_message() wouldn't free the Package Info
-  structure after QuerySecurityPackageInfo() had allocated it.
+- darwinssl: Use 'CURLcode result' for curl result codes
 
-- [Michael Osipov brought this change]
+- polarssl: Use 'CURLcode result' for curl result codes
 
-  docs: Update SPNEGO and GSS-API related doc sections
+- docs: Updated following the addition of SASL GSSAPI via GSS-API libraries
   
-  Reflect recent changes in SPNEGO and GSS-API code in the docs.
-  Update them with appropriate namings and remove visible spots for
-  GSS-Negotiate.
+  As this feature has been implemented for 7.40.0.
 
-- sspi: Minor code tidy up to standardise coding style
-  
-  Following the recent changes and in attempt to align the SSPI based
-  authentication code performed the following:
+- asiohiper.cpp: No need to initialise members of ConnInfo
   
-  * Use NULL and SECBUFFVERSION rather than hard coded constants.
-  * Avoid comparison of zero in if statements.
-  * Standardised the buf and desc setup code.
+  ...as calloc() automatically clears the area of memory with zeros.
 
-- schannel: Fixed compilation warning in vtls.c
+- asiohiper.cpp: Updated for curl coding standards
   
-  vtls.c:688:43: warning: unused parameter 'data'
+  ...with the exception of the start of block statement curly brackets.
 
-- tool_getparam.c: Fixed compilation warning
+- code/docs: Use correct case for IPv4 and IPv6
   
-  warning: `orig_opt' might be used uninitialized in this function
-
-- RELEASE-NOTES: Synced with 159c3aafd8
-
-Daniel Stenberg (8 Aug 2014)
-- curl_ntlm_msgs: make < 80 columns wide
+  For consistency, as we seem to have a bit of a mixed bag, changed all
+  instances of ipv4 and ipv6 in comments and documentations to use the
+  correct case.
 
-Steve Holme (8 Aug 2014)
-- ntlm: Fixed hard coded buffer for SSPI based auth packet generation
+- runtests: Fixed detection of Unix Sockets feature
   
-  Given the SSPI package info query indicates a token size of 2888 bytes,
-  and as with the Winbind code and commit 9008f3d56, use a dynamic buffer
-  for the Type-1 and Type-3 message generation rather than a fixed buffer
-  of 1024 bytes.
+  ...following change in curl --version output.
 
-- ntlm: Added support for SSPI package info query
+- code/docs: Use Unix rather than UNIX to avoid use of the trademark
   
-  Just as with the SSPI implementations of Digest and Negotiate added a
-  package info query so that libcurl can a) return a more appropriate
-  error code when the NTLM package is not supported and b) it can be of
-  use later to allocate a dynamic buffer for the Type-1 and Type-3
-  output tokens rather than use a fixed buffer of 1024 bytes.
-
-Daniel Stenberg (7 Aug 2014)
-- http2: added some more logging for debugging stream problems
-
-- [Tatsuhiro Tsujikawa brought this change]
-
-  HTTP/2: Reset promised stream, not its associated stream.
-
-- [Tatsuhiro Tsujikawa brought this change]
-
-  HTTP/2: Move :authority before non-pseudo header fields
-
-- http2: show the received header for better debugging
+  Use Unix when generically writing about Unix based systems as UNIX is
+  the trademark and should only be used in a particular product's name.
 
-- openssl: replace call to OPENSSL_config
-  
-  OPENSSL_config() is "strongly recommended" to use but unfortunately that
-  function makes an exit() call on wrongly formatted config files which
-  makes it hard to use in some situations. OPENSSL_config() itself calls
-  CONF_modules_load_file() and we use that instead and we ignore its
-  return code!
+- ip2ip.c: Fixed compilation warning when IPv6 Scope ID not supported
   
-  Reported-by: Jan Ehrhardt
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1401
-
-Dan Fandrich (7 Aug 2014)
-- [Fabian Keil brought this change]
-
-  runtests.pl: Pad test case numbers with up to three zeroes
+  if2ip.c:119: warning: unused parameter 'remote_scope_id'
   
-  Test case numbers with four digits have been available for a
-  while now.
-
-Steve Holme (7 Aug 2014)
-- docs: Added Negotiate to the SSPI current credentials usage description
-
-- TODO: HTTP Digest via Windows SSPI
-
-- TODO: FTP GSSAPI via Windows SSPI
+  ...and some minor code style policing in the same function.
 
-- http_negotiate_sspi: Fixed specific username and password not working
+- vtls: Don't set cert info count until memory allocation is successful
   
-  Bug: http://curl.haxx.se/mail/lib-2014-06/0224.html
-  Reported-by: Leonardo Rosati
+  Otherwise Curl_ssl_init_certinfo() can fail and set the num_of_certs
+  member variable to the requested count, which could then be used
+  incorrectly as libcurl closes down.
 
-- http_negotiate_sspi: Fixed endless unauthorized loop in commit 6bc76194e8
-  
-  If the server rejects our authentication attempt and curl hasn't
-  called CompleteAuthToken() then the status variable will be
-  SEC_I_CONTINUE_NEEDED and not SEC_E_OK.
-  
-  As such the existing detection mechanism for determining whether or not
-  the authentication process has finished is not sufficient.
+- vtls: Use CURLcode for Curl_ssl_init_certinfo() return type
   
-  However, the WWW-Authenticate: Negotiate header line will not contain
-  any data when the server has exhausted the negotiation, so we can use
-  that coupled with the already allocated context pointer.
-
-Daniel Stenberg (5 Aug 2014)
-- RELEASE-NOTES: synced with 5b37db44a3eb
-
-Dan Fandrich (5 Aug 2014)
-- parsedate.c: fix the return code for an overflow edge condition
-
-Daniel Stenberg (5 Aug 2014)
-- [Toby Peterson brought this change]
-
-  darwinssl: don't use strtok()
+  The return type for this function was 0 on success and 1 on error. This
+  was then examined by the calling functions and, in most cases, used to
+  return CURLE_OUT_OF_MEMORY.
   
-  The GetDarwinVersionNumber() function uses strtok, which is not
-  thread-safe.
+  Instead use CURLcode for the return type and return the out of memory
+  error directly, propagating it up the call stack.
 
-- Curl_ossl_version: adapted to detect BoringSSL
+- configure: Use camel case for UNIX sockets feature output
   
-  This seems to be the way it should work. Right now we can't build with
-  BoringSSL and try this out properly due to a minor API breakage.
+  To match the curl --version output.
 
-- Curl_ossl_version: detect and show libressl
+Marc Hoersken (26 Dec 2014)
+- sockfilt.c: Reduce the number of individual memory allocations
   
-  LibreSSL is otherwise OpenSSL API compliant (so far)
-
-- [Tatsuhiro Tsujikawa brought this change]
-
-  HTTP/2: Fix infinite loop in readwrite_data()
+  Merge multiple internal arrays into one, even if some variables
+  will not not be used. They are all created with the number of
+  file descriptors as their size.
   
-  To prevent infinite loop in readwrite_data() function when stream is
-  reset before any response body comes, reset closed flag to false once
-  it is evaluated to true.
-
-Dan Fandrich (3 Aug 2014)
-- gtls: only define Curl_gtls_seed if Nettle is not being used
-
-- ssl: provide Curl_ssl_backend even if no SSL library is available
-
-Daniel Stenberg (2 Aug 2014)
-- [Tatsuhiro Tsujikawa brought this change]
+  Also fix possible thread handle leak in CloseHandle-loop.
 
-  HTTP2: Support expect: 100-continue
+- sockfilt.c: Replace 100ms sleep with thread throttle
   
-  "Expect: 100-continue", which was once deprecated in HTTP/2, is now
-  resurrected in HTTP/2 draft 14.  This change adds its support to
-  HTTP/2 code.  This change also includes stricter header field
-  checking.
-
-- CURLOPT_SSL_VERIFYPEER.3. add a warning about disabling it
-
-- FEATURES: minor update
-
-- openssl: make ossl_send return CURLE_OK better
+  Improves performance of test cases 574 and 575 by 50%.
   
-  Previously it only returned a CURLcode for errors, which is when it
-  returns a different size than what was passed in to it.
+  A value of zero causes the thread to relinquish the remainder
+  of its time slice to any other thread of equal priority that is
+  ready to run. If there are no other threads of equal priority
+  ready to run, the function returns immediately, and the thread
+  continues execution.
   
-  The http2 code only checked the curlcode and thus failed.
-
-- RELEASE-NOTES: synced with 7bb4c8cadb5d0
-
-- [Michael Wallner brought this change]
-
-  CURLOPT_HEADEROPT.3: typo: do -> to
-
-- [Marcel Raad brought this change]
+  http://msdn.microsoft.com/library/windows/desktop/ms686307.aspx
 
-  schannel: use CryptGenRandom for random numbers
-  
-  This function is available for every Windows version since Windows 95/NT.
+Steve Holme (25 Dec 2014)
+- tool_help: Use camel case for UNIX sockets feature output
   
-  reference:
-  http://msdn.microsoft.com/en-us/library/windows/desktop/aa379942.aspx
+  In line with the other features listed in the --version output,
+  capitalise the UNIX socket feature.
 
-- curl_version_info.3: 'ssl_version_num' is always 0
+- vtls: Use bool for Curl_ssl_getsessionid() return type
   
-  ... and has been so since 2005
+  The return type of this function is a boolean value, and even uses a
+  bool internally, so use bool in the function declaration as well as
+  the variables that store the return value, to avoid any confusion.
 
-- ssl: generalize how the ssl backend identifier is set
-  
-  Each backend now defines CURL_SSL_BACKEND accordingly. Added the *AXTLS
-  one which was missing previously.
+- schannel: Minor code style policing for casts
 
-Dan Fandrich (31 Jul 2014)
-- axtls: define curlssl_random using axTLS's PRNG
+- schannel: Prefer 'CURLcode result' for curl result codes
+
+- cyassl: Prefer 'CURLcode result' for curl result codes
+
+- tool_xattr: Use 'CURLcode result' for curl result codes
 
-- cyassl: fix the test for ASN_NO_SIGNER_E
+- curl_ntlm_core.c: Fixed compilation warnings
   
-  It's an enum so a macro test won't work. The CyaSSL changelog doesn't
-  say exactly when this error code was introduced, but it's likely
-  to be 2.7.0.
+  curl_ntlm_core.c:301: warning: pointer targets in passing argument 2 of
+                        'CryptImportKey' differ in signedness
+  curl_ntlm_core.c:310: warning: passing argument 6 of 'CryptEncrypt' from
+                        incompatible pointer type
+  curl_ntlm_core.c:540: warning: passing argument 4 of 'CryptGetHashParam'
+                        from incompatible pointer type
 
-- cyassl: use RNG_GenerateBlock to generate a good random number
+- RELEASE-NOTES: Synced with 8830df8b66
 
-- opts: fixed some typos
+- gtls: Use preferred 'CURLcode result'
 
-- smtp: fixed a segfault during test 1320 torture test
+- openldap: Use standard naming for setup connection function
   
-  Under these circumstances, the connection hasn't been fully established
-  and smtp_connect hasn't been called, yet smtp_done still calls the state
-  machine which dereferences the NULL conn pointer in struct pingpong.
+  Renamed ldap_setup() to ldap_setup_connection() to follow more widely
+  used function naming.
 
-Daniel Stenberg (30 Jul 2014)
-- vtls: repair build without TLS support
+- rtmp: Use standard naming for setup connection function
   
-  ... by defining Curl_ssl_random() properly
+  Renamed rtmp_setup() to rtmp_setup_connection() to follow more widely
+  used function naming.
 
-- polarssl: provide a (weak) random function
+- smb: Use standard naming for setup connection function
   
-  This now provides a weak random function since PolarSSL doesn't have a
-  quick and easy way to provide a good one. It does however provide the
-  framework to make one so it _can_ and _should_ be done...
+  Renamed smb_setup() to smb_setup_connection() to follow more widely
+  used function naming.
 
-- [Michael Wallner brought this change]
+- config-win32.h: Fixed line length > 79 columns
 
-  curl_tlsinfo -> curl_tlssessioninfo
+- openssl: Prefer we don't use NULL in comparisons
 
-- cyassl: use the default (weeker) random
+- build: Removed WIN32 definition from the Visual Studio projects
   
-  I couldn't find any dedicated function in its API to get a "good" random
-  with.
+  As this pre-processor definition is defined in curl_setup.h there is no
+  need to include it in the Visual Studio project files.
 
-- cyassl: made it compile with version 2.0.6 again
+- build: Removed WIN64 definition from the libcurl Visual Studio projects
   
-  ASN_NO_SIGNER_E didn't exist back then!
-
-- vtls: make the random function mandatory in the TLS backend
+  Removed the WIN64 pre-processor definition from the libcurl project
+  files as:
   
-  To force each backend implementation to really attempt to provide proper
-  random. If a proper random function is missing, then we can explicitly
-  make use of the default one we use when TLS support is missing.
+  * WIN64 is not used in our source code
+  * The curl projects files don't define it
+  * It isn't required by or used in the platform SDK
+  * For backwards compatability curl_setup.h defines WIN32
+  * The compiler automatically defines _WIN64 for x64 builds
   
-  This commit makes sure it works for darwinssl, gnutls, nss and openssl.
-
-- libcurl.m4: include the standard source header
+  Historically Visual Studio projects have defined WIN32, in addition to
+  the compiler defined _WIN32 definition, and I had incorrectly changed
+  that to WIN64 for the x64 libcurl builds but not in the curl projects.
+  
+  As such, it is questionable whether this should be defined or not. For
+  more information see the following cache of a discussion that took
+  place on the microsoft.public.vc.mfc newsgroup:
   
-  ... with permission from David Shaw
+  http://www.tech-archive.net/Archive/VC/microsoft.public.vc.mfc/2008-06/msg00074.html
 
-Kamil Dudka (28 Jul 2014)
-- nss: do not check the version of NSS at run time
+- openssl.c Fix for compilation errors with older versions of OpenSSL
   
-  The minimal required version of NSS is 3.14.x so it does not make sense
-  to check for NSS 3.12.0+ at run time.
+  openssl.c:1408: error: 'TLS1_1_VERSION' undeclared
+  openssl.c:1411: error: 'TLS1_2_VERSION' undeclared
 
-Daniel Stenberg (28 Jul 2014)
-- [Anthon Pang brought this change]
+Daniel Stenberg (22 Dec 2014)
+- [John Malmberg brought this change]
 
-  curl.h: bring back CURLE_OBSOLETE16
-  
-  Removing defines, even obsolete ones that haven't been used for a very
-  long time, still break a lot of applications.
+  Fix comment edit in vms/backup_gnv_curl_src.com
   
-  Bug: https://github.com/bagder/curl/pull/106
+  packages/vms/backup_gnv_curl_src.com: Originally copied from Bash port.
 
-Dan Fandrich (26 Jul 2014)
-- [Fabian Keil brought this change]
+- curl: show size of inhibited data when using -v
+  
+  To offer some more info and yet it doesn't use more lines.
 
-  tests: Fix a couple of incomplete response lines
+- openssl: fix SSL/TLS versions in verbose output
 
-- [Fabian Keil brought this change]
+- openssl: make it compile against openssl 1.1.0-DEV master branch
 
-  runtests.pl: Remove filteroff() which hasn't been used since 2001
+Marc Hoersken (22 Dec 2014)
+- sshserver.pl: clarify and streamline variable names
 
-- [Fabian Keil brought this change]
+Daniel Stenberg (21 Dec 2014)
+- openssl: warn for SRP set if SSLv3 is used, not for TLS version
+  
+  ... as it requires TLS and it was was left to warn on the default from
+  when default was SSL...
 
-  runtests.pl: Don't expect $TESTDIR/DISABLED to exist
+- smb: use memcpy() instead of strncpy()
   
-  If a non-standard $TESTDIR is used the file may not be necessary.
+  ... as it never copies the trailing zero anyway and always just the four
+  bytes so let's not mislead anyone into thinking it is actually treated
+  as a string.
   
-  Previously a "missing" file resulted in the warning:
-  readline() on closed filehandle D at ./runtests.pl line 4940.
-
-- [Fabian Keil brought this change]
+  Coverity CID: 1260214
 
-  getpart.pm: Fix a comment typo
+- [John E. Malmberg brought this change]
 
-Daniel Stenberg (25 Jul 2014)
-- c-ares: fix build without IPv6 support
+  VMS: Updates for 0740-0D1220
   
-  Bug: http://curl.haxx.se/mail/lib-2014-07/0337.html
-  Reported-by: Spork Schivago
-
-- Curl_base64url_encode: unit-tested in 1302
-
-- base64: added Curl_base64url_encode()
+  lib/setup-vms.h : VAX HP OpenSSL port is ancient, needs help.
+                    More defines to set symbols to uppercase.
   
-  This is now used by the http2 code. It has two different symbols at the
-  end of the base64 table to make the output "url safe".
+  src/tool_main.c : Fix parameter to vms_special_exit() call.
   
-  Bug: https://github.com/tatsuhiro-t/nghttp2/issues/62
-
-- [Marcel Raad brought this change]
-
-  SSPI Negotiate: Fix 3 memory leaks
+  packages/vms/ :
+    backup_gnv_curl_src.com : Fix the error message to have the correct package.
   
-  Curl_base64_decode allocates the output string by itself and two other
-  strings were not freed either.
-
-- symbols: CURL_VERSION_GSSNEGOTIATE is deprecated
-
-- test1013.pl: GSS-Negotiate doesn't exist as a feature anymore
-
-- [Sergey Nikulov brought this change]
-
-  libtest: fixed duplicated line in Makefile
+    build_curl-config_script.com : Rewrite to be more accurate.
   
-  Bug: https://github.com/bagder/curl/pull/105
-
-Patrick Monnerat (23 Jul 2014)
-- GSSAPI: remove useless *_MECHANISM defines.
-
-Daniel Stenberg (23 Jul 2014)
-- findprotocol: show unsupported protocol within quotes
+    build_libcurl_pc.com : Use tool_version.h now.
   
-  ... to aid when for example prefixed with a space or other weird
-  character.
-
-Patrick Monnerat (23 Jul 2014)
-- GSSAPI: private export mechanisms OIDs. OS400: Make RPG binding up to date.
-
-Daniel Stenberg (23 Jul 2014)
-- [Marcel Raad brought this change]
-
-  conncache: fix compiler warning
+    build_vms.com : Fix to handle lib/vtls directory.
   
-  warning C4267: '=' : conversion from 'size_t' to 'long', possible loss
-  of data
+    curl_gnv_build_steps.txt : Updated build procedure documentation.
   
-  The member connection_id of struct connectdata is a long (always a
-  32-bit signed integer on Visual C++) and the member next_connection_id
-  of struct conncache is a size_t, so one of them should be changed to
-  match the other.
+    generate_config_vms_h_curl.com :
+         * VAX does not support 64 bit ints, so no NTLM support for now.
+         * VAX HP SSL port is ancient, needs some help.
+         * Disable NGHTTP2 for now, not ported to VMS.
+         * Disable UNIX_SOCKETS, not available on VMS yet.
+         * HP GSSAPI port does not have gss_nt_service_name.
   
-  This patch the size_t in struct conncache to long (the less invasive
-  change as that variable is only ever used in a single code line).
+    gnv_link_curl.com : Update for new curl structure.
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1399
+    pcsi_product_gnv_curl.com : Set up to optionally do a complete build.
 
-- RELEASE-NOTES: synced with 81cd24adb8b
+Marc Hoersken (21 Dec 2014)
+- sockfilt.c: use non-Ex functions that are available before WinXP
+  
+  It was initially reported by Guenter that GetFileSizeEx
+  requires (_WIN32_WINNT >= 0x0500) to be true.
 
-- http2: more and better error checking
+- tests: use Cygwin-style paths in SSH, SSHD and SFTP config files
   
-  1 - fixes the warnings when built without http2 support
+  Second patch to enable Windows support using Cygwin-based OpenSSH.
   
-  2 - adds CURLE_HTTP2, a new error code for errors detected by nghttp2
-  basically when they are about http2 specific things.
+  Tested with CopSSH 5.0.0 free edition using an msys shell on Windows 7.
 
-Dan Fandrich (23 Jul 2014)
-- cyassl.c: return the correct error code on no CA cert
+- tests: support spaces in paths to SSH, SSHD and SFTP binaries
   
-  CyaSSL 3.0.0 returns a unique error code if no CA cert is available,
-  so translate that into CURLE_SSL_CACERT_BADFILE when peer verification
-  is requested.
-
-Daniel Stenberg (23 Jul 2014)
-- symbols-in-versions: new SPNEGO/GSS-API symbols in 7.38.0
+  First patch to enable Windows support using Cygwin-based OpenSSH.
 
-- test1013.pl: remove SPNEGO/GSS-API tweaks
+Steve Holme (20 Dec 2014)
+- non-ascii: Reduce variable usage
   
-  No longer necessary after Michael Osipov's rework
-
-- http_negotiate: remove unused variable
-
-- [Michael Osipov brought this change]
-
-  docs: Improve inline GSS-API naming in code documentation
-
-- [Michael Osipov brought this change]
+  Removed 'next' variable in Curl_convert_form(). Rather than setting it
+  from 'form->next' and using that to set 'form' after the conversion
+  just use 'form = form->next' instead.
 
-  curl.h/features: Deprecate GSS-Negotiate macros due to bad naming
+- non-ascii: Prefer while loop rather than a do loop
   
-  - Replace CURLAUTH_GSSNEGOTIATE with CURLAUTH_NEGOTIATE
-  - CURL_VERSION_GSSNEGOTIATE is deprecated which
-    is served by CURL_VERSION_SSPI, CURL_VERSION_GSSAPI and
-    CURUL_VERSION_SPNEGO now.
-  - Remove display of feature 'GSS-Negotiate'
-
-- [Michael Osipov brought this change]
-
-  configure/features: Add feature and version info for GSS-API and SPNEGO
-
-- [Michael Osipov brought this change]
+  This also removes the need to check that the 'form' argument is valid.
 
-  HTTP: Remove checkprefix("GSS-Negotiate")
+- non-ascii: Reduce variable scope
   
-  That auth mech has never existed neither on MS nor on Unix side.
-  There is only Negotiate over SPNEGO.
-
-- [Michael Osipov brought this change]
+  As 'result' isn't used out side the conversion callback code and
+  previously caused variable shadowing in the libiconv based code.
 
-  curl_gssapi: Add macros for common mechs and pass them appropriately
+- non-ascii: We prefer 'CURLcode result'
   
-  Macros defined: KRB5_MECHANISM and SPNEGO_MECHANISM called from
-  HTTP, FTP and SOCKS on Unix
+  This also fixes a variable shadowing issue when HAVE_ICONV is defined
+  as rc was declared for the result code of libiconv based functions.
 
-- CONNECT: Revert Curl_proxyCONNECT back to 7.29.0 design
-  
-  This reverts commit cb3e6dfa3511 and instead fixes the problem
-  differently.
-  
-  The reverted commit addressed a test failure in test 1021 by simplifying
-  and generalizing the code flow in a way that damaged the
-  performance. Now we modify the flow so that Curl_proxyCONNECT() again
-  does as much as possible in one go, yet still do test 1021 with and
-  without valgrind. It failed due to mistakes in the multi state machine.
+Marc Hoersken (19 Dec 2014)
+- secureserver.pl: clean up formatting of config and fix verbose output
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1397
-  Reported-by: Paul Saab
+  Verbose output was not matching the actual configuration file,
+  because FIPS and Windows conditions were ignored.
 
-- [Marcel Raad brought this change]
+- secureserver.pl: update Windows detection and fix path conversion
 
-  url.c: use the preferred symbol name: *READDATA
-  
-  with CURL_NO_OLDIES defined, it doesn't compile because this deprecated
-  symbol (*INFILE) is used
+- secureserver.pl: make OpenSSL CApath and cert absolute path values
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1398
+  Recent stunnel versions (5.08) seem to have trouble with relative
+  paths on Windows. This turns the relative paths into absolute ones.
 
-Dan Fandrich (19 Jul 2014)
-- [Alessandro Ghedini brought this change]
+Patrick Monnerat (18 Dec 2014)
+- if2ip: dummy scope parameter for Curl_if2ip() call in SIOCGIFADDR-enabled code.
 
-  CURLOPT_CHUNK_BGN_FUNCTION: fix typo
+- [Kyle J. McKay brought this change]
 
-Kamil Dudka (18 Jul 2014)
-- [Alessandro Ghedini brought this change]
+  parseurlandfillconn(): fix improper non-numeric scope_id stripping.
+  Fixes SF bug 1149: http://sourceforge.net/p/curl/bugs/1449/
 
-  build: link curl to NSS libraries when NSS support is enabled
-  
-  This fixes a build failure on Debian caused by commit
-  24c3cdce88f39731506c287cb276e8bf4a1ce393.
+- IPV6: address scope != scope id
+  There was a confusion between these: this commit tries to disambiguate them.
+  - Scope can be computed from the address itself.
+  - Scope id is scope dependent: it is currently defined as 1-based local
+    interface index for link-local scoped addresses, and as a site index(?) for
+    (obsolete) site-local addresses. Linux only supports it for link-local
+    addresses.
+  The URL parser properly parses a scope id as an interface index, but stores it
+  in a field named "scope": confusion. The field has been renamed into "scope_id".
+  Curl_if2ip() used the scope id as it was a scope. This caused failures
+  to bind to an interface.
+  Scope is now computed from the addresses and Curl_if2ip() matches them.
+  If redundantly specified in the URL, scope id is check for mismatch with
+  the interface index.
   
-  Bug: http://curl.haxx.se/mail/lib-2014-07/0209.html
+  This commit should fix SF bug #1451.
 
-Steve Holme (17 Jul 2014)
-- build: Removed unnecessary XML Documentation file directive from VC8 to VC12
-  
-  The curl tool project files for VC8 to VC12 would set this setting to
-  $(IntDir) which is the Visual Studio default value. To avoid confusion
-  when viewing settings from within Visual Studio and for consistency
-  with the libcurl project files removed this setting.
-  
-  Conflicts:
-       projects/Windows/VC10/src/curlsrc.tmpl
-       projects/Windows/VC11/src/curlsrc.tmpl
-       projects/Windows/VC12/src/curlsrc.tmpl
-       projects/Windows/VC8/src/curlsrc.tmpl
-       projects/Windows/VC9/src/curlsrc.tmpl
+- connect: singleipconnect(): properly try other address families after failure
 
-- build: Removed unnecessary Precompiled Header file directive in VC7 to VC12
-  
-  The curl tool project files for VC7 to VC12 would set this settings to
-  $(IntDir)$(TargetName).pch which is the Visual Studio default value. To
-  avoid confusion when viewing settings from within Visual Studio and for
-  consistency with the libcurl project files removed this setting.
+Daniel Stenberg (16 Dec 2014)
+- SFTP: work-around servers that return zero size on STAT
   
-  Conflicts:
-       projects/Windows/VC10/src/curlsrc.tmpl
-       projects/Windows/VC11/src/curlsrc.tmpl
-       projects/Windows/VC12/src/curlsrc.tmpl
-       projects/Windows/VC8/src/curlsrc.tmpl
-       projects/Windows/VC9/src/curlsrc.tmpl
+  Bug: http://curl.haxx.se/mail/lib-2014-12/0103.html
+  Pathed-by: Marc Renault
 
-- build: Removed unnecessary ASM and Object file directives in VC7 to VC12
+- glob_next_url: make the loop count upwards
   
-  The curl tool project files for VC7 to VC12 would set these settings to
-  $(IntDir) which is the Visual Studio default value. To avoid confusion
-  when viewing settings from within Visual Studio and for consistency
-  with the libcurl project files removed these two settings.
+  As the former contruct apparently caused a compiler warning, mentioned
+  in d8efde07e556c.
 
-Daniel Stenberg (17 Jul 2014)
-- [Dave Reisner brought this change]
+- tool_operate: we prefer 'CURLcode result'
 
-  src/Makefile.am: add .DELETE_ON_ERROR
-  
-  This prevents targets like tool_hugehelp.c from leaving around
-  half-constructed files if the rule fails with GNU make.
+- tool_urlglob: unify return codes to use CURLcode
   
-  Reported-by: Rafaël Carré <funman@videolan.org>
-
-- THANKS: added new contributors from 7.37.1 announcement
-
-Dan Fandrich (17 Jul 2014)
-- testcurl.pl: log the value of --runtestopts in the test header
-
-Daniel Stenberg (16 Jul 2014)
-- RELEASE-NOTES: cleared, working towards next release
-
-- curl_gssapi.c: make line shorter than 80 columns
+  There was a mix of GlobCode, CURLcode and ints and they were mostly
+  passing around CURLcode errors. This change makes the functions use only
+  CURLcode and removes the GlobCode type completely.
 
-- [David Woodhouse brought this change]
+- tool_urlglob.c: partly reverse dc19789444
+  
+  The loop in glob_next_url() needs to be done backwards to maintain the
+  logic. dc19789444 caused test 1235 to fail.
 
-  Fix negotiate auth to proxies to track correct state
+- KNOWN_BUGS: the SFTP code doesn't support CURLINFO_FILETIME
 
-- [David Woodhouse brought this change]
+- [Jay Satiro brought this change]
 
-  Don't abort Negotiate auth when the server has a response for us
+  opts: Warn CURLOPT_TIMEOUT overrides when set after CURLOPT_TIMEOUT_MS
   
-  It's wrong to assume that we can send a single SPNEGO packet which will
-  complete the authentication. It's a *negotiation* — the clue is in the
-  name. So make sure we handle responses from the server.
+  Change CURLOPT_TIMEOUT doc to warn that if CURLOPT_TIMEOUT and
+  CURLOPT_TIMEOUT_MS are both set whichever one is set last is the one
+  that will be used.
   
-  Curl_input_negotiate() will already handle bailing out if it thinks the
-  state is GSS_S_COMPLETE (or SEC_E_OK on Windows) and the server keeps
-  talking to us, so we should avoid endless loops that way.
-
-- [David Woodhouse brought this change]
+  Prior to this change that behavior was only noted in the
+  CURLOPT_TIMEOUT_MS doc.
 
-  Don't clear GSSAPI state between each exchange in the negotiation
-  
-  GSSAPI doesn't work very well if we forget everything ever time.
+Nick Zitzmann (15 Dec 2014)
+- darwinssl: fix incorrect usage of aprintf()
   
-  XX: Is Curl_http_done() the right place to do the final cleanup?
+  Commit b13923f changed an snprintf() to use aprintf(), but the API usage
+  wasn't correct, and was causing a crash to occur. This fixes it.
 
-- [David Woodhouse brought this change]
+Steve Holme (14 Dec 2014)
+- copyright: Updated the copyright year following recent updates
 
-  Use SPNEGO for HTTP Negotiate
-  
-  This is the correct way to do SPNEGO. Just ask for it
+Daniel Stenberg (14 Dec 2014)
+- tool_urlglob.c: reverse two loops
   
-  Now I correctly see it trying NTLMSSP authentication when a Kerberos ticket
-  isn't available. Of course, we bail out when the server responds with the
-  challenge packet, since we don't expect that. But I'll fix that bug next...
+  By counting from 0 and up instead of backwards like before, we remove
+  the need for the "funny" check of the unsigned variable when decreased
+  passed zero. Easier to read and less risk for compiler warnings.
 
-- [David Woodhouse brought this change]
+Marc Hoersken (14 Dec 2014)
+- tool_urlglob.c: Added braces to clarify the conditions
 
-  Remove all traces of FBOpenSSL SPNEGO support
-  
-  This is just fundamentally broken. SPNEGO (RFC4178) is a protocol which
-  allows client and server to negotiate the underlying mechanism which will
-  actually be used to authenticate. This is *often* Kerberos, and can also
-  be NTLM and other things. And to complicate matters, there are various
-  different OIDs which can be used to specify the Kerberos mechanism too.
-  
-  A SPNEGO exchange will identify *which* GSSAPI mechanism is being used,
-  and will exchange GSSAPI tokens which are appropriate for that mechanism.
-  
-  But this SPNEGO implementation just strips the incoming SPNEGO packet
-  and extracts the token, if any. And completely discards the information
-  about *which* mechanism is being used. Then we *assume* it was Kerberos,
-  and feed the token into gss_init_sec_context() with the default
-  mechanism (GSS_S_NO_OID for the mech_type argument).
-  
-  Furthermore... broken as this code is, it was never even *used* for input
-  tokens anyway, because higher layers of curl would just bail out if the
-  server actually said anything *back* to us in the negotiation. We assume
-  that we send a single token to the server, and it accepts it. If the server
-  wants to continue the exchange (as is required for NTLM and for SPNEGO
-  to do anything useful), then curl was broken anyway.
+- tool_urlglob.c: Silence warning C6293: Ill-defined for-loop
   
-  So the only bit which actually did anything was the bit in
-  Curl_output_negotiate(), which always generates an *initial* SPNEGO
-  token saying "Hey, I support only the Kerberos mechanism and this is its
-  token".
+  The >= 0 is actually not required, since i underflows and
+  the for-loop is stopped using the < condition, but this
+  makes the VS2012 compiler and code analysis happy.
+
+- tool_binmode.c: Explicitly ignore the return code of setmode
   
-  You could have done that by manually just prefixing the Kerberos token
-  with the appropriate bytes, if you weren't going to do any proper SPNEGO
-  handling. There's no need for the FBOpenSSL library at all.
+  Fixes code analysis warning C6031:
+  return value ignored: <function> could return unexpected value
+
+- lib: Fixed multiple code analysis warnings if SAL are available
   
-  The sane way to do SPNEGO is just to *ask* the GSSAPI library to do
-  SPNEGO. That's what the 'mech_type' argument to gss_init_sec_context()
-  is for. And then it should all Just Work™.
+  warning C28252: Inconsistent annotation for function:
+  parameter has another annotation on this instance
+
+Steve Holme (14 Dec 2014)
+- smb.c: Fixed code analysis warning
   
-  That 'sane way' will be added in a subsequent patch, as will bug fixes
-  for our failure to handle any exchange other than a single outbound
-  token to the server which results in immediate success.
+  smb.c:320: warning C6297: Arithmetic overflow: 32-bit value is shifted,
+             then cast to 64-bit value. Result may not be an expected
+             value
 
-- [David Woodhouse brought this change]
+Marc Hoersken (14 Dec 2014)
+- tool_util.c: Use GetTickCount64 if it is available
 
-  ntlm_wb: Avoid invoking ntlm_auth helper with empty username
+Steve Holme (14 Dec 2014)
+- smb: Use HAVE_PROCESS_H for process.h inclusion
+  
+  Rather than testing against _WIN32 use the preferred HAVE_PROCESS_H
+  pre-processor define when including process.h.
 
-- [David Woodhouse brought this change]
+Daniel Stenberg (14 Dec 2014)
+- darwinssl: aprintf() to allocate the session key
+  
+  ... to avoid using a fixed memory size that risks being too large or too
+  small.
 
-  ntlm_wb: Fix hard-coded limit on NTLM auth packet size
+Marc Hoersken (14 Dec 2014)
+- curl_schannel: Improvements to memory re-allocation strategy
+  
+  - do not grow memory by doubling its size
+  - do not leak previously allocated memory if reallocation fails
+  - replace while-loop with a single check to make sure
+    that the requested amount of data fits into the buffer
   
-  Bumping it to 1KiB in commit aaaf9e50ec is all very well, but having hit
-  a hard limit once let's just make it cope by reallocating as necessary.
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1450
+  Reported-by: Warren Menzer
 
-Version 7.37.1 (16 Jul 2014)
+Steve Holme (14 Dec 2014)
+- asyn-ares: We prefer use of 'CURLcode result'
 
-Daniel Stenberg (16 Jul 2014)
-- RELEASE-NOTES: synced with 4cb2521595
+Marc Hoersken (14 Dec 2014)
+- curl_schannel.c: Data may be available before connection shutdown
 
-- test506: verify aa6884845168
-  
-  After the fixed cookie lock deadlock, this test now passes and it
-  detects double-locking and double-unlocking of mutexes.
+Steve Holme (14 Dec 2014)
+- http2: Use 'CURLcode result' for curl result codes
 
-- [Yousuke Kimoto brought this change]
+- asyn-thread:  We prefer 'CURLcode result'
 
-  cookie: avoid mutex deadlock
-  
-  ... by removing the extra mutex locks around th call to
-  Curl_flush_cookies() which takes care of the locking itself already.
+- smb: Fixed unnecessary initialisation of struct member variables
   
-  Bug: http://curl.haxx.se/mail/lib-2014-02/0184.html
+  There is no need to set the 'state' and 'result' member variables to
+  SMB_REQUESTING (0) and CURLE_OK (0) after the allocation via calloc()
+  as calloc() initialises the contents to zero.
 
-- gnutls: fix compiler warning
+- ntlm: Fixed return code for bad type-2 Target Info
   
-  conversion to 'int' from 'long int' may alter its value
+  Use CURLE_BAD_CONTENT_ENCODING for bad type-2 Target Info security
+  buffers just like we do for bad decodes.
 
-Dan Fandrich (15 Jul 2014)
-- test320: strip off the actual negotiated cipher width
+- ntlm: Remove unnecessary casts in readshort_le()
   
-  It's irrelevant to the test, and will change depending on which SSL
-  library is being used by libcurl.
+  I don't think both of my fix ups from yesterday were needed to fix the
+  compilation warning, so remove the one that I think is unnecessary and
+  let the next Android autobuild prove/disprove it.
 
-- gnutls: detect lack of SRP support in GnuTLS at run-time and try without
+- curl_ntlm_msgs.c: Another attempt to fix compilation warning
   
-  Reported-by: David Woodhouse
-
-Daniel Stenberg (14 Jul 2014)
-- [Michał Górny brought this change]
+  curl_ntlm_msgs.c:170: warning: conversion to 'short unsigned int' from
+                        'int' may alter its value
 
-  configure: respect host tool prefix for krb5-config
-  
-  Use ${host_alias}-krb5-config if available. This improves cross-
-  compilation support and fixes multilib on Gentoo (at least).
+Guenter Knauf (13 Dec 2014)
+- synctime.c: added own user-agent string.
 
-- [David Woodhouse brought this change]
+Steve Holme (13 Dec 2014)
+- smb.c: Fixed line longer than 79 columns
 
-  gnutls: handle IP address in cert name check
+- curl_ntlm_msgs.c: Fixed compilation warning from commit 783b5c3b11
   
-  Before GnuTLS 3.3.6, the gnutls_x509_crt_check_hostname() function
-  didn't actually check IP addresses in SubjectAltName, even though it was
-  explicitly documented as doing so. So do it ourselves...
-
-Dan Fandrich (14 Jul 2014)
-- build: set _POSIX_PTHREAD_SEMANTICS on Solaris to get proper getpwuid_r
+  curl_ntlm_msgs.c:169: warning: conversion to 'short unsigned int' from
+                        'int' may alter its value
 
-Daniel Stenberg (14 Jul 2014)
-- RELEASE-NOTES: next one is called 7.37.1
+Guenter Knauf (13 Dec 2014)
+- mk-ca-bundle.pl: restored forced run again.
 
-Dan Fandrich (13 Jul 2014)
-- gnutls: improved error message if setting cipher list fails
+- synctime.c: removed another timeserver URL.
   
-  Reported-by: David Woodhouse
+  worldtimeserver.com seems also no longer available.
 
-- netrc: fixed thread safety problem by using getpwuid_r if available
-  
-  The old way using getpwuid could cause problems in programs that enable
-  reading from netrc files simultaneously in multiple threads.
+- synctime.c: fixed timeserver URLs.
   
-  Reported-by: David Woodhouse
-
-- RELEASE-NOTES: add the reporter of the previous bug fix
+  For getting the date header its not necessary to access special
+  pages or even CGI scripts - all pages including the main index
+  reply with the date header, therefore shortened URLs to domain.
+  Removed worldtime.com; added pool.ntp.org.
 
-- netrc: treat failure to find home dir same as missing netrc file
+Steve Holme (13 Dec 2014)
+- ftp.c: Fixed compilation warning when no verbose string support
   
-  This previously caused a fatal error (with a confusing error code, at
-  that).
+  ftp.c:819: warning: unused parameter 'lineno'
+
+- smb: Added state change functions to assist with debugging
   
-  Reported by: Glen A Johnson Jr.
+  For debugging purposes, and as per other protocols within curl, added
+  state change functions rather than changing the states directly.
 
-Steve Holme (12 Jul 2014)
-- RELEASE-NOTES: Synced with aaaf9e50ec
+- ntlm: Use short integer when decoding 16-bit values
 
-- ntlm_wb: Fixed buffer size not being large enough for NTLMv2 sessions
-  
-  Bug: http://curl.haxx.se/mail/lib-2014-07/0103.html
-  Reported-by: David Woodhouse
+- RELEASE-NOTES: Synced with 6291a16b20
 
-- build: Fixed overridden compiler PDB settings in VC7 to VC12
+- smtp.c: Fixed compilation warnings
   
-  The curl tool project files for VC7 to VC12 would override the default
-  setting with the output filename being the same as the linker PDB file.
-  As such the compiler file would be overwritten with the linker file
-  for all debug builds.
+  smtp.c:2357 warning: adding 'size_t' (aka 'unsigned long') to a string
+              does not append to the string
+  smtp.c:2375 warning: adding 'size_t' (aka 'unsigned long') to a string
+              does not append to the string
+  smtp.c:2386 warning: adding 'size_t' (aka 'unsigned long') to a string
+              does not append to the string
   
-  To avoid this overwrite and for consistency with the libcurl project
-  files, removed the setting to force the default filename to be used.
-
-Dan Fandrich (12 Jul 2014)
-- tests: added globbing keyword to URL globbing tests
-
-- Fixed some "statement not reached" warnings
-
-- gnutls: fixed a couple of uninitialized variable references
+  Used array index notation instead.
 
-- gnutls: fixed compilation against versions < 2.12.0
+- smb: Disable SMB when 64-bit integers are not supported
   
-  The AES-GCM ciphers were added to GnuTLS as late as ver. 3.0.1 but
-  the code path in which they're referenced here is only ever used for
-  somewhat older GnuTLS versions. This caused undeclared identifier errors
-  when compiling against those.
+  This fixes compilation issues with compilers that don't support 64-bit
+  integers through long long or __int64.
 
-- gnutls: explicitly added SRP to the priority string
+- ntlm: Disable NTLM v2 when 64-bit integers are not supported
   
-  This seems to have become necessary for SRP support to work starting
-  with GnuTLS ver. 2.99.0. Since support for SRP was added to GnuTLS
-  before the function that takes this priority string, there should be no
-  issue with backward compatibility.
-
-- tests: adjust for capitalization differences in newer gnutls-serv
+  This fixes compilation issues with compilers that don't support 64-bit
+  integers through long long or __int64 which was introduced in commit
+  07b66cbfa4.
 
-- test320/1/2/4: fix the port number substitution variables
+- ntlm: Allow NTLM2Session messages when USE_NTRESPONSES manually defined
   
-  These tests have been broken since commit 1958fe57 in Oct. 2011
+  Previously USE_NTLM2SESSION would only be defined automatically when
+  USE_NTRESPONSES wasn't already defined. Separated the two definitions
+  so that the user can manually set USE_NTRESPONSES themselves but
+  USE_NTLM2SESSION is defined automatically if they don't define it.
 
-- tests: document more test identifiers and variables
+- smtp.c: Fixed line longer than 79 columns
 
-- gnutls: ignore invalid certificate dates with VERIFYPEER disabled
+- config-win32.h: Don't enable Windows Crypt API if using OpenSSL
   
-  This makes the behaviour consistent with what happens if a date can
-  be extracted from the certificate but is expired.
-
-Steve Holme (10 Jul 2014)
-- CURLOPT_UPLOAD: Corrected argument type
+  As the OpenSSL and NSS Crypto engines are prefered by the core NTLM
+  routines, to the Windows Crypt API, don't define USE_WIN32_CRYPT
+  automatically when either OpenSSL or NSS are in use - doing so would
+  disable NTLM2Session responses in NTLM type-3 messages.
 
-Daniel Stenberg (9 Jul 2014)
-- FAQ: expand the thread-safe section
+- smtp: Fixed inappropriate free of the scratch buffer
   
-  ... with a mention of *NOSIGNAL, based on talk in bug #1386
-
-Dan Fandrich (9 Jul 2014)
-- url.c: Fixed memory leak on OOM
+  If the scratch buffer was allocated in a previous call to
+  Curl_smtp_escape_eob(), a new buffer not allocated in the subsequent
+  call and no action taken by that call, then an attempt would be made to
+  try and free the buffer which, by now, would be part of the data->state
+  structure.
   
-  This showed itself on some systems with torture failures
-  in tests 1060 and 1061
+  This bug was introduced in commit 4bd860a001.
 
-- Update instances of some obsolete CURLOPTs to their new names
+- smtp: Fixed dot stuffing when EOL characters were at end of input buffers
+  
+  Fixed a problem with the CRLF. detection when multiple buffers were
+  used to upload an email to libcurl and the line ending character(s)
+  appeared at the end of each buffer. This meant any lines which started
+  with . would not be escaped into .. and could be interpreted as the end
+  of transmission string instead.
+  
+  This only affected libcurl based applications that used a read function
+  and wasn't reproducible with the curl command-line tool.
+  
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1456
+  Assisted-by: Patrick Monnerat
 
-Daniel Stenberg (5 Jul 2014)
-- [Marcel Raad brought this change]
+Daniel Stenberg (11 Dec 2014)
+- telnet: fix "cast increases required alignment of target type"
 
-  compiler warnings: potentially uninitialized variables
+- ntlm_wb_response: fix "statement not reached"
   
-  ... pointed out by MSVC2013
+  ... and I could use a break instead of a goto to end the loop.
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1391
+  Bug: http://curl.haxx.se/mail/lib-2014-12/0089.html
+  Reported-by: Tor Arntsen
 
-Kamil Dudka (4 Jul 2014)
-- nss: make the list of CRL items global
+Steve Holme (10 Dec 2014)
+- RELEASE-NOTES: Synced with 1cc5194337
   
-  Otherwise NSS could use an already freed item for another connection.
-
-- nss: fix a memory leak when CURLOPT_CRLFILE is used
+  Added some bug fixes that I had missed in previous synchronisations.
 
-- nss: make crl_der allocated on heap
+Daniel Stenberg (10 Dec 2014)
+- Curl_unix2addr: avoid using the variable name 'sun'
   
-  ... and spell it as crl_der instead of crlDER
-
-- nss: let nss_{cache,load}_crl return CURLcode
+  I suspect this causes compile failures on Solaris:
+  
+  Bug: http://curl.haxx.se/mail/lib-2014-12/0081.html
 
-- tool: oops, forgot to include <plarenas.h>
+Steve Holme (10 Dec 2014)
+- url.c: Fixed compilation warning when USE_NTLM is not defined
   
-  ... that contains the declaration of PL_ArenaFinish()
+  url.c:3078: warning: variable 'credentialsMatch' set but not used
 
-- tool: call PL_ArenaFinish() on exit if NSPR is used
+- parsedate.c: Fixed compilation warning
   
-  This prevents valgrind from reporting still reachable memory allocated
-  by NSPR arenas (mainly the freelist).
+  parsedate.c:548: warning: 'parsed' may be used uninitialized in this
+                   function
   
-  Reported-by: Hubert Kario
-
-Daniel Stenberg (3 Jul 2014)
-- [Dimitrios Siganos brought this change]
+  As curl_getdate() returns -1 when parsedate() fails we can initialise
+  parsed to -1.
 
-  example: use correct type (long) for CURLOPT_FOLLOWLOCATION
+Daniel Stenberg (10 Dec 2014)
+- TODO: Cache negative name resolves
+  
+  Worth exploring
 
-- [Dimitrios Siganos brought this change]
+- ldap: check Curl_client_write() return codes
+  
+  There might be one or two memory leaks left in the error paths.
 
-  Document type of argument for CURLOPT_FOLLOWLOCATION.
+- ldap: rename variables to comply to curl standards
 
-- [Dimitrios Siganos brought this change]
+Dan Fandrich (10 Dec 2014)
+- sws.c: Fixed 'rc' may be used uninitialized warning
 
-  Document type of argument for CURLOPT_ERRORBUFFER.
+- cookies: Improved OOM handling in cookies
+  
+  This fixes the test 506 torture test. The internal cookie API really
+  ought to be improved to separate cookie parsing errors (which may be
+  ignored) with OOM errors (which should be fatal).
 
-- [Dimitrios Siganos brought this change]
+Guenter Knauf (9 Dec 2014)
+- synctime.c: fixed user-agent setting.
+  
+  Some websites meanwhile refuse to reply to requests from ancient
+  browsers like IE6, therefore I've comment out this setting, but
+  also fixed the string to now fake IE8 if someone enables it.
 
-  Document type of argument for CURLOPT_COPYPOSTFIELDS.
+Daniel Stenberg (9 Dec 2014)
+- smb: fix unused return code warning
 
-- [Dimitrios Siganos brought this change]
+Patrick Monnerat (9 Dec 2014)
+- Curl_client_write() & al.: chop long data, convert data only once.
 
-  Document type of argument for CURLOPT_ADDRESS_SCOPE.
+Guenter Knauf (9 Dec 2014)
+- VC build: added sspi define for winssl-zlib builds.
 
-- curl.1: minor language fix
+Daniel Stenberg (9 Dec 2014)
+- schannel_recv: return the correct code
   
-  Bug: http://curl.haxx.se/mail/archive-2014-07/0006.html
-
-- [Ray Satiro brought this change]
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1462
+  Reported-by: Tae Hyoung Ahn
 
-  progress callback: skip last callback update on errors
-  
-  When an error has been detected, skip the final forced call to the
-  progress callback by making sure to pass the current return code
-  variable in the Curl_done() call in the CURLM_STATE_DONE state.
-  
-  This avoids the "extra" callback that could occur even if you returned
-  error from the progress callback.
-  
-  Bug: http://curl.haxx.se/mail/lib-2014-06/0062.html
-  Reported by: Jonathan Cardoso Machado
+- http2: avoid logging neg "failure" if h2 was not requested
 
-Dan Fandrich (2 Jul 2014)
-- opts: fixed some CURLOPT references so they get turned into links
+- openldap: do not ignore Curl_client_write() return codes
 
-Kamil Dudka (2 Jul 2014)
-- tool: call PR_Cleanup() on exit if NSPR is used
-  
-  This prevents valgrind from reporting possibly lost memory that NSPR
-  uses for file descriptor cache and other globally allocated internal
-  data structures.
+- compile: warn on unused return code from Curl_client_write()
 
-- nss: make the fallback to SSLv3 work again
-  
-  This feature was unintentionally disabled by commit ff92fcfb.
+Patrick Monnerat (8 Dec 2014)
+- SMB: Fix a data size mismatch that broke SMB on big-endian platforms
 
-- nss: do not abort on connection failure
+Steve Holme (7 Dec 2014)
+- smb: Fixed Windows autoconf builds following commit eb88d778e7
   
-  ... due to calling SSL_VersionRangeGet() with NULL file descriptor
+  As Windows based autoconf builds don't yet define USE_WIN32_CRYPTO
+  either explicitly through --enable-win32-cypto or automatically on
+  _WIN32 based platforms, subsequent builds broke with the following
+  error message:
   
-  reported-by: upstream tests 305 and 404
-
-Dan Fandrich (1 Jul 2014)
-- opts: Document the socket callback function parameters
-
-Steve Holme (28 Jun 2014)
-- opts: Fixed some typos
+  "Can't compile NTLM support without a crypto library."
 
-Dan Fandrich (25 Jun 2014)
-- curl_easy_setopt.3: fixed the error code for an unsupported option
+- RELEASE-NOTES: Synced with 526603ff05
 
-- opts: added some DEFAULT and RETURN VALUE sections
+- [Bill Nagel brought this change]
 
-Daniel Stenberg (21 Jun 2014)
-- libcurl docs: man page edits
+  smb: Build with SSPI enabled
   
-  mainly to improve how the web versions render
+  Build SMB/CIFS protocol support when SSPI is enabled.
 
-Dan Fandrich (21 Jun 2014)
-- curl_easy_setopt.3: fixed some typos
+- [Bill Nagel brought this change]
 
-Daniel Stenberg (21 Jun 2014)
-- lib man pages: update easy setopt option references
+  ntlm: Use Windows Crypt API
   
-  ... by using the "\fIopt(3)\fP" syntax they will be linked properly when
-  the web version of the page is generated.
-
-- opts: the CURLOPT_SSL_ENABLE_*PN options are enabled by default
-
-- [Colin Hogben brought this change]
+  Allow the use of the Windows Crypt API for NTLMv1 functions.
 
-  lib: documentation updates in README.hostip
+Dan Fandrich (7 Dec 2014)
+- cookie.c: Refactored cleanup code to simplify
   
-  c-ares now does support IPv6;
-  avoid implying threaded resolver is Windows-only;
-  two referenced source files were renamed in 7de2f92
+  Also, fixed the outdated comments on the cookie API.
 
-- curl_easy_setopt.3: CURLOPT_POSTFIELDS is the exception
-  
-  ... to the always-copy-char *-argument.
+- get_url_file_name: Fixed crash on OOM on debug build
   
-  And fix some minor mistakes.
+  This caused a null-pointer dereference which caused a few dozen
+  torture tests to fail.
 
-- curl_easy_setopt.3: refer to the individual man pages
+Steve Holme (6 Dec 2014)
+- sws.c: Fixed compilation warning
   
-  With all the new individual option man pages created, this now refers to
-  each separate one instead of duplicaing the info. Also makes this page
-  easier to overview.
-
-Dan Fandrich (21 Jun 2014)
-- opts: fixed mancheck for out-of-tree builds
+  sws.c:2191 warning: 'rc' may be used uninitialized in this function
 
-Daniel Stenberg (21 Jun 2014)
-- curl_easy_setopt.3: shorten
+- ftp.c: Fixed compilation warnings when proxy support disabled
   
-  shorten descriptions, mostly refer to the separate descriptions
-
-- CURLOPT_DNS_LOCAL_IP4.3: better short desc
-
-Dan Fandrich (20 Jun 2014)
-- opts: document CURLE_OUT_OF_MEMORY among other return values
-
-- opts: fixed some typos
-
-Daniel Stenberg (20 Jun 2014)
-- opts: various corrections
+  ftp.c:1827 warning: unused parameter 'newhost'
+  ftp.c:1827 warning: unused parameter 'newport'
 
-- opts: add the rest of the options
+- smb: Fixed a problem with large file transfers
   
-  ... and fixed mancheck to ignore obsolete options
-
-- opts: the final bunch of options as man pages
+  Fixed an issue with the message size calculation where the raw bytes
+  from the buffer were interpreted as signed values rather than unsigned
+  values.
   
-  Now all current options have their own man pages.
-
-- opts: 37 additional man pages
+  Reported-by: Gisle Vanem
+  Assisted-by: Bill Nagel
 
-- CURLOPT_URL: move up the text from "Notes"
+- smb: Moved the URL decoding into a separate function
 
-- ROADMAP: removed, now ROADMAP.md
+- smb: Fixed URL encoded URLs not working
 
-- ROADMAP.md: make it markdown formatted
+- Makefile.inc: Added our standard header and updated file formatting
 
-- ROADMAP: initial commit of "curl the next few years"
+- Makefile.inc: Updated file formatting
   
-  To be further discussed, debated and edited
-
-- opts: more man pages
-
-- CURLOPT_UNRESTRICTED_AUTH.3: added missing 'T'
-
-- opts: makefile now includes all current man pages
-
-- opts: 11 more man pages
-
-Dan Fandrich (18 Jun 2014)
-- opts: document CURLE_OUT_OF_MEMORY as RETURN VALUE
+  Aligned continuation character and used space as the separator
+  character as per other makefile files.
 
-- opts: fixed a couple of typos
+- curl_md4.h: Updated copyright year following recent edit
+  
+  ...and minor layout adjustment.
 
-Patrick Monnerat (18 Jun 2014)
-- OS400: make it compilable again. Make RPG binding up to date.
+Patrick Monnerat (5 Dec 2014)
+- SMB: Fix big endian problems. Make it OS/400 aware.
 
-- buildconf: do not search tools in current directory.
+- OS400: enable NTLM authentication
 
-Dan Fandrich (18 Jun 2014)
-- curl.h: renamed CURLOPT_DEPRECATEDx to CURLOPT_OBSOLETEx
+Steve Holme (5 Dec 2014)
+- multi.c: Fixed compilation warning
   
-  This is consistent with the existing obsolete error code naming
-  convention.
+  multi.c:2695: warning: declaration of `exp' shadows a global declaration
+
+Guenter Knauf (5 Dec 2014)
+- build: updated dependencies in makefiles.
 
-Daniel Stenberg (18 Jun 2014)
-- opts: 16 more man pages
+Steve Holme (5 Dec 2014)
+- sasl: Corrected formatting of function descriptions
index 4986a8e..dfaeaf3 100644 (file)
@@ -155,7 +155,7 @@ message(STATUS "LDFLAGS: ${_GSS_LIB_FLAGS}")
                 set(GSS_FLAVOUR "MIT")
             else()
                 # prevent compiling the header - just check if we can include it
-                set(CMAKE_REQUIRED_DEFINITIONS "-D__ROKEN_H__")
+                set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D__ROKEN_H__")
                 check_include_file( "roken.h" _GSS_HAVE_ROKEN_H)
 
                 check_include_file( "heimdal/roken.h" _GSS_HAVE_HEIMDAL_ROKEN_H)
index fc75d59..9a42cc7 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -76,6 +76,24 @@ option(BUILD_CURL_TESTS "Set to ON to build cURL tests." ON)
 option(CURL_STATICLIB "Set to ON to build libcurl with static linking." OFF)
 option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
 option(ENABLE_THREADED_RESOLVER "Set to ON to enable POSIX threaded DNS lookup" OFF)
+
+option(ENABLE_DEBUG "Set to ON to enable curl debug features" OFF)
+option(ENABLE_CURLDEBUG "Set to ON to build with TrackMemory feature enabled" OFF)
+
+if (ENABLE_DEBUG)
+  # DEBUGBUILD will be defined only for Debug builds
+  if(NOT CMAKE_VERSION VERSION_LESS 3.0)
+    set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:DEBUGBUILD>)
+  else()
+    set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUGBUILD)
+  endif()
+  set(ENABLE_CURLDEBUG ON)
+endif()
+
+if (ENABLE_CURLDEBUG)
+  set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS CURLDEBUG)
+endif()
+
 # initialize CURL_LIBS
 set(CURL_LIBS "")
 
@@ -238,6 +256,7 @@ include (CheckCSourceCompiles)
 
 # On windows preload settings
 if(WIN32)
+  set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WINSOCKAPI_")
   include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake)
 endif(WIN32)
 
@@ -279,7 +298,6 @@ endif()
 option(CMAKE_USE_OPENSSL "Use OpenSSL code. Experimental" ON)
 mark_as_advanced(CMAKE_USE_OPENSSL)
 
-set(USE_SSLEAY OFF)
 set(USE_OPENSSL OFF)
 set(HAVE_LIBCRYPTO OFF)
 set(HAVE_LIBSSL OFF)
@@ -288,32 +306,31 @@ if(CMAKE_USE_OPENSSL)
   find_package(OpenSSL)
   if(OPENSSL_FOUND)
     list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES})
-    set(USE_SSLEAY ON)
     set(USE_OPENSSL ON)
     set(HAVE_LIBCRYPTO ON)
     set(HAVE_LIBSSL ON)
     include_directories(${OPENSSL_INCLUDE_DIR})
     set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
-    check_include_file_concat("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
-    check_include_file_concat("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
-    check_include_file_concat("openssl/err.h"    HAVE_OPENSSL_ERR_H)
-    check_include_file_concat("openssl/pem.h"    HAVE_OPENSSL_PEM_H)
-    check_include_file_concat("openssl/pkcs12.h" HAVE_OPENSSL_PKCS12_H)
-    check_include_file_concat("openssl/rsa.h"    HAVE_OPENSSL_RSA_H)
-    check_include_file_concat("openssl/ssl.h"    HAVE_OPENSSL_SSL_H)
-    check_include_file_concat("openssl/x509.h"   HAVE_OPENSSL_X509_H)
-    check_include_file_concat("openssl/rand.h"   HAVE_OPENSSL_RAND_H)
+    check_include_file("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
+    check_include_file("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
+    check_include_file("openssl/err.h"    HAVE_OPENSSL_ERR_H)
+    check_include_file("openssl/pem.h"    HAVE_OPENSSL_PEM_H)
+    check_include_file("openssl/pkcs12.h" HAVE_OPENSSL_PKCS12_H)
+    check_include_file("openssl/rsa.h"    HAVE_OPENSSL_RSA_H)
+    check_include_file("openssl/ssl.h"    HAVE_OPENSSL_SSL_H)
+    check_include_file("openssl/x509.h"   HAVE_OPENSSL_X509_H)
+    check_include_file("openssl/rand.h"   HAVE_OPENSSL_RAND_H)
   endif()
 endif()
 
 if(NOT CURL_DISABLE_LDAP)
 
   if(WIN32)
-    option(CURL_LDAP_WIN "Use Windows LDAP implementation" ON)
-    if(CURL_LDAP_WIN)
+    option(USE_WIN32_LDAP "Use Windows LDAP implementation" ON)
+    if(USE_WIN32_LDAP)
       check_library_exists("wldap32" cldap_open "" HAVE_WLDAP32)
       if(NOT HAVE_WLDAP32)
-        set(CURL_LDAP_WIN OFF)
+        set(USE_WIN32_LDAP OFF)
       endif()
     endif()
   endif()
@@ -323,12 +340,12 @@ if(NOT CURL_DISABLE_LDAP)
   set(CMAKE_LDAP_LIB "ldap" CACHE STRING "Name or full path to ldap library")
   set(CMAKE_LBER_LIB "lber" CACHE STRING "Name or full path to lber library")
 
-  if(CMAKE_USE_OPENLDAP AND CURL_LDAP_WIN)
-    message(FATAL_ERROR "Cannot use CURL_LDAP_WIN and CMAKE_USE_OPENLDAP at the same time")
+  if(CMAKE_USE_OPENLDAP AND USE_WIN32_LDAP)
+    message(FATAL_ERROR "Cannot use USE_WIN32_LDAP and CMAKE_USE_OPENLDAP at the same time")
   endif()
   
   # Now that we know, we're not using windows LDAP...
-  if(NOT CURL_LDAP_WIN)
+  if(NOT USE_WIN32_LDAP)
     # Check for LDAP
     set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
     check_library_exists_concat(${CMAKE_LDAP_LIB} ldap_init HAVE_LIBLDAP)
@@ -384,7 +401,7 @@ if(NOT CURL_DISABLE_LDAP)
         return 0;
       }"
     )
-    set(CMAKE_REQUIRED_DEFINITIONS "-DLDAP_DEPRECATED=1" "-DWIN32_LEAN_AND_MEAN")
+    set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -DLDAP_DEPRECATED=1")
     list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LDAP_LIB})
     if(HAVE_LIBLBER)
       list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LBER_LIB})
@@ -474,7 +491,7 @@ mark_as_advanced(CMAKE_USE_GSSAPI)
 if(CMAKE_USE_GSSAPI)
   find_package(GSS)
 
-  set(HAVE_GSS_API ${GSS_FOUND})
+  set(HAVE_GSSAPI ${GSS_FOUND})
   if(GSS_FOUND)
 
     message(STATUS "Found ${GSS_FLAVOUR} GSSAPI version: \"${GSS_VERSION}\"")
@@ -537,15 +554,13 @@ endif()
 
 # Check for header files
 if(NOT UNIX)
-  check_include_file_concat("ws2tcpip.h"     HAVE_WS2TCPIP_H)
-  check_include_file_concat("winsock2.h"     HAVE_WINSOCK2_H)
-endif(NOT UNIX)
-check_include_file_concat("stdio.h"          HAVE_STDIO_H)
-if(NOT UNIX)
   check_include_file_concat("windows.h"      HAVE_WINDOWS_H)
   check_include_file_concat("winsock.h"      HAVE_WINSOCK_H)
+  check_include_file_concat("ws2tcpip.h"     HAVE_WS2TCPIP_H)
+  check_include_file_concat("winsock2.h"     HAVE_WINSOCK2_H)
 endif(NOT UNIX)
 
+check_include_file_concat("stdio.h"          HAVE_STDIO_H)
 check_include_file_concat("inttypes.h"       HAVE_INTTYPES_H)
 check_include_file_concat("sys/filio.h"      HAVE_SYS_FILIO_H)
 check_include_file_concat("sys/ioctl.h"      HAVE_SYS_IOCTL_H)
@@ -737,7 +752,6 @@ if(CMAKE_USE_OPENSSL)
     HAVE_CRYPTO_CLEANUP_ALL_EX_DATA)
   if(HAVE_LIBCRYPTO AND HAVE_LIBSSL)
     set(USE_OPENSSL 1)
-    set(USE_SSLEAY 1)
   endif(HAVE_LIBCRYPTO AND HAVE_LIBSSL)
 endif(CMAKE_USE_OPENSSL)
 check_symbol_exists(gmtime_r      "${CURL_INCLUDES}" HAVE_GMTIME_R)
@@ -1032,12 +1046,12 @@ _add_if("AsynchDNS"     USE_ARES OR USE_THREADS_POSIX)
 _add_if("IDN"           HAVE_LIBIDN)
 # TODO SSP1 (WinSSL) check is missing
 _add_if("SSPI"          USE_WINDOWS_SSPI)
-_add_if("GSS-API"       HAVE_GSS_API)
+_add_if("GSS-API"       HAVE_GSSAPI)
 # TODO SSP1 missing for SPNEGO
 _add_if("SPNEGO"        NOT CURL_DISABLE_CRYPTO_AUTH AND
-                        (HAVE_GSS_API OR USE_WINDOWS_SSPI))
+                        (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
 _add_if("Kerberos"      NOT CURL_DISABLE_CRYPTO_AUTH AND
-                        (HAVE_GSS_API OR USE_WINDOWS_SSPI))
+                        (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
 # NTLM support requires crypto function adaptions from various SSL libs
 # TODO alternative SSL libs tests for SSP1, GNUTLS, NSS, DARWINSSL
 if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR
index 9863b78..6251bff 100755 (executable)
@@ -94,7 +94,7 @@ if test ! -z $SDK32; then
   rm -r libcurl.framework
   mkdir -p libcurl.framework/${FRAMEWORK_VERSION}/Resources
   cp lib/.libs/libcurl.dylib libcurl.framework/${FRAMEWORK_VERSION}/libcurl
-  install_name_tool -id @executable_path/../Frameworks/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl
+  install_name_tool -id @rpath/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl
   /usr/bin/sed -e "s/7\.12\.3/$VERSION/" lib/libcurl.plist >libcurl.framework/${FRAMEWORK_VERSION}/Resources/Info.plist
   mkdir -p libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl
   cp include/curl/*.h libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl
@@ -121,7 +121,7 @@ if test ! -z $SDK32; then
 
     echo "----Appending 64 bit framework to 32 bit framework..."
     cp lib/.libs/libcurl.dylib libcurl.framework/${FRAMEWORK_VERSION}/libcurl64
-    install_name_tool -id @executable_path/../Frameworks/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl64
+    install_name_tool -id @rpath/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl64
     cp libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl32
     pwd
     lipo libcurl.framework/${FRAMEWORK_VERSION}/libcurl32 libcurl.framework/${FRAMEWORK_VERSION}/libcurl64 -create -output libcurl.framework/${FRAMEWORK_VERSION}/libcurl
index f0f50d8..393a09d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -566,6 +566,17 @@ src/Makefile.vc12: src/Makefile.vc6
        @echo "generate $@"
        @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc12/g" -e "s/VC6/VC12/g" src/Makefile.vc6 > src/Makefile.vc12
 
+# VC14 makefiles are for use with VS2015
+vc14: lib/Makefile.vc14 src/Makefile.vc14
+
+lib/Makefile.vc14: lib/Makefile.vc6
+       @echo "generate $@"
+       @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc14/g" -e "s/VC6/VC14/g" lib/Makefile.vc6 > lib/Makefile.vc14
+
+src/Makefile.vc14: src/Makefile.vc6
+       @echo "generate $@"
+       @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc14/g" -e "s/VC6/VC14/g" src/Makefile.vc6 > src/Makefile.vc14
+
 ca-bundle: lib/mk-ca-bundle.pl
        @echo "generate a fresh ca-bundle.crt"
        @perl $< -b -l -u lib/ca-bundle.crt
index 3b91e83..5f1c881 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -30,101 +30,113 @@ CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in        \
  include/curl/curlbuild.h.cmake CMake/Macros.cmake
 
 VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
-VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp
+VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
 VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
-VC6_SRCTMPL = projects/Windows/VC6/src/curlsrc.tmpl
-VC6_SRCDSP = projects/Windows/VC6/src/curlsrc.dsp
+VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl
+VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist
 VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc
 
 VC7_LIBTMPL = projects/Windows/VC7/lib/libcurl.tmpl
-VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj
+VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj.dist
 VC7_LIBVCPROJ_DEPS = $(VC7_LIBTMPL) Makefile.am lib/Makefile.inc
-VC7_SRCTMPL = projects/Windows/VC7/src/curlsrc.tmpl
-VC7_SRCVCPROJ = projects/Windows/VC7/src/curlsrc.vcproj
+VC7_SRCTMPL = projects/Windows/VC7/src/curl.tmpl
+VC7_SRCVCPROJ = projects/Windows/VC7/src/curl.vcproj.dist
 VC7_SRCVCPROJ_DEPS = $(VC7_SRCTMPL) Makefile.am src/Makefile.inc
 
 VC71_LIBTMPL = projects/Windows/VC7.1/lib/libcurl.tmpl
-VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj
+VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj.dist
 VC71_LIBVCPROJ_DEPS = $(VC71_LIBTMPL) Makefile.am lib/Makefile.inc
-VC71_SRCTMPL = projects/Windows/VC7.1/src/curlsrc.tmpl
-VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curlsrc.vcproj
+VC71_SRCTMPL = projects/Windows/VC7.1/src/curl.tmpl
+VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curl.vcproj.dist
 VC71_SRCVCPROJ_DEPS = $(VC71_SRCTMPL) Makefile.am src/Makefile.inc
 
 VC8_LIBTMPL = projects/Windows/VC8/lib/libcurl.tmpl
-VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj
+VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj.dist
 VC8_LIBVCPROJ_DEPS = $(VC8_LIBTMPL) Makefile.am lib/Makefile.inc
-VC8_SRCTMPL = projects/Windows/VC8/src/curlsrc.tmpl
-VC8_SRCVCPROJ = projects/Windows/VC8/src/curlsrc.vcproj
+VC8_SRCTMPL = projects/Windows/VC8/src/curl.tmpl
+VC8_SRCVCPROJ = projects/Windows/VC8/src/curl.vcproj.dist
 VC8_SRCVCPROJ_DEPS = $(VC8_SRCTMPL) Makefile.am src/Makefile.inc
 
 VC9_LIBTMPL = projects/Windows/VC9/lib/libcurl.tmpl
-VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj
+VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj.dist
 VC9_LIBVCPROJ_DEPS = $(VC9_LIBTMPL) Makefile.am lib/Makefile.inc
-VC9_SRCTMPL = projects/Windows/VC9/src/curlsrc.tmpl
-VC9_SRCVCPROJ = projects/Windows/VC9/src/curlsrc.vcproj
+VC9_SRCTMPL = projects/Windows/VC9/src/curl.tmpl
+VC9_SRCVCPROJ = projects/Windows/VC9/src/curl.vcproj.dist
 VC9_SRCVCPROJ_DEPS = $(VC9_SRCTMPL) Makefile.am src/Makefile.inc
 
 VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl
-VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj
+VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist
 VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc
-VC10_SRCTMPL = projects/Windows/VC10/src/curlsrc.tmpl
-VC10_SRCVCXPROJ = projects/Windows/VC10/src/curlsrc.vcxproj
+VC10_SRCTMPL = projects/Windows/VC10/src/curl.tmpl
+VC10_SRCVCXPROJ = projects/Windows/VC10/src/curl.vcxproj.dist
 VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc
 
 VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl
-VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj
+VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj.dist
 VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc
-VC11_SRCTMPL = projects/Windows/VC11/src/curlsrc.tmpl
-VC11_SRCVCXPROJ = projects/Windows/VC11/src/curlsrc.vcxproj
+VC11_SRCTMPL = projects/Windows/VC11/src/curl.tmpl
+VC11_SRCVCXPROJ = projects/Windows/VC11/src/curl.vcxproj.dist
 VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc
 
 VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl
-VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj
+VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj.dist
 VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc
-VC12_SRCTMPL = projects/Windows/VC12/src/curlsrc.tmpl
-VC12_SRCVCXPROJ = projects/Windows/VC12/src/curlsrc.vcxproj
+VC12_SRCTMPL = projects/Windows/VC12/src/curl.tmpl
+VC12_SRCVCXPROJ = projects/Windows/VC12/src/curl.vcxproj.dist
 VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc
 
+VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl
+VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist
+VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
+VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
+VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
+
 VC_DIST = projects/README      \
  projects/build-openssl.bat    \
+ projects/build-wolfssl.bat    \
  projects/checksrc.bat \
- projects/Windows/VC6/curl.dsw \
- projects/Windows/VC6/lib/libcurl.dsw $(VC6_LIBDSP)    \
- projects/Windows/VC6/src/curlsrc.dsw $(VC6_SRCDSP)    \
- projects/Windows/VC7/curl.sln \
- projects/Windows/VC7/lib/libcurl.sln $(VC7_LIBVCPROJ) \
- projects/Windows/VC7/src/curlsrc.sln $(VC7_SRCVCPROJ) \
- projects/Windows/VC7.1/curl.sln       \
- projects/Windows/VC7.1/lib/libcurl.sln $(VC71_LIBVCPROJ)      \
- projects/Windows/VC7.1/src/curlsrc.sln $(VC71_SRCVCPROJ)      \
- projects/Windows/VC8/curl.sln \
- projects/Windows/VC8/lib/libcurl.sln $(VC8_LIBVCPROJ) \
- projects/Windows/VC8/src/curlsrc.sln $(VC8_SRCVCPROJ) \
- projects/Windows/VC9/curl.sln \
- projects/Windows/VC9/lib/libcurl.sln $(VC9_LIBVCPROJ) \
- projects/Windows/VC9/src/curlsrc.sln $(VC9_SRCVCPROJ) \
- projects/Windows/VC10/curl.sln        \
- projects/Windows/VC10/lib/libcurl.sln $(VC10_LIBVCXPROJ)      \
- projects/Windows/VC10/src/curlsrc.sln $(VC10_SRCVCXPROJ)      \
- projects/Windows/VC11/curl.sln        \
- projects/Windows/VC11/lib/libcurl.sln $(VC11_LIBVCXPROJ)      \
- projects/Windows/VC11/src/curlsrc.sln $(VC11_SRCVCXPROJ)      \
- projects/Windows/VC12/curl.sln        \
- projects/Windows/VC12/lib/libcurl.sln $(VC12_LIBVCXPROJ)      \
- projects/Windows/VC12/src/curlsrc.sln $(VC12_SRCVCXPROJ)
+ projects/Windows/VC6/curl-all.dsw     \
+ projects/Windows/VC6/lib/libcurl.dsw \
+ projects/Windows/VC6/src/curl.dsw \
+ projects/Windows/VC7/curl-all.sln     \
+ projects/Windows/VC7/lib/libcurl.sln  \
+ projects/Windows/VC7/src/curl.sln     \
+ projects/Windows/VC7.1/curl-all.sln   \
+ projects/Windows/VC7.1/lib/libcurl.sln \
+ projects/Windows/VC7.1/src/curl.sln \
+ projects/Windows/VC8/curl-all.sln     \
+ projects/Windows/VC8/lib/libcurl.sln  \
+ projects/Windows/VC8/src/curl.sln     \
+ projects/Windows/VC9/curl-all.sln     \
+ projects/Windows/VC9/lib/libcurl.sln  \
+ projects/Windows/VC9/src/curl.sln     \
+ projects/Windows/VC10/curl-all.sln    \
+ projects/Windows/VC10/lib/libcurl.sln         \
+ projects/Windows/VC10/src/curl.sln  \
+ projects/Windows/VC11/curl-all.sln    \
+ projects/Windows/VC11/lib/libcurl.sln         \
+ projects/Windows/VC11/src/curl.sln    \
+ projects/Windows/VC12/curl-all.sln    \
+ projects/Windows/VC12/lib/libcurl.sln         \
+ projects/Windows/VC12/src/curl.sln    \
+ projects/Windows/VC14/curl-all.sln    \
+ projects/Windows/VC14/lib/libcurl.sln         \
+ projects/Windows/VC14/src/curl.sln
 
 WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat  \
  winbuild/MakefileBuild.vc winbuild/Makefile.vc                                \
  winbuild/Makefile.msvc.names
 
 EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in      \
- RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework        \
+ RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework scripts/zsh.pl \
  $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) lib/libcurl.vers.in
 
 CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ)     \
  $(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
  $(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ)       \
- $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ)
+ $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ)   \
+ $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ)
 
 bin_SCRIPTS = curl-config
 
@@ -153,7 +165,7 @@ html:
 pdf:
        cd docs; make pdf
 
-check: test examples
+check: test examples check-docs
 
 if CROSSCOMPILING
 test-full: test
@@ -181,6 +193,9 @@ endif
 examples:
        @(cd docs/examples; $(MAKE) check)
 
+check-docs:
+       @(cd docs/libcurl; $(MAKE) check)
+
 # This is a hook to have 'make clean' also clean up the docs and the tests
 # dir. The extra check for the Makefiles being present is necessary because
 # 'make distcheck' will make clean first in these directories _before_ it runs
@@ -266,7 +281,7 @@ vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
  $(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS)     \
  $(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
  $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS)       \
- $(VC12_SRCVCXPROJ_DEPS)
+ $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS)
        @(win32_lib_srcs='$(LIB_CFILES)'; \
        win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
        win32_lib_rc='$(LIB_RCFILES)'; \
@@ -527,4 +542,22 @@ function gen_element(type, dir, file)\
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; };)
+               "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC14_LIBVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC14_SRCVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; };)
index 51c490e..a86901d 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -43,7 +43,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -132,12 +142,6 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc \
-       $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/configure $(am__configure_deps) mkinstalldirs \
-       $(srcdir)/curl-config.in $(srcdir)/libcurl.pc.in COPYING \
-       README compile config.guess config.sub depcomp install-sh \
-       missing ltmain.sh
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
@@ -159,9 +163,11 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+       $(am__configure_deps) $(am__DIST_COMMON)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES = curl-config libcurl.pc
@@ -251,6 +257,10 @@ am__define_uniq_tagged_files = \
 ETAGS = etags
 CTAGS = ctags
 CSCOPE = cscope
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curl-config.in \
+       $(srcdir)/lib/Makefile.inc $(srcdir)/libcurl.pc.in \
+       $(srcdir)/src/Makefile.inc COPYING README compile config.guess \
+       config.sub depcomp install-sh ltmain.sh missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -350,7 +360,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -403,6 +413,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -419,7 +430,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -487,93 +497,104 @@ CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in       \
  include/curl/curlbuild.h.cmake CMake/Macros.cmake
 
 VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
-VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp
+VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
 VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
-VC6_SRCTMPL = projects/Windows/VC6/src/curlsrc.tmpl
-VC6_SRCDSP = projects/Windows/VC6/src/curlsrc.dsp
+VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl
+VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist
 VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc
 VC7_LIBTMPL = projects/Windows/VC7/lib/libcurl.tmpl
-VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj
+VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj.dist
 VC7_LIBVCPROJ_DEPS = $(VC7_LIBTMPL) Makefile.am lib/Makefile.inc
-VC7_SRCTMPL = projects/Windows/VC7/src/curlsrc.tmpl
-VC7_SRCVCPROJ = projects/Windows/VC7/src/curlsrc.vcproj
+VC7_SRCTMPL = projects/Windows/VC7/src/curl.tmpl
+VC7_SRCVCPROJ = projects/Windows/VC7/src/curl.vcproj.dist
 VC7_SRCVCPROJ_DEPS = $(VC7_SRCTMPL) Makefile.am src/Makefile.inc
 VC71_LIBTMPL = projects/Windows/VC7.1/lib/libcurl.tmpl
-VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj
+VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj.dist
 VC71_LIBVCPROJ_DEPS = $(VC71_LIBTMPL) Makefile.am lib/Makefile.inc
-VC71_SRCTMPL = projects/Windows/VC7.1/src/curlsrc.tmpl
-VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curlsrc.vcproj
+VC71_SRCTMPL = projects/Windows/VC7.1/src/curl.tmpl
+VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curl.vcproj.dist
 VC71_SRCVCPROJ_DEPS = $(VC71_SRCTMPL) Makefile.am src/Makefile.inc
 VC8_LIBTMPL = projects/Windows/VC8/lib/libcurl.tmpl
-VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj
+VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj.dist
 VC8_LIBVCPROJ_DEPS = $(VC8_LIBTMPL) Makefile.am lib/Makefile.inc
-VC8_SRCTMPL = projects/Windows/VC8/src/curlsrc.tmpl
-VC8_SRCVCPROJ = projects/Windows/VC8/src/curlsrc.vcproj
+VC8_SRCTMPL = projects/Windows/VC8/src/curl.tmpl
+VC8_SRCVCPROJ = projects/Windows/VC8/src/curl.vcproj.dist
 VC8_SRCVCPROJ_DEPS = $(VC8_SRCTMPL) Makefile.am src/Makefile.inc
 VC9_LIBTMPL = projects/Windows/VC9/lib/libcurl.tmpl
-VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj
+VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj.dist
 VC9_LIBVCPROJ_DEPS = $(VC9_LIBTMPL) Makefile.am lib/Makefile.inc
-VC9_SRCTMPL = projects/Windows/VC9/src/curlsrc.tmpl
-VC9_SRCVCPROJ = projects/Windows/VC9/src/curlsrc.vcproj
+VC9_SRCTMPL = projects/Windows/VC9/src/curl.tmpl
+VC9_SRCVCPROJ = projects/Windows/VC9/src/curl.vcproj.dist
 VC9_SRCVCPROJ_DEPS = $(VC9_SRCTMPL) Makefile.am src/Makefile.inc
 VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl
-VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj
+VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist
 VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc
-VC10_SRCTMPL = projects/Windows/VC10/src/curlsrc.tmpl
-VC10_SRCVCXPROJ = projects/Windows/VC10/src/curlsrc.vcxproj
+VC10_SRCTMPL = projects/Windows/VC10/src/curl.tmpl
+VC10_SRCVCXPROJ = projects/Windows/VC10/src/curl.vcxproj.dist
 VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc
 VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl
-VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj
+VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj.dist
 VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc
-VC11_SRCTMPL = projects/Windows/VC11/src/curlsrc.tmpl
-VC11_SRCVCXPROJ = projects/Windows/VC11/src/curlsrc.vcxproj
+VC11_SRCTMPL = projects/Windows/VC11/src/curl.tmpl
+VC11_SRCVCXPROJ = projects/Windows/VC11/src/curl.vcxproj.dist
 VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc
 VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl
-VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj
+VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj.dist
 VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc
-VC12_SRCTMPL = projects/Windows/VC12/src/curlsrc.tmpl
-VC12_SRCVCXPROJ = projects/Windows/VC12/src/curlsrc.vcxproj
+VC12_SRCTMPL = projects/Windows/VC12/src/curl.tmpl
+VC12_SRCVCXPROJ = projects/Windows/VC12/src/curl.vcxproj.dist
 VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc
+VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl
+VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist
+VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
+VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
+VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
 VC_DIST = projects/README      \
  projects/build-openssl.bat    \
+ projects/build-wolfssl.bat    \
  projects/checksrc.bat \
- projects/Windows/VC6/curl.dsw \
- projects/Windows/VC6/lib/libcurl.dsw $(VC6_LIBDSP)    \
- projects/Windows/VC6/src/curlsrc.dsw $(VC6_SRCDSP)    \
- projects/Windows/VC7/curl.sln \
- projects/Windows/VC7/lib/libcurl.sln $(VC7_LIBVCPROJ) \
- projects/Windows/VC7/src/curlsrc.sln $(VC7_SRCVCPROJ) \
- projects/Windows/VC7.1/curl.sln       \
- projects/Windows/VC7.1/lib/libcurl.sln $(VC71_LIBVCPROJ)      \
- projects/Windows/VC7.1/src/curlsrc.sln $(VC71_SRCVCPROJ)      \
- projects/Windows/VC8/curl.sln \
- projects/Windows/VC8/lib/libcurl.sln $(VC8_LIBVCPROJ) \
- projects/Windows/VC8/src/curlsrc.sln $(VC8_SRCVCPROJ) \
- projects/Windows/VC9/curl.sln \
- projects/Windows/VC9/lib/libcurl.sln $(VC9_LIBVCPROJ) \
- projects/Windows/VC9/src/curlsrc.sln $(VC9_SRCVCPROJ) \
- projects/Windows/VC10/curl.sln        \
- projects/Windows/VC10/lib/libcurl.sln $(VC10_LIBVCXPROJ)      \
- projects/Windows/VC10/src/curlsrc.sln $(VC10_SRCVCXPROJ)      \
- projects/Windows/VC11/curl.sln        \
- projects/Windows/VC11/lib/libcurl.sln $(VC11_LIBVCXPROJ)      \
- projects/Windows/VC11/src/curlsrc.sln $(VC11_SRCVCXPROJ)      \
- projects/Windows/VC12/curl.sln        \
- projects/Windows/VC12/lib/libcurl.sln $(VC12_LIBVCXPROJ)      \
- projects/Windows/VC12/src/curlsrc.sln $(VC12_SRCVCXPROJ)
+ projects/Windows/VC6/curl-all.dsw     \
+ projects/Windows/VC6/lib/libcurl.dsw \
+ projects/Windows/VC6/src/curl.dsw \
+ projects/Windows/VC7/curl-all.sln     \
+ projects/Windows/VC7/lib/libcurl.sln  \
+ projects/Windows/VC7/src/curl.sln     \
+ projects/Windows/VC7.1/curl-all.sln   \
+ projects/Windows/VC7.1/lib/libcurl.sln \
+ projects/Windows/VC7.1/src/curl.sln \
+ projects/Windows/VC8/curl-all.sln     \
+ projects/Windows/VC8/lib/libcurl.sln  \
+ projects/Windows/VC8/src/curl.sln     \
+ projects/Windows/VC9/curl-all.sln     \
+ projects/Windows/VC9/lib/libcurl.sln  \
+ projects/Windows/VC9/src/curl.sln     \
+ projects/Windows/VC10/curl-all.sln    \
+ projects/Windows/VC10/lib/libcurl.sln         \
+ projects/Windows/VC10/src/curl.sln  \
+ projects/Windows/VC11/curl-all.sln    \
+ projects/Windows/VC11/lib/libcurl.sln         \
+ projects/Windows/VC11/src/curl.sln    \
+ projects/Windows/VC12/curl-all.sln    \
+ projects/Windows/VC12/lib/libcurl.sln         \
+ projects/Windows/VC12/src/curl.sln    \
+ projects/Windows/VC14/curl-all.sln    \
+ projects/Windows/VC14/lib/libcurl.sln         \
+ projects/Windows/VC14/src/curl.sln
 
 WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat  \
  winbuild/MakefileBuild.vc winbuild/Makefile.vc                                \
  winbuild/Makefile.msvc.names
 
 EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in      \
- RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework        \
+ RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework scripts/zsh.pl \
  $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) lib/libcurl.vers.in
 
 CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ)     \
  $(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
  $(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ)       \
- $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ)
+ $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ)   \
+ $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ)
 
 bin_SCRIPTS = curl-config
 SUBDIRS = lib src include
@@ -582,11 +603,11 @@ pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libcurl.pc
 LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c     \
   vtls/polarssl.c vtls/polarssl_threadlock.c vtls/axtls.c               \
-  vtls/cyassl.c vtls/curl_schannel.c vtls/curl_darwinssl.c vtls/gskit.c
+  vtls/cyassl.c vtls/schannel.c vtls/darwinssl.c vtls/gskit.c
 
 LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h                \
   vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h vtls/axtls.h   \
-  vtls/cyassl.h vtls/curl_schannel.h vtls/curl_darwinssl.h vtls/gskit.h
+  vtls/cyassl.h vtls/schannel.h vtls/darwinssl.h vtls/gskit.h
 
 LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
   cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c       \
@@ -604,8 +625,9 @@ LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
   http_negotiate_sspi.c http_proxy.c non-ascii.c asyn-ares.c            \
   asyn-thread.c curl_gssapi.c curl_ntlm.c curl_ntlm_wb.c                \
   curl_ntlm_core.c curl_ntlm_msgs.c curl_sasl.c curl_multibyte.c        \
-  hostcheck.c bundles.c conncache.c pipeline.c dotdot.c x509asn1.c      \
-  http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c
+  hostcheck.c conncache.c pipeline.c dotdot.c x509asn1.c                \
+  http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c       \
+  curl_des.c
 
 LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
   formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h         \
@@ -621,9 +643,10 @@ LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
   rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
   curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
   curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
-  curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h bundles.h   \
+  curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h             \
   conncache.h curl_setup_once.h multihandle.h setup-vms.h pipeline.h    \
-  dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h
+  dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h  \
+  curl_printf.h
 
 LIB_RCFILES = libcurl.rc
 CSOURCES = $(LIB_CFILES) $(LIB_VTLS_CFILES)
@@ -749,7 +772,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/li
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -759,7 +781,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
        esac;
-$(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc:
+$(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        $(SHELL) ./config.status --recheck
@@ -1029,15 +1051,15 @@ dist-xz: distdir
        $(am__post_remove_distdir)
 
 dist-tarZ: distdir
-       @echo WARNING: "Support for shar distribution archives is" \
-                      "deprecated." >&2
+       @echo WARNING: "Support for distribution archives compressed with" \
+                      "legacy program 'compress' is deprecated." >&2
        @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
        $(am__post_remove_distdir)
 
 dist-shar: distdir
-       @echo WARNING: "Support for distribution archives compressed with" \
-                      "legacy program 'compress' is deprecated." >&2
+       @echo WARNING: "Support for shar distribution archives is" \
+                      "deprecated." >&2
        @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
        $(am__post_remove_distdir)
@@ -1073,17 +1095,17 @@ distcheck: dist
        esac
        chmod -R a-w $(distdir)
        chmod u+w $(distdir)
-       mkdir $(distdir)/_build $(distdir)/_inst
+       mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
        chmod a-w $(distdir)
        test -d $(distdir)/_build || exit 0; \
        dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
          && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
          && am__cwd=`pwd` \
-         && $(am__cd) $(distdir)/_build \
-         && ../configure \
+         && $(am__cd) $(distdir)/_build/sub \
+         && ../../configure \
            $(AM_DISTCHECK_CONFIGURE_FLAGS) \
            $(DISTCHECK_CONFIGURE_FLAGS) \
-           --srcdir=.. --prefix="$$dc_install_base" \
+           --srcdir=../.. --prefix="$$dc_install_base" \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
          && $(MAKE) $(AM_MAKEFLAGS) check \
@@ -1265,6 +1287,8 @@ uninstall-am: uninstall-binSCRIPTS uninstall-pkgconfigDATA
        uninstall-am uninstall-binSCRIPTS uninstall-hook \
        uninstall-pkgconfigDATA
 
+.PRECIOUS: Makefile
+
 
 # List of files required to generate VC IDE .dsp, .vcproj and .vcxproj files
 
@@ -1283,7 +1307,7 @@ html:
 pdf:
        cd docs; make pdf
 
-check: test examples
+check: test examples check-docs
 
 @CROSSCOMPILING_TRUE@test-full: test
 @CROSSCOMPILING_TRUE@test-torture: test
@@ -1306,6 +1330,9 @@ check: test examples
 examples:
        @(cd docs/examples; $(MAKE) check)
 
+check-docs:
+       @(cd docs/libcurl; $(MAKE) check)
+
 # This is a hook to have 'make clean' also clean up the docs and the tests
 # dir. The extra check for the Makefiles being present is necessary because
 # 'make distcheck' will make clean first in these directories _before_ it runs
@@ -1391,7 +1418,7 @@ vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS)       \
  $(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS)     \
  $(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
  $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS)       \
- $(VC12_SRCVCXPROJ_DEPS)
+ $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS)
        @(win32_lib_srcs='$(LIB_CFILES)'; \
        win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
        win32_lib_rc='$(LIB_RCFILES)'; \
@@ -1652,7 +1679,25 @@ function gen_element(type, dir, file)\
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; };)
+               "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC14_LIBVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC14_SRCVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; };)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/README b/README
index 2ffacc3..d92c7f8 100644 (file)
--- a/README
+++ b/README
@@ -38,12 +38,12 @@ GIT
 
   To download the very latest source off the GIT server do this:
 
-    git clone git://github.com/bagder/curl.git
+    git clone https://github.com/bagder/curl.git
 
   (you'll get a directory named curl created, filled with the source code)
 
 NOTICE
 
   Curl contains pieces of source code that is Copyright (c) 1998, 1999
-  Kungliga Tekniska Högskolan. This notice is included here to comply with the
+  Kungliga Tekniska Högskolan. This notice is included here to comply with the
   distribution terms.
index 123088f..f122978 100644 (file)
-Curl and libcurl 7.40.0
+Curl and libcurl 7.44.0
 
- Public curl releases:         143
- Command line options:         162
- curl_easy_setopt() options:   208
+ Public curl releases:         148
+ Command line options:         176
+ curl_easy_setopt() options:   219
  Public functions in libcurl:  58
- Contributors:                 1219
+ Contributors:                 1291
 
 This release includes the following changes:
 
- o http_digest: Added support for Windows SSPI based authentication
- o version info: Added Kerberos V5 to the supported features
- o Makefile: Added VC targets for WinIDN
- o config-win32: Introduce build targets for VS2012+
- o SSL: Add PEM format support for public key pinning
- o smtp: Added support for the conversion of Unix newlines during mail send [8]
- o smb: Added initial support for the SMB/CIFS protocol
- o Added support for HTTP over unix domain sockets, via
-   CURLOPT_UNIX_SOCKET_PATH and --unix-socket
- o sasl: Added support for GSS-API based Kerberos V5 authentication
+ o http2: added CURLMOPT_PUSHFUNCTION and CURLMOPT_PUSHDATA [6]
+ o examples: added http2-serverpush.c [7]
+ o http2: added curl_pushheader_byname() and curl_pushheader_bynum()
+ o docs: added CODE_OF_CONDUCT.md [8]
+ o curl: Add --ssl-no-revoke to disable certificate revocation checks [5]
+ o libcurl: New value CURLSSLOPT_NO_REVOKE for CURLOPT_SSL_OPTIONS [9]
+ o makefile: Added support for VC14
+ o build: Added Visual Studio 2015 (VC14) project files
+ o build: Added wolfSSL configurations to VC10+ project files [18]
 
 This release includes the following bugfixes:
 
- o darwinssl: fix session ID keys to only reuse identical sessions [18]
- o url-parsing: reject CRLFs within URLs [19]
- o OS400: Adjust specific support to last release
- o THANKS: Remove duplicate names
- o url.c: Fixed compilation warning
- o ssh: Fixed build on platforms where R_OK is not defined [1]
- o tool_strdup.c: include the tool strdup.h
- o build: Fixed Visual Studio project file generation of strdup.[c|h]
- o curl_easy_setopt.3: add CURLOPT_PINNEDPUBLICKEY [2]
- o curl.1: show zone index use in a URL
- o mk-ca-bundle.vbs: switch to new certdata.txt url
- o Makefile.dist: Added some missing SSPI configurations
- o build: Fixed no NTLM support for email when CURL_DISABLE_HTTP is defined
- o SSH: use the port number as well for known_known checks [3]
- o libssh2: detect features based on version, not configure checks
- o http2: Deal with HTTP/2 data inside Upgrade response header buffer [4]
- o multi: removed Curl_multi_set_easy_connection
- o symbol-scan.pl: do not require autotools
- o cmake: add ENABLE_THREADED_RESOLVER, rename ARES
- o cmake: build libhostname for test suite
- o cmake: fix HAVE_GETHOSTNAME definition
- o tests: fix libhostname visibility
- o tests: fix memleak in server/resolve.c
- o vtls.h: Fixed compiler warning when compiled without SSL
- o CMake: Restore order-dependent header checks
- o CMake: Restore order-dependent library checks
- o tool: Removed krb4 from the supported features
- o http2: Don't send Upgrade headers when we already do HTTP/2
- o examples: Don't call select() to sleep on windows [6]
- o win32: Updated some legacy APIs to use the newer extended versions [5]
- o easy.c: Fixed compilation warning when no verbose string support
- o connect.c: Fixed compilation warning when no verbose string support
- o build: in Makefile.m32 pass -F flag to windres
- o build: in Makefile.m32 add -m32 flag for 32bit
- o multi: when leaving for timeout, close accordingly
- o CMake: Simplify if() conditions on check result variables
- o build: in Makefile.m32 try to detect 64bit target
- o multi: inform about closed sockets before they are closed
- o multi-uv.c: close the file handle after download
- o examples: Wait recommended 100ms when no file descriptors are ready
- o ntlm: Split the SSPI based messaging code from the native messaging code
- o cmake: fix NTLM detection when CURL_DISABLE_HTTP defined
- o cmake: add Kerberos to the supported feature
- o CURLOPT_POSTFIELDS.3: mention the COPYPOSTFIELDS option
- o http: Disable pipelining for HTTP/2 and upgraded connections
- o ntlm: Fixed static'ness of local decode function
- o sasl: Reduced the need for two sets of NTLM messaging functions
- o multi.c: Fixed compilation warnings when no verbose string support
- o select.c: fix compilation for VxWorks [7]
- o multi-single.c: switch to use curl_multi_wait
- o curl_multi_wait.3: clarify numfds being used if not NULL
- o http.c: Fixed compilation warnings from features being disabled
- o NSS: enable the CAPATH option [9]
- o docs: Fix FAILONERROR typos
- o HTTP: don't abort connections with pending Negotiate authentication
- o HTTP: Free (proxy)userpwd for NTLM/Negotiate after sending a request
- o http_perhapsrewind: don't abort CONNECT requests
- o build: updated dependencies in makefiles
- o multi.c: Fixed compilation warning
- o ftp.c: Fixed compilation warnings when proxy support disabled
- o get_url_file_name: Fixed crash on OOM on debug build
- o cookie.c: Refactored cleanup code to simplify
- o OS400: enable NTLM authentication
- o ntlm: Use Windows Crypt API
- o http2: avoid logging neg "failure" if h2 was not requested
- o schannel_recv: return the correct code [10]
- o VC build: added sspi define for winssl-zlib builds
- o Curl_client_write(): chop long data, convert data only once
- o openldap: do not ignore Curl_client_write() return code
- o ldap: check Curl_client_write() return codes
- o parsedate.c: Fixed compilation warning
- o url.c: Fixed compilation warning when USE_NTLM is not defined
- o ntlm_wb_response: fix "statement not reached" [11]
- o telnet: fix "cast increases required alignment of target type"
- o smtp: Fixed dot stuffing when EOL characters at end of input buffers [12]
- o ntlm: Allow NTLM2Session messages when USE_NTRESPONSES manually defined
- o ntlm: Disable NTLM v2 when 64-bit integers are not supported
- o ntlm: Use short integer when decoding 16-bit values
- o ftp.c: Fixed compilation warning when no verbose string support
- o synctime.c: fixed timeserver URLs
- o mk-ca-bundle.pl: restored forced run again
- o ntlm: Fixed return code for bad type-2 Target Info
- o curl_schannel.c: Data may be available before connection shutdown
- o curl_schannel: Improvements to memory re-allocation strategy [13]
- o darwinssl: aprintf() to allocate the session key
- o tool_util.c: Use GetTickCount64 if it is available
- o lib: Fixed multiple code analysis warnings if SAL are available
- o tool_binmode.c: Explicitly ignore the return code of setmode
- o tool_urlglob.c: Silence warning C6293: Ill-defined for-loop
- o opts: Warn CURLOPT_TIMEOUT overrides when set after CURLOPT_TIMEOUT_MS
- o SFTP: work-around servers that return zero size on STAT [14]
- o connect: singleipconnect(): properly try other address families after failure
- o IPV6: address scope != scope id [15]
- o parseurlandfillconn(): fix improper non-numeric scope_id stripping [16]
- o secureserver.pl: make OpenSSL CApath and cert absolute path values
- o secureserver.pl: update Windows detection and fix path conversion
- o secureserver.pl: clean up formatting of config and fix verbose output
- o tests: Added Windows support using Cygwin-based OpenSSH
- o sockfilt.c: use non-Ex functions that are available before WinXP
- o VMS: Updates for 0740-0D1220
- o openssl: warn for SRP set if SSLv3 is used, not for TLS version
- o openssl: make it compile against openssl 1.1.0-DEV master branch
- o openssl: fix SSL/TLS versions in verbose output
- o curl: show size of inhibited data when using -v
- o build: Removed WIN32 definition from the Visual Studio projects
- o build: Removed WIN64 definition from the libcurl Visual Studio projects
- o vtls: Use bool for Curl_ssl_getsessionid() return type
- o sockfilt.c: Replace 100ms sleep with thread throttle
- o sockfilt.c: Reduce the number of individual memory allocations
- o vtls: Don't set cert info count until memory allocation is successful
- o nss: Don't ignore Curl_ssl_init_certinfo() OOM failure
- o nss: Don't ignore Curl_extract_certinfo() OOM failure
- o vtls: Fixed compilation warning and an ignored return code
- o sockfilt.c: Fixed compilation warnings
- o darwinssl: Fixed compilation warning
- o vtls: Use '(void) arg' for unused parameters
- o sepheaders.c: Fixed resource leak on failure
- o lib1900.c: Fixed cppcheck error [17]
- o ldap: Fixed Unicode connection details in Win32 initialsation / bind calls
- o ldap: Fixed Unicode DN, attributes and filter in Win32 search calls
+ o FTP: fix HTTP CONNECT logic regression [1]
+ o openssl: Fix build with openssl < ~ 0.9.8f
+ o openssl: fix build with BoringSSL
+ o curl_easy_setopt.3: option order doesn't matter
+ o openssl: fix use of uninitialized buffer [2]
+ o RTSP: removed dead code
+ o Makefile.m32: add support for CURL_LDFLAG_EXTRAS
+ o curl: always provide negotiate/kerberos options
+ o cookie: Fix bug in export if any-domain cookie is present
+ o curl_easy_setopt.3: mention CURLOPT_PIPEWAIT
+ o INSTALL: Advise use of non-native SSL for Windows <= XP
+ o tool_help: fix --tlsv1 help text to use >= for TLSv1
+ o HTTP: POSTFIELDSIZE set after added to multi handle [3]
+ o SSL-PROBLEMS: mention WinSSL problems in WinXP
+ o setup-vms.h: Symbol case fixups
+ o SSL: Pinned public key hash support
+ o libtest: call PR_Cleanup() on exit if NSPR is used
+ o ntlm_wb: Fix theoretical memory leak
+ o runtests: Allow for spaces in curl custom path
+ o http2: add stream != NULL checks for reliability
+ o schannel: Replace deprecated GetVersion with VerifyVersionInfo
+ o http2: verify success of strchr() in http2_send()
+ o configure: add --disable-rt option
+ o openssl: work around MSVC warning
+ o HTTP: ignore "Content-Encoding: compress"
+ o configure: check if OpenSSL linking wants -ldl
+ o build-openssl.bat: Show syntax if required args are missing
+ o test1902: attempt to make the test more reliable
+ o libcurl-thread.3: Consolidate thread safety info
+ o maketgz: Fixed some VC makefiles missing from the release tarball
+ o libcurl-multi.3: mention curl_multi_wait [10]
+ o ABI doc: use secure URL
+ o http: move HTTP/2 cleanup code off http_disconnect() [11]
+ o libcurl-thread.3: Warn memory functions must be thread safe [12]
+ o curl_global_init_mem.3: Warn threaded resolver needs thread safe funcs [13]
+ o docs: formpost needs the full size at start of upload [14]
+ o curl_gssapi: remove 'const' to fix compiler warnings
+ o SSH: three state machine fixups [15]
+ o libcurl.3: fix a single typo [16]
+ o generate.bat: Only clean prerequisite files when in ALL mode
+ o curl_slist_append.3: add error checking to the example
+ o buildconf.bat: Added support for file clean-up via -clean
+ o generate.bat: Use buildconf.bat for prerequisite file clean-up
+ o NTLM: handle auth for only a single request [17]
+ o curl_multi_remove_handle.3: fix formatting [19]
+ o checksrc.bat: Fixed error when [directory] isn't a curl source directory
+ o checksrc.bat: Fixed error when missing *.c and *.h files
+ o CURLOPT_RESOLVE.3: Note removal support was added in 7.42 [20]
+ o test46: update cookie expire time
+ o SFTP: fix range request off-by-one in size check [21]
+ o CMake: fix GSSAPI builds [22]
+ o build: refer to fixed libidn versions [4]
+ o http2: discard frames with no SessionHandle [23]
+ o curl_easy_recv.3: fix formatting
+ o libcurl-tutorial.3: fix formatting [24]
+ o curl_formget.3: correct return code [25]
 
 This release includes the following known bugs:
 
@@ -149,35 +84,41 @@ This release includes the following known bugs:
 This release would not have looked like this without help, code, reports and
 advice from friends like these:
 
-  Andrey Labunets, Anthon Pang, Bill Nagel, Brad Harder, Brad King, Carlo Wood,
-  Christian Hägele, Dan Fandrich, Daniel Stenberg, Dave Reisner, Frank Gevaerts,
-  Gisle Vanem, Guenter Knauf, Jan Ehrhardt, Johan Lantz, John E. Malmberg,
-  Jon Spencer, Julien Nabet, Kamil Dudka, Kyle J. McKay, Lucas Pardue,
-  Marc Hesse, Marc Hoersken, Marc Renault, Michael Osipov, Nick Zitzmann,
-  Nobuhiro Ban, Patrick Monnerat, Peter Wu, Ray Satiro, Sam Hurst,
-  Stefan Bühler, Stefan Neis, Steve Holme, Tae Hyoung Ahn, Tatsuhiro Tsujikawa,
-  Tomasz Kojm, Tor Arntsen, Waldek Kozba, Warren Menzer
+  Anders Bakken, Cédric Connes, Dan Fandrich, Daniel Stenberg, David Woodhouse,
+  Eric Ridge, Feist Josselin, Gustavo Grieco, Inca R, Isaac Boukris,
+  Jakub Zakrzewski, John E. Malmberg, Kamil Dudka, Lior Kaplan, Marcel Raad,
+  Michael Kaufmann, Michał Fita, Patrick Monnerat, Paul Howarth, Ray Satiro,
+  Roger Leigh, Stefan Bühler, Štefan Kremeň, Steve Holme, Svyatoslav Mishyn,
+  Tatsuhiro Tsujikawa, Terri Oda, Tim Stack, TJ Saunders, Tomas Tomecek,
+  Viktor Szakáts,
+  (31 contributors)
 
         Thanks! (and sorry if I forgot to mention someone)
 
 References to bug reports and discussions on issues:
 
- [1] = http://curl.haxx.se/mail/lib-2014-11/0035.html
- [2] = http://curl.haxx.se/mail/lib-2014-11/0078.html
- [3] = http://curl.haxx.se/bug/view.cgi?id=1448
- [4] = https://github.com/tatsuhiro-t/nghttp2/issues/103
- [5] = http://sourceforge.net/p/curl/feature-requests/82/
- [6] = http://curl.haxx.se/mail/lib-2014-11/0221.html
- [7] = http://curl.haxx.se/bug/view.cgi?id=1455
- [8] = http://curl.haxx.se/bug/view.cgi?id=1456
- [9] = http://curl.haxx.se/bug/view.cgi?id=1457
- [10] = http://curl.haxx.se/bug/view.cgi?id=1462
- [11] = http://curl.haxx.se/mail/lib-2014-12/0089.html
- [12] = http://curl.haxx.se/bug/view.cgi?id=1456
- [13] = http://curl.haxx.se/bug/view.cgi?id=1450
- [14] = http://curl.haxx.se/mail/lib-2014-12/0103.html
- [15] = http://curl.haxx.se/bug/view.cgi?id=1451
- [16] = http://curl.haxx.se/bug/view.cgi?id=1449
- [17] = https://github.com/bagder/curl/pull/133
- [18] = http://curl.haxx.se/docs/adv_20150108A.html
- [19] = http://curl.haxx.se/docs/adv_20150108B.html
+ [1] = https://github.com/bagder/curl/issues/278
+ [2] = https://github.com/bagder/curl/issues/318
+ [3] = http://curl.haxx.se/mail/lib-2015-06/0122.html
+ [4] = http://curl.haxx.se/bug/?i=371
+ [5] = https://github.com/bagder/curl/issues/264
+ [6] = http://curl.haxx.se/libcurl/c/CURLMOPT_PUSHFUNCTION.html
+ [7] = http://curl.haxx.se/libcurl/c/http2-serverpush.html
+ [8] = https://github.com/bagder/curl/blob/master/docs/CODE_OF_CONDUCT.md
+ [9] = http://curl.haxx.se/libcurl/c/CURLOPT_SSL_OPTIONS.html
+ [10] = https://github.com/bagder/curl/issues/356
+ [11] = https://bugzilla.redhat.com/1248389
+ [12] = http://curl.haxx.se/mail/lib-2015-07/0149.html
+ [13] = http://curl.haxx.se/mail/lib-2015-07/0149.html
+ [14] = http://curl.haxx.se/bug/?i=360
+ [15] = http://curl.haxx.se/bug/?i=357
+ [16] = https://github.com/bagder/curl/issues/361
+ [17] = https://github.com/bagder/curl/issues/363
+ [18] = https://github.com/bagder/curl/pull/174
+ [19] = https://github.com/bagder/curl/issues/366
+ [20] = http://curl.haxx.se/mail/lib-2015-08/0019.html
+ [21] = http://curl.haxx.se/bug/?i=359
+ [22] = http://curl.haxx.se/bug/?i=370
+ [23] = http://curl.haxx.se/bug/?i=372
+ [24] = http://curl.haxx.se/bug/?i=374
+ [25] = http://curl.haxx.se/bug/?i=375
index 453358d..782f32d 100644 (file)
@@ -1851,8 +1851,10 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
   AC_REQUIRE([AC_HEADER_TIME])dnl
   AC_CHECK_HEADERS(sys/types.h sys/time.h time.h)
   AC_MSG_CHECKING([for monotonic clock_gettime])
-  AC_COMPILE_IFELSE([
-    AC_LANG_PROGRAM([[
+  #
+  if test "x$dontwant_rt" == "xno" ; then
+    AC_COMPILE_IFELSE([
+      AC_LANG_PROGRAM([[
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -1866,17 +1868,18 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
 #include <time.h>
 #endif
 #endif
-    ]],[[
-      struct timespec ts;
-      (void)clock_gettime(CLOCK_MONOTONIC, &ts);
-    ]])
-  ],[
-    AC_MSG_RESULT([yes])
-    ac_cv_func_clock_gettime="yes"
-  ],[
-    AC_MSG_RESULT([no])
-    ac_cv_func_clock_gettime="no"
-  ])
+      ]],[[
+        struct timespec ts;
+        (void)clock_gettime(CLOCK_MONOTONIC, &ts);
+      ]])
+    ],[
+      AC_MSG_RESULT([yes])
+      ac_cv_func_clock_gettime="yes"
+    ],[
+      AC_MSG_RESULT([no])
+      ac_cv_func_clock_gettime="no"
+    ])
+  fi
   dnl Definition of HAVE_CLOCK_GETTIME_MONOTONIC is intentionally postponed
   dnl until library linking and run-time checks for clock_gettime succeed.
 ])
@@ -2452,23 +2455,6 @@ AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
 ])
 
 
-# This is only a temporary fix. This macro is here to replace the broken one
-# delivered by the automake project (including the 1.9.6 release). As soon as
-# they ship a working version we SHOULD remove this work-around.
-
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} \"$am_aux_dir/missing\""
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
-
-
 dnl CURL_VERIFY_RUNTIMELIBS
 dnl -------------------------------------------------
 dnl Verify that the shared libs found so far can be used when running
@@ -2607,15 +2593,16 @@ AC_HELP_STRING([--without-ca-path], [Don't use a default CA path]),
   if test "x$want_ca" != "xno" -a "x$want_ca" != "xunset" -a \
           "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
     dnl both given
-    AC_MSG_ERROR([Can't specify both --with-ca-bundle and --with-ca-path.])
+    ca="$want_ca"
+    capath="$want_capath"
   elif test "x$want_ca" != "xno" -a "x$want_ca" != "xunset"; then
     dnl --with-ca-bundle given
     ca="$want_ca"
     capath="no"
   elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
     dnl --with-ca-path given
-    if test "x$OPENSSL_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
-      AC_MSG_ERROR([--with-ca-path only works with openSSL or PolarSSL])
+    if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
+      AC_MSG_ERROR([--with-ca-path only works with OpenSSL, GnuTLS or PolarSSL])
     fi
     capath="$want_capath"
     ca="no"
@@ -2669,11 +2656,13 @@ AC_HELP_STRING([--without-ca-path], [Don't use a default CA path]),
     AC_DEFINE_UNQUOTED(CURL_CA_BUNDLE, "$ca", [Location of default ca bundle])
     AC_SUBST(CURL_CA_BUNDLE)
     AC_MSG_RESULT([$ca])
-  elif test "x$capath" != "xno"; then
+  fi
+  if test "x$capath" != "xno"; then
     CURL_CA_PATH="\"$capath\""
     AC_DEFINE_UNQUOTED(CURL_CA_PATH, "$capath", [Location of default ca path])
     AC_MSG_RESULT([$capath (capath)])
-  else
+  fi
+  if test "x$ca" = "xno" && test "x$capath" = "xno"; then
     AC_MSG_RESULT([no])
   fi
 ])
index fd841ca..32d8994 100644 (file)
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,7 @@ You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.])
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.14'
+[am__api_version='1.15'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.14.1], [],
+m4_if([$1], [1.15], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14.1])dnl
+[AM_AUTOMAKE_VERSION([1.15])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -110,7 +110,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -141,7 +141,7 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -332,7 +332,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -408,7 +408,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -498,8 +498,8 @@ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
 AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
@@ -573,6 +573,9 @@ END
     AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
   fi
 fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
 ])
 
 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
@@ -602,7 +605,7 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -613,7 +616,7 @@ echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_co
 # Define $install_sh.
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
   case $am_aux_dir in
   *\ * | *\    *)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -623,7 +626,7 @@ if test x"${install_sh}" != xset; then
 fi
 AC_SUBST([install_sh])])
 
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -645,7 +648,7 @@ AC_SUBST([am__leading_dot])])
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -680,7 +683,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
 
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -730,7 +733,7 @@ rm -f confinc confmf
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -769,7 +772,7 @@ fi
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -798,7 +801,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -845,7 +848,7 @@ AC_LANG_POP([C])])
 # For backward compatibility.
 AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -864,7 +867,7 @@ AC_DEFUN([AM_RUN_LOG],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -945,7 +948,7 @@ AC_CONFIG_COMMANDS_PRE(
 rm -f conftest.file
 ])
 
-# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1005,7 +1008,7 @@ AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1033,7 +1036,7 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1052,7 +1055,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
index f3f0bd5..705f0d3 100755 (executable)
--- a/buildconf
+++ b/buildconf
@@ -318,6 +318,8 @@ for fname in .deps \
     ltsugar.m4 \
     ltversion.m4 \
     lt~obsolete.m4 \
+    missing \
+    install-sh \
     stamp-h1 \
     stamp-h2 \
     stamp-h3 ; do
@@ -329,7 +331,7 @@ done
 #
 
 echo "buildconf: running libtoolize"
-${libtoolize} --copy --automake --force || die "libtoolize command failed"
+${libtoolize} --copy --force || die "libtoolize command failed"
 
 # When using libtool 1.5.X (X < 26) we copy libtool.m4 to our local m4
 # subdirectory and this local copy is patched to fix some warnings that
diff --git a/compile b/compile
index 531136b..a85b723 100755 (executable)
--- a/compile
+++ b/compile
@@ -3,7 +3,7 @@
 
 scriptversion=2012-10-14.11; # UTC
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
index bbdf846..34cbe8c 100755 (executable)
--- a/configure
+++ b/configure
@@ -923,9 +923,9 @@ USE_POLARSSL
 HAVE_GNUTLS_SRP
 USE_GNUTLS_NETTLE
 USE_GNUTLS
-HAVE_SSLEAY_SRP
+HAVE_OPENSSL_SRP
 RANDOM_FILE
-USE_SSLEAY
+SSL_LIBS
 PKGCONFIG
 USE_DARWINSSL
 USE_WINDOWS_SSPI
@@ -1105,6 +1105,7 @@ enable_curldebug
 enable_symbol_hiding
 enable_hidden_symbols
 enable_ares
+enable_rt
 enable_dependency_tracking
 enable_silent_rules
 enable_largefile
@@ -1816,6 +1817,7 @@ Optional Features:
                           To be deprecated, use --disable-symbol-hiding
   --enable-ares[=PATH]    Enable c-ares for DNS lookups
   --disable-ares          Disable c-ares for DNS lookups
+  --disable-rt            disable dependency on -lrt
   --enable-dependency-tracking
                           do not reject slow dependency extractors
   --disable-dependency-tracking
@@ -3259,6 +3261,38 @@ fi
 $as_echo "$want_ares" >&6; }
 
 
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to disable dependency on -lrt" >&5
+$as_echo_n "checking whether to disable dependency on -lrt... " >&6; }
+  OPT_RT="default"
+  # Check whether --enable-rt was given.
+if test "${enable_rt+set}" = set; then :
+  enableval=$enable_rt; OPT_RT=$enableval
+fi
+
+  case "$OPT_RT" in
+    no)
+            dontwant_rt="yes"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      ;;
+    default)
+            dontwant_rt="no"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: (assumed no)
+      ;;
+    *" >&5
+$as_echo "(assumed no)
+      ;;
+    *" >&6; }
+            dontwant_rt="no"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+      ;;
+  esac
+    if test "$dontwant_rt" = "yes" && test "$want_thres" = "yes" ; then
+    as_fn_error $? "options --disable-rt and --enable-thread-resolver are mutually exclusive, at most one can be selected." "$LINENO" 5
+  fi
+
+
 #
 # Check that 'XC_CONFIGURE_PREAMBLE' has already run.
 #
@@ -4858,7 +4892,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-am__api_version='1.14'
+am__api_version='1.15'
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
 $as_echo_n "checking whether build environment is sane... " >&6; }
@@ -4937,17 +4971,24 @@ test "$program_suffix" != NONE &&
 ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
 program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
 
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} \"$am_aux_dir/missing\""
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
 fi
 
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
   case $am_aux_dir in
   *\ * | *\    *)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -5342,8 +5383,8 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 mkdir_p='$(MKDIR_P)'
 
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
 # Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AMTAR='$${TAR-tar}'
@@ -19929,7 +19970,9 @@ done
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for monotonic clock_gettime" >&5
 $as_echo_n "checking for monotonic clock_gettime... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  #
+  if test "x$dontwant_rt" == "xno" ; then
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 
@@ -19950,8 +19993,8 @@ $as_echo_n "checking for monotonic clock_gettime... " >&6; }
 int main (void)
 {
 
-      struct timespec ts;
-      (void)clock_gettime(CLOCK_MONOTONIC, &ts);
+        struct timespec ts;
+        (void)clock_gettime(CLOCK_MONOTONIC, &ts);
 
  ;
  return 0;
@@ -19960,18 +20003,19 @@ int main (void)
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-    ac_cv_func_clock_gettime="yes"
+      ac_cv_func_clock_gettime="yes"
 
 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; }
-    ac_cv_func_clock_gettime="no"
+      ac_cv_func_clock_gettime="no"
 
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  fi
 
 
     #
@@ -20921,7 +20965,7 @@ done
   if test "$LDAPLIBNAME" = "wldap32"; then
     curl_ldap_msg="enabled (winldap)"
 
-$as_echo "#define CURL_LDAP_WIN 1" >>confdefs.h
+$as_echo "#define USE_WIN32_LDAP 1" >>confdefs.h
 
   else
     curl_ldap_msg="enabled (OpenLDAP)"
@@ -21117,6 +21161,8 @@ if test "${with_gssapi+set}" = set; then :
 fi
 
 
+: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"}
+
 save_CPPFLAGS="$CPPFLAGS"
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if GSS-API support is requested" >&5
 $as_echo_n "checking if GSS-API support is requested... " >&6; }
@@ -21127,8 +21173,8 @@ $as_echo "yes" >&6; }
   if test -z "$GSSAPI_INCS"; then
      if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
         GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
-     elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
-        GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
+     elif test -f "$KRB5CONFIG"; then
+        GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi`
      elif test "$GSSAPI_ROOT" != "yes"; then
         GSSAPI_INCS="-I$GSSAPI_ROOT/include"
      fi
@@ -21272,8 +21318,8 @@ $as_echo "#define HAVE_GSSAPI 1" >>confdefs.h
         if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
                                  gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi`
            LIBS="$gss_libs $LIBS"
-        elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
-                                 gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
+        elif test -f "$KRB5CONFIG"; then
+                                 gss_libs=`$KRB5CONFIG --libs gssapi`
            LIBS="$gss_libs $LIBS"
         else
            case $host in
@@ -21579,6 +21625,7 @@ $as_echo "found" >&6; }
     fi
          $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
 
+
       { $as_echo "$as_me:${as_lineno-$LINENO}: pkg-config: SSL_LIBS: \"$SSL_LIBS\"" >&5
 $as_echo "$as_me: pkg-config: SSL_LIBS: \"$SSL_LIBS\"" >&6;}
       { $as_echo "$as_me:${as_lineno-$LINENO}: pkg-config: SSL_LDFLAGS: \"$SSL_LDFLAGS\"" >&5
 
 
   if test X"$HAVECRYPTO" = X"yes"; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking OpenSSL linking without -ldl" >&5
+$as_echo_n "checking OpenSSL linking without -ldl... " >&6; }
+     saved_libs=$LIBS
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+          #include <openssl/evp.h>
+
+int main (void)
+{
+
+          SSLeay_add_all_algorithms();
+
+ ;
+ 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; }
+          LIBS="$saved_libs"
+
+else
+
+          { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking OpenSSL linking with -ldl" >&5
+$as_echo_n "checking OpenSSL linking with -ldl... " >&6; }
+          LIBS="-ldl $LIBS"
+          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+            #include <openssl/evp.h>
+
+int main (void)
+{
+
+            SSLeay_add_all_algorithms();
+
+ ;
+ 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; }
+            LIBS="$saved_libs -ldl"
+
+else
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+            LIBS="$saved_libs"
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+  fi
+
+  if test X"$HAVECRYPTO" = X"yes"; then
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_connect in -lssl" >&5
 $as_echo_n "checking for SSL_connect in -lssl... " >&6; }
@@ -21865,10 +21982,6 @@ done
     fi
 
     if test X"$OPENSSL_ENABLED" = X"1"; then
-
-$as_echo "#define USE_SSLEAY 1" >>confdefs.h
-
-
               for ac_header in openssl/pkcs12.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "openssl/pkcs12.h" "ac_cv_header_openssl_pkcs12_h" "$ac_includes_default"
@@ -21884,8 +21997,6 @@ done
     else
        LIBS="$CLEANLIBS"
     fi
-            USE_SSLEAY="$OPENSSL_ENABLED"
-
 
     if test X"$OPT_SSL" != Xoff &&
        test "$OPENSSL_ENABLED" != "1"; then
@@ -21932,7 +22043,8 @@ fi
                     ENGINE_cleanup \
                     CRYPTO_cleanup_all_ex_data \
                     SSL_get_shutdown \
-                    SSLv2_client_method
+                    SSLv2_client_method \
+                    DES_set_odd_parity
 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"
 done
 
 
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BoringSSL" >&5
+$as_echo_n "checking for BoringSSL... " >&6; }
+    if test "x$ac_cv_func_DES_set_odd_parity" != "xyes"; then
+      curl_ssl_msg="enabled (BoringSSL)"
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_BORINGSSL 1
+_ACEOF
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for yaSSL using OpenSSL compatibility mode" >&5
-$as_echo_n "checking for yaSSL using OpenSSL compatibility mode... " >&6; }
+      { $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
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libressl" >&5
+$as_echo_n "checking for libressl... " >&6; }
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 
-#include <openssl/ssl.h>
+#include <openssl/opensslv.h>
 
 int main (void)
 {
 
-#if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
-        int dummy = SSL_ERROR_NONE;
-#else
-        Not the yaSSL OpenSSL compatibility header.
-#endif
+        int dummy = LIBRESSL_VERSION_NUMBER;
 
  ;
  return 0;
@@ -21974,10 +22096,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
 $as_echo "yes" >&6; }
 
 cat >>confdefs.h <<_ACEOF
-#define USE_YASSLEMUL 1
+#define HAVE_LIBRESSL 1
 _ACEOF
 
-      curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
+      curl_ssl_msg="enabled (libressl)"
 
 else
 
@@ -22072,6 +22194,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
     esac
     case $tst_api in
       0x110) tst_show="1.1.0" ;;
+      0x102) tst_show="1.0.2" ;;
       0x101) tst_show="1.0.1" ;;
       0x100) tst_show="1.0.0" ;;
       0x099) tst_show="0.9.9" ;;
@@ -22181,6 +22304,42 @@ rm -f core conftest.err conftest.$ac_objext \
 /* end confdefs.h.  */
 
 
+#define SSL_CONF_CTX_new innocuous_SSL_CONF_CTX_new
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+#undef SSL_CONF_CTX_new
+#ifdef __cplusplus
+extern "C"
+#endif
+char SSL_CONF_CTX_new ();
+#if defined __stub_SSL_CONF_CTX_new || defined __stub___SSL_CONF_CTX_new
+choke me
+#endif
+
+int main (void)
+{
+return SSL_CONF_CTX_new ();
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+      tst_api="0x102"
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  fi
+  if test "$tst_api" = "unknown"; then
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
 #define SSL_renegotiate_abbreviated innocuous_SSL_renegotiate_abbreviated
 #ifdef __STDC__
 # include <limits.h>
@@ -22538,6 +22697,7 @@ rm -f core conftest.err conftest.$ac_objext \
   fi
   case $tst_api in
     0x110) tst_show="1.1.0" ;;
+    0x102) tst_show="1.0.2" ;;
     0x101) tst_show="1.0.1" ;;
     0x100) tst_show="1.0.0" ;;
     0x099) tst_show="0.9.9" ;;
@@ -22680,9 +22840,9 @@ $as_echo "$ac_cv_lib_crypto_SRP_Calc_client_key" >&6; }
 if test "x$ac_cv_lib_crypto_SRP_Calc_client_key" = xyes; then :
 
 
-$as_echo "#define HAVE_SSLEAY_SRP 1" >>confdefs.h
+$as_echo "#define HAVE_OPENSSL_SRP 1" >>confdefs.h
 
-     HAVE_SSLEAY_SRP=1
+     HAVE_OPENSSL_SRP=1
 
 
 fi
@@ -23352,6 +23512,9 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
       OPT_CYASSL=""
     fi
 
+
+    cyassllibname=cyassl
+
     if test -z "$OPT_CYASSL" ; then
 
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CyaSSL_Init in -lcyassl" >&5
@@ -23465,11 +23628,79 @@ else
 
          CPPFLAGS=$_cppflags
          LDFLAGS=$_ldflags
+         cyassllib=""
 
 fi
 
     fi
 
+    addld=""
+    addlib=""
+    addcflags=""
+
+    if test "x$USE_CYASSL" != "xyes"; then
+            addld=-L$OPT_CYASSL/lib$libsuff
+      addcflags=-I$OPT_CYASSL/include
+      cyassllib=$OPT_CYASSL/lib$libsuff
+
+      LDFLAGS="$LDFLAGS $addld"
+      if test "$addcflags" != "-I/usr/include"; then
+         CPPFLAGS="$CPPFLAGS $addcflags"
+      fi
+
+      cyassllibname=wolfssl
+      my_ac_save_LIBS="$LIBS"
+      LIBS="-l$cyassllibname -lm $LIBS"
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CyaSSL_Init in -lwolfssl" >&5
+$as_echo_n "checking for CyaSSL_Init in -lwolfssl... " >&6; }
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+/* These aren't needed for detection and confuse WolfSSL.
+   They are set up properly later if it is detected.  */
+#undef SIZEOF_LONG
+#undef SIZEOF_LONG_LONG
+#include <cyassl/ssl.h>
+
+int main (void)
+{
+
+         return CyaSSL_Init();
+
+ ;
+ 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; }
+
+$as_echo "#define USE_CYASSL 1" >>confdefs.h
+
+         USE_CYASSL=1
+
+         CYASSL_ENABLED=1
+         USE_CYASSL="yes"
+         curl_ssl_msg="enabled (CyaSSL)"
+
+else
+
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+         CPPFLAGS=$_cppflags
+         LDFLAGS=$_ldflags
+         cyassllib=""
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LIBS="$my_ac_save_LIBS"
+    fi
+
     if test "x$USE_CYASSL" = "xyes"; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: detected CyaSSL" >&5
 $as_echo "$as_me: detected CyaSSL" >&6;}
@@ -23508,6 +23739,19 @@ _ACEOF
 
 
 
+            for ac_header in cyassl/options.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "cyassl/options.h" "ac_cv_header_cyassl_options_h" "$ac_includes_default"
+if test "x$ac_cv_header_cyassl_options_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_CYASSL_OPTIONS_H 1
+_ACEOF
+
+fi
+
+done
+
+
             for ac_header in cyassl/error-ssl.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "cyassl/error-ssl.h" "ac_cv_header_cyassl_error_ssl_h" "$ac_includes_default"
@@ -23521,7 +23765,7 @@ fi
 done
 
 
-      LIBS="-lcyassl -lm $LIBS"
+      LIBS="-l$cyassllibname -lm $LIBS"
 
       if test -n "$cyassllib"; then
                                         if test "x$cross_compiling" != "xyes"; then
@@ -23705,24 +23949,190 @@ $as_echo "found" >&6; }
         fi
       fi
     else
-        # Without pkg-config, we'll kludge in some defaults
-        addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
-        addcflags="-I$OPT_NSS/include"
-        version="unknown"
-        nssprefix=$OPT_NSS
-    fi
+      NSS_PCDIR="$OPT_NSS/lib/pkgconfig"
+      if test -f "$NSS_PCDIR/nss.pc"; then
 
-    if test -n "$addlib"; then
 
-      CLEANLIBS="$LIBS"
-      CLEANCPPFLAGS="$CPPFLAGS"
+    PKGCONFIG="no"
 
-      LIBS="$addlib $LIBS"
-      if test "$addcflags" != "-I/usr/include"; then
-         CPPFLAGS="$CPPFLAGS $addcflags"
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKGCONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKGCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKGCONFIG=$ac_cv_path_PKGCONFIG
+if test -n "$PKGCONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+$as_echo "$PKGCONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKGCONFIG"; then
+  ac_pt_PKGCONFIG=$PKGCONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKGCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
+if test -n "$ac_pt_PKGCONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+$as_echo "$ac_pt_PKGCONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKGCONFIG" = x; then
+    PKGCONFIG="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKGCONFIG=$ac_pt_PKGCONFIG
+  fi
+else
+  PKGCONFIG="$ac_cv_path_PKGCONFIG"
+fi
+
+
+    if test x$PKGCONFIG != xno; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nss options with pkg-config" >&5
+$as_echo_n "checking for nss options with pkg-config... " >&6; }
+            itexists=`
+    if test -n "$NSS_PCDIR"; then
+      PKG_CONFIG_LIBDIR="$NSS_PCDIR"
+      export PKG_CONFIG_LIBDIR
+    fi
+         $PKGCONFIG --exists nss >/dev/null 2>&1 && echo 1`
+
+      if test -z "$itexists"; then
+                        PKGCONFIG="no"
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
+$as_echo "found" >&6; }
+      fi
+    fi
+
+        if test "$PKGCONFIG" != "no" ; then
+          addld=`
+    if test -n "$NSS_PCDIR"; then
+      PKG_CONFIG_LIBDIR="$NSS_PCDIR"
+      export PKG_CONFIG_LIBDIR
+    fi
+ $PKGCONFIG --libs-only-L nss`
+          addlib=`
+    if test -n "$NSS_PCDIR"; then
+      PKG_CONFIG_LIBDIR="$NSS_PCDIR"
+      export PKG_CONFIG_LIBDIR
+    fi
+ $PKGCONFIG --libs-only-l nss`
+          addcflags=`
+    if test -n "$NSS_PCDIR"; then
+      PKG_CONFIG_LIBDIR="$NSS_PCDIR"
+      export PKG_CONFIG_LIBDIR
+    fi
+ $PKGCONFIG --cflags nss`
+          version=`
+    if test -n "$NSS_PCDIR"; then
+      PKG_CONFIG_LIBDIR="$NSS_PCDIR"
+      export PKG_CONFIG_LIBDIR
+    fi
+ $PKGCONFIG --modversion nss`
+          nssprefix=`
+    if test -n "$NSS_PCDIR"; then
+      PKG_CONFIG_LIBDIR="$NSS_PCDIR"
+      export PKG_CONFIG_LIBDIR
+    fi
+ $PKGCONFIG --variable=prefix nss`
+        fi
       fi
+    fi
+
+    if test -z "$addlib"; then
+      # Without pkg-config, we'll kludge in some defaults
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Using hard-wired libraries and compilation flags for NSS." >&5
+$as_echo "$as_me: WARNING: Using hard-wired libraries and compilation flags for NSS." >&2;}
+      addld="-L$OPT_NSS/lib"
+      addlib="-lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4"
+      addcflags="-I$OPT_NSS/include"
+      version="unknown"
+      nssprefix=$OPT_NSS
+    fi
+
+    CLEANLDFLAGS="$LDFLAGS"
+    CLEANLIBS="$LIBS"
+    CLEANCPPFLAGS="$CPPFLAGS"
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_VersionRangeSet in -lnss3" >&5
+    LDFLAGS="$addld $LDFLAGS"
+    LIBS="$addlib $LIBS"
+    if test "$addcflags" != "-I/usr/include"; then
+       CPPFLAGS="$CPPFLAGS $addcflags"
+    fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_VersionRangeSet in -lnss3" >&5
 $as_echo_n "checking for SSL_VersionRangeSet in -lnss3... " >&6; }
 if ${ac_cv_lib_nss3_SSL_VersionRangeSet+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -23760,37 +24170,36 @@ if test "x$ac_cv_lib_nss3_SSL_VersionRangeSet" = xyes; then :
 
 $as_echo "#define USE_NSS 1" >>confdefs.h
 
-       USE_NSS=1
+     USE_NSS=1
 
-       USE_NSS="yes"
-       NSS_ENABLED=1
-       curl_ssl_msg="enabled (NSS)"
+     USE_NSS="yes"
+     NSS_ENABLED=1
+     curl_ssl_msg="enabled (NSS)"
 
 else
 
-         LIBS="$CLEANLIBS"
-         CPPFLAGS="$CLEANCPPFLAGS"
+       LDFLAGS="$CLEANLDFLAGS"
+       LIBS="$CLEANLIBS"
+       CPPFLAGS="$CLEANCPPFLAGS"
 
 fi
 
 
-      if test "x$USE_NSS" = "xyes"; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: detected NSS version $version" >&5
+    if test "x$USE_NSS" = "xyes"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: detected NSS version $version" >&5
 $as_echo "$as_me: detected NSS version $version" >&6;}
 
-                NSS_LIBS=$addlib
+            NSS_LIBS=$addlib
 
 
-                                        if test "x$cross_compiling" != "xyes"; then
-          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
-          export LD_LIBRARY_PATH
-          { $as_echo "$as_me:${as_lineno-$LINENO}: Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH" >&5
+                              if test "x$cross_compiling" != "xyes"; then
+        LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
+        export LD_LIBRARY_PATH
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH" >&5
 $as_echo "$as_me: Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH" >&6;}
-        fi
       fi
 
     fi
-
   fi
 fi
 OPT_AXTLS=off
 
   if test "x$want_ca" != "xno" -a "x$want_ca" != "xunset" -a \
           "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
-        as_fn_error $? "Can't specify both --with-ca-bundle and --with-ca-path." "$LINENO" 5
+        ca="$want_ca"
+    capath="$want_capath"
   elif test "x$want_ca" != "xno" -a "x$want_ca" != "xunset"; then
         ca="$want_ca"
     capath="no"
   elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
-        if test "x$OPENSSL_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
-      as_fn_error $? "--with-ca-path only works with openSSL or PolarSSL" "$LINENO" 5
+        if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
+      as_fn_error $? "--with-ca-path only works with OpenSSL, GnuTLS or PolarSSL" "$LINENO" 5
     fi
     capath="$want_capath"
     ca="no"
@@ -23993,7 +24403,8 @@ _ACEOF
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ca" >&5
 $as_echo "$ca" >&6; }
-  elif test "x$capath" != "xno"; then
+  fi
+  if test "x$capath" != "xno"; then
     CURL_CA_PATH="\"$capath\""
 
 cat >>confdefs.h <<_ACEOF
@@ -24002,7 +24413,8 @@ _ACEOF
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $capath (capath)" >&5
 $as_echo "$capath (capath)" >&6; }
-  else
+  fi
+  if test "x$ca" = "xno" && test "x$capath" = "xno"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
   fi
@@ -25744,9 +26156,11 @@ $as_echo "$as_me: -L is $LD_H2" >&6;}
     CPPFLAGS="$CPPFLAGS $CPP_H2"
     LIBS="$LIB_H2 $LIBS"
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nghttp2_session_callbacks_set_send_callback in -lnghttp2" >&5
-$as_echo_n "checking for nghttp2_session_callbacks_set_send_callback in -lnghttp2... " >&6; }
-if ${ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback+:} false; then :
+    # use nghttp2_option_set_no_recv_client_magic to require nghttp2
+    # >= 1.0.0
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nghttp2_option_set_no_recv_client_magic in -lnghttp2" >&5
+$as_echo_n "checking for nghttp2_option_set_no_recv_client_magic in -lnghttp2... " >&6; }
+if ${ac_cv_lib_nghttp2_nghttp2_option_set_no_recv_client_magic+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -25758,26 +26172,26 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
-char nghttp2_session_callbacks_set_send_callback ();
+char nghttp2_option_set_no_recv_client_magic ();
 int main (void)
 {
-return nghttp2_session_callbacks_set_send_callback ();
+return nghttp2_option_set_no_recv_client_magic ();
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback=yes
+  ac_cv_lib_nghttp2_nghttp2_option_set_no_recv_client_magic=yes
 else
-  ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback=no
+  ac_cv_lib_nghttp2_nghttp2_option_set_no_recv_client_magic=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback" >&5
-$as_echo "$ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback" >&6; }
-if test "x$ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nghttp2_nghttp2_option_set_no_recv_client_magic" >&5
+$as_echo "$ac_cv_lib_nghttp2_nghttp2_option_set_no_recv_client_magic" >&6; }
+if test "x$ac_cv_lib_nghttp2_nghttp2_option_set_no_recv_client_magic" = xyes; then :
 
        for ac_header in nghttp2/nghttp2.h
 do :
@@ -38758,7 +39172,7 @@ if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
   as_fn_error $? "Options --enable-threaded-resolver and --enable-ares are mutually exclusive" "$LINENO" 5
 fi
 
-if test "$want_thres" = "yes"; then
+if test "$want_thres" = "yes" && test "$dontwant_rt" = "no"; then
   ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
 if test "x$ac_cv_header_pthread_h" = xyes; then :
 
@@ -38998,7 +39412,7 @@ $as_echo "yes" >&6; }
 fi
 
 
-if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
+if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_OPENSSL_SRP" = "x1") ; then
 
 $as_echo "#define USE_TLS_SRP 1" >>confdefs.h
 
@@ -39164,7 +39578,7 @@ ENABLE_STATIC="$enable_static"
 
 
 
-if test "x$USE_SSLEAY" = "x1"; then
+if test "x$OPENSSL_ENABLED" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
 elif test -n "$SSL_ENABLED"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
@@ -39203,7 +39617,7 @@ if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
 fi
 
 if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
-  if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
+  if test "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
       -o "x$DARWINSSL_ENABLED" = "x1"; then
     SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
@@ -39275,7 +39689,7 @@ if test "x$CURL_DISABLE_IMAP" != "x1"; then
 fi
 if test "x$CURL_DISABLE_SMB" != "x1" \
     -a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \
-    -a \( "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
+    -a \( "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
       -o "x$DARWINSSL_ENABLED" = "x1" \); then
   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
index a1b560c..683299d 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -47,6 +47,7 @@ CURL_CHECK_OPTION_WERROR
 CURL_CHECK_OPTION_CURLDEBUG
 CURL_CHECK_OPTION_SYMBOL_HIDING
 CURL_CHECK_OPTION_ARES
+CURL_CHECK_OPTION_RT
 
 XC_CHECK_PATH_SEPARATOR
 
@@ -1046,7 +1047,7 @@ if test x$CURL_DISABLE_LDAP != x1 ; then
 
   if test "$LDAPLIBNAME" = "wldap32"; then
     curl_ldap_msg="enabled (winldap)"
-    AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
+    AC_DEFINE(USE_WIN32_LDAP, 1, [Use Windows LDAP implementation])
   else
     curl_ldap_msg="enabled (OpenLDAP)"
     if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
@@ -1184,6 +1185,8 @@ AC_ARG_WITH(gssapi,
   fi
 ])
 
+: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"}
+
 save_CPPFLAGS="$CPPFLAGS"
 AC_MSG_CHECKING([if GSS-API support is requested])
 if test x"$want_gss" = xyes; then
@@ -1192,8 +1195,8 @@ if test x"$want_gss" = xyes; then
   if test -z "$GSSAPI_INCS"; then
      if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
         GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
-     elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
-        GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
+     elif test -f "$KRB5CONFIG"; then
+        GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi`
      elif test "$GSSAPI_ROOT" != "yes"; then
         GSSAPI_INCS="-I$GSSAPI_ROOT/include"
      fi
@@ -1283,10 +1286,10 @@ if test x"$want_gss" = xyes; then
            dnl into LIBS
            gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi`
            LIBS="$gss_libs $LIBS"
-        elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
+        elif test -f "$KRB5CONFIG"; then
            dnl krb5-config doesn't have --libs-only-L or similar, put everything
            dnl into LIBS
-           gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
+           gss_libs=`$KRB5CONFIG --libs gssapi`
            LIBS="$gss_libs $LIBS"
         else
            case $host in
@@ -1451,6 +1454,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
       SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
         $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
 
+      AC_SUBST(SSL_LIBS)
       AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
       AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
       AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
@@ -1506,6 +1510,46 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
 
 
   if test X"$HAVECRYPTO" = X"yes"; then
+     AC_MSG_CHECKING([OpenSSL linking without -ldl])
+     saved_libs=$LIBS
+     AC_TRY_LINK(
+        [
+          #include <openssl/evp.h>
+        ],
+        [
+          SSLeay_add_all_algorithms();
+        ],
+        [
+          AC_MSG_RESULT(yes)
+          LIBS="$saved_libs"
+        ],
+        [
+          AC_MSG_RESULT(no)
+          AC_MSG_CHECKING([OpenSSL linking with -ldl])
+          LIBS="-ldl $LIBS"
+          AC_TRY_LINK(
+          [
+            #include <openssl/evp.h>
+          ],
+          [
+            SSLeay_add_all_algorithms();
+          ],
+          [
+            AC_MSG_RESULT(yes)
+            LIBS="$saved_libs -ldl"
+          ],
+          [
+            AC_MSG_RESULT(no)
+            LIBS="$saved_libs"
+          ]
+          )
+
+        ]
+     )
+
+  fi
+
+  if test X"$HAVECRYPTO" = X"yes"; then
     dnl This is only reasonable to do if crypto actually is there: check for
     dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
 
@@ -1527,7 +1571,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
 
     else
 
-      dnl Have the libraries--check for SSLeay/OpenSSL headers
+      dnl Have the libraries--check for OpenSSL headers
       AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
                        openssl/pem.h openssl/ssl.h openssl/err.h,
         curl_ssl_msg="enabled (OpenSSL)"
@@ -1551,17 +1595,11 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
     fi
 
     if test X"$OPENSSL_ENABLED" = X"1"; then
-       AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
-
        dnl is there a pkcs12.h header present?
        AC_CHECK_HEADERS(openssl/pkcs12.h)
     else
        LIBS="$CLEANLIBS"
     fi
-    dnl USE_SSLEAY is the historical name for what configure calls
-    dnl OPENSSL_ENABLED; the names should really be unified
-    USE_SSLEAY="$OPENSSL_ENABLED"
-    AC_SUBST(USE_SSLEAY)
 
     if test X"$OPT_SSL" != Xoff &&
        test "$OPENSSL_ENABLED" != "1"; then
@@ -1578,8 +1616,11 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
                 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
               ])
 
-    dnl these can only exist if openssl exists
-    dnl yassl doesn't have SSL_get_shutdown
+    dnl These can only exist if OpenSSL exists
+    dnl Older versions of Cyassl (some time before 2.9.4) don't have
+    dnl SSL_get_shutdown (but this check won't actually detect it there
+    dnl as it's a macro that needs the header files be included)
+    dnl BoringSSL doesn't have DES_set_odd_parity
 
     AC_CHECK_FUNCS( RAND_status \
                     RAND_screen \
@@ -1587,28 +1628,30 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
                     ENGINE_cleanup \
                     CRYPTO_cleanup_all_ex_data \
                     SSL_get_shutdown \
-                    SSLv2_client_method )
-
-    dnl Make an attempt to detect if this is actually yassl's headers and
-    dnl OpenSSL emulation layer. We still leave everything else believing
-    dnl and acting like OpenSSL.
-
-    AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
+                    SSLv2_client_method \
+                    DES_set_odd_parity )
+
+    AC_MSG_CHECKING([for BoringSSL])
+    if test "x$ac_cv_func_DES_set_odd_parity" != "xyes"; then
+      curl_ssl_msg="enabled (BoringSSL)"
+      AC_DEFINE_UNQUOTED(HAVE_BORINGSSL, 1,
+        [Define to 1 if using BoringSSL.])
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+    fi
+    AC_MSG_CHECKING([for libressl])
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM([[
-#include <openssl/ssl.h>
+#include <openssl/opensslv.h>
       ]],[[
-#if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
-        int dummy = SSL_ERROR_NONE;
-#else
-        Not the yaSSL OpenSSL compatibility header.
-#endif
+        int dummy = LIBRESSL_VERSION_NUMBER;
       ]])
     ],[
       AC_MSG_RESULT([yes])
-      AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
-        [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
-      curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
+      AC_DEFINE_UNQUOTED(HAVE_LIBRESSL, 1,
+        [Define to 1 if using libressl.])
+      curl_ssl_msg="enabled (libressl)"
     ],[
       AC_MSG_RESULT([no])
     ])
@@ -1672,8 +1715,8 @@ dnl ---
 if test "$OPENSSL_ENABLED" = "1"; then
   AC_CHECK_LIB(crypto, SRP_Calc_client_key,
    [
-     AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
-     AC_SUBST(HAVE_SSLEAY_SRP, [1])
+     AC_DEFINE(HAVE_OPENSSL_SRP, 1, [if you have the function SRP_Calc_client_key])
+     AC_SUBST(HAVE_OPENSSL_SRP, [1])
    ])
 fi
 
@@ -1943,6 +1986,10 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
       OPT_CYASSL=""
     fi
 
+    dnl This should be reworked to use pkg-config instead
+
+    cyassllibname=cyassl
+
     if test -z "$OPT_CYASSL" ; then
       dnl check for lib in system default first
 
@@ -1984,19 +2031,70 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
        [
          CPPFLAGS=$_cppflags
          LDFLAGS=$_ldflags
+         cyassllib=""
        ])
     fi
 
+    addld=""
+    addlib=""
+    addcflags=""
+
+    if test "x$USE_CYASSL" != "xyes"; then
+      dnl libcyassl renamed to libwolfssl as of 3.4.0
+      addld=-L$OPT_CYASSL/lib$libsuff
+      addcflags=-I$OPT_CYASSL/include
+      cyassllib=$OPT_CYASSL/lib$libsuff
+
+      LDFLAGS="$LDFLAGS $addld"
+      if test "$addcflags" != "-I/usr/include"; then
+         CPPFLAGS="$CPPFLAGS $addcflags"
+      fi
+
+      cyassllibname=wolfssl
+      my_ac_save_LIBS="$LIBS"
+      LIBS="-l$cyassllibname -lm $LIBS"
+
+      AC_MSG_CHECKING([for CyaSSL_Init in -lwolfssl])
+      AC_LINK_IFELSE([
+       AC_LANG_PROGRAM([[
+/* These aren't needed for detection and confuse WolfSSL.
+   They are set up properly later if it is detected.  */
+#undef SIZEOF_LONG
+#undef SIZEOF_LONG_LONG
+#include <cyassl/ssl.h>
+       ]],[[
+         return CyaSSL_Init();
+       ]])
+      ],[
+         AC_MSG_RESULT(yes)
+         AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
+         AC_SUBST(USE_CYASSL, [1])
+         CYASSL_ENABLED=1
+         USE_CYASSL="yes"
+         curl_ssl_msg="enabled (CyaSSL)"
+       ],
+       [
+         AC_MSG_RESULT(no)
+         CPPFLAGS=$_cppflags
+         LDFLAGS=$_ldflags
+         cyassllib=""
+       ])
+      LIBS="$my_ac_save_LIBS"
+    fi
+
     if test "x$USE_CYASSL" = "xyes"; then
       AC_MSG_NOTICE([detected CyaSSL])
 
       dnl cyassl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
       AC_CHECK_SIZEOF(long long)
 
+      dnl Versions since at least 2.6.0 may have options.h
+      AC_CHECK_HEADERS(cyassl/options.h)
+
       dnl Versions since at least 2.9.4 renamed error.h to error-ssl.h
       AC_CHECK_HEADERS(cyassl/error-ssl.h)
 
-      LIBS="-lcyassl -lm $LIBS"
+      LIBS="-l$cyassllibname -lm $LIBS"
 
       if test -n "$cyassllib"; then
         dnl when shared libs were found in a path that the run-time
@@ -2063,56 +2161,72 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
         fi
       fi
     else
-        # Without pkg-config, we'll kludge in some defaults
-        addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
-        addcflags="-I$OPT_NSS/include"
-        version="unknown"
-        nssprefix=$OPT_NSS
+      NSS_PCDIR="$OPT_NSS/lib/pkgconfig"
+      if test -f "$NSS_PCDIR/nss.pc"; then
+        CURL_CHECK_PKGCONFIG(nss, [$NSS_PCDIR])
+        if test "$PKGCONFIG" != "no" ; then
+          addld=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --libs-only-L nss`
+          addlib=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --libs-only-l nss`
+          addcflags=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --cflags nss`
+          version=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --modversion nss`
+          nssprefix=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --variable=prefix nss`
+        fi
+      fi
     fi
 
-    if test -n "$addlib"; then
+    if test -z "$addlib"; then
+      # Without pkg-config, we'll kludge in some defaults
+      AC_MSG_WARN([Using hard-wired libraries and compilation flags for NSS.])
+      addld="-L$OPT_NSS/lib"
+      addlib="-lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4"
+      addcflags="-I$OPT_NSS/include"
+      version="unknown"
+      nssprefix=$OPT_NSS
+    fi
 
-      CLEANLIBS="$LIBS"
-      CLEANCPPFLAGS="$CPPFLAGS"
+    CLEANLDFLAGS="$LDFLAGS"
+    CLEANLIBS="$LIBS"
+    CLEANCPPFLAGS="$CPPFLAGS"
 
-      LIBS="$addlib $LIBS"
-      if test "$addcflags" != "-I/usr/include"; then
-         CPPFLAGS="$CPPFLAGS $addcflags"
-      fi
+    LDFLAGS="$addld $LDFLAGS"
+    LIBS="$addlib $LIBS"
+    if test "$addcflags" != "-I/usr/include"; then
+       CPPFLAGS="$CPPFLAGS $addcflags"
+    fi
 
-      dnl The function SSL_VersionRangeSet() is needed to enable TLS > 1.0
-      AC_CHECK_LIB(nss3, SSL_VersionRangeSet,
-       [
-       AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
-       AC_SUBST(USE_NSS, [1])
-       USE_NSS="yes"
-       NSS_ENABLED=1
-       curl_ssl_msg="enabled (NSS)"
-       ],
-       [
-         LIBS="$CLEANLIBS"
-         CPPFLAGS="$CLEANCPPFLAGS"
-       ])
+    dnl The function SSL_VersionRangeSet() is needed to enable TLS > 1.0
+    AC_CHECK_LIB(nss3, SSL_VersionRangeSet,
+     [
+     AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
+     AC_SUBST(USE_NSS, [1])
+     USE_NSS="yes"
+     NSS_ENABLED=1
+     curl_ssl_msg="enabled (NSS)"
+     ],
+     [
+       LDFLAGS="$CLEANLDFLAGS"
+       LIBS="$CLEANLIBS"
+       CPPFLAGS="$CLEANCPPFLAGS"
+     ])
 
-      if test "x$USE_NSS" = "xyes"; then
-        AC_MSG_NOTICE([detected NSS version $version])
+    if test "x$USE_NSS" = "xyes"; then
+      AC_MSG_NOTICE([detected NSS version $version])
 
-        dnl needed when linking the curl tool without USE_EXPLICIT_LIB_DEPS
-        NSS_LIBS=$addlib
-        AC_SUBST([NSS_LIBS])
+      dnl needed when linking the curl tool without USE_EXPLICIT_LIB_DEPS
+      NSS_LIBS=$addlib
+      AC_SUBST([NSS_LIBS])
 
-        dnl when shared libs were found in a path that the run-time
-        dnl linker doesn't search through, we need to add it to
-        dnl LD_LIBRARY_PATH to prevent further configure tests to fail
-        dnl due to this
-        if test "x$cross_compiling" != "xyes"; then
-          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
-          export LD_LIBRARY_PATH
-          AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
-        fi
+      dnl when shared libs were found in a path that the run-time
+      dnl linker doesn't search through, we need to add it to
+      dnl LD_LIBRARY_PATH to prevent further configure tests to fail
+      dnl due to this
+      if test "x$cross_compiling" != "xyes"; then
+        LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
+        export LD_LIBRARY_PATH
+        AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
       fi
 
-    fi
+    fi dnl NSS found
 
   fi dnl NSS not disabled
 
@@ -2768,7 +2882,9 @@ if test X"$want_h2" != Xno; then
     CPPFLAGS="$CPPFLAGS $CPP_H2"
     LIBS="$LIB_H2 $LIBS"
 
-    AC_CHECK_LIB(nghttp2, nghttp2_session_callbacks_set_send_callback,
+    # use nghttp2_option_set_no_recv_client_magic to require nghttp2
+    # >= 1.0.0
+    AC_CHECK_LIB(nghttp2, nghttp2_option_set_no_recv_client_magic,
       [
        AC_CHECK_HEADERS(nghttp2/nghttp2.h,
           curl_h2_msg="enabled (nghttp2)"
@@ -3142,7 +3258,7 @@ if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
 fi
 
-if test "$want_thres" = "yes"; then
+if test "$want_thres" = "yes" && test "$dontwant_rt" = "no"; then
   AC_CHECK_HEADER(pthread.h,
     [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
       save_CFLAGS="$CFLAGS"
@@ -3268,7 +3384,7 @@ AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
        want_tls_srp=yes
 )
 
-if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
+if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_OPENSSL_SRP" = "x1") ; then
    AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
    USE_TLS_SRP=1
    curl_tls_srp_msg="enabled"
@@ -3382,7 +3498,7 @@ dnl For keeping supported features and protocols also in pkg-config file
 dnl since it is more cross-compile friendly than curl-config
 dnl
 
-if test "x$USE_SSLEAY" = "x1"; then
+if test "x$OPENSSL_ENABLED" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
 elif test -n "$SSL_ENABLED"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
@@ -3421,7 +3537,7 @@ if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
 fi
 
 if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
-  if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
+  if test "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
       -o "x$DARWINSSL_ENABLED" = "x1"; then
     SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
@@ -3494,7 +3610,7 @@ if test "x$CURL_DISABLE_IMAP" != "x1"; then
 fi
 if test "x$CURL_DISABLE_SMB" != "x1" \
     -a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \
-    -a \( "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
+    -a \( "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
       -o "x$DARWINSSL_ENABLED" = "x1" \); then
   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
index 1ddf4c2..9398722 100644 (file)
@@ -71,7 +71,7 @@ while test $# -gt 0; do
         ;;
 
     --ca)
-        echo "@CURL_CA_BUNDLE@"
+        echo @CURL_CA_BUNDLE@
         ;;
 
     --cc)
diff --git a/depcomp b/depcomp
index 4ebd5b3..fc98710 100755 (executable)
--- a/depcomp
+++ b/depcomp
@@ -3,7 +3,7 @@
 
 scriptversion=2013-05-30.07; # UTC
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
index d4cf488..fed16e9 100644 (file)
@@ -50,7 +50,7 @@ Cocoa
 D
 
   Written by Kenneth Bogert
-  http://curl.haxx.se/libcurl/d/
+  http://dlang.org/library/std/net/curl.html
 
 Dylan
 
@@ -60,7 +60,7 @@ Dylan
 Eiffel
 
   Written by Eiffel Software
-  http://curl.haxx.se/libcurl/eiffel/
+  https://room.eiffel.com/library/curl
 
 Euphoria
 
@@ -78,7 +78,7 @@ Ferite
 
 Gambas
 
-  http://gambas.sourceforge.net
+  http://gambas.sourceforge.net/
 
 glib/GTK+
 
@@ -90,6 +90,11 @@ Guile:
   Written by Michael L. Gran
   http://www.lonelycactus.com/guile-curl.html
 
+Harbour
+
+  Written by Viktor Szakáts
+  https://github.com/vszakats/harbour-core/tree/master/contrib/hbcurl
+
 Haskell
 
   Written by Galois, Inc
@@ -97,8 +102,7 @@ Haskell
 
 Java
 
-  Maintained by [blank]
-  http://curl.haxx.se/libcurl/java/
+  https://github.com/pjlegato/curl-java
 
 Julia
 
@@ -115,7 +119,7 @@ Lua
   luacurl by Alexander Marinov
   http://luacurl.luaforge.net/
 
-  Lua-cURL by Jürgen Hötzel
+  Lua-cURL by Jürgen Hötzel
   http://luaforge.net/projects/lua-curl/
 
 Mono
@@ -126,7 +130,7 @@ Mono
 .NET
 
   libcurl-net by Jeffrey Phillips
-  http://sourceforge.net/projects/libcurl-net/
+  https://sourceforge.net/projects/libcurl-net/
 
 node.js
 
@@ -141,7 +145,7 @@ Object-Pascal
 O'Caml
 
   Written by Lars Nilsson
-  http://sourceforge.net/projects/ocurl/
+  https://sourceforge.net/projects/ocurl/
 
 Pascal
 
@@ -150,13 +154,13 @@ Pascal
 
 Perl
 
-  Maintained by Cris Bailiff
-  http://curl.haxx.se/libcurl/perl/
+  Maintained by Cris Bailiff and Bálint Szilakszi
+  https://github.com/szbalint/WWW--Curl
 
 PHP
 
   Written by Sterling Hughes
-  http://curl.haxx.se/libcurl/php/
+  https://php.net/curl
 
 PostgreSQL
 
@@ -170,8 +174,7 @@ Python
 
 R
 
-  RCurl by Duncan Temple Lang
-  http://www.omegahat.org/RCurl/
+  http://cran.r-project.org/package=curl
 
 Rexx
 
@@ -192,10 +195,15 @@ Ruby
   ruby-curl-multi - written by Kristjan Petursson and Keith Rarick
   http://curl-multi.rubyforge.org/
 
+Rust
+
+  curl-rust - by Carl Lerche
+  https://github.com/carllerche/curl-rust
+
 Scheme
 
   Bigloo binding by Kirill Lisovsky
-  http://curl.haxx.se/libcurl/scheme/
+  http://www.metapaper.net/lisovsky/web/curl/
 
 S-Lang
 
@@ -219,13 +227,13 @@ SPL
 
 Tcl
 
-  Tclcurl by Andrés García
-  http://personal1.iddeo.es/andresgarci/tclcurl/english/docs.html
+  Tclcurl by Andrés García
+  http://mirror.yellow5.com/tclcurl/
 
 Visual Basic
 
   libcurl-vb by Jeffrey Phillips
-  http://sourceforge.net/projects/libcurl-vb/
+  https://sourceforge.net/projects/libcurl-vb/
 
 Visual Foxpro
 
@@ -245,3 +253,8 @@ XBLite
 
   Written by David Szafranski
   http://perso.wanadoo.fr/xblite/libraries.html
+
+Xojo
+
+  Written by Andrew Lambert
+  https://github.com/charonn0/RB-libcURL
index c0c6fa8..36686ef 100644 (file)
--- a/docs/BUGS
+++ b/docs/BUGS
@@ -35,11 +35,9 @@ BUGS
   have a go at a solution. You can optionally also post your bug/problem at
   curl's bug tracking system over at
 
-        https://sourceforge.net/p/curl/bugs/
+        https://github.com/bagder/curl/issues
 
-  Please read the rest of this document below first before doing that! Also,
-  you need to login to your sourceforge account before being able to submit a
-  bug report (necessary evil done to avoid spam).
+  Please read the rest of this document below first before doing that!
 
   If you feel you need to ask around first, find a suitable mailing list and
   post there. The lists are available on http://curl.haxx.se/mail/
diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md
new file mode 100644 (file)
index 0000000..04ea66e
--- /dev/null
@@ -0,0 +1,32 @@
+Contributor Code of Conduct
+===========================
+
+As contributors and maintainers of this project, we pledge to respect all
+people who contribute through reporting issues, posting feature requests,
+updating documentation, submitting pull requests or patches, and other
+activities.
+
+We are committed to making participation in this project a harassment-free
+experience for everyone, regardless of level of experience, gender, gender
+identity and expression, sexual orientation, disability, personal appearance,
+body size, race, ethnicity, age, or religion.
+
+Examples of unacceptable behavior by participants include the use of sexual
+language or imagery, derogatory comments or personal attacks, trolling, public
+or private harassment, insults, or other unprofessional conduct.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct. Project maintainers who do not
+follow the Code of Conduct may be removed from the project team.
+
+This code of conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community.
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by opening an issue or contacting one or more of the project
+maintainers.
+
+This Code of Conduct is adapted from the [Contributor
+Covenant](http://contributor-covenant.org), version 1.1.0, available at
+[http://contributor-covenant.org/version/1/1/0/](http://contributor-covenant.org/version/1/1/0/)
index 83fa420..c6ea977 100644 (file)
@@ -34,7 +34,7 @@
  3.3 How To Make a Patch without git
  3.4 How to get your changes into the main sources
  3.5 Write good commit messages
- 3.6 Please don't send pull requests
+ 3.6 About pull requests
 
 ==============================================================================
 
 
  We also hang out on IRC in #curl on irc.freenode.net
 
+ If you're at all interested in the code side of things, consider clicking
+ 'watch' on the curl repo at github to get notified on pull requests and new
+ issues posted there.
+
 1.2. License
 
  When contributing with code, you agree to put your changes and new code under
 
 1.3 What To Read
 
- Source code, the man pages, the INTERNALS document, TODO, KNOWN_BUGS, the
- most recent CHANGES. Just lurking on the curl-library mailing list is gonna
- give you a lot of insights on what's going on right now. Asking there is a
- good idea too.
+ Source code, the man pages, the INTERNALS document, TODO, KNOWN_BUGS and the
+ most recent changes in the git log. Just lurking on the curl-library mailing
+ list is gonna give you a lot of insights on what's going on right now. Asking
there is a good idea too.
 
 2. cURL Coding Standards
 
 
  You need to first checkout the repository:
 
-     git clone git://github.com/bagder/curl.git
+     git clone https://github.com/bagder/curl.git
 
  You then proceed and edit all the files you like and you commit them to your
  local repository:
 
  For unix-like operating systems:
 
-     http://www.gnu.org/software/patch/patch.html
-     http://www.gnu.org/directory/diffutils.html
+     https://savannah.gnu.org/projects/patch/
+     https://www.gnu.org/software/diffutils/
 
  For Windows:
 
  and make sure that you have your own user and email setup correctly in git
  before you commit
 
-3.6 Please don't send pull requests
+3.6 About pull requests
 
  With git (and especially github) it is easy and tempting to send a pull
- request to one or more people in the curl project to have changes merged this
- way instead of mailing patches to the curl-library mailing list.
-
- We don't like that. We want them mailed for these reasons:
-
- - Peer review. Anyone and everyone on the list can review, comment and
-   improve on the patch. Pull requests limit this ability.
-
- - Anyone can merge the patch into their own trees for testing and those who
-   have push rights can push it to the main repo. It doesn't have to be anyone
-   the patch author knows beforehand.
-
- - Commit messages can be tweaked and changed if merged locally instead of
-   using github. Merges directly on github requires the changes to be perfect
-   already, which they seldom are.
+ request to the curl project to have changes merged this way instead of
+ mailing patches to the curl-library mailing list.
 
- - Merges on github prevents rebases and even enforces --no-ff which is a git
-   style we don't otherwise use in the project
+ We used to dislike this but we're trying to change that and accept that this
+ is a frictionless way for people to contribute to the project. We now welcome
+ pull requests!
 
- However: once patches have been reviewed and deemed fine on list they are
perfectly OK to be pulled from a published git tree.
+ We will continue to avoid using github's merge tools to make the history
linear and to make sure commits follow our style guidelines.
index 71186a2..2d317fd 100644 (file)
@@ -112,7 +112,7 @@ The Better License, Original BSD, GPL or LGPL?
  In Debian land, there seems to be a common opinion that LGPL is "maximally
  compatible" with apps while Original BSD is not. Like this:
 
-        http://lists.debian.org/debian-devel/2005/09/msg01417.html
+        https://lists.debian.org/debian-devel/2005/09/msg01417.html
 
 More SSL Libraries
 
@@ -163,13 +163,13 @@ Distro Angle of this Problem
 Footnotes
 
  [1] = http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6
- [2] = http://www.fsf.org/licensing/essays/bsd.html
- [3] = http://www.fsf.org/licensing/licenses/gpl.html
+ [2] = https://www.gnu.org/philosophy/bsd.html
+ [3] = https://www.gnu.org/licenses/gpl.html
  [4] = http://curl.haxx.se/docs/copyright.html
- [5] = http://www.openssl.org/source/license.html
- [6] = http://www.fsf.org/licensing/licenses/gpl.html end of section 3
- [7] = http://www.fsf.org/licensing/licenses/lgpl.html
- [8] = http://en.wikipedia.org/wiki/OpenSSL_exception
+ [5] = https://www.openssl.org/source/license.html
+ [6] = https://www.gnu.org/licenses/gpl.html end of section 3
+ [7] = https://www.gnu.org/licenses/lgpl.html
+ [8] = https://en.wikipedia.org/wiki/OpenSSL_exception
 
 Feedback/Updates provided by
 
index 043b7bb..06a306d 100644 (file)
--- a/docs/FAQ
+++ b/docs/FAQ
@@ -21,6 +21,7 @@ FAQ
   1.12 I have a problem who can I chat with?
   1.13 curl's ECCN number?
   1.14 How do I submit my patch?
+  1.15 How do I port libcurl to my OS?
 
  2. Install Related Problems
   2.1 configure doesn't find OpenSSL even when it is installed
@@ -81,6 +82,7 @@ FAQ
   4.18 file:// URLs containing drive letters (Windows, NetWare)
   4.19 Why doesn't cURL return an error when the network cable is unplugged?
   4.20 curl doesn't return error for HTTP non-200 responses!
+  4.21 Why is there a HTTP/1.1 in my HTTP/2 request?
 
  5. libcurl Issues
   5.1 Is libcurl thread-safe?
@@ -350,7 +352,7 @@ FAQ
   cryptography. When doing so, the Export Control Classification Number (ECCN)
   is used to identify the level of export control etc.
 
-  ASF gives a good explanation at http://www.apache.org/dev/crypto.html
+  ASF gives a good explanation at https://www.apache.org/dev/crypto.html
 
   We believe curl's number might be ECCN 5D002, another possibility is
   5D992. It seems necessary to write them, asking to confirm.
@@ -379,6 +381,19 @@ FAQ
 
   Lots of more details are found in the CONTRIBUTE and INTERNALS docs.
 
+  1.15 How do I port libcurl to my OS?
+
+  Here's a rough step-by-step:
+
+  1. copy a suitable lib/config-*.h file as a start to lib/config-[youros].h
+
+  2. edit lib/config-[youros].h to match your OS and setup
+
+  3. edit lib/curl_setup.h to include config-[youros].h when your OS is
+     detected by the preprocessor, in the style others already exist
+
+  4. compile lib/*.c and make them into a library
+
 
 2. Install Related Problems
 
@@ -764,8 +779,9 @@ FAQ
   request-body in a GET request with something like "curl -X GET -d data
   [URL]"
 
-  Note that -X doesn't change curl's behavior. It only modifies the actual
-  string sent in the request.
+  Note that -X doesn't actually change curl's behavior as it only modifies the
+  actual string sent in the request, but that may of course trigger a
+  different set of events.
 
   Accordingly, by using -XPOST on a command line that for example would follow
   a 303 redirect, you will effectively prevent curl from behaving
@@ -1026,7 +1042,7 @@ FAQ
   timeout is set.
 
   See option TcpMaxConnectRetransmissions on this page:
-  http://support.microsoft.com/?scid=kb%3Ben-us%3B175523&x=6&y=7
+  https://support.microsoft.com/en-us/kb/175523/en-us
 
   Also, even on non-Windows systems there may run a firewall or anti-virus
   software or similar that accepts the connection but does not actually do
@@ -1043,7 +1059,7 @@ FAQ
   You'll find that even if D:\blah.txt does exist, cURL returns a 'file
   not found' error.
 
-  According to RFC 1738 (http://www.faqs.org/rfcs/rfc1738.html),
+  According to RFC 1738 (https://www.ietf.org/rfc/rfc1738.txt),
   file:// URLs must contain a host component, but it is ignored by
   most implementations. In the above example, 'D:' is treated as the
   host component, and is taken away. Thus, cURL tries to open '/blah.txt'.
@@ -1115,6 +1131,16 @@ FAQ
   You can also use the -w option and the variable %{response_code} to extract
   the exact response code that was return in the response.
 
+  4.21 Why is there a HTTP/1.1 in my HTTP/2 request?
+
+  If you use verbose to see the HTTP request when you send off a HTTP/2
+  request, it will still say 1.1.
+
+  The reason for this is that we first generate the request to send using the
+  old 1.1 style and show that request in the verbose output, and then we
+  convert it over to the binary header-compressed HTTP/2 style. The actual
+  "1.1" part from that request is then not actually used in the transfer. The
+  binary HTTP/2 headers are not human readable.
 
 5. libcurl Issues
 
@@ -1137,13 +1163,13 @@ FAQ
   If you use a OpenSSL-powered libcurl in a multi-threaded environment, you
   need to provide one or two locking functions:
 
-    http://www.openssl.org/docs/crypto/threads.html
+    https://www.openssl.org/docs/crypto/threads.html
 
   If you use a GnuTLS-powered libcurl in a multi-threaded environment, you
   need to provide locking function(s) for libgcrypt (which is used by GnuTLS
   for the crypto functions).
 
-    http://www.gnu.org/software/gnutls/manual/html_node/Multi_002dthreaded-applications.html
+    https://web.archive.org/web/20111103083330/http://www.gnu.org/software/gnutls/manual/html_node/Multi_002dthreaded-applications.html
 
   No special locking is needed with a NSS-powered libcurl. NSS is thread-safe.
 
@@ -1319,7 +1345,7 @@ FAQ
   Also note that on many networks NATs or other IP-munging techniques are used
   that makes you see and use a different IP address locally than what the
   remote server will see you coming from. You may also consider using
-  http://www.torproject.org .
+  https://www.torproject.org/ .
 
   5.13 How do I stop an ongoing transfer?
 
index a674002..10fbdd5 100644 (file)
@@ -134,8 +134,8 @@ SMB
  - authentication with NTLMv1
 
 SMTP
- - authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9) and Kerberos 5
-   (*4)
+ - authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9), Kerberos 5
+   (*4) and External.
  - send e-mails
  - mail from support
  - mail size support
@@ -150,8 +150,8 @@ SMTPS (*1)
 
 POP3
  - authentication: Clear Text, APOP and SASL
- - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9) and
-   Kerberos 5 (*4)
+ - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9),
+   Kerberos 5 (*4) and External.
  - list e-mails
  - retrieve e-mails
  - enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via
@@ -165,8 +165,8 @@ POP3S (*1)
 
 IMAP
  - authentication: Clear Text and SASL
- - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9) and
-   Kerberos 5 (*4)
+ - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9),
+   Kerberos 5 (*4) and External.
  - list the folders of a mailbox
  - select a mailbox with support for verifying the UIDVALIDITY
  - fetch e-mails with support for specifying the UID and SECTION
index 818e161..b5abddf 100644 (file)
@@ -36,7 +36,7 @@ HTTP Cookies
   For a very long time, the only spec explaining how to use cookies was the
   original Netscape spec from 1994: http://curl.haxx.se/rfc/cookie_spec.html
 
-  In 2011, RFC6265 (http://www.ietf.org/rfc/rfc6265.txt) was finally published
+  In 2011, RFC6265 (https://www.ietf.org/rfc/rfc6265.txt) was finally published
   and details how cookies work within HTTP.
 
   1.2 Cookies saved to disk
diff --git a/docs/HTTP2.md b/docs/HTTP2.md
new file mode 100644 (file)
index 0000000..b4e2983
--- /dev/null
@@ -0,0 +1,107 @@
+HTTP/2 with curl
+================
+
+[HTTP/2 Spec](https://www.rfc-editor.org/rfc/rfc7540.txt)
+[http2 explained](http://daniel.haxx.se/http2/)
+
+Build prerequisites
+-------------------
+  - nghttp2
+  - OpenSSL, NSS, GnutTLS or PolarSSL with a new enough version
+
+[nghttp2](https://nghttp2.org/)
+-------------------------------
+
+libcurl uses this 3rd party library for the low level protocol handling
+parts. The reason for this is that HTTP/2 is much more complex at that layer
+than HTTP/1.1 (which we implement on our own) and that nghttp2 is an already
+existing and well functional library.
+
+We require at least version 1.0.0.
+
+Over an http:// URL
+-------------------
+
+If `CURLOPT_HTTP_VERSION` is set to `CURL_HTTP_VERSION_2_0`, libcurl will
+include an upgrade header in the initial request to the host to allow
+upgrading to HTTP/2.
+
+Possibly we can later introduce an option that will cause libcurl to fail if
+not possible to upgrade. Possibly we introduce an option that makes libcurl
+use HTTP/2 at once over http://
+
+Over an https:// URL
+--------------------
+
+If `CURLOPT_HTTP_VERSION` is set to `CURL_HTTP_VERSION_2_0`, libcurl will use
+ALPN (or NPN) to negotiate which protocol to continue with. Possibly introduce
+an option that will cause libcurl to fail if not possible to use HTTP/2.
+Consider options to explicitly disable ALPN and/or NPN.
+
+ALPN is the TLS extension that HTTP/2 is expected to use. The NPN extension is
+for a similar purpose, was made prior to ALPN and is used for SPDY so early
+HTTP/2 servers are implemented using NPN before ALPN support is widespread.
+
+SSL libs
+--------
+
+The challenge is the ALPN and NPN support and all our different SSL
+backends. You may need a fairly updated SSL library version for it to
+provide the necessary TLS features. Right now we support:
+
+  - OpenSSL:  ALPN and NPN
+  - NSS:      ALPN and NPN
+  - GnuTLS:   ALPN
+  - PolarSSL: ALPN
+
+Multiplexing
+------------
+
+Starting in 7.43.0, libcurl fully supports HTTP/2 multiplexing, which is the
+term for doing multiple independent transfers over the same physical TCP
+connection.
+
+To take advantage of multiplexing, you need to use the multi interface and set
+`CURLMOPT_PIPELINING` to `CURLPIPE_MULTIPLEX`. With that bit set, libcurl will
+attempt to re-use existing HTTP/2 connections and just add a new stream over
+that when doing subsequent parallel requests.
+
+While libcurl sets up a connection to a HTTP server there is a period during
+which it doesn't know if it can pipeline or do multiplexing and if you add new
+transfers in that period, libcurl will default to start new connections for
+those transfers. With the new option `CURLOPT_PIPEWAIT` (added in 7.43.0), you
+can ask that a transfer should rather wait and see in case there's a
+connection for the same host in progress that might end up being possible to
+multiplex on. It favours keeping the number of connections low to the cost of
+slightly longer time to first byte transferred.
+
+Applications
+------------
+
+We hide HTTP/2's binary nature and convert received HTTP/2 traffic to headers
+in HTTP 1.1 style. This allows applications to work unmodified.
+
+curl tool
+---------
+
+curl offers the `--http2` command line option to enable use of HTTP/2
+
+HTTP Alternative Services
+-------------------------
+
+Alt-Svc is a suggested extension with a corresponding frame (ALTSVC) in HTTP/2
+that tells the client about an alternative "route" to the same content for the
+same origin server that you get the response from. A browser or long-living
+client can use that hint to create a new connection asynchronously.  For
+libcurl, we may introduce a way to bring such clues to the applicaton and/or
+let a subsequent request use the alternate route
+automatically. [Spec](https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-05)
+
+TODO
+----
+
+  - Provide API to set priorities / dependencies of individual streams
+
+  - Implement "prior-knowledge" HTTP/2 connecitons over clear text so that
+    curl can connect with HTTP/2 at once without 1.1+Upgrade.
+
index 30dec53..67cd489 100644 (file)
@@ -173,13 +173,13 @@ Win32
    advice given above.
 
    KB94248  - How To Use the C Run-Time
-              http://support.microsoft.com/kb/94248/en-us
+              https://support.microsoft.com/kb/94248/en-us
 
    KB140584 - How to link with the correct C Run-Time (CRT) library
-              http://support.microsoft.com/kb/140584/en-us
+              https://support.microsoft.com/kb/140584/en-us
 
    KB190799 - Potential Errors Passing CRT Objects Across DLL Boundaries
-              http://msdn.microsoft.com/en-us/library/ms235460
+              https://msdn.microsoft.com/en-us/library/ms235460
 
    If your app is misbehaving in some strange way, or it is suffering
    from memory corruption, before asking for further help, please try
@@ -209,8 +209,8 @@ Win32
    environment variables, for example:
 
      set ZLIB_PATH=c:\zlib-1.2.8
-     set OPENSSL_PATH=c:\openssl-0.9.8zc
-     set LIBSSH2_PATH=c:\libssh2-1.4.3
+     set OPENSSL_PATH=c:\openssl-1.0.2c
+     set LIBSSH2_PATH=c:\libssh2-1.6.0
 
    ATTENTION: if you want to build with libssh2 support you have to use latest
    version 0.17 - previous versions will NOT work with 7.17.0 and later!
@@ -232,7 +232,7 @@ Win32
    - optional MingW32-built OpenLDAP SDK available from:
      http://www.gknw.net/mirror/openldap/
    - optional recent Novell CLDAP SDK available from:
-     http://developer.novell.com/ndk/cldap.htm
+     https://www.novell.com/developer/ndk/ldap_libraries_for_c.html
 
    Cygwin
    ------
@@ -254,7 +254,7 @@ Win32
    If you use MSVC 6 it is required that you use the February 2003 edition of
    the 'Platform SDK' which can be downloaded from:
 
-   http://www.microsoft.com/en-us/download/details.aspx?id=12261
+   https://www.microsoft.com/en-us/download/details.aspx?id=12261
 
    Building any software with MSVC 6 without having PSDK installed is just
    asking for trouble down the road once you have released it, you might notice
@@ -263,7 +263,7 @@ Win32
    software built in such way will at some point regret having done so.
 
    If the compiler has been updated with the installation of a service pack as
-   those mentioned in http://support.microsoft.com/kb/194022 the compiler can be
+   those mentioned in https://support.microsoft.com/kb/194022 the compiler can be
    safely used to read source code, translate and make it object code.
 
    But, even with the service packs mentioned above installed, the resulting
@@ -299,7 +299,7 @@ Win32
    Then run 'nmake vc' in curl's root directory.
 
    If you want to compile with zlib support, you will need to build
-   zlib (http://www.gzip.org/zlib/) as well. Please read the zlib
+   zlib (http://www.zlib.net/) as well. Please read the zlib
    documentation on how to compile zlib. Define the ZLIB_PATH environment
    variable to the location of zlib.h and zlib.lib, for example:
 
@@ -471,6 +471,15 @@ Win32
    add '-DCURL_STATICLIB' to your CFLAGS.  Otherwise the linker will look for
    dynamic import symbols.
 
+   Legacy Windows and SSL
+   ----------------------
+
+   WinSSL (specifically SChannel from Windows SSPI), is the native SSL library
+   in Windows. However, WinSSL in Windows <= XP is unable to connect to servers
+   that no longer support the legacy handshakes and algorithms used by those
+   versions. If you will be using curl in one of those earlier versions of
+   Windows you should choose another SSL backend such as OpenSSL.
+
 Apple iOS and Mac OS X
 ======================
 
@@ -665,12 +674,10 @@ NetWare
    - gnu make and awk running on the platform you compile on;
      native Win32 versions can be downloaded from:
      http://www.gknw.net/development/prgtools/
-   - recent Novell LibC SDK available from:
-     http://developer.novell.com/ndk/libc.htm
-   - or recent Novell CLib SDK available from:
-     http://developer.novell.com/ndk/clib.htm
+   - recent Novell LibC or Novell CLib SDK available from:
+     https://www.novell.com/developer/ndk/
    - optional recent Novell CLDAP SDK available from:
-     http://developer.novell.com/ndk/cldap.htm
+     https://www.novell.com/developer/ndk/ldap_libraries_for_c.html
    - optional zlib sources (static or dynamic linking with zlib.imp);
      sources with NetWare Makefile can be obtained from:
      http://www.gknw.net/mirror/zlib/
@@ -825,7 +832,7 @@ VxWorks
 
    To build libcurl for VxWorks you need:
 
-      - CYGWIN (free, http://cygwin.com/)
+      - CYGWIN (free, https://cygwin.com/)
       - Wind River Workbench (commercial)
 
    If you have CYGWIN and Workbench installed on you machine
@@ -1086,18 +1093,18 @@ Useful URLs
 
 axTLS        http://axtls.sourceforge.net/
 c-ares       http://c-ares.haxx.se/
-GNU GSS      http://www.gnu.org/software/gss/
-GnuTLS       http://www.gnu.org/software/gnutls/
-Heimdal      http://www.pdc.kth.se/heimdal/
-libidn       http://www.gnu.org/software/libidn/
+GNU GSS      https://www.gnu.org/software/gss/
+GnuTLS       https://www.gnu.org/software/gnutls/
+Heimdal      http://www.h5l.org/
+libidn       https://www.gnu.org/software/libidn/
 libmetalink  https://launchpad.net/libmetalink/
 libssh2      http://www.libssh2.org/
 MIT Kerberos http://web.mit.edu/kerberos/www/dist/
-NSS          http://www.mozilla.org/projects/security/pki/nss/
+NSS          https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS
 OpenLDAP     http://www.openldap.org/
-OpenSSL      http://www.openssl.org/
-PolarSSL     http://polarssl.org/
-yassl        http://www.yassl.com/
+OpenSSL      https://www.openssl.org/
+PolarSSL     https://tls.mbed.org/
+wolfSSL      https://www.wolfssl.com/wolfSSL/
 Zlib         http://www.zlib.net/
 
 MingW        http://www.mingw.org/
index 46d1836..ee2d703 100644 (file)
@@ -95,7 +95,7 @@ install instructions may produce erratic behaviour in DevCpp. For further info
 check the following sites
 
 http://aditsu.freeunixhost.com/dev-cpp-faq.html
-http://sourceforge.net/forum/message.php?msg_id=3252213
+https://sourceforge.net/p/dev-cpp/discussion/48211/thread/2a85ea46
 
 As I have mentioned before I will confine this to the SSL Library compilations
 but the process is very similar for compilation of the executable - curl.exe;
index f8b1b47..4cd63b4 100644 (file)
@@ -1,18 +1,57 @@
-                                  _   _ ____  _
-                              ___| | | |  _ \| |
-                             / __| | | | |_) | |
-                            | (__| |_| |  _ <| |___
-                             \___|\___/|_| \_\_____|
-
-INTERNALS
+Table of Contents
+=================
 
- The project is split in two. The library and the client. The client part uses
- the library, but the library is designed to allow other applications to use
- it.
+ - [Intro](#intro)
+ - [git](#git)
+ - [Portability](#Portability)
+ - [Windows vs Unix](#winvsunix)
+ - [Library](#Library)
+   - [`Curl_connect`](#Curl_connect)
+   - [`Curl_do`](#Curl_do)
+   - [`Curl_readwrite`](#Curl_readwrite)
+   - [`Curl_done`](#Curl_done)
+   - [`Curl_disconnect`](#Curl_disconnect)
+ - [HTTP(S)](#http)
+ - [FTP](#ftp)
+   - [Kerberos](#kerberos)
+ - [TELNET](#telnet)
+ - [FILE](#file)
+ - [SMB](#smb)
+ - [LDAP](#ldap)
+ - [E-mail](#email)
+ - [General](#general)
+ - [Persistent Connections](#persistent)
+ - [multi interface/non-blocking](#multi)
+ - [SSL libraries](#ssl)
+ - [Library Symbols](#symbols)
+ - [Return Codes and Informationals](#returncodes)
+ - [AP/ABI](#abi)
+ - [Client](#client)
+ - [Memory Debugging](#memorydebug)
+ - [Test Suite](#test)
+ - [Asynchronous name resolves](#asyncdns)
+   - [c-ares](#cares)
+ - [`curl_off_t`](#curl_off_t)
+ - [curlx](#curlx)
+ - [Content Encoding](#contentencoding)
+ - [hostip.c explained](#hostip)
+ - [Track Down Memory Leaks](#memoryleak)
+ - [`multi_socket`](#multi_socket)
+ - [Structs in libcurl](#structs)
+
+<a name="intro"></a>
+curl internals
+==============
+
+ This project is split in two. The library and the client. The client part
+ uses the library, but the library is designed to allow other applications to
+ use it.
 
  The largest amount of code and complexity is in the library part.
 
-GIT
+
+<a name="git"></a>
+git
 ===
 
  All changes to the sources are committed to the git repository as soon as
@@ -23,6 +62,7 @@ GIT
  Tagging shall be used extensively, and by the time we release new archives we
  should tag the sources with a name similar to the released version number.
 
+<a name="Portability"></a>
 Portability
 ===========
 
@@ -34,45 +74,55 @@ Portability
  want it to remain functional and buildable with these and later versions
  (older versions may still work but is not what we work hard to maintain):
 
- OpenSSL      0.9.7
- GnuTLS       1.2
- zlib         1.1.4
- libssh2      0.16
- c-ares       1.6.0
- libidn       0.4.1
- cyassl       2.0.0
- openldap     2.0
- MIT Kerberos 1.2.4
- GSKit        V5R3M0
- NSS          3.14.x
- axTLS        1.2.7
- PolarSSL     1.3.0
- Heimdal      ?
- nghttp2      0.6.0
+Dependencies
+------------
+
+ - OpenSSL      0.9.7
+ - GnuTLS       1.2
+ - zlib         1.1.4
+ - libssh2      0.16
+ - c-ares       1.6.0
+ - libidn       0.4.1
+ - cyassl       2.0.0
+ - openldap     2.0
+ - MIT Kerberos 1.2.4
+ - GSKit        V5R3M0
+ - NSS          3.14.x
+ - axTLS        1.2.7
+ - PolarSSL     1.3.0
+ - Heimdal      ?
+ - nghttp2      1.0.0
+
+Operating Systems
+-----------------
 
  On systems where configure runs, we aim at working on them all - if they have
  a suitable C compiler. On systems that don't run configure, we strive to keep
  curl running fine on:
 
- Windows      98
- AS/400       V5R3M0
- Symbian      9.1
- Windows CE   ?
- TPF          ?
+ - Windows      98
+ - AS/400       V5R3M0
+ - Symbian      9.1
+ - Windows CE   ?
+ - TPF          ?
+
+Build tools
+-----------
 
  When writing code (mostly for generating stuff included in release tarballs)
  we use a few "build tools" and we make sure that we remain functional with
  these versions:
 
- GNU Libtool  1.4.2
- GNU Autoconf 2.57
- GNU Automake 1.7 (we currently avoid 1.10 due to Solaris-related bugs)
- GNU M4       1.4
- perl         5.004
- roffit       0.5
- groff        ? (any version that supports "groff -Tps -man [in] [out]")
- ps2pdf (gs)  ?
GNU Libtool  1.4.2
GNU Autoconf 2.57
+ - GNU Automake 1.7
GNU M4       1.4
perl         5.004
roffit       0.5
groff        ? (any version that supports "groff -Tps -man [in] [out]")
ps2pdf (gs)  ?
 
+<a name="winvsunix"></a>
 Windows vs Unix
 ===============
 
@@ -87,8 +137,9 @@ Windows vs Unix
 
  2. Windows requires a couple of init calls for the socket stuff.
 
-   That's taken care of by the curl_global_init() call, but if other libs also
-   do it etc there might be reasons for applications to alter that behaviour.
+   That's taken care of by the `curl_global_init()` call, but if other libs
+   also do it etc there might be reasons for applications to alter that
+   behaviour.
 
  3. The file descriptors for network communication and file operations are
     not easily interchangeable as in unix.
@@ -101,28 +152,29 @@ Windows vs Unix
 
    We set stdout to binary under windows
 
- Inside the source code, We make an effort to avoid '#ifdef [Your OS]'. All
+ Inside the source code, We make an effort to avoid `#ifdef [Your OS]`. All
  conditionals that deal with features *should* instead be in the format
'#ifdef HAVE_THAT_WEIRD_FUNCTION'. Since Windows can't run configure scripts,
- we maintain a curl_config-win32.h file in lib directory that is supposed to
- look exactly as a curl_config.h file would have looked like on a Windows
`#ifdef HAVE_THAT_WEIRD_FUNCTION`. Since Windows can't run configure scripts,
+ we maintain a `curl_config-win32.h` file in lib directory that is supposed to
+ look exactly as a `curl_config.h` file would have looked like on a Windows
  machine!
 
  Generally speaking: always remember that this will be compiled on dozens of
  operating systems. Don't walk on the edge.
 
+<a name="Library"></a>
 Library
 =======
 
- (See LIBCURL-STRUCTS for a separate document describing all major internal
+ (See `LIBCURL-STRUCTS` for a separate document describing all major internal
  structs and their purposes.)
 
  There are plenty of entry points to the library, namely each publicly defined
  function that libcurl offers to applications. All of those functions are
- rather small and easy-to-follow. All the ones prefixed with 'curl_easy' are
+ rather small and easy-to-follow. All the ones prefixed with `curl_easy` are
  put in the lib/easy.c file.
 
curl_global_init_() and curl_global_cleanup() should be called by the
`curl_global_init_()` and `curl_global_cleanup()` should be called by the
  application to initialize and clean up global stuff in the library. As of
  today, it can handle the global SSL initing if SSL is enabled and it can init
  the socket layer on windows machines. libcurl itself has no "global" scope.
@@ -130,51 +182,56 @@ Library
  All printf()-style functions use the supplied clones in lib/mprintf.c. This
  makes sure we stay absolutely platform independent.
 
- curl_easy_init() allocates an internal struct and makes some initializations.
- The returned handle does not reveal internals. This is the 'SessionHandle'
- struct which works as an "anchor" struct for all curl_easy functions. All
- connections performed will get connect-specific data allocated that should be
- used for things related to particular connections/requests.
+ [ `curl_easy_init()`][2] allocates an internal struct and makes some
+ initializations.  The returned handle does not reveal internals. This is the
+ 'SessionHandle' struct which works as an "anchor" struct for all `curl_easy`
+ functions. All connections performed will get connect-specific data allocated
that should be used for things related to particular connections/requests.
 
- curl_easy_setopt() takes three arguments, where the option stuff must be
- passed in pairs: the parameter-ID and the parameter-value. The list of
+ [`curl_easy_setopt()`][1] takes three arguments, where the option stuff must
be passed in pairs: the parameter-ID and the parameter-value. The list of
  options is documented in the man page. This function mainly sets things in
  the 'SessionHandle' struct.
 
curl_easy_perform() is just a wrapper function that makes use of the multi
- API.  It basically curl_multi_init(), curl_multi_add_handle(),
- curl_multi_wait(), and curl_multi_perform() until the transfer is done and
- then returns.
`curl_easy_perform()` is just a wrapper function that makes use of the multi
+ API.  It basically calls `curl_multi_init()`, `curl_multi_add_handle()`,
+ `curl_multi_wait()`, and `curl_multi_perform()` until the transfer is done
and then returns.
 
  Some of the most important key functions in url.c are called from multi.c
  when certain key steps are to be made in the transfer operation.
 
- o Curl_connect()
+<a name="Curl_connect"></a>
+Curl_connect()
+--------------
 
    Analyzes the URL, it separates the different components and connects to the
    remote host. This may involve using a proxy and/or using SSL. The
-   Curl_resolv() function in lib/hostip.c is used for looking up host names
+   `Curl_resolv()` function in lib/hostip.c is used for looking up host names
    (it does then use the proper underlying method, which may vary between
    platforms and builds).
 
-   When Curl_connect is done, we are connected to the remote site. Then it is
-   time to tell the server to get a document/file. Curl_do() arranges this.
+   When `Curl_connect` is done, we are connected to the remote site. Then it
+   is time to tell the server to get a document/file. `Curl_do()` arranges
+   this.
 
    This function makes sure there's an allocated and initiated 'connectdata'
    struct that is used for this particular connection only (although there may
    be several requests performed on the same connect). A bunch of things are
    inited/inherited from the SessionHandle struct.
 
- o Curl_do()
+<a name="Curl_do"></a>
+Curl_do()
+---------
 
-   Curl_do() makes sure the proper protocol-specific function is called. The
+   `Curl_do()` makes sure the proper protocol-specific function is called. The
    functions are named after the protocols they handle.
 
    The protocol-specific functions of course deal with protocol-specific
-   negotiations and setup. They have access to the Curl_sendf() (from
+   negotiations and setup. They have access to the `Curl_sendf()` (from
    lib/sendf.c) function to send printf-style formatted data to the remote
    host and when they're ready to make the actual file transfer they call the
-   Curl_Transfer() function (in lib/transfer.c) to setup the transfer and
+   `Curl_Transfer()` function (in lib/transfer.c) to setup the transfer and
    returns.
 
    If this DO function fails and the connection is being re-used, libcurl will
@@ -183,11 +240,13 @@ Library
    we have discovered a dead connection before the DO function and thus we
    might wrongly be re-using a connection that was closed by the remote peer.
 
-   Some time during the DO function, the Curl_setup_transfer() function must
+   Some time during the DO function, the `Curl_setup_transfer()` function must
    be called with some basic info about the upcoming transfer: what socket(s)
    to read/write and the expected file transfer sizes (if known).
 
- o Curl_readwrite()
+<a name="Curl_readwrite"></a>
+Curl_readwrite()
+----------------
 
    Called during the transfer of the actual protocol payload.
 
@@ -196,18 +255,22 @@ Library
    called). The speedcheck functions in lib/speedcheck.c are also used to
    verify that the transfer is as fast as required.
 
- o Curl_done()
+<a name="Curl_done"></a>
+Curl_done()
+-----------
 
    Called after a transfer is done. This function takes care of everything
    that has to be done after a transfer. This function attempts to leave
-   matters in a state so that Curl_do() should be possible to call again on
+   matters in a state so that `Curl_do()` should be possible to call again on
    the same connection (in a persistent connection case). It might also soon
-   be closed with Curl_disconnect().
+   be closed with `Curl_disconnect()`.
 
- o Curl_disconnect()
+<a name="Curl_disconnect"></a>
+Curl_disconnect()
+-----------------
 
    When doing normal connections and transfers, no one ever tries to close any
-   connections so this is not normally called when curl_easy_perform() is
+   connections so this is not normally called when `curl_easy_perform()` is
    used. This function is only used when we are certain that no more transfers
    is going to be made on the connection. It can be also closed by force, or
    it can be called to make sure that libcurl doesn't keep too many
@@ -216,8 +279,9 @@ Library
    This function cleans up all resources that are associated with a single
    connection.
 
-
- HTTP(S)
+<a name="http"></a>
+HTTP(S)
+=======
 
  HTTP offers a lot and is the protocol in curl that uses the most lines of
  code. There is a special file (lib/formdata.c) that offers all the multipart
@@ -229,100 +293,123 @@ Library
  HTTPS uses in almost every means the same procedure as HTTP, with only two
  exceptions: the connect procedure is different and the function used to read
  or write from the socket is different, although the latter fact is hidden in
- the source by the use of Curl_read() for reading and Curl_write() for writing
- data to the remote server.
+ the source by the use of `Curl_read()` for reading and `Curl_write()` for
writing data to the remote server.
 
http_chunks.c contains functions that understands HTTP 1.1 chunked transfer
`http_chunks.c` contains functions that understands HTTP 1.1 chunked transfer
  encoding.
 
- An interesting detail with the HTTP(S) request, is the Curl_add_buffer()
+ An interesting detail with the HTTP(S) request, is the `Curl_add_buffer()`
  series of functions we use. They append data to one single buffer, and when
  the building is done the entire request is sent off in one single write. This
  is done this way to overcome problems with flawed firewalls and lame servers.
 
- FTP
+<a name="ftp"></a>
+FTP
+===
 
- The Curl_if2ip() function can be used for getting the IP number of a
+ The `Curl_if2ip()` function can be used for getting the IP number of a
  specified network interface, and it resides in lib/if2ip.c.
 
- Curl_ftpsendf() is used for sending FTP commands to the remote server. It was
- made a separate function to prevent us programmers from forgetting that they
- must be CRLF terminated. They must also be sent in one single write() to make
- firewalls and similar happy.
+ `Curl_ftpsendf()` is used for sending FTP commands to the remote server. It
+ was made a separate function to prevent us programmers from forgetting that
+ they must be CRLF terminated. They must also be sent in one single write() to
make firewalls and similar happy.
 
- Kerberos
+<a name="kerberos"></a>
+Kerberos
+--------
 
  Kerberos support is mainly in lib/krb5.c and lib/security.c but also
curl_sasl_sspi.c and curl_sasl_gssapi.c for the email protocols and
socks_gssapi.c & socks_sspi.c for SOCKS5 proxy specifics.
`curl_sasl_sspi.c` and `curl_sasl_gssapi.c` for the email protocols and
`socks_gssapi.c` and `socks_sspi.c` for SOCKS5 proxy specifics.
 
- TELNET
+<a name="telnet"></a>
+TELNET
+======
 
  Telnet is implemented in lib/telnet.c.
 
- FILE
+<a name="file"></a>
+FILE
+====
 
  The file:// protocol is dealt with in lib/file.c.
 
- SMB
+<a name="smb"></a>
+SMB
+===
 
  The smb:// protocol is dealt with in lib/smb.c.
 
- LDAP
+<a name="ldap"></a>
+LDAP
+====
 
  Everything LDAP is in lib/ldap.c and lib/openldap.c
 
- E-mail
+<a name="email"></a>
+E-mail
+======
 
  The e-mail related source code is in lib/imap.c, lib/pop3.c and lib/smtp.c.
 
- GENERAL
+<a name="general"></a>
+General
+=======
 
  URL encoding and decoding, called escaping and unescaping in the source code,
  is found in lib/escape.c.
 
  While transferring data in Transfer() a few functions might get used.
curl_getdate() in lib/parsedate.c is for HTTP date comparisons (and more).
`curl_getdate()` in lib/parsedate.c is for HTTP date comparisons (and more).
 
- lib/getenv.c offers curl_getenv() which is for reading environment variables
- in a neat platform independent way. That's used in the client, but also in
- lib/url.c when checking the proxy environment variables. Note that contrary
- to the normal unix getenv(), this returns an allocated buffer that must be
- free()ed after use.
+ lib/getenv.c offers `curl_getenv()` which is for reading environment
+ variables in a neat platform independent way. That's used in the client, but
+ also in lib/url.c when checking the proxy environment variables. Note that
+ contrary to the normal unix getenv(), this returns an allocated buffer that
must be free()ed after use.
 
  lib/netrc.c holds the .netrc parser
 
  lib/timeval.c features replacement functions for systems that don't have
  gettimeofday() and a few support functions for timeval conversions.
 
- A function named curl_version() that returns the full curl version string is
- found in lib/version.c.
+ A function named `curl_version()` that returns the full curl version string
is found in lib/version.c.
 
+<a name="persistent"></a>
 Persistent Connections
 ======================
 
  The persistent connection support in libcurl requires some considerations on
  how to do things inside of the library.
 
- o The 'SessionHandle' struct returned in the curl_easy_init() call must never
-   hold connection-oriented data. It is meant to hold the root data as well as
-   all the options etc that the library-user may choose.
- o The 'SessionHandle' struct holds the "connection cache" (an array of
+ - The 'SessionHandle' struct returned in the [`curl_easy_init()`][2] call
+   must never hold connection-oriented data. It is meant to hold the root data
+   as well as all the options etc that the library-user may choose.
+
+ - The 'SessionHandle' struct holds the "connection cache" (an array of
    pointers to 'connectdata' structs).
- o This enables the 'curl handle' to be reused on subsequent transfers.
- o When libcurl is told to perform a transfer, it first checks for an already
+
+ - This enables the 'curl handle' to be reused on subsequent transfers.
+
+ - When libcurl is told to perform a transfer, it first checks for an already
    existing connection in the cache that we can use. Otherwise it creates a
    new one and adds that the cache. If the cache is full already when a new
    connection is added added, it will first close the oldest unused one.
- o When the transfer operation is complete, the connection is left
+
+ - When the transfer operation is complete, the connection is left
    open. Particular options may tell libcurl not to, and protocols may signal
    closure on connections and then they won't be kept open of course.
- o When curl_easy_cleanup() is called, we close all still opened connections,
+
+ - When `curl_easy_cleanup()` is called, we close all still opened connections,
    unless of course the multi interface "owns" the connections.
 
  The curl handle must be re-used in order for the persistent connections to
  work.
 
+<a name="multi"></a>
 multi interface/non-blocking
 ============================
 
@@ -341,6 +428,7 @@ multi interface/non-blocking
  protocols are crappy examples and they are subject for rewrite in the future
  to better fit the libcurl protocol family.
 
+<a name="ssl"></a>
 SSL libraries
 =============
 
@@ -350,36 +438,39 @@ SSL libraries
  in future libcurl versions.
 
  To deal with this internally in the best way possible, we have a generic SSL
- function API as provided by the vtls.[ch] system, and they are the only SSL
functions we must use from within libcurl. vtls is then crafted to use the
- appropriate lower-level function calls to whatever SSL library that is in
+ function API as provided by the vtls/vtls.[ch] system, and they are the only
SSL functions we must use from within libcurl. vtls is then crafted to use
the appropriate lower-level function calls to whatever SSL library that is in
  use. For example vtls/openssl.[ch] for the OpenSSL library.
 
+<a name="symbols"></a>
 Library Symbols
 ===============
 
- All symbols used internally in libcurl must use a 'Curl_' prefix if they're
+ All symbols used internally in libcurl must use a `Curl_` prefix if they're
  used in more than a single file. Single-file symbols must be made static.
- Public ("exported") symbols must use a 'curl_' prefix. (There are exceptions,
+ Public ("exported") symbols must use a `curl_` prefix. (There are exceptions,
  but they are to be changed to follow this pattern in future versions.) Public
- API functions are marked with CURL_EXTERN in the public header files so that
- all others can be hidden on platforms where this is possible.
+ API functions are marked with `CURL_EXTERN` in the public header files so
that all others can be hidden on platforms where this is possible.
 
+<a name="returncodes"></a>
 Return Codes and Informationals
 ===============================
 
  I've made things simple. Almost every function in libcurl returns a CURLcode,
- that must be CURLE_OK if everything is OK or otherwise a suitable error code
- as the curl/curl.h include file defines. The very spot that detects an error
must use the Curl_failf() function to set the human-readable error
+ that must be `CURLE_OK` if everything is OK or otherwise a suitable error
+ code as the curl/curl.h include file defines. The very spot that detects an
error must use the `Curl_failf()` function to set the human-readable error
  description.
 
  In aiding the user to understand what's happening and to debug curl usage, we
- must supply a fair amount of informational messages by using the Curl_infof()
function. Those messages are only displayed when the user explicitly asks for
- them. They are best used when revealing information that isn't otherwise
- obvious.
+ must supply a fair amount of informational messages by using the
`Curl_infof()` function. Those messages are only displayed when the user
+ explicitly asks for them. They are best used when revealing information that
isn't otherwise obvious.
 
+<a name="abi"></a>
 API/ABI
 =======
 
@@ -387,29 +478,31 @@ API/ABI
  that makes it easier to keep a solid API/ABI over time. See docs/libcurl/ABI
  for our promise to users.
 
+<a name="client"></a>
 Client
 ======
 
- main() resides in src/tool_main.c.
+ main() resides in `src/tool_main.c`.
 
src/tool_hugehelp.c is automatically generated by the mkhelp.pl perl script
`src/tool_hugehelp.c` is automatically generated by the mkhelp.pl perl script
  to display the complete "manual" and the src/tool_urlglob.c file holds the
  functions used for the URL-"globbing" support. Globbing in the sense that the
  {} and [] expansion stuff is there.
 
  The client mostly messes around to setup its 'config' struct properly, then
- it calls the curl_easy_*() functions of the library and when it gets back
- control after the curl_easy_perform() it cleans up the library, checks status
- and exits.
+ it calls the `curl_easy_*()` functions of the library and when it gets back
+ control after the `curl_easy_perform()` it cleans up the library, checks
status and exits.
 
  When the operation is done, the ourWriteOut() function in src/writeout.c may
  be called to report about the operation. That function is using the
curl_easy_getinfo() function to extract useful information from the curl
`curl_easy_getinfo()` function to extract useful information from the curl
  session.
 
  It may loop and do all this several times if many URLs were specified on the
  command line or config file.
 
+<a name="memorydebug"></a>
 Memory Debugging
 ================
 
@@ -439,6 +532,7 @@ Memory Debugging
  the configure script. When --enable-debug is given both features will be
  enabled, unless some restriction prevents memory tracking from being used.
 
+<a name="test"></a>
 Test Suite
 ==========
 
@@ -456,29 +550,546 @@ Test Suite
  The test suite automatically detects if curl was built with the memory
  debugging enabled, and if it was it will detect memory leaks, too.
 
-Building Releases
-=================
+<a name="asyncdns"></a>
+Asynchronous name resolves
+==========================
+
+ libcurl can be built to do name resolves asynchronously, using either the
+ normal resolver in a threaded manner or by using c-ares.
+
+<a name="cares"></a>
+[c-ares][3]
+------
+
+### Build libcurl to use a c-ares
+
+1. ./configure --enable-ares=/path/to/ares/install
+2. make
+
+### c-ares on win32
+
+ First I compiled c-ares. I changed the default C runtime library to be the
+ single-threaded rather than the multi-threaded (this seems to be required to
+ prevent linking errors later on). Then I simply build the areslib project
+ (the other projects adig/ahost seem to fail under MSVC).
+
+ Next was libcurl. I opened lib/config-win32.h and I added a:
+ `#define USE_ARES 1`
+
+ Next thing I did was I added the path for the ares includes to the include
+ path, and the libares.lib to the libraries.
+
+ Lastly, I also changed libcurl to be single-threaded rather than
+ multi-threaded, again this was to prevent some duplicate symbol errors. I'm
+ not sure why I needed to change everything to single-threaded, but when I
+ didn't I got redefinition errors for several CRT functions (malloc, stricmp,
+ etc.)
+
+<a name="curl_off_t"></a>
+`curl_off_t`
+==========
+
+ curl_off_t is a data type provided by the external libcurl include
+ headers. It is the type meant to be used for the [`curl_easy_setopt()`][1]
+ options that end with LARGE. The type is 64bit large on most modern
+ platforms.
+
+curlx
+=====
+
+ The libcurl source code offers a few functions by source only. They are not
+ part of the official libcurl API, but the source files might be useful for
+ others so apps can optionally compile/build with these sources to gain
+ additional functions.
+
+ We provide them through a single header file for easy access for apps:
+ "curlx.h"
+
+`curlx_strtoofft()`
+-------------------
+   A macro that converts a string containing a number to a curl_off_t number.
+   This might use the curlx_strtoll() function which is provided as source
+   code in strtoofft.c. Note that the function is only provided if no
+   strtoll() (or equivalent) function exist on your platform. If curl_off_t
+   is only a 32 bit number on your platform, this macro uses strtol().
+
+`curlx_tvnow()`
+---------------
+   returns a struct timeval for the current time.
+
+`curlx_tvdiff()`
+--------------
+   returns the difference between two timeval structs, in number of
+   milliseconds.
+
+`curlx_tvdiff_secs()`
+---------------------
+   returns the same as curlx_tvdiff but with full usec resolution (as a
+   double)
+
+Future
+------
+
+ Several functions will be removed from the public curl_ name space in a
+ future libcurl release. They will then only become available as curlx_
+ functions instead. To make the transition easier, we already today provide
+ these functions with the curlx_ prefix to allow sources to get built properly
+ with the new function names. The functions this concerns are:
+
+ - `curlx_getenv`
+ - `curlx_strequal`
+ - `curlx_strnequal`
+ - `curlx_mvsnprintf`
+ - `curlx_msnprintf`
+ - `curlx_maprintf`
+ - `curlx_mvaprintf`
+ - `curlx_msprintf`
+ - `curlx_mprintf`
+ - `curlx_mfprintf`
+ - `curlx_mvsprintf`
+ - `curlx_mvprintf`
+ - `curlx_mvfprintf`
+
+<a name="contentencoding"></a>
+Content Encoding
+================
+
+## About content encodings
+
+ [HTTP/1.1][4] specifies that a client may request that a server encode its
+ response. This is usually used to compress a response using one of a set of
+ commonly available compression techniques. These schemes are 'deflate' (the
+ zlib algorithm), 'gzip' and 'compress'. A client requests that the sever
+ perform an encoding by including an Accept-Encoding header in the request
+ document. The value of the header should be one of the recognized tokens
+ 'deflate', ... (there's a way to register new schemes/tokens, see sec 3.5 of
+ the spec). A server MAY honor the client's encoding request. When a response
+ is encoded, the server includes a Content-Encoding header in the
+ response. The value of the Content-Encoding header indicates which scheme was
+ used to encode the data.
+
+ A client may tell a server that it can understand several different encoding
+ schemes. In this case the server may choose any one of those and use it to
+ encode the response (indicating which one using the Content-Encoding header).
+ It's also possible for a client to attach priorities to different schemes so
+ that the server knows which it prefers. See sec 14.3 of RFC 2616 for more
+ information on the Accept-Encoding header.
+
+## Supported content encodings
+
+ The 'deflate' and 'gzip' content encoding are supported by libcurl. Both
+ regular and chunked transfers work fine.  The zlib library is required for
+ this feature.
+
+## The libcurl interface
+
+ To cause libcurl to request a content encoding use:
+
+  [`curl_easy_setopt`][1](curl, [`CURLOPT_ACCEPT_ENCODING`][5], string)
+
+ where string is the intended value of the Accept-Encoding header.
+
+ Currently, libcurl only understands how to process responses that use the
+ "deflate" or "gzip" Content-Encoding, so the only values for
+ [`CURLOPT_ACCEPT_ENCODING`][5] that will work (besides "identity," which does
+ nothing) are "deflate" and "gzip" If a response is encoded using the
+ "compress" or methods, libcurl will return an error indicating that the
+ response could not be decoded.  If <string> is NULL no Accept-Encoding header
+ is generated.  If <string> is a zero-length string, then an Accept-Encoding
+ header containing all supported encodings will be generated.
+
+ The [`CURLOPT_ACCEPT_ENCODING`][5] must be set to any non-NULL value for
+ content to be automatically decoded.  If it is not set and the server still
+ sends encoded content (despite not having been asked), the data is returned
+ in its raw form and the Content-Encoding type is not checked.
+
+## The curl interface
+
+ Use the [--compressed][6] option with curl to cause it to ask servers to
+ compress responses using any format supported by curl.
+
+<a name="hostip"></a>
+hostip.c explained
+==================
+
+ The main compile-time defines to keep in mind when reading the host*.c source
+ file are these:
+
+## `CURLRES_IPV6`
+
+ this host has getaddrinfo() and family, and thus we use that. The host may
+ not be able to resolve IPv6, but we don't really have to take that into
+ account. Hosts that aren't IPv6-enabled have CURLRES_IPV4 defined.
+
+## `CURLRES_ARES`
+
+ is defined if libcurl is built to use c-ares for asynchronous name
+ resolves. This can be Windows or *nix.
+
+## `CURLRES_THREADED`
+
+ is defined if libcurl is built to use threading for asynchronous name
+ resolves. The name resolve will be done in a new thread, and the supported
+ asynch API will be the same as for ares-builds. This is the default under
+ (native) Windows.
+
+ If any of the two previous are defined, `CURLRES_ASYNCH` is defined too. If
+ libcurl is not built to use an asynchronous resolver, `CURLRES_SYNCH` is
+ defined.
+
+## host*.c sources
+
+ The host*.c sources files are split up like this:
+
+ - hostip.c      - method-independent resolver functions and utility functions
+ - hostasyn.c    - functions for asynchronous name resolves
+ - hostsyn.c     - functions for synchronous name resolves
+ - asyn-ares.c   - functions for asynchronous name resolves using c-ares
+ - asyn-thread.c - functions for asynchronous name resolves using threads
+ - hostip4.c     - IPv4 specific functions
+ - hostip6.c     - IPv6 specific functions
+
+ The hostip.h is the single united header file for all this. It defines the
+ `CURLRES_*` defines based on the config*.h and curl_setup.h defines.
+
+<a name="memoryleak"></a>
+Track Down Memory Leaks
+=======================
+
+## Single-threaded
+
+  Please note that this memory leak system is not adjusted to work in more
+  than one thread. If you want/need to use it in a multi-threaded app. Please
+  adjust accordingly.
+
+
+## Build
+
+  Rebuild libcurl with -DCURLDEBUG (usually, rerunning configure with
+  --enable-debug fixes this). 'make clean' first, then 'make' so that all
+  files actually are rebuilt properly. It will also make sense to build
+  libcurl with the debug option (usually -g to the compiler) so that debugging
+  it will be easier if you actually do find a leak in the library.
+
+  This will create a library that has memory debugging enabled.
+
+## Modify Your Application
+
+  Add a line in your application code:
+
+       `curl_memdebug("dump");`
+
+  This will make the malloc debug system output a full trace of all resource
+  using functions to the given file name. Make sure you rebuild your program
+  and that you link with the same libcurl you built for this purpose as
+  described above.
+
+## Run Your Application
+
+  Run your program as usual. Watch the specified memory trace file grow.
+
+  Make your program exit and use the proper libcurl cleanup functions etc. So
+  that all non-leaks are returned/freed properly.
+
+## Analyze the Flow
+
+  Use the tests/memanalyze.pl perl script to analyze the dump file:
+
+    tests/memanalyze.pl dump
+
+  This now outputs a report on what resources that were allocated but never
+  freed etc. This report is very fine for posting to the list!
+
+  If this doesn't produce any output, no leak was detected in libcurl. Then
+  the leak is mostly likely to be in your code.
+
+<a name="multi_socket"></a>
+`multi_socket`
+==============
+
+ Implementation of the `curl_multi_socket` API
+
+  The main ideas of this API are simply:
+
+   1 - The application can use whatever event system it likes as it gets info
+       from libcurl about what file descriptors libcurl waits for what action
+       on. (The previous API returns `fd_sets` which is very select()-centric).
+
+   2 - When the application discovers action on a single socket, it calls
+       libcurl and informs that there was action on this particular socket and
+       libcurl can then act on that socket/transfer only and not care about
+       any other transfers. (The previous API always had to scan through all
+       the existing transfers.)
+
+  The idea is that [`curl_multi_socket_action()`][7] calls a given callback
+  with information about what socket to wait for what action on, and the
+  callback only gets called if the status of that socket has changed.
+
+  We also added a timer callback that makes libcurl call the application when
+  the timeout value changes, and you set that with [`curl_multi_setopt()`][9]
+  and the [`CURLMOPT_TIMERFUNCTION`][10] option. To get this to work,
+  Internally, there's an added a struct to each easy handle in which we store
+  an "expire time" (if any). The structs are then "splay sorted" so that we
+  can add and remove times from the linked list and yet somewhat swiftly
+  figure out both how long time there is until the next nearest timer expires
+  and which timer (handle) we should take care of now. Of course, the upside
+  of all this is that we get a [`curl_multi_timeout()`][8] that should also
+  work with old-style applications that use [`curl_multi_perform()`][11].
+
+  We created an internal "socket to easy handles" hash table that given
+  a socket (file descriptor) return the easy handle that waits for action on
+  that socket.  This hash is made using the already existing hash code
+  (previously only used for the DNS cache).
+
+  To make libcurl able to report plain sockets in the socket callback, we had
+  to re-organize the internals of the [`curl_multi_fdset()`][12] etc so that
+  the conversion from sockets to `fd_sets` for that function is only done in
+  the last step before the data is returned. I also had to extend c-ares to
+  get a function that can return plain sockets, as that library too returned
+  only `fd_sets` and that is no longer good enough. The changes done to c-ares
+  are available in c-ares 1.3.1 and later.
+
+<a name="structs"></a>
+Structs in libcurl
+==================
+
+This section should cover 7.32.0 pretty accurately, but will make sense even
+for older and later versions as things don't change drastically that often.
+
+## SessionHandle
+
+  The SessionHandle handle struct is the one returned to the outside in the
+  external API as a "CURL *". This is usually known as an easy handle in API
+  documentations and examples.
+
+  Information and state that is related to the actual connection is in the
+  'connectdata' struct. When a transfer is about to be made, libcurl will
+  either create a new connection or re-use an existing one. The particular
+  connectdata that is used by this handle is pointed out by
+  SessionHandle->easy_conn.
+
+  Data and information that regard this particular single transfer is put in
+  the SingleRequest sub-struct.
+
+  When the SessionHandle struct is added to a multi handle, as it must be in
+  order to do any transfer, the ->multi member will point to the `Curl_multi`
+  struct it belongs to. The ->prev and ->next members will then be used by the
+  multi code to keep a linked list of SessionHandle structs that are added to
+  that same multi handle. libcurl always uses multi so ->multi *will* point to
+  a `Curl_multi` when a transfer is in progress.
+
+  ->mstate is the multi state of this particular SessionHandle. When
+  `multi_runsingle()` is called, it will act on this handle according to which
+  state it is in. The mstate is also what tells which sockets to return for a
+  specific SessionHandle when [`curl_multi_fdset()`][12] is called etc.
+
+  The libcurl source code generally use the name 'data' for the variable that
+  points to the SessionHandle.
+
+  When doing multiplexed HTTP/2 transfers, each SessionHandle is associated
+  with an individual stream, sharing the same connectdata struct. Multiplexing
+  makes it even more important to keep things associated with the right thing!
+
+## connectdata
+
+  A general idea in libcurl is to keep connections around in a connection
+  "cache" after they have been used in case they will be used again and then
+  re-use an existing one instead of creating a new as it creates a significant
+  performance boost.
+
+  Each 'connectdata' identifies a single physical connection to a server. If
+  the connection can't be kept alive, the connection will be closed after use
+  and then this struct can be removed from the cache and freed.
+
+  Thus, the same SessionHandle can be used multiple times and each time select
+  another connectdata struct to use for the connection. Keep this in mind, as
+  it is then important to consider if options or choices are based on the
+  connection or the SessionHandle.
+
+  Functions in libcurl will assume that connectdata->data points to the
+  SessionHandle that uses this connection (for the moment).
+
+  As a special complexity, some protocols supported by libcurl require a
+  special disconnect procedure that is more than just shutting down the
+  socket. It can involve sending one or more commands to the server before
+  doing so. Since connections are kept in the connection cache after use, the
+  original SessionHandle may no longer be around when the time comes to shut
+  down a particular connection. For this purpose, libcurl holds a special
+  dummy `closure_handle` SessionHandle in the `Curl_multi` struct to use when
+  needed.
+
+  FTP uses two TCP connections for a typical transfer but it keeps both in
+  this single struct and thus can be considered a single connection for most
+  internal concerns.
+
+  The libcurl source code generally use the name 'conn' for the variable that
+  points to the connectdata.
+
+## Curl_multi
+
+  Internally, the easy interface is implemented as a wrapper around multi
+  interface functions. This makes everything multi interface.
+
+  `Curl_multi` is the multi handle struct exposed as "CURLM *" in external APIs.
+
+  This struct holds a list of SessionHandle structs that have been added to
+  this handle with [`curl_multi_add_handle()`][13]. The start of the list is
+  ->easyp and ->num_easy is a counter of added SessionHandles.
+
+  ->msglist is a linked list of messages to send back when
+  [`curl_multi_info_read()`][14] is called. Basically a node is added to that
+  list when an individual SessionHandle's transfer has completed.
+
+  ->hostcache points to the name cache. It is a hash table for looking up name
+  to IP. The nodes have a limited life time in there and this cache is meant
+  to reduce the time for when the same name is wanted within a short period of
+  time.
+
+  ->timetree points to a tree of SessionHandles, sorted by the remaining time
+  until it should be checked - normally some sort of timeout. Each
+  SessionHandle has one node in the tree.
+
+  ->sockhash is a hash table to allow fast lookups of socket descriptor to
+  which SessionHandle that uses that descriptor. This is necessary for the
+  `multi_socket` API.
+
+  ->conn_cache points to the connection cache. It keeps track of all
+  connections that are kept after use. The cache has a maximum size.
+
+  ->closure_handle is described in the 'connectdata' section.
+
+  The libcurl source code generally use the name 'multi' for the variable that
+  points to the Curl_multi struct.
+
+## Curl_handler
+
+  Each unique protocol that is supported by libcurl needs to provide at least
+  one `Curl_handler` struct. It defines what the protocol is called and what
+  functions the main code should call to deal with protocol specific issues.
+  In general, there's a source file named [protocol].c in which there's a
+  "struct `Curl_handler` `Curl_handler_[protocol]`" declared. In url.c there's
+  then the main array with all individual `Curl_handler` structs pointed to
+  from a single array which is scanned through when a URL is given to libcurl
+  to work with.
+
+  ->scheme is the URL scheme name, usually spelled out in uppercase. That's
+  "HTTP" or "FTP" etc. SSL versions of the protcol need its own `Curl_handler`
+  setup so HTTPS separate from HTTP.
+
+  ->setup_connection is called to allow the protocol code to allocate protocol
+  specific data that then gets associated with that SessionHandle for the rest
+  of this transfer. It gets freed again at the end of the transfer. It will be
+  called before the 'connectdata' for the transfer has been selected/created.
+  Most protocols will allocate its private 'struct [PROTOCOL]' here and assign
+  SessionHandle->req.protop to point to it.
+
+  ->connect_it allows a protocol to do some specific actions after the TCP
+  connect is done, that can still be considered part of the connection phase.
+
+  Some protocols will alter the connectdata->recv[] and connectdata->send[]
+  function pointers in this function.
+
+  ->connecting is similarly a function that keeps getting called as long as the
+  protocol considers itself still in the connecting phase.
+
+  ->do_it is the function called to issue the transfer request. What we call
+  the DO action internally. If the DO is not enough and things need to be kept
+  getting done for the entire DO sequence to complete, ->doing is then usually
+  also provided. Each protocol that needs to do multiple commands or similar
+  for do/doing need to implement their own state machines (see SCP, SFTP,
+  FTP). Some protocols (only FTP and only due to historical reasons) has a
+  separate piece of the DO state called `DO_MORE`.
+
+  ->doing keeps getting called while issuing the transfer request command(s)
+
+  ->done gets called when the transfer is complete and DONE. That's after the
+  main data has been transferred.
+
+  ->do_more gets called during the `DO_MORE` state. The FTP protocol uses this
+  state when setting up the second connection.
+
+  ->`proto_getsock`
+  ->`doing_getsock`
+  ->`domore_getsock`
+  ->`perform_getsock`
+  Functions that return socket information. Which socket(s) to wait for which
+  action(s) during the particular multi state.
+
+  ->disconnect is called immediately before the TCP connection is shutdown.
+
+  ->readwrite gets called during transfer to allow the protocol to do extra
+  reads/writes
+
+  ->defport is the default report TCP or UDP port this protocol uses
+
+  ->protocol is one or more bits in the `CURLPROTO_*` set. The SSL versions
+  have their "base" protocol set and then the SSL variation. Like
+  "HTTP|HTTPS".
+
+  ->flags is a bitmask with additional information about the protocol that will
+  make it get treated differently by the generic engine:
+
+  - `PROTOPT_SSL` - will make it connect and negotiate SSL
+
+  - `PROTOPT_DUAL` - this protocol uses two connections
+
+  - `PROTOPT_CLOSEACTION` - this protocol has actions to do before closing the
+    connection. This flag is no longer used by code, yet still set for a bunch
+    protocol handlers.
+  
+  - `PROTOPT_DIRLOCK` - "direction lock". The SSH protocols set this bit to
+    limit which "direction" of socket actions that the main engine will
+    concern itself about.
+
+  - `PROTOPT_NONETWORK` - a protocol that doesn't use network (read file:)
+
+  - `PROTOPT_NEEDSPWD` - this protocol needs a password and will use a default
+    one unless one is provided
+
+  - `PROTOPT_NOURLQUERY` - this protocol can't handle a query part on the URL
+    (?foo=bar)
+
+## conncache
 
- There's no magic to this. When you consider everything stable enough to be
- released, do this:
+  Is a hash table with connections for later re-use. Each SessionHandle has
+  a pointer to its connection cache. Each multi handle sets up a connection
+  cache that all added SessionHandles share by default.
 
-   1. Tag the source code accordingly.
+## Curl_share
+  
+  The libcurl share API allocates a `Curl_share` struct, exposed to the
+  external API as "CURLSH *".
 
-   2. run the 'maketgz' script (using 'make distcheck' will give you a pretty
-      good view on the status of the current sources). maketgz requires a
-      version number and creates the release archive. maketgz uses 'make dist'
-      for the actual archive building, why you need to fill in the Makefile.am
-      files properly for which files that should be included in the release
-      archives.
+  The idea is that the struct can have a set of own versions of caches and
+  pools and then by providing this struct in the `CURLOPT_SHARE` option, those
+  specific SessionHandles will use the caches/pools that this share handle
+  holds.
+
+  Then individual SessionHandle structs can be made to share specific things
+  that they otherwise wouldn't, such as cookies.
 
-   3. When that's complete, sign the output files.
+  The `Curl_share` struct can currently hold cookies, DNS cache and the SSL
+  session cache.
 
-   4. Upload
+## CookieInfo
 
-   5. Update web site and changelog on site
+  This is the main cookie struct. It holds all known cookies and related
+  information. Each SessionHandle has its own private CookieInfo even when
+  they are added to a multi handle. They can be made to share cookies by using
+  the share API.
 
-   6. Send announcement to the mailing lists
 
- NOTE: you must have curl checked out from git to be able to do a proper
- release build. The release tarballs do not have everything setup in order to
- do releases properly.
+[1]: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
+[2]: http://curl.haxx.se/libcurl/c/curl_easy_init.html
+[3]: http://c-ares.haxx.se/
+[4]: https://tools.ietf.org/html/rfc7230 "RFC 7230"
+[5]: http://curl.haxx.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html
+[6]: http://curl.haxx.se/docs/manpage.html#--compressed
+[7]: http://curl.haxx.se/libcurl/c/curl_multi_socket_action.html
+[8]: http://curl.haxx.se/libcurl/c/curl_multi_timeout.html
+[9]: http://curl.haxx.se/libcurl/c/curl_multi_setopt.html
+[10]: http://curl.haxx.se/libcurl/c/CURLMOPT_TIMERFUNCTION.html
+[11]: http://curl.haxx.se/libcurl/c/curl_multi_perform.html
+[12]: http://curl.haxx.se/libcurl/c/curl_multi_fdset.html
+[13]: http://curl.haxx.se/libcurl/c/curl_multi_add_handle.html
+[14]: http://curl.haxx.se/libcurl/c/curl_multi_info_read.html
index 7788567..345dc45 100644 (file)
@@ -3,6 +3,15 @@ join in and help us correct one or more of these! Also be sure to check the
 changelog of the current development status, as one or more of these problems
 may have been fixed since this was written!
 
+90. IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the
+  code reveals that pingpong.c contains some truncation code, at line 408,
+  when it deems the server response to be too large truncating it to 40
+  characters"
+  http://curl.haxx.se/bug/view.cgi?id=1366
+
+89. Disabling HTTP Pipelining when there are ongoing transfers can lead to
+  heap corruption and crash. http://curl.haxx.se/bug/view.cgi?id=1411
+
 88. libcurl doesn't support CURLINFO_FILETIME for SFTP transfers and thus
   curl's -R option also doesn't work then.
 
@@ -88,7 +97,7 @@ may have been fixed since this was written!
   something beyond ascii but currently libcurl will only pass in the verbatim
   string the app provides. There are several browsers that already do this
   encoding. The key seems to be the updated draft to RFC2231:
-  http://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
+  https://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
 
 66. When using telnet, the time limitation options don't work.
   http://curl.haxx.se/bug/view.cgi?id=846
diff --git a/docs/LIBCURL-STRUCTS b/docs/LIBCURL-STRUCTS
deleted file mode 100644 (file)
index 136d17c..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-                                  _   _ ____  _
-                              ___| | | |  _ \| |
-                             / __| | | | |_) | |
-                            | (__| |_| |  _ <| |___
-                             \___|\___/|_| \_\_____|
-
-Structs in libcurl
-
-This document should cover 7.32.0 pretty accurately, but will make sense even
-for older and later versions as things don't change drastically that often.
-
- 1. The main structs in libcurl
-  1.1 SessionHandle
-  1.2 connectdata
-  1.3 Curl_multi
-  1.4 Curl_handler
-  1.5 conncache
-  1.6 Curl_share
-  1.7 CookieInfo
-
-==============================================================================
-
-1. The main structs in libcurl
-
-  1.1 SessionHandle
-
-  The SessionHandle handle struct is the one returned to the outside in the
-  external API as a "CURL *". This is usually known as an easy handle in API
-  documentations and examples.
-
-  Information and state that is related to the actual connection is in the
-  'connectdata' struct. When a transfer is about to be made, libcurl will
-  either create a new connection or re-use an existing one. The particular
-  connectdata that is used by this handle is pointed out by
-  SessionHandle->easy_conn.
-
-  Data and information that regard this particular single transfer is put in
-  the SingleRequest sub-struct.
-
-  When the SessionHandle struct is added to a multi handle, as it must be in
-  order to do any transfer, the ->multi member will point to the Curl_multi
-  struct it belongs to. The ->prev and ->next members will then be used by the
-  multi code to keep a linked list of SessionHandle structs that are added to
-  that same multi handle. libcurl always uses multi so ->multi *will* point to
-  a Curl_multi when a transfer is in progress.
-
-  ->mstate is the multi state of this particular SessionHandle. When
-  multi_runsingle() is called, it will act on this handle according to which
-  state it is in. The mstate is also what tells which sockets to return for a
-  specific SessionHandle when curl_multi_fdset() is called etc.
-
-  The libcurl source code generally use the name 'data' for the variable that
-  points to the SessionHandle.
-
-
-  1.2 connectdata
-
-  A general idea in libcurl is to keep connections around in a connection
-  "cache" after they have been used in case they will be used again and then
-  re-use an existing one instead of creating a new as it creates a significant
-  performance boost.
-
-  Each 'connectdata' identifies a single physical connection to a server. If
-  the connection can't be kept alive, the connection will be closed after use
-  and then this struct can be removed from the cache and freed.
-
-  Thus, the same SessionHandle can be used multiple times and each time select
-  another connectdata struct to use for the connection. Keep this in mind, as
-  it is then important to consider if options or choices are based on the
-  connection or the SessionHandle.
-
-  Functions in libcurl will assume that connectdata->data points to the
-  SessionHandle that uses this connection.
-
-  As a special complexity, some protocols supported by libcurl require a
-  special disconnect procedure that is more than just shutting down the
-  socket. It can involve sending one or more commands to the server before
-  doing so. Since connections are kept in the connection cache after use, the
-  original SessionHandle may no longer be around when the time comes to shut
-  down a particular connection. For this purpose, libcurl holds a special
-  dummy 'closure_handle' SessionHandle in the Curl_multi struct to 
-
-  FTP uses two TCP connections for a typical transfer but it keeps both in
-  this single struct and thus can be considered a single connection for most
-  internal concerns.
-
-  The libcurl source code generally use the name 'conn' for the variable that
-  points to the connectdata.
-
-
-  1.3 Curl_multi
-
-  Internally, the easy interface is implemented as a wrapper around multi
-  interface functions. This makes everything multi interface.
-
-  Curl_multi is the multi handle struct exposed as "CURLM *" in external APIs.
-
-  This struct holds a list of SessionHandle structs that have been added to
-  this handle with curl_multi_add_handle(). The start of the list is ->easyp
-  and ->num_easy is a counter of added SessionHandles.
-
-  ->msglist is a linked list of messages to send back when
-  curl_multi_info_read() is called. Basically a node is added to that list
-  when an individual SessionHandle's transfer has completed.
-
-  ->hostcache points to the name cache. It is a hash table for looking up name
-  to IP. The nodes have a limited life time in there and this cache is meant
-  to reduce the time for when the same name is wanted within a short period of
-  time.
-
-  ->timetree points to a tree of SessionHandles, sorted by the remaining time
-  until it should be checked - normally some sort of timeout. Each
-  SessionHandle has one node in the tree.
-
-  ->sockhash is a hash table to allow fast lookups of socket descriptor to
-  which SessionHandle that uses that descriptor. This is necessary for the
-  multi_socket API.
-
-  ->conn_cache points to the connection cache. It keeps track of all
-  connections that are kept after use. The cache has a maximum size.
-
-  ->closure_handle is described in the 'connectdata' section.
-
-  The libcurl source code generally use the name 'multi' for the variable that
-  points to the Curl_multi struct.
-
-
-  1.4 Curl_handler
-
-  Each unique protocol that is supported by libcurl needs to provide at least
-  one Curl_handler struct. It defines what the protocol is called and what
-  functions the main code should call to deal with protocol specific issues.
-  In general, there's a source file named [protocol].c in which there's a
-  "struct Curl_handler Curl_handler_[protocol]" declared. In url.c there's
-  then the main array with all individual Curl_handler structs pointed to from
-  a single array which is scanned through when a URL is given to libcurl to
-  work with.
-
-  ->scheme is the URL scheme name, usually spelled out in uppercase. That's
-  "HTTP" or "FTP" etc. SSL versions of the protcol need its own Curl_handler
-  setup so HTTPS separate from HTTP.
-
-  ->setup_connection is called to allow the protocol code to allocate protocol
-  specific data that then gets associated with that SessionHandle for the rest
-  of this transfer. It gets freed again at the end of the transfer. It will be
-  called before the 'connectdata' for the transfer has been selected/created.
-  Most protocols will allocate its private 'struct [PROTOCOL]' here and assign
-  SessionHandle->req.protop to point to it.
-
-  ->connect_it allows a protocol to do some specific actions after the TCP
-  connect is done, that can still be considered part of the connection phase.
-
-  Some protocols will alter the connectdata->recv[] and connectdata->send[]
-  function pointers in this function.
-
-  ->connecting is similarly a function that keeps getting called as long as the
-  protocol considers itself still in the connecting phase.
-
-  ->do_it is the function called to issue the transfer request. What we call
-  the DO action internally. If the DO is not enough and things need to be kept
-  getting done for the entire DO sequence to complete, ->doing is then usually
-  also provided. Each protocol that needs to do multiple commands or similar
-  for do/doing need to implement their own state machines (see SCP, SFTP,
-  FTP). Some protocols (only FTP and only due to historical reasons) has a
-  separate piece of the DO state called DO_MORE.
-
-  ->doing keeps getting called while issuing the transfer request command(s)
-
-  ->done gets called when the transfer is complete and DONE. That's after the
-  main data has been transferred.
-
-  ->do_more gets called during the DO_MORE state. The FTP protocol uses this
-  state when setting up the second connection.
-
-  ->proto_getsock
-  ->doing_getsock
-  ->domore_getsock
-  ->perform_getsock
-  Functions that return socket information. Which socket(s) to wait for which
-  action(s) during the particular multi state.
-
-  ->disconnect is called immediately before the TCP connection is shutdown.
-
-  ->readwrite gets called during transfer to allow the protocol to do extra
-  reads/writes
-
-  ->defport is the default report TCP or UDP port this protocol uses
-
-  ->protocol is one or more bits in the CURLPROTO_* set. The SSL versions have
-  their "base" protocol set and then the SSL variation. Like "HTTP|HTTPS".
-
-  ->flags is a bitmask with additional information about the protocol that will
-  make it get treated differently by the generic engine:
-
-    PROTOPT_SSL - will make it connect and negotiate SSL
-
-    PROTOPT_DUAL - this protocol uses two connections
-
-    PROTOPT_CLOSEACTION - this protocol has actions to do before closing the
-    connection. This flag is no longer used by code, yet still set for a bunch
-    protocol handlers.
-  
-    PROTOPT_DIRLOCK - "direction lock". The SSH protocols set this bit to
-    limit which "direction" of socket actions that the main engine will
-    concern itself about.
-
-    PROTOPT_NONETWORK - a protocol that doesn't use network (read file:)
-
-    PROTOPT_NEEDSPWD - this protocol needs a password and will use a default
-    one unless one is provided
-
-    PROTOPT_NOURLQUERY - this protocol can't handle a query part on the URL
-    (?foo=bar)
-
-
-  1.5 conncache
-
-  Is a hash table with connections for later re-use. Each SessionHandle has
-  a pointer to its connection cache. Each multi handle sets up a connection
-  cache that all added SessionHandles share by default.
-
-
-  1.6 Curl_share
-  
-  The libcurl share API allocates a Curl_share struct, exposed to the external
-  API as "CURLSH *".
-
-  The idea is that the struct can have a set of own versions of caches and
-  pools and then by providing this struct in the CURLOPT_SHARE option, those
-  specific SessionHandles will use the caches/pools that this share handle
-  holds.
-
-  Then individual SessionHandle structs can be made to share specific things
-  that they otherwise wouldn't, such as cookies.
-
-  The Curl_share struct can currently hold cookies, DNS cache and the SSL
-  session cache.
-
-  
-  1.7 CookieInfo
-
-  This is the main cookie struct. It holds all known cookies and related
-  information. Each SessionHandle has its own private CookieInfo even when
-  they are added to a multi handle. They can be made to share cookies by using
-  the share API.
index a53835c..ccb6ada 100644 (file)
@@ -23,29 +23,29 @@ libcurl http://curl.haxx.se/docs/copyright.html
         Uses an MIT (or Modified BSD)-style license that is as liberal as
         possible.
 
-OpenSSL http://www.openssl.org/source/license.html
+OpenSSL https://www.openssl.org/source/license.html
 
         (May be used for SSL/TLS support) Uses an Original BSD-style license
         with an announcement clause that makes it "incompatible" with GPL. You
         are not allowed to ship binaries that link with OpenSSL that includes
         GPL code (unless that specific GPL code includes an exception for
         OpenSSL - a habit that is growing more and more common). If OpenSSL's
-        licensing is a problem for you, consider using GnuTLS or yassl
-        instead.
+        licensing is a problem for you, consider using another TLS library.
 
 GnuTLS  http://www.gnutls.org/
 
         (May be used for SSL/TLS support) Uses the LGPL[3] license. If this is
-        a problem for you, consider using OpenSSL instead. Also note that
+        a problem for you, consider using another TLS library. Also note that
         GnuTLS itself depends on and uses other libs (libgcrypt and
         libgpg-error) and they too are LGPL- or GPL-licensed.
 
-yassl   http://www.yassl.com/
+WolfSSL   https://www.wolfssl.com/
 
-        (May be used for SSL/TLS support) Uses the GPL[1] license. If this is
-        a problem for you, consider using OpenSSL or GnuTLS instead.
+        (May be used for SSL/TLS support) Uses the GPL[1] license or a
+        propietary license. If this is a problem for you, consider using
+        another TLS library.
 
-NSS     http://www.mozilla.org/projects/security/pki/nss/
+NSS     https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS
 
         (May be used for SSL/TLS support) Is covered by the MPL[4] license,
         the GPL[1] license and the LGPL[3] license. You may choose to license
@@ -57,13 +57,29 @@ axTLS   http://axtls.sourceforge.net/
 
         (May be used for SSL/TLS support) Uses a Modified BSD-style license.
 
+mbedTLS https://tls.mbed.org/
+
+        (May be used for SSL/TLS support) Uses the GPL[1] license or a
+        propietary license. If this is a problem for you, consider using
+        another TLS library.
+
+BoringSSL https://boringssl.googlesource.com/
+
+        (May be used for SSL/TLS support) As an OpenSSL fork, it has the same
+        license as that.
+
+libressl http://www.libressl.org/
+
+        (May be used for SSL/TLS support) As an OpenSSL fork, it has the same
+        license as that.
+
 c-ares  http://daniel.haxx.se/projects/c-ares/license.html
 
         (Used for asynchronous name resolves) Uses an MIT license that is very
         liberal and imposes no restrictions on any other library or part you
         may link with.
 
-zlib    http://www.gzip.org/zlib/zlib_license.html
+zlib    http://www.zlib.net/zlib_license.html
 
         (Used for compressed Transfer-Encoding support) Uses an MIT-style
         license that shouldn't collide with any other library.
@@ -73,12 +89,12 @@ MIT Kerberos http://web.mit.edu/kerberos/www/dist/
         (May be used for GSS support) MIT licensed, that shouldn't collide
         with any other parts.
 
-Heimdal http://www.pdc.kth.se/heimdal/
+Heimdal http://www.h5l.org
 
         (May be used for GSS support) Heimdal is Original BSD licensed with
         the announcement clause.
 
-GNU GSS http://www.gnu.org/software/gss/
+GNU GSS https://www.gnu.org/software/gss/
 
         (May be used for GSS support) GNU GSS is GPL licensed. Note that you
         may not distribute binary curl packages that uses this if you build
@@ -105,10 +121,10 @@ libssh2 http://www.libssh2.org/
         (Used for scp and sftp support) libssh2 uses a Modified BSD-style
         license.
 
-[1] = GPL - GNU General Public License: http://www.gnu.org/licenses/gpl.html
-[2] = http://www.fsf.org/licenses/gpl-faq.html#GPLIncompatibleLibs details on
+[1] = GPL - GNU General Public License: https://www.gnu.org/licenses/gpl.html
+[2] = https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs details on
       how to write such an exception to the GPL
 [3] = LGPL - GNU Lesser General Public License:
-      http://www.gnu.org/licenses/lgpl.html
+      https://www.gnu.org/licenses/lgpl.html
 [4] = MPL - Mozilla Public License:
-      http://www.mozilla.org/MPL/
+      https://www.mozilla.org/MPL/
index fb50312..b6c0f45 100644 (file)
@@ -230,7 +230,7 @@ MAIL ETIQUETTE
   Quote as little as possible. Just enough to provide the context you cannot
   leave out. A lengthy description can be found here:
 
-      http://www.netmeister.org/news/learn2quote.html
+      https://www.netmeister.org/news/learn2quote.html
 
   2.7 Digest
 
index 113df20..fb34948 100644 (file)
@@ -470,8 +470,8 @@ COOKIES
   stored cookies which match the request as it follows the location.  The
   file "empty.txt" may be a nonexistent file.
 
-  Alas, to both read and write cookies from a netscape cookie file, you can
-  set both -b and -c to use the same file:
+  To read and write cookies from a netscape cookie file, you can set both -b
+  and -c to use the same file:
 
         curl -b cookies.txt -c cookies.txt www.example.com
 
index 1f92911..cfef3e9 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -37,8 +37,8 @@ EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS    \
  README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS      \
  KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL           \
  $(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp \
- MAIL-ETIQUETTE HTTP-COOKIES LIBCURL-STRUCTS SECURITY RELEASE-PROCEDURE  \
- SSL-PROBLEMS
+ MAIL-ETIQUETTE HTTP-COOKIES SECURITY RELEASE-PROCEDURE  \
+ SSL-PROBLEMS HTTP2.md ROADMAP.md CODE_OF_CONDUCT.md
 
 MAN2HTML= roffit < $< >$@
 
index 49f9338..9750269 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 ###########################################################################
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -100,8 +110,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = docs
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs INSTALL THANKS TODO
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -122,7 +130,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -214,6 +223,7 @@ am__define_uniq_tagged_files = \
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in INSTALL THANKS TODO
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -297,7 +307,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -350,6 +360,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -366,7 +377,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -438,8 +448,8 @@ EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS  \
  README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS      \
  KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL           \
  $(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp \
- MAIL-ETIQUETTE HTTP-COOKIES LIBCURL-STRUCTS SECURITY RELEASE-PROCEDURE  \
- SSL-PROBLEMS
+ MAIL-ETIQUETTE HTTP-COOKIES SECURITY RELEASE-PROCEDURE  \
+ SSL-PROBLEMS HTTP2.md ROADMAP.md CODE_OF_CONDUCT.md
 
 MAN2HTML = roffit < $< >$@
 SUFFIXES = .1 .html .pdf
@@ -459,7 +469,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign docs/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -800,6 +809,8 @@ uninstall-man: uninstall-man1
        mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
        uninstall-am uninstall-man uninstall-man1
 
+.PRECIOUS: Makefile
+
 
 html: $(HTMLPAGES)
        cd libcurl; make html
index 2f85b3f..fc31274 100644 (file)
@@ -1,9 +1,3 @@
-                                  _   _ ____  _
-                              ___| | | |  _ \| |
-                             / __| | | | |_) | |
-                            | (__| |_| |  _ <| |___
-                             \___|\___/|_| \_\_____|
-
 curl release procedure - how to do a release
 ============================================
 
@@ -84,11 +78,12 @@ Coming dates
 Based on the description above, here are some planned release dates (at the
 time of this writing):
 
-- November 5, 2014 (version 7.39.0)
-- December 31, 2014
-- February 25, 2015
-- April 22, 2015
-- June 17, 2015
+- June 17, 2015 (version 7.43.0)
 - August 12, 2015
 - October 7, 2015
 - December 2, 2015
+- January 27, 2016
+- March 23, 2016
+- May 18, 2016
+- July 13, 2016
+- September 7, 2016
diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md
new file mode 100644 (file)
index 0000000..eb52d18
--- /dev/null
@@ -0,0 +1,139 @@
+curl the next few years - perhaps
+=================================
+
+Roadmap of things Daniel Stenberg and Steve Holme want to work on next. It is
+intended to serve as a guideline for others for information, feedback and
+possible participation.
+
+HTTP/2
+------
+
+- test suite
+
+   Base this on existing nghttp2 server to start with to make functional
+   tests. Later on we can adopt that code or work with nghttp2 to provide ways
+   to have the http2 server respond with broken responses to make sure we deal
+   with that nicely as well.
+
+   To decide: if we need to bundle parts of the nghttp2 stuff that probably
+   won't be shipped by many distros.
+
+- stream properties API
+
+   Provide options for setting priorities and dependencies among the streams
+   (easy handles). They are mostly information set for the stream and sent to
+   the server so we don't have to add much logic for this.
+
+- server push
+
+   Not exactly clear exactly how to support this API-wise, but by adding
+   handles without asking for a resource it could be a way to be prepared to
+   receive pushes in case such are sent. We probably need it to still specify
+   a URL with host name, port etc but we probably need a special option to
+   tell libcurl it is for server push purposes.
+
+- provide option for HTTP/2 "prior knowledge" over clear text
+
+   As it would avoid the roundtrip-heavy Upgrade: procedures when you _know_
+   it speaks HTTP/2.
+
+- provide option to allow curl to default to HTTP/2 only when using HTTPS
+
+   We could switch on HTTP/2 by-default for HTTPS quite easily and it
+   shouldn't hurt anyone, while HTTP/2 for HTTP by default could introduce
+   lots of Upgrade: roundtrips that users won't like. So a separated option
+   alternative makes sense.
+
+SRV records
+-----------
+
+How to find services for specific domains/hosts.
+
+HTTPS to proxy
+--------------
+
+To avoid network traffic to/from the proxy getting snooped on.
+
+curl_formadd()
+--------------
+
+make sure there's an easy handle passed in to `curl_formadd()`,
+`curl_formget()` and `curl_formfree()` by adding replacement functions and
+deprecating the old ones to allow custom mallocs and more
+
+third-party SASL
+----------------
+
+add support for third-party SASL libraries such as Cyrus SASL - may need to
+move existing native and SSPI based authentication into vsasl folder after
+reworking HTTP and SASL code
+
+SASL authentication in LDAP
+---------------------------
+
+...
+
+Simplify the SMTP email
+-----------------------
+
+Simplify the SMTP email interface so that programmers don't have to
+construct the body of an email that contains all the headers, alternative
+content, images and attachments - maintain raw interface so that
+programmers that want to do this can
+
+email capabilities
+------------------
+
+Allow the email protocols to return the capabilities before
+authenticating. This will allow an application to decide on the best
+authentication mechanism
+
+Win32 pthreads
+--------------
+
+Allow Windows threading model to be replaced by Win32 pthreads port
+
+dynamic buffer size
+-------------------
+
+Implement a dynamic buffer size to allow SFTP to use much larger buffers and
+possibly allow the size to be customizable by applications. Use less memory
+when handles are not in use?
+
+New stuff - curl
+----------------
+
+1. Embed a language interpreter (lua?). For that middle ground where curl
+   isn’t enough and a libcurl binding feels “too much”. Build-time conditional
+   of course.
+
+2. Simplify the SMTP command line so that the headers and multi-part content
+   don't have to be constructed before calling curl
+
+Improve
+-------
+
+1. build for windows (considered hard by many users)
+
+2. curl -h output (considered overwhelming to users)
+
+3. we have > 160 command line options, is there a way to redo things to
+   simplify or improve the situation as we are likely to keep adding
+   features/options in the future too
+
+4. docs (considered "bad" by users but how do we make it better?)
+
+  - split up curl.1
+
+5. authentication framework (consider merging HTTP and SASL authentication to
+   give one API for protocols to call)
+
+6. Perform some of the clean up from the TODO document, removing old
+   definitions and such like that are currently earmarked to be removed years
+   ago
+
+Remove
+------
+
+1. makefile.vc files as there is no point in maintaining two sets of Windows
+   makefiles. Note: These are currently being used by the Windows autobuilds
index 7ee4d14..45faa24 100644 (file)
@@ -26,7 +26,7 @@ CA bundle missing intermediate certificates
   problems if your CA cert does not have the certificates for the
   intermediates in the whole trust chain.
 
-SSL version
+Protocol version
 
   Some broken servers fail to support the protocol negotiation properly that
   SSL servers are supposed to handle. This may cause the connection to fail
@@ -36,7 +36,9 @@ SSL version
   An additional complication can be that modern SSL libraries sometimes are
   built with support for older SSL and TLS versions disabled!
 
-SSL ciphers
+  All versions of SSL are considered insecure and should be avoided. Use TLS.
+
+Ciphers
 
   Clients give servers a list of ciphers to select from. If the list doesn't
   include any ciphers the server wants/can use, the connection handshake
@@ -51,9 +53,13 @@ SSL ciphers
   Note that these weak ciphers are identified as flawed. For example, this
   includes symmetric ciphers with less than 128 bit keys and RC4.
 
+  WinSSL in Windows XP is not able to connect to servers that no longer
+  support the legacy handshakes and algorithms used by those versions, so we
+  advice against building curl to use WinSSL on really old Windows versions.
+
   References:
 
-  http://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01
+  https://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01
   
 Allow BEAST
 
@@ -65,3 +71,17 @@ Allow BEAST
   introduced. Exactly as it sounds, it re-introduces the BEAST vulnerability
   but on the other hand it allows curl to connect to that kind of strange
   servers.
+
+Disabling certificate revocation checks
+
+  Some SSL backends may do certificate revocation checks (CRL, OCSP, etc)
+  depending on the OS or build configuration. The --ssl-no-revoke option was
+  introduced in 7.44.0 to disable revocation checking but currently is only
+  supported for WinSSL (the native Windows SSL library), with an exception in
+  the case of Windows' Untrusted Publishers blacklist which it seems can't be
+  bypassed. This option may have broader support to accommodate other SSL
+  backends in the future.
+
+  References:
+
+  http://curl.haxx.se/docs/ssl-compared.html
index 0887881..89a738d 100644 (file)
@@ -36,10 +36,14 @@ Alex Suykov
 Alex Vinnik
 Alex aka WindEagle
 Alexander Beedie
+Alexander Dyagilev
+Alexander Elgert
 Alexander Klauer
 Alexander Kourakos
 Alexander Krasnostavsky
 Alexander Lazic
+Alexander Pepper
+Alexander Peslyak
 Alexander Zhuravlev
 Alexey Borzov
 Alexey Pesternikov
@@ -52,6 +56,7 @@ Alona Rossen
 Amol Pattekar
 Amr Shahin
 Anatoli Tubman
+Anders Bakken
 Anders Gustafsson
 Anders Havn
 Andi Jahja
@@ -79,6 +84,7 @@ Andrew Kurushin
 Andrew Moise
 Andrew Wansink
 Andrew de los Reyes
+Andrey Labunets
 Andrii Moiseiev
 Andrés García
 Andy Cedilnik
@@ -86,6 +92,7 @@ Andy Serpa
 Andy Tsouladze
 Angus Mackay
 Anthon Pang
+Anthony Avina
 Anthony Bryan
 Anthony G. Basile
 Antoine Calando
@@ -100,6 +107,7 @@ Arnaud Ebalard
 Arthur Murray
 Arve Knudsen
 Arvid Norberg
+Ashish Shukla
 Ask Bjørn Hansen
 Askar Safin
 Ates Goral
@@ -112,6 +120,7 @@ Balint Szilakszi
 Barry Abrahamson
 Bart Whiteley
 Bas Mevissen
+Ben Boeckel
 Ben Darnell
 Ben Greear
 Ben Madsen
@@ -126,6 +135,7 @@ Benoit Neil
 Benoit Sigoure
 Bernard Leak
 Bernhard Reutner-Fischer
+Bert Huijben
 Bertrand Demiddelaer
 Bill Doyle
 Bill Egert
@@ -142,6 +152,7 @@ Bob Richmond
 Bob Schader
 Bogdan Nicula
 Brad Burdick
+Brad Harder
 Brad Hards
 Brad King
 Brad Spencer
@@ -151,8 +162,10 @@ Brandon Wang
 Brendan Jurd
 Brent Beardsley
 Brian Akins
+Brian Chrisman
 Brian Dessent
 Brian J. Murrell
+Brian Prodoehl
 Brian R Duffy
 Brian Ulm
 Brock Noland
@@ -172,9 +185,11 @@ Catalin Patulea
 Chad Monroe
 Chandrakant Bagul
 Charles Kerr
+Charles Romestant
 Chen Prog
 Chih-Chung Chang
 Chris "Bob Bob"
+Chris Araman
 Chris Combes
 Chris Conlon
 Chris Deidun
@@ -221,6 +236,7 @@ Curt Bogmine
 Cyrill Osterwalder
 Cédric Deltheil
 D. Flinkmann
+Da-Yoon Chung
 Dag Ekengren
 Dagobert Michelsen
 Damian Dixon
@@ -237,6 +253,7 @@ Daniel Black
 Daniel Cater
 Daniel Egger
 Daniel Johnson
+Daniel Melani
 Daniel Mentz
 Daniel Steinberg
 Daniel Stenberg
@@ -298,6 +315,7 @@ Dirk Manske
 Dmitri Shubin
 Dmitriy Sergeyev
 Dmitry Bartsevich
+Dmitry Eremin-Solenikov
 Dmitry Falko
 Dmitry Kurochkin
 Dmitry Popov
@@ -313,6 +331,7 @@ Douglas Kilpatrick
 Douglas R. Horner
 Douglas Steinwand
 Dov Murik
+Drake Arconis
 Duane Cathey
 Duncan Mac-Vicar Prett
 Dustin Boswell
@@ -327,10 +346,12 @@ Edward Rudd
 Edward Sheldrake
 Eelco Dolstra
 Eetu Ojanen
+Egon Eckert
 Eldar Zaitov
 Ellis Pritchard
 Elmira A Semenova
 Emanuele Bovisio
+Emil Lerner
 Emil Romanus
 Emiliano Ida
 Enrico Scholz
@@ -381,6 +402,7 @@ François Charlier
 Fred Machado
 Fred New
 Fred Noz
+Fred Stluka
 Frederic Lepied
 Fredrik Thulin
 Gabriel Kuri
@@ -418,6 +440,7 @@ Glenn Sheridan
 Gordon Marler
 Gorilla Maguila
 Grant Erickson
+Grant Pannell
 Greg Hewgill
 Greg Morse
 Greg Onufer
@@ -436,6 +459,7 @@ Götz Babin-Ebell
 Hamish Mackenzie
 Hang Kin Lau
 Hang Su
+Hanno Böck
 Hanno Kranzhoff
 Hans Steegers
 Hans-Jurgen May
@@ -476,6 +500,7 @@ Immanuel Gregoire
 Ingmar Runge
 Ingo Ralf Blum
 Ingo Wilken
+Isaac Boukris
 Ishan SinghLevett
 Ivo Bellin Salarin
 Jack Zhang
@@ -516,6 +541,7 @@ Jaz Fresh
 Jean Jacques Drouin
 Jean-Claude Chauve
 Jean-Francois Bertrand
+Jean-Francois Durand
 Jean-Louis Lemaire
 Jean-Marc Ranger
 Jean-Noël Rouvignac
@@ -528,10 +554,12 @@ Jeff Lawson
 Jeff Phillips
 Jeff Pohlmeyer
 Jeff Weber
+Jens Rantil
 Jeremy Friesner
 Jeremy Huddleston
 Jeremy Lin
 Jeroen Koekkoek
+Jeroen Ooms
 Jerome Muffat-Meridol
 Jerome Robert
 Jerome Vouillon
@@ -545,6 +573,7 @@ Jim Drash
 Jim Freeman
 Jim Hollinger
 Jim Meyering
+Jiri Dvorak
 Jiri Hruska
 Jiri Jaburek
 Jiri Malak
@@ -553,8 +582,10 @@ Joe Halpin
 Joe Malicki
 Joe Mason
 Joel Chen
+Joel Depooter
 Jofell Gallardo
 Johan Anderson
+Johan Lantz
 Johan Nilsson
 Johan van Selst
 Johannes Bauer
@@ -572,6 +603,7 @@ John Kelly
 John Lask
 John Lightsey
 John Marino
+John Marshall
 John McGowan
 John P. McCaskey
 John Suprock
@@ -581,6 +613,8 @@ Johnny Luong
 Jon Grubbs
 Jon Nelson
 Jon Sargeant
+Jon Seymour
+Jon Spencer
 Jon Torrey
 Jon Travis
 Jon Turner
@@ -589,6 +623,7 @@ Jonas Schnelli
 Jonatan Lander
 Jonatan Vela
 Jonathan Cardoso Machado
+Jonathan Cardoso Machado Machado
 Jonathan Hseu
 Jonathan Nieder
 Jongki Suwandi
@@ -605,8 +640,10 @@ Judson Bishop
 Juergen Wilke
 Jukka Pihl
 Julian Noble
+Julian Ospald
 Julian Taylor
 Julien Chaffraix
+Julien Nabet
 Julien Royer
 Jun-ichiro itojun Hagino
 Jurij Smakov
@@ -652,6 +689,7 @@ Krishnendu Majumdar
 Krister Johansen
 Kristian Gunstone
 Kristian Köhntopp
+Kyle J. McKay
 Kyle L. Huff
 Kyle Sallee
 Lachlan O'Dea
@@ -670,6 +708,7 @@ Laurent Rabret
 Legoff Vincent
 Lehel Bernadt
 Leif W
+Leith Bade
 Len Krause
 Lenaic Lefever
 Lenny Rachitsky
@@ -682,6 +721,7 @@ Lindley French
 Ling Thio
 Linus Nielsen Feltzing
 Lisa Xu
+Liviu Chircu
 Liza Alenchery
 Lluís Batlle i Rossell
 Loic Dachary
@@ -709,8 +749,10 @@ Manuel Massing
 Marc Boucher
 Marc Deslauriers
 Marc Doughty
+Marc Hesse
 Marc Hoersken
 Marc Kleine-Budde
+Marc Renault
 Marcel Raad
 Marcel Roelofs
 Marcelo Juchem
@@ -733,6 +775,7 @@ Mark Salisbury
 Mark Snelling
 Mark Tully
 Markus Duft
+Markus Elfring
 Markus Koetter
 Markus Moeller
 Markus Oberhumer
@@ -761,6 +804,7 @@ Matt Wixson
 Matteo Rocco
 Matthew Blain
 Matthew Clarke
+Matthew Hall
 Matthias Bolte
 Maurice Barnum
 Mauro Iorio
@@ -781,16 +825,19 @@ Michael Day
 Michael Goffioul
 Michael Jahn
 Michael Jerris
+Michael Kaufmann
 Michael Mealling
 Michael Mueller
 Michael Osipov
 Michael Smith
+Michael Stapelberg
 Michael Stillwell
 Michael Wallner
 Michal Bonino
 Michal Marek
 Michał Górny
 Michał Kowalczyk
+Michel Promonet
 Michele Bini
 Miguel Angel
 Miguel Diaz
@@ -814,6 +861,7 @@ Mitz Wark
 Mohamed Lrhazi
 Mohammad AlSaleh
 Mohun Biswas
+Mostyn Bramley-Moore
 Myk Taylor
 Nach M. S.
 Nagai H
@@ -843,6 +891,7 @@ Nikos Mavrogiannopoulos
 Ning Dong
 Nir Soffer
 Nis Jorgensen
+Nobuhiro Ban
 Nodak Sodak
 Norbert Frese
 Norbert Novotny
@@ -854,7 +903,9 @@ Oliver Gondža
 Oliver Kuckertz
 Oliver Schindler
 Olivier Berger
+Oren Souroujon
 Oren Tirosh
+Orgad Shaneh
 Ori Avtalion
 Oscar Koeroo
 Oscar Norlander
@@ -870,6 +921,7 @@ Patricia Muscalu
 Patrick Bihan-Faou
 Patrick McManus
 Patrick Monnerat
+Patrick Rapin
 Patrick Scott
 Patrick Smith
 Patrick Watson
@@ -882,6 +934,7 @@ Paul Marks
 Paul Marquis
 Paul Moore
 Paul Nolan
+Paul Oliver
 Paul Querna
 Paul Saab
 Pavel Cenek
@@ -898,6 +951,7 @@ Peter Heuchert
 Peter Hjalmarsson
 Peter Korsgaard
 Peter Lamberg
+Peter Laser
 Peter O'Gorman
 Peter Pentchev
 Peter Silva
@@ -938,6 +992,7 @@ Quinn Slack
 Radu Simionescu
 Rafa Muyo
 Rafael Sagula
+Rafayel Mkrtchyan
 Rafaël Carré
 Rainer Canavan
 Rainer Jung
@@ -963,6 +1018,7 @@ Rene Rebe
 Reuven Wachtfogel
 Reza Arbab
 Ricardo Cadime
+Rich Burridge
 Rich Gray
 Rich Rauenzahn
 Richard Archer
@@ -1021,6 +1077,8 @@ S. Moonesamy
 Salvador Dávila
 Salvatore Sorrentino
 Sam Deane
+Sam Hurst
+Sam Schanken
 Sampo Kellomaki
 Samuel Díaz García
 Samuel Listopad
@@ -1038,6 +1096,7 @@ Scott Barrett
 Scott Cantor
 Scott Davis
 Scott McCreary
+Sean Boudreau
 Sebastian Rasmussen
 Senthil Raja Velu
 Sergei Nikulov
@@ -1065,6 +1124,8 @@ Spork Schivago
 Stadler Stephan
 Stan van de Burgt
 Stanislav Ivochkin
+Stefan Bühler
+Stefan Eissing
 Stefan Esser
 Stefan Krause
 Stefan Neis
@@ -1079,6 +1140,7 @@ Stephen More
 Sterling Hughes
 Steve Green
 Steve H Truong
+Steve Havelka
 Steve Holme
 Steve Lhomme
 Steve Little
@@ -1099,6 +1161,7 @@ Symeon Paraschoudis
 Sébastien Willemijns
 T. Bharath
 T. Yamada
+Tae Hyoung Ahn
 Taneli Vahakangas
 Tanguy Fautre
 Tatsuhiro Tsujikawa
@@ -1108,6 +1171,7 @@ Thomas J. Moore
 Thomas Klausner
 Thomas L. Shinnick
 Thomas Lopatic
+Thomas Ruecker
 Thomas Schwinge
 Thomas Tonino
 Tiit Pikma
@@ -1127,6 +1191,7 @@ Timo Sirainen
 Tinus van den Berg
 Tobias Markus
 Tobias Rundström
+Tobias Stoeckmann
 Toby Peterson
 Todd A Ouska
 Todd Kulesza
@@ -1147,6 +1212,8 @@ Tomas Hoger
 Tomas Mlcoch
 Tomas Pospisek
 Tomas Szepe
+Tomas Tomecek
+Tomasz Kojm
 Tomasz Lacki
 Tommie Gannert
 Tommy Tam
@@ -1173,6 +1240,7 @@ Victor Snezhko
 Vijay Panghal
 Vikram Saxena
 Viktor Szakáts
+Ville Skyttä
 Vilmos Nebehaj
 Vincent Bronner
 Vincent Le Normand
@@ -1185,10 +1253,12 @@ Vladimir Grishchenko
 Vladimir Lazarenko
 Vojtech Janota
 Vojtech Minarik
+Vojtěch Král
 Vsevolod Novikov
 Waldek Kozba
 Walter J. Mack
 Ward Willats
+Warren Menzer
 Wayne Haigh
 Werner Koch
 Wesley Laxton
@@ -1203,6 +1273,7 @@ Wouter Van Rooy
 Wu Yongzheng
 Xavier Bouchoux
 Yaakov Selkowitz
+Yamada Yasuharu
 Yang Tse
 Yarram Sunil
 Yasuharu Yamada
@@ -1212,6 +1283,7 @@ Yi Huang
 Yingwei Liu
 Yousuke Kimoto
 Yukihiro Kawada
+Yun SangHo
 Yuriy Sosov
 Yves Arrouye
 Yves Lejeune
index 2b5a4c2..9eb6b26 100644 (file)
--- a/docs/TODO
+++ b/docs/TODO
@@ -9,6 +9,11 @@
  Things to do in project cURL. Please tell us what you think, contribute and
  send us patches that improve things!
 
+ Be aware that these are things that we could do, or have once been considered
+ things we could do. If you want to work on any of these areas, please
+ consider bringing it up for discussions first on the mailing list so that we
+ all agree it is still a good idea for the project!
+
  All bugs documented in the KNOWN_BUGS document are subject for fixing!
 
  1. libcurl
@@ -20,6 +25,8 @@
  1.7 Detect when called from within callbacks
  1.8 Allow SSL (HTTPS) to proxy
  1.9 Cache negative name resolves
+ 1.10 Support IDNA2008
+ 1.11 minimize dependencies with dynamicly loaded modules
 
  2. libcurl - multi interface
  2.1 More non-blocking
@@ -44,6 +51,7 @@
  5.3 Rearrange request header order
  5.4 SPDY
  5.5 auth= in URLs
+ 5.6 Refuse "downgrade" redirects
 
  6. TELNET
  6.1 ditch stdin
  10. LDAP
  10.1 SASL based authentication mechanisms
  
- 11. New protocols
- 11.1 RSYNC
-
- 12. SSL
- 12.1 Disable specific versions
- 12.2 Provide mutex locking API
- 12.3 Evaluate SSL patches
- 12.4 Cache OpenSSL contexts
- 12.5 Export session ids
- 12.6 Provide callback for cert verification
- 12.7 improve configure --with-ssl
- 12.8 Support DANE
-
- 13. GnuTLS
- 13.1 SSL engine stuff
- 13.2 check connection
-
- 14. SASL
- 14.1 Other authentication mechanisms
- 14.2 Add QOP support to GSSAPI authentication
+ 11. SMB
+ 11.1 File listing support
+ 11.2 Honor file timestamps
+ 11.3 Use NTLMv2
+ 12. New protocols
+ 12.1 RSYNC
+
+ 13. SSL
+ 13.1 Disable specific versions
+ 13.2 Provide mutex locking API
+ 13.3 Evaluate SSL patches
+ 13.4 Cache OpenSSL contexts
+ 13.5 Export session ids
+ 13.6 Provide callback for cert verification
+ 13.7 improve configure --with-ssl
+ 13.8 Support DANE
+
+ 14. GnuTLS
+ 14.1 SSL engine stuff
+ 14.2 check connection
+
+ 15. WinSSL/SChannel
+ 15.1 Add support for client certificate authentication
+ 15.2 Add support for custom server certificate validation
+ 15.3 Add support for the --ciphers option
+
+ 16. SASL
+ 16.1 Other authentication mechanisms
+ 16.2 Add QOP support to GSSAPI authentication
  
- 15. Client
- 15.1 sync
- 15.2 glob posts
- 15.3 prevent file overwriting
- 15.4 simultaneous parallel transfers
- 15.5 provide formpost headers
- 15.6 warning when setting an option
-
- 16. Build
- 16.1 roffit
-
- 17. Test suite
- 17.1 SSL tunnel
- 17.2 nicer lacking perl message
- 17.3 more protocols supported
- 17.4 more platforms supported
- 17.5 Add support for concurrent connections
-
- 18. Next SONAME bump
- 18.1 http-style HEAD output for FTP
- 18.2 combine error codes
- 18.3 extend CURLOPT_SOCKOPTFUNCTION prototype
-
- 19. Next major release
- 19.1 cleanup return codes
- 19.2 remove obsolete defines
- 19.3 size_t
- 19.4 remove several functions
- 19.5 remove CURLOPT_FAILONERROR
- 19.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
- 19.7 remove progress meter from libcurl
- 19.8 remove 'curl_httppost' from public
- 19.9 have form functions use CURL handle argument
- 19.10 Add CURLOPT_MAIL_CLIENT option
+ 17. Client
+ 17.1 sync
+ 17.2 glob posts
+ 17.3 prevent file overwriting
+ 17.4 simultaneous parallel transfers
+ 17.5 provide formpost headers
+ 17.6 warning when setting an option
+ 17.7 warning when sending binary output to terminal
+ 17.8 offer color-coded HTTP header output
+ 17.9 Choose the name of file in braces for complex URLs
+ 17.10 improve how curl works in a windows console window
+
+ 18. Build
+ 18.1 roffit
+
+ 19. Test suite
+ 19.1 SSL tunnel
+ 19.2 nicer lacking perl message
+ 19.3 more protocols supported
+ 19.4 more platforms supported
+ 19.5 Add support for concurrent connections
+
+ 20. Next SONAME bump
+ 20.1 http-style HEAD output for FTP
+ 20.2 combine error codes
+ 20.3 extend CURLOPT_SOCKOPTFUNCTION prototype
+
+ 21. Next major release
+ 21.1 cleanup return codes
+ 21.2 remove obsolete defines
+ 21.3 size_t
+ 21.4 remove several functions
+ 21.5 remove CURLOPT_FAILONERROR
+ 21.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
+ 21.7 remove progress meter from libcurl
+ 21.8 remove 'curl_httppost' from public
+ 21.9 have form functions use CURL handle argument
+ 21.10 Add CURLOPT_MAIL_CLIENT option
 
 ==============================================================================
 
 
  To prevent local users from snooping on your traffic to the proxy. Supported
  by Chrome already:
- http://www.chromium.org/developers/design-documents/secure-web-proxy
+ https://www.chromium.org/developers/design-documents/secure-web-proxy
 
  ...and by Firefox soon:
  https://bugzilla.mozilla.org/show_bug.cgi?id=378637
  A name resolve that has failed is likely to fail when made again within a
  short period of time. Currently we only cache positive responses.
 
+1.10 Support IDNA2008
+
+ International Domain Names are supported in libcurl since years back, powered
+ by libidn. libidn implements IDNA2003 which has been superseded by IDNA2008.
+ libidn2 is an existing library offering support for IDNA2008.
+
+1.11 minimize dependencies with dynamicly loaded modules
+
+ We can create a system with loadable modules/plug-ins, where these modules
+ would be the ones that link to 3rd party libs. That would allow us to avoid
+ having to load ALL dependencies since only the necessary ones for this
+ app/invoke/used protocols would be necessary to load.  See
+ https://github.com/bagder/curl/issues/349
 
 2. libcurl - multi interface
 
  HOST is a command for a client to tell which host name to use, to offer FTP
  servers named-based virtual hosting:
 
- http://tools.ietf.org/html/rfc7151
+ https://tools.ietf.org/html/rfc7151
 
 4.2 Alter passive/active on failure and retry
 
@@ -330,6 +365,14 @@ This is not detailed in any FTP specification.
 
  Additionally this should be implemented for proxy base URLs as well.
 
+5.6 Refuse "downgrade" redirects
+
+ See https://github.com/bagder/curl/issues/226
+
+ Consider a way to tell curl to refuse to "downgrade" protocol with a redirect
+ and/or possibly a bit that refuses redirect to change protocol completely.
+
+
 6. TELNET
 
 6.1 ditch stdin
@@ -393,32 +436,47 @@ to provide the data to send.
  be possible to use ldap_bind_s() instead specifying the security context
  information ourselves.
 
-11. New protocols
+11. SMB
+
+11.1 File listing support
 
-11.1 RSYNC
+Add support for listing the contents of a SMB share. The output should probably
+be the same as/similar to FTP.
+
+11.2 Honor file timestamps
+
+The timestamp of the transferred file should reflect that of the original file.
+
+11.3 Use NTLMv2
+
+Currently the SMB authentication uses NTLMv1.
+
+12. New protocols
+
+12.1 RSYNC
 
  There's no RFC for the protocol or an URI/URL format.  An implementation
  should most probably use an existing rsync library, such as librsync.
 
-12. SSL
+13. SSL
 
-12.1 Disable specific versions
+13.1 Disable specific versions
 
  Provide an option that allows for disabling specific SSL versions, such as
  SSLv2 http://curl.haxx.se/bug/feature.cgi?id=1767276
 
-12.2 Provide mutex locking API
+13.2 Provide mutex locking API
 
  Provide a libcurl API for setting mutex callbacks in the underlying SSL
  library, so that the same application code can use mutex-locking
  independently of OpenSSL or GnutTLS being used.
 
-12.3 Evaluate SSL patches
+13.3 Evaluate SSL patches
 
  Evaluate/apply Gertjan van Wingerde's SSL patches:
  http://curl.haxx.se/mail/lib-2004-03/0087.html
 
-12.4 Cache OpenSSL contexts
+13.4 Cache OpenSSL contexts
 
  "Look at SSL cafile - quick traces look to me like these are done on every
  request as well, when they should only be necessary once per SSL context (or
@@ -428,7 +486,7 @@ to provide the data to send.
  style connections are re-used. It will make us use slightly more memory but
  it will libcurl do less creations and deletions of SSL contexts.
 
-12.5 Export session ids
+13.5 Export session ids
 
  Add an interface to libcurl that enables "session IDs" to get
  exported/imported. Cris Bailiff said: "OpenSSL has functions which can
@@ -436,22 +494,22 @@ to provide the data to send.
  the state from such a buffer at a later date - this is used by mod_ssl for
  apache to implement and SSL session ID cache".
 
-12.6 Provide callback for cert verification
+13.6 Provide callback for cert verification
 
  OpenSSL supports a callback for customised verification of the peer
  certificate, but this doesn't seem to be exposed in the libcurl APIs. Could
  it be? There's so much that could be done if it were!
 
-12.7 improve configure --with-ssl
+13.7 improve configure --with-ssl
 
  make the configure --with-ssl option first check for OpenSSL, then GnuTLS,
  then NSS...
 
-12.8 Support DANE
+13.8 Support DANE
 
  DNS-Based Authentication of Named Entities (DANE) is a way to provide SSL
  keys and certs over DNS using DNSSEC as an alternative to the CA model.
- http://www.rfc-editor.org/rfc/rfc6698.txt
+ https://www.rfc-editor.org/rfc/rfc6698.txt
 
  An initial patch was posted by Suresh Krishnaswamy on March 7th 2013
  (http://curl.haxx.se/mail/lib-2013-03/0075.html) but it was a too simple
@@ -459,34 +517,69 @@ to provide the data to send.
  http://curl.haxx.se/mail/lib-2013-03/0103.html . libunbound may be the
  correct library to base this development on.
 
-13. GnuTLS
+14. GnuTLS
 
-13.1 SSL engine stuff
+14.1 SSL engine stuff
 
  Is this even possible?
 
-13.2 check connection
+14.2 check connection
 
  Add a way to check if the connection seems to be alive, to correspond to the
  SSL_peak() way we use with OpenSSL.
 
-14. SASL
+15. WinSSL/SChannel
+
+15.1 Add support for client certificate authentication
+
+ WinSSL/SChannel currently makes use of the OS-level system and user
+ certificate and private key stores. This does not allow the application
+ or the user to supply a custom client certificate using curl or libcurl.
+
+ Therefore support for the existing -E/--cert and --key options should be
+ implemented by supplying a custom certificate to the SChannel APIs, see:
+ - Getting a Certificate for Schannel
+   https://msdn.microsoft.com/en-us/library/windows/desktop/aa375447.aspx
 
-14.1 Other authentication mechanisms
+15.2 Add support for custom server certificate validation
 
- Add support for other authentication mechanisms such as EXTERNAL, OLP,
+ WinSSL/SChannel currently makes use of the OS-level system and user
+ certificate trust store. This does not allow the application or user to
+ customize the server certificate validation process using curl or libcurl.
+
+ Therefore support for the existing --cacert or --capath options should be
+ implemented by supplying a custom certificate to the SChannel APIs, see:
+ - Getting a Certificate for Schannel
+   https://msdn.microsoft.com/en-us/library/windows/desktop/aa375447.aspx
+
+15.3 Add support for the --ciphers option
+
+ The cipher suites used by WinSSL/SChannel are configured on an OS-level
+ instead of an application-level. This does not allow the application or
+ the user to customize the configured cipher suites using curl or libcurl.
+
+ Therefore support for the existing --ciphers option should be implemented
+ by mapping the OpenSSL/GnuTLS cipher suites to the SChannel APIs, see
+ - Specifying Schannel Ciphers and Cipher Strengths
+   https://msdn.microsoft.com/en-us/library/windows/desktop/aa380161.aspx
+
+16. SASL
+
+16.1 Other authentication mechanisms
+
+ Add support for other authentication mechanisms such as OLP,
  GSS-SPNEGO and others.
  
-14.2 Add QOP support to GSSAPI authentication
+16.2 Add QOP support to GSSAPI authentication
 
  Currently the GSSAPI authentication only supports the default QOP of auth
  (Authentication), whilst Kerberos V5 supports both auth-int (Authentication
  with integrity protection) and auth-conf (Authentication with integrity and
  privacy protection).
 
-15. Client
+17. Client
 
-15.1 sync
+17.1 sync
 
  "curl --sync http://example.com/feed[1-100].rss" or
  "curl --sync http://example.net/{index,calendar,history}.html"
@@ -495,12 +588,12 @@ to provide the data to send.
  remote file is newer than the local file. A Last-Modified HTTP date header
  should also be used to set the mod date on the downloaded file.
 
-15.2 glob posts
+17.2 glob posts
 
  Globbing support for -d and -F, as in 'curl -d "name=foo[0-9]" URL'.
  This is easily scripted though.
 
-15.3 prevent file overwriting
+17.3 prevent file overwriting
 
  Add an option that prevents cURL from overwriting existing local files. When
  used, and there already is an existing file with the target file name
@@ -508,14 +601,14 @@ to provide the data to send.
  existing). So that index.html becomes first index.html.1 and then
  index.html.2 etc.
 
-15.4 simultaneous parallel transfers
+17.4 simultaneous parallel transfers
 
  The client could be told to use maximum N simultaneous parallel transfers and
  then just make sure that happens. It should of course not make more than one
  connection to the same remote host. This would require the client to use the
  multi interface. http://curl.haxx.se/bug/feature.cgi?id=1558595
 
-15.5 provide formpost headers
+17.5 provide formpost headers
 
  Extending the capabilities of the multipart formposting. How about leaving
  the ';type=foo' syntax as it is and adding an extra tag (headers) which
@@ -529,43 +622,73 @@ to provide the data to send.
  which should overwrite the program reasonable defaults (plain/text,
  8bit...)
 
-15.6 warning when setting an option
+17.6 warning when setting an option
+
+ Display a warning when libcurl returns an error when setting an option.
+ This can be useful to tell when support for a particular feature hasn't been
+ compiled into the library.
+
+17.7 warning when sending binary output to terminal
+
+ Provide a way that prompts the user for confirmation before binary data is
+ sent to the terminal, much in the style 'less' does it.
+
+17.8 offer color-coded HTTP header output
+
+ By offering different color output on the header name and the header
+ contents, they could be made more readable and thus help users working on
+ HTTP services.
+
+17.9 Choose the name of file in braces for complex URLs
+
+ When using braces to download a list of URLs and you use complicated names
+ in the list of alternatives, it could be handy to allow curl to use other
+ names when saving.
+
+ Consider a way to offer that. Possibly like
+ {partURL1:name1,partURL2:name2,partURL3:name3} where the name following the
+ colon is the output name.
+
+ See https://github.com/bagder/curl/issues/221
+
+17.10 improve how curl works in a windows console window
+
+ If you pull the scrollbar when transferring with curl in a Windows console
+ window, the transfer is interrupted and can get disconnected. This can
+ probably be improved. See https://github.com/bagder/curl/issues/322
 
-  Display a warning when libcurl returns an error when setting an option.
-  This can be useful to tell when support for a particular feature hasn't been
-  compiled into the library.
 
-16. Build
+18. Build
 
-16.1 roffit
+18.1 roffit
 
  Consider extending 'roffit' to produce decent ASCII output, and use that
  instead of (g)nroff when building src/tool_hugehelp.c
 
-17. Test suite
+19. Test suite
 
-17.1 SSL tunnel
+19.1 SSL tunnel
 
  Make our own version of stunnel for simple port forwarding to enable HTTPS
  and FTP-SSL tests without the stunnel dependency, and it could allow us to
  provide test tools built with either OpenSSL or GnuTLS
 
-17.2 nicer lacking perl message
+19.2 nicer lacking perl message
 
  If perl wasn't found by the configure script, don't attempt to run the tests
  but explain something nice why it doesn't.
 
-17.3 more protocols supported
+19.3 more protocols supported
 
  Extend the test suite to include more protocols. The telnet could just do FTP
  or http operations (for which we have test servers).
 
-17.4 more platforms supported
+19.4 more platforms supported
 
  Make the test suite work on more platforms. OpenBSD and Mac OS. Remove
  fork()s and it should become even more portable.
 
-17.5 Add support for concurrent connections
+19.5 Add support for concurrent connections
 
  Tests 836, 882 and 938 were designed to verify that separate connections aren't
  used when using different login credentials in protocols that shouldn't re-use
@@ -579,14 +702,14 @@ to provide the data to send.
  and thus the wait for connections loop is never entered to receive the second
  connection.
 
-18. Next SONAME bump
+20. Next SONAME bump
 
-18.1 http-style HEAD output for FTP
+20.1 http-style HEAD output for FTP
 
  #undef CURL_FTP_HTTPSTYLE_HEAD in lib/ftp.c to remove the HTTP-style headers
  from being output in NOBODY requests over FTP
 
-18.2 combine error codes
+20.2 combine error codes
 
  Combine some of the error codes to remove duplicates.  The original
  numbering should not be changed, and the old identifiers would be
@@ -611,29 +734,29 @@ to provide the data to send.
 
     CURLE_TFTP_PERM => CURLE_REMOTE_ACCESS_DENIED
 
-18.3 extend CURLOPT_SOCKOPTFUNCTION prototype
+20.3 extend CURLOPT_SOCKOPTFUNCTION prototype
 
  The current prototype only provides 'purpose' that tells what the
  connection/socket is for, but not any protocol or similar. It makes it hard
  for applications to differentiate on TCP vs UDP and even HTTP vs FTP and
  similar.
 
-19. Next major release
+21. Next major release
 
-19.1 cleanup return codes
+21.1 cleanup return codes
 
  curl_easy_cleanup() returns void, but curl_multi_cleanup() returns a
  CURLMcode. These should be changed to be the same.
 
-19.2 remove obsolete defines
+21.2 remove obsolete defines
 
  remove obsolete defines from curl/curl.h
 
-19.3 size_t
+21.3 size_t
 
  make several functions use size_t instead of int in their APIs
 
-19.4 remove several functions
+21.4 remove several functions
 
  remove the following functions from the public API:
 
@@ -654,18 +777,18 @@ to provide the data to send.
 
  curl_multi_socket_all
 
-19.5 remove CURLOPT_FAILONERROR
+21.5 remove CURLOPT_FAILONERROR
 
  Remove support for CURLOPT_FAILONERROR, it has gotten too kludgy and weird
  internally. Let the app judge success or not for itself.
 
-19.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
+21.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
 
  Remove support for a global DNS cache. Anything global is silly, and we
  already offer the share interface for the same functionality but done
  "right".
 
-19.7 remove progress meter from libcurl
+21.7 remove progress meter from libcurl
 
  The internally provided progress meter output doesn't belong in the library.
  Basically no application wants it (apart from curl) but instead applications
@@ -675,7 +798,7 @@ to provide the data to send.
  variable types passed to it instead of doubles so that big files work
  correctly.
 
-19.8 remove 'curl_httppost' from public
+21.8 remove 'curl_httppost' from public
 
  curl_formadd() was made to fill in a public struct, but the fact that the
  struct is public is never really used by application for their own advantage
@@ -684,7 +807,7 @@ to provide the data to send.
  Changing them to return a private handle will benefit the implementation and
  allow us much greater freedoms while still maintaining a solid API and ABI.
 
-19.9 have form functions use CURL handle argument
+21.9 have form functions use CURL handle argument
 
  curl_formadd() and curl_formget() both currently have no CURL handle
  argument, but both can use a callback that is set in the easy handle, and
@@ -692,7 +815,7 @@ to provide the data to send.
  curl_easy_perform() (or similar) called - which is hard to grasp and a design
  mistake.
 
-19.10 Add CURLOPT_MAIL_CLIENT option
+21.10 Add CURLOPT_MAIL_CLIENT option
 
  Rather than use the URL to specify the mail client string to present in the
  HELO and EHLO commands, libcurl should support a new CURLOPT specifically for
index 7235f12..76faee4 100644 (file)
@@ -1,4 +1,3 @@
-Updated: Dec 24, 2013 (http://curl.haxx.se/docs/httpscripting.html)
                                   _   _ ____  _
                               ___| | | |  _ \| |
                              / __| | | | |_) | |
@@ -23,6 +22,8 @@ The Art Of Scripting HTTP Requests Using Curl
  3. Fetch a page
  3.1 GET
  3.2 HEAD
+ 3.3 Multiple URLs in a single command line
+ 3.4 Multiple HTTP methods in a single command line
  4. HTML forms
  4.1 Forms explained
  4.2 GET
@@ -136,7 +137,7 @@ The Art Of Scripting HTTP Requests Using Curl
  The Uniform Resource Locator format is how you specify the address of a
  particular resource on the Internet. You know these, you've seen URLs like
  http://curl.haxx.se or https://yourbank.com a million times. RFC 3986 is the
- canonical spec.
+ canonical spec. And yeah, the formal name is not URL, it is URI.
 
  2.2 Host
 
@@ -193,7 +194,6 @@ The Art Of Scripting HTTP Requests Using Curl
  the associated response. The path is what is to the right side of the slash
  that follows the host name and possibly port number.
 
-
 3. Fetch a page
 
  3.1 GET
@@ -224,6 +224,46 @@ The Art Of Scripting HTTP Requests Using Curl
  may see a Content-Length: in the response headers, but there must not be an
  actual body in the HEAD response.
 
+ 3.3 Multiple URLs in a single command line
+
+ A single curl command line may involve one or many URLs. The most common case
+ is probably to just use one, but you can specify any amount of URLs. Yes
+ any. No limits. You'll then get requests repeated over and over for all the
+ given URLs.
+
+ Example, send two GETs:
+
+    curl http://url1.example.com http://url2.example.com
+
+ If you use --data to POST to the URL, using multiple URLs means that you send
+ that same POST to all the given URLs.
+
+ Example, send two POSTs:
+
+    curl --data name=curl http://url1.example.com http://url2.example.com
+
+
+ 3.4 Multiple HTTP methods in a single command line
+
+ Sometimes you need to operate on several URLs in a single command line and do
+ different HTTP methods on each. For this, you'll enjoy the --next option. It
+ is basically a separator that separates a bunch of options from the next. All
+ the URLs before --next will get the same method and will get all the POST
+ data merged into one.
+
+ When curl reaches the --next on the command line, it'll sort of reset the
+ method and the POST data and allow a new set.
+
+ Perhaps this is best shown with a few examples. To send first a HEAD and then
+ a GET:
+
+   curl -I http://example.com --next http://example.com
+
+ To first send a POST and then a GET:
+
+   curl -d score=10 http://example.com/post.cgi --next http://example.com/results.html
+
+
 4. HTML forms
 
  4.1 Forms explained
@@ -302,6 +342,10 @@ The Art Of Scripting HTTP Requests Using Curl
 
         curl --data-urlencode "name=I am Daniel" http://www.example.com
 
+  If you repeat --data several times on the command line, curl will
+  concatenate all the given data pieces - and put a '&' symbol between each
+  data segment.
+
  4.4 File Upload POST
 
   Back in late 1995 they defined an additional way to post data over HTTP. It
@@ -557,8 +601,10 @@ The Art Of Scripting HTTP Requests Using Curl
  truckload of advanced features to allow all those encryptions and key
  infrastructure mechanisms encrypted HTTP requires.
 
- Curl supports encrypted fetches thanks to the freely available OpenSSL
- libraries. To get a page from a HTTPS server, simply run curl like:
+ Curl supports encrypted fetches when built to use a TLS library and it can be
+ built to use one out of a fairly large set of libraries - "curl -V" will show
+ which one your curl was built to use (if any!). To get a page from a HTTPS
+ server, simply run curl like:
 
         curl https://secure.example.com
 
@@ -584,6 +630,12 @@ The Art Of Scripting HTTP Requests Using Curl
 
         http://curl.haxx.se/docs/sslcerts.html
 
+  At times you may end up with your own CA cert store and then you can tell
+  curl to use that to verify the server's certificate:
+
+        curl --cacert ca-bundle.pem https://example.com/
+
+
 11. Custom Request Elements
 
 11.1 Modify method and headers
@@ -692,7 +744,7 @@ The Art Of Scripting HTTP Requests Using Curl
 
  14.1 Standards
 
- RFC 2616 is a must to read if you want in-depth understanding of the HTTP
+ RFC 7230 is a must to read if you want in-depth understanding of the HTTP
  protocol
 
  RFC 3986 explains the URL syntax
index 0670089..72a4547 100644 (file)
@@ -1,22 +1,18 @@
-                                  _   _ ____  _
-                              ___| | | |  _ \| |
-                             / __| | | | |_) | |
-                            | (__| |_| |  _ <| |___
-                             \___|\___/|_| \_\_____|
-
 Version Numbers and Releases
+============================
 
  Curl is not only curl. Curl is also libcurl. They're actually individually
  versioned, but they mostly follow each other rather closely.
 
  The version numbering is always built up using the same system:
 
-        X.Y[.Z]
+        X.Y.Z
+
+  - X is main version number
+  - Y is release number
+  - Z is patch number
 
- Where
-   X is main version number
-   Y is release number
-   Z is patch number
+## Bumping numbers
 
  One of these numbers will get bumped in each new release. The numbers to the
  right of a bumped number will be reset to zero. If Z is zero, it may not be
@@ -57,4 +53,4 @@ Version Numbers and Releases
  release. It makes comparisons with greater than and less than work.
 
  This number is also available as three separate defines:
LIBCURL_VERSION_MAJOR, LIBCURL_VERSION_MINOR and LIBCURL_VERSION_PATCH.
`LIBCURL_VERSION_MAJOR`, `LIBCURL_VERSION_MINOR` and `LIBCURL_VERSION_PATCH`.
index 1563d54..015dae8 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl-config man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 3015304..e3abdea 100644 (file)
Binary files a/docs/curl-config.pdf and b/docs/curl-config.pdf differ
index 0b9971c..e3303a5 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -39,8 +39,7 @@ resume, Metalink, and more. As you will see below, the number of features will
 make your head spin!
 
 curl is powered by libcurl for all transfer-related features. See
-.BR libcurl (3)
-for details.
+\fIlibcurl(3)\fP for details.
 .SH URL
 The URL syntax is protocol-dependent. You'll find a detailed description in
 RFC 3986.
@@ -269,11 +268,11 @@ If this option is used several times, the last one will be used.
 .IP "--ciphers <list of ciphers>"
 (SSL) Specifies which ciphers to use in the connection. The list of ciphers
 must specify valid ciphers. Read up on SSL cipher list details on this URL:
-\fIhttp://www.openssl.org/docs/apps/ciphers.html\fP
+\fIhttps://www.openssl.org/docs/apps/ciphers.html\fP
 
 NSS ciphers are done differently than OpenSSL and GnuTLS. The full list of NSS
 ciphers is in the NSSCipherSuite entry at this URL:
-\fIhttp://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives\fP
+\fIhttps://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives\fP
 
 If this option is used several times, the last one will be used.
 .IP "--compressed"
@@ -315,9 +314,10 @@ presses the submit button. This will cause curl to pass the data to the server
 using the content-type application/x-www-form-urlencoded.  Compare to
 \fI-F, --form\fP.
 
-\fI-d, --data\fP is the same as \fI--data-ascii\fP. To post data purely binary,
-you should instead use the \fI--data-binary\fP option. To URL-encode the value
-of a form field you may use \fI--data-urlencode\fP.
+\fI-d, --data\fP is the same as \fI--data-ascii\fP. \fI--data-raw\fP is almost
+the same but does not have a special interpretation of the @ character. To
+post data purely binary, you should instead use the \fI--data-binary\fP option.
+To URL-encode the value of a form field you may use \fI--data-urlencode\fP.
 
 If any of these options is used more than once on the same command line, the
 data pieces specified will be merged together with a separating
@@ -329,7 +329,8 @@ read the data from, or - if you want curl to read the data from
 stdin. Multiple files can also be specified. Posting data from a file
 named 'foobar' would thus be done with \fI--data\fP @foobar. When --data is
 told to read from a file like that, carriage returns and newlines will be
-stripped out.
+stripped out. If you don't want the @ character to have a special
+interpretation use \fI--data-raw\fP instead.
 .IP "-D, --dump-header <file>"
 Write the protocol headers to the specified file.
 
@@ -354,6 +355,10 @@ and carriage returns are preserved and conversions are never done.
 
 If this option is used several times, the ones following the first will append
 data as described in \fI-d, --data\fP.
+.IP "--data-raw <data>"
+(HTTP) This posts data similarly to \fI--data\fP but without the special
+interpretation of the @ character. See \fI-d, --data\fP.
+(Added in 7.43.0)
 .IP "--data-urlencode <data>"
 (HTTP) This posts data, similar to the other --data options with the exception
 that this performs URL-encoding. (Added in 7.18.0)
@@ -539,19 +544,42 @@ OpenSSL-powered curl to make SSL-connections much more efficiently than using
 
 If this option is set, the default capath value will be ignored, and if it is
 used several times, the last one will be used.
-.IP "--pinnedpubkey <pinned public key>"
-(SSL) Tells curl to use the specified public key file to verify the peer. The
-file must contain a single public key in PEM or DER format.
+.IP "--pinnedpubkey <pinned public key (hashes)>"
+(SSL) Tells curl to use the specified public key file (or hashes) to verify the
+peer. This can be a path to a file which contains a single public key in PEM or
+DER format, or any number of base64 encoded sha256 hashes preceded by
+\'sha256//\' and seperated by \';\'
 
 When negotiating a TLS or SSL connection, the server sends a certificate
 indicating its identity. A public key is extracted from this certificate and
 if it does not exactly match the public key provided to this option, curl will
 abort the connection before sending or receiving any data.
 
-This is currently only implemented in the OpenSSL, GnuTLS and GSKit backends.
+Added in 7.39.0 for OpenSSL, GnuTLS and GSKit. Added in 7.43.0 for NSS and
+wolfSSL/CyaSSL. sha256 support added in 7.44.0 for OpenSSL,
+GnuTLS, NSS and wolfSSL/CyaSSL. Other SSL backends not supported.
 
 If this option is used several times, the last one will be used.
-(Added in 7.39.0)
+.IP "--cert-status"
+(SSL) Tells curl to verify the status of the server certificate by using the
+Certificate Status Request (aka. OCSP stapling) TLS extension.
+
+If this option is enabled and the server sends an invalid (e.g. expired)
+response, if the response suggests that the server certificate has been revoked,
+or no response at all is received, the verification fails.
+
+This is currently only implemented in the OpenSSL, GnuTLS and NSS backends.
+(Added in 7.41.0)
+.IP "--false-start"
+
+(SSL) Tells curl to use false start during the TLS handshake. False start is a
+mode where a TLS client will start sending application data before verifying
+the server's Finished message, thus saving a round trip when performing a full
+handshake.
+
+This is currently only implemented in the NSS and Secure Transport (on iOS 7.0
+or later, or OS X 10.9 or later) backends.
+(Added in 7.42.0)
 .IP "-f, --fail"
 (HTTP) Fail silently (no output at all) on server errors. This is mostly done
 to better enable scripts etc to better deal with failed attempts. In normal
@@ -579,7 +607,9 @@ input:
 \fBcurl\fP -F password=@/etc/passwd www.mypasswords.com
 
 To read content from stdin instead of a file, use - as the filename. This goes
-for both @ and < constructs.
+for both @ and < constructs. Unfortunately it does not support reading the
+file from a named pipe or similar, as it needs the full size before the
+transfer starts.
 
 You can also tell curl what Content-Type to use by using 'type=', in a manner
 similar to:
@@ -641,6 +671,7 @@ curl does one CWD with the full target directory and then operates on the file
 \&"normally" (like in the multicwd case). This is somewhat more standards
 compliant than 'nocwd' but without the full penalty of 'multicwd'.
 .RE
+.IP
 (Added in 7.15.1)
 .IP "--ftp-pasv"
 (FTP) Use passive mode for the data connection. Passive is the internal default
@@ -733,6 +764,12 @@ Example:
 
 \&# curl -H "X-First-Name: Joe" http://192.168.0.1/
 
+\fBWARNING\fP: headers set with this option will be set in all requests - even
+after redirects are followed, like when told with \fB-L, --location\fP. This
+can lead to the header being sent to other hosts than the original host, so
+sensitive headers should be used with caution combined with following
+redirects.
+
 This option can be used multiple times to add/replace/remove multiple headers.
 .IP "--hostpubmd5 <md5>"
 (SCP/SFTP) Pass a string containing 32 hexadecimal digits. The string should
@@ -1027,13 +1064,10 @@ in Metalink file, hash check will fail.
 Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user's
 home directory for login name and password. This is typically used for FTP on
 Unix. If used with HTTP, curl will enable user authentication. See
-.BR netrc(4)
-or
-.BR ftp(1)
-for details on the file format. Curl will not complain if that file
-doesn't have the right permissions (it should not be either world- or
-group-readable). The environment variable "HOME" is used to find the home
-directory.
+\fInetrc(5)\fP \fIftp(1)\fP for details on the file format. Curl will not
+complain if that file doesn't have the right permissions (it should not be
+either world- or group-readable). The environment variable "HOME" is used to
+find the home directory.
 
 A quick and very simple example of how to setup a \fI.netrc\fP to allow curl
 to FTP to the machine host.domain.com with user name \&'myself' and password
@@ -1195,7 +1229,7 @@ i.e "my.host.domain" to specify the machine
 make curl pick the same IP address that is already used for the control
 connection
 .RE
-
+.IP
 If this option is used several times, the last one will be used. Disable the
 use of PORT with \fI--ftp-pasv\fP. Disable the attempt to use the EPRT command
 instead of PORT by using \fI--disable-eprt\fP. EPRT is really PORT++.
@@ -1209,6 +1243,12 @@ available.
 (SSL/SSH) Passphrase for the private key
 
 If this option is used several times, the last one will be used.
+.IP "--path-as-is"
+Tell curl to not handle sequences of /../ or /./ in the given URL
+path. Normally curl will squash or merge them according to standards but with
+this option set you tell it not to do that.
+
+(Added in 7.42.0)
 .IP "--post301"
 (HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert POST requests
 into GET requests when following a 301 redirection. The non-RFC behaviour is
@@ -1294,6 +1334,11 @@ with a remote host. (Added in 7.17.1)
 .IP "--proxy-ntlm"
 Tells curl to use HTTP NTLM authentication when communicating with the given
 proxy. Use \fI--ntlm\fP for enabling NTLM with a remote host.
+.IP "--proxy-service-name <servicename>"
+This option allows you to change the service name for proxy negotiation.
+
+Examples: --proxy-negotiate proxy-name \fI--proxy-service-name\fP sockd would use
+sockd/proxy-name.  (Added in 7.43.0).
 .IP "--proxy1.0 <proxyhost[:port]>"
 Use the specified HTTP 1.0 proxy. If the port number is not specified, it is
 assumed at port 1080.
@@ -1391,7 +1436,7 @@ specifies 300 bytes from offset 500(H)
 .B 100-199,500-599
 specifies two separate 100-byte ranges(*)(H)
 .RE
-
+.IP
 (*) = NOTE that this will cause the server to reply with a multipart
 response!
 
@@ -1475,6 +1520,11 @@ terminal/stdout unless you redirect it.
 .IP "--sasl-ir"
 Enable initial response in SASL authentication.
 (Added in 7.31.0)
+.IP "--service-name <servicename>"
+This option allows you to change the service name for SPNEGO.
+
+Examples: --negotiate \fI--service-name\fP sockd would use
+sockd/server-name.  (Added in 7.43.0).
 .IP "-S, --show-error"
 When used with \fI-s\fP it makes curl show an error message if it fails.
 .IP "--ssl"
@@ -1497,6 +1547,10 @@ and TLS1.0 protocols known as BEAST.  If this option isn't used, the SSL layer
 may use workarounds known to cause interoperability problems with some older
 SSL implementations. WARNING: this option loosens the SSL security, and by
 using this flag you ask for exactly that.  (Added in 7.25.0)
+.IP "--ssl-no-revoke"
+(WinSSL) This option tells curl to disable certificate revocation checks.
+WARNING: this option loosens the SSL security, and by using this flag you ask
+for exactly that.  (Added in 7.44.0)
 .IP "--socks4 <host[:port]>"
 Use the specified SOCKS4 proxy. If the port number is not specified, it is
 assumed at port 1080. (Added in 7.15.2)
@@ -1676,7 +1730,7 @@ impossible to use a colon in the user name with this option. The password can,
 still.
 
 When using Kerberos V5 with a Windows based server you should include the
-Windows domain name in the user name, in order for the server to succesfully
+Windows domain name in the user name, in order for the server to successfully
 obtain a Kerberos Ticket. If you don't then the initial authentication
 handshake may fail.
 
@@ -1850,7 +1904,7 @@ displayed with millisecond resolution.
 The URL that was fetched last. This is most meaningful if you've told curl
 to follow location: headers.
 .RE
-
+.IP
 If this option is used several times, the last one will be used.
 .IP "-x, --proxy <[protocol://][user:password@]proxyhost[:port]>"
 Use the specified proxy.
@@ -1884,7 +1938,7 @@ password.
 If this option is used several times, the last one will be used.
 .IP "-X, --request <command>"
 (HTTP) Specifies a custom request method to use when communicating with the
-HTTP server.  The specified request will be used instead of the method
+HTTP server.  The specified request method will be used instead of the method
 otherwise used (which defaults to GET). Read the HTTP 1.1 specification for
 details and explanations. Common additional HTTP requests include PUT and
 DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and
@@ -1898,6 +1952,11 @@ alter the way curl behaves. So for example if you want to make a proper HEAD
 request, using -X HEAD will not suffice. You need to use the \fI-I, --head\fP
 option.
 
+The method string you set with -X will be used for all requests, which if you
+for example use \fB-L, --location\fP may cause unintended side-effects when
+curl doesn't change request method according to the HTTP 30x response codes -
+and similar.
+
 (FTP)
 Specifies a custom FTP command to use instead of LIST when doing file lists
 with FTP.
index 2a961b7..c8374c4 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -50,7 +55,7 @@ p.roffit {
 <p class="level0"><span Class="bold">curl [options]</span> <a class="emphasis" href="#URL">[URL...]</a> <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">curl</span> is a tool to transfer data from or to a server, using one of the supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP). The command is designed to work without user interaction. 
 <p class="level0">curl offers a busload of useful tricks like proxy support, user authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer resume, Metalink, and more. As you will see below, the number of features will make your head spin! 
-<p class="level0">curl is powered by libcurl for all transfer-related features. See <span Class="manpage">libcurl (3)</span> for details. <a name="URL"></a><h2 class="nroffsh">URL</h2>
+<p class="level0">curl is powered by libcurl for all transfer-related features. See <span Class="emphasis">libcurl(3)</span> for details. <a name="URL"></a><h2 class="nroffsh">URL</h2>
 <p class="level0">The URL syntax is protocol-dependent. You'll find a detailed description in <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a>. 
 <p class="level0">You can specify multiple URLs or parts of URLs by writing part sets within braces as in: 
 <p class="level0">&nbsp; <a href="http://site">http://site</a>.{one,two,three}.com 
@@ -74,7 +79,7 @@ p.roffit {
 <p class="level0">curl displays this data to the terminal by default, so if you invoke curl to do an operation and it is about to write data to the terminal, it <span Class="emphasis">disables</span> the progress meter as otherwise it would mess up the output mixing progress meter and response data. 
 <p class="level0">If you want a progress meter for HTTP POST or PUT requests, you need to redirect the response output to a file, using shell redirect (&gt;), -o [file] or similar. 
 <p class="level0">It is not the same case for FTP upload as that operation does not spit out any response data to the terminal. 
-<p class="level0">If you prefer a progress "bar" instead of the regular meter, <a class="emphasis" href="#-">-#</a> is your friend. <a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
+<p class="level0">If you prefer a progress "bar" instead of the regular meter, <span Class="emphasis">-&#35;</span> is your friend. <a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
 <p class="level0">Options start with one or two dashes. Many of the options require an additional value next to them. 
 <p class="level0">The short "single-dash" form of the options, -d for example, may be used with or without a space between it and its value, although a space is a recommended separator. The long "double-dash" form, --data for example, requires a space between it and its value. 
 <p class="level0">Short version options that don't need any additional values can be used immediately next to each other, like for example you can specify all the options -O, -L and -v at once as -OLv. 
@@ -134,8 +139,8 @@ p.roffit {
 <p class="level1">Use "-C -" to tell curl to automatically find out where/how to resume the transfer. It then uses the given output/input files to figure that out. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--ciphers"></a><span class="nroffip">--ciphers &lt;list of ciphers&gt;</span> 
-<p class="level1">(SSL) Specifies which ciphers to use in the connection. The list of ciphers must specify valid ciphers. Read up on SSL cipher list details on this URL: <span Class="emphasis"><a href="http://www.openssl.org/docs/apps/ciphers.html">http://www.openssl.org/docs/apps/ciphers.html</a></span> 
-<p class="level1">NSS ciphers are done differently than OpenSSL and GnuTLS. The full list of NSS ciphers is in the NSSCipherSuite entry at this URL: <span Class="emphasis"><a href="http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives">http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives</a></span> 
+<p class="level1">(SSL) Specifies which ciphers to use in the connection. The list of ciphers must specify valid ciphers. Read up on SSL cipher list details on this URL: <span Class="emphasis">https://www.openssl.org/docs/apps/ciphers.html</span> 
+<p class="level1">NSS ciphers are done differently than OpenSSL and GnuTLS. The full list of NSS ciphers is in the NSSCipherSuite entry at this URL: <span Class="emphasis">https://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html&#35;Directives</span> 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--compressed"></a><span class="nroffip">--compressed</span> 
 <p class="level1">(HTTP) Request a compressed response using one of the algorithms curl supports, and save the uncompressed document.  If this option is used and the server sends an unsupported encoding, curl will report an error. 
@@ -155,9 +160,9 @@ p.roffit {
 <p class="level1">(Added in 7.19.7) 
 <p class="level0"><a name="-d"></a><span class="nroffip">-d, --data &lt;data&gt;</span> 
 <p class="level1">(HTTP) Sends the specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and presses the submit button. This will cause curl to pass the data to the server using the content-type application/x-www-form-urlencoded.  Compare to <a class="emphasis" href="#-F">-F, --form</a>. 
-<p class="level1"><a class="emphasis" href="#-d">-d, --data</a> is the same as <a class="emphasis" href="#--data-ascii">--data-ascii</a>. To post data purely binary, you should instead use the <a class="emphasis" href="#--data-binary">--data-binary</a> option. To URL-encode the value of a form field you may use <a class="emphasis" href="#--data-urlencode">--data-urlencode</a>. 
+<p class="level1"><a class="emphasis" href="#-d">-d, --data</a> is the same as <a class="emphasis" href="#--data-ascii">--data-ascii</a>. <a class="emphasis" href="#--data-raw">--data-raw</a> is almost the same but does not have a special interpretation of the @ character. To post data purely binary, you should instead use the <a class="emphasis" href="#--data-binary">--data-binary</a> option. To URL-encode the value of a form field you may use <a class="emphasis" href="#--data-urlencode">--data-urlencode</a>. 
 <p class="level1">If any of these options is used more than once on the same command line, the data pieces specified will be merged together with a separating &-symbol. Thus, using '-d name=daniel -d skill=lousy' would generate a post chunk that looks like 'name=daniel&skill=lousy'. 
-<p class="level1">If you start the data with the letter @, the rest should be a file name to read the data from, or - if you want curl to read the data from stdin. Multiple files can also be specified. Posting data from a file named 'foobar' would thus be done with <span Class="emphasis">--data</span> @foobar. When --data is told to read from a file like that, carriage returns and newlines will be stripped out. 
+<p class="level1">If you start the data with the letter @, the rest should be a file name to read the data from, or - if you want curl to read the data from stdin. Multiple files can also be specified. Posting data from a file named 'foobar' would thus be done with <span Class="emphasis">--data</span> @foobar. When --data is told to read from a file like that, carriage returns and newlines will be stripped out. If you don't want the @ character to have a special interpretation use <a class="emphasis" href="#--data-raw">--data-raw</a> instead. 
 <p class="level0"><a name="-D"></a><span class="nroffip">-D, --dump-header &lt;file&gt;</span> 
 <p class="level1">Write the protocol headers to the specified file. 
 <p class="level1">This option is handy to use when you want to store the headers that an HTTP site sends to you. Cookies from the headers could then be read in a second curl invocation by using the <a class="emphasis" href="#-b">-b, --cookie</a> option! The <a class="emphasis" href="#-c">-c, --cookie-jar</a> option is a better way to store cookies. 
@@ -169,6 +174,8 @@ p.roffit {
 <p class="level1">(HTTP) This posts data exactly as specified with no extra processing whatsoever. 
 <p class="level1">If you start the data with the letter @, the rest should be a filename.  Data is posted in a similar manner as <a class="emphasis" href="#--data-ascii">--data-ascii</a> does, except that newlines and carriage returns are preserved and conversions are never done. 
 <p class="level1">If this option is used several times, the ones following the first will append data as described in <a class="emphasis" href="#-d">-d, --data</a>. 
+<p class="level0"><a name="--data-raw"></a><span class="nroffip">--data-raw &lt;data&gt;</span> 
+<p class="level1">(HTTP) This posts data similarly to <span Class="emphasis">--data</span> but without the special interpretation of the @ character. See <a class="emphasis" href="#-d">-d, --data</a>. (Added in 7.43.0) 
 <p class="level0"><a name="--data-urlencode"></a><span class="nroffip">--data-urlencode &lt;data&gt;</span> 
 <p class="level1">(HTTP) This posts data, similar to the other --data options with the exception that this performs URL-encoding. (Added in 7.18.0) 
 <p class="level1">To be CGI-compliant, the &lt;data&gt; part should begin with a <span Class="emphasis">name</span> followed by a separator and a content specification. The &lt;data&gt; part can be passed to curl using one of the following syntaxes: 
@@ -221,9 +228,9 @@ p.roffit {
 <p class="level1">(HTTP) Sends the "Referrer Page" information to the HTTP server. This can also be set with the <a class="emphasis" href="#-H">-H, --header</a> flag of course.  When used with <a class="emphasis" href="#-L">-L, --location</a> you can append ";auto" to the --referer URL to make curl automatically set the previous URL when it follows a Location: header. The ";auto" string can be used alone, even if you don't set an initial --referer. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-E"></a><span class="nroffip">-E, --cert &lt;certificate[:password]&gt;</span> 
-<p class="level1">(SSL) Tells curl to use the specified client certificate file when getting a file with HTTPS, FTPS or another SSL-based protocol. The certificate must be in PKCS#12 format if using Secure Transport, or PEM format if using any other engine.  If the optional password isn't specified, it will be queried for on the terminal. Note that this option assumes a "certificate" file that is the private key and the private certificate concatenated! See <span Class="emphasis">--cert</span> and <a class="emphasis" href="#--key">--key</a> to specify them independently. 
-<p class="level1">If curl is built against the NSS SSL library then this option can tell curl the nickname of the certificate to use within the NSS database defined by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the NSS PEM PKCS#11 module (libnsspem.so) is available then PEM files may be loaded. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname.  If the nickname contains ":", it needs to be preceded by "\" so that it is not recognized as password delimiter.  If the nickname contains "\", it needs to be escaped as "\\" so that it is not recognized as an escape character. 
-<p class="level1">(iOS and Mac OS X only) If curl is built against Secure Transport, then the certificate string can either be the name of a certificate/private key in the system or user keychain, or the path to a PKCS#12-encoded certificate and private key. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname. 
+<p class="level1">(SSL) Tells curl to use the specified client certificate file when getting a file with HTTPS, FTPS or another SSL-based protocol. The certificate must be in PKCS&#35;12 format if using Secure Transport, or PEM format if using any other engine.  If the optional password isn't specified, it will be queried for on the terminal. Note that this option assumes a "certificate" file that is the private key and the private certificate concatenated! See <span Class="emphasis">--cert</span> and <a class="emphasis" href="#--key">--key</a> to specify them independently. 
+<p class="level1">If curl is built against the NSS SSL library then this option can tell curl the nickname of the certificate to use within the NSS database defined by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the NSS PEM PKCS&#35;11 module (libnsspem.so) is available then PEM files may be loaded. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname.  If the nickname contains ":", it needs to be preceded by "\" so that it is not recognized as password delimiter.  If the nickname contains "\", it needs to be escaped as "\\" so that it is not recognized as an escape character. 
+<p class="level1">(iOS and Mac OS X only) If curl is built against Secure Transport, then the certificate string can either be the name of a certificate/private key in the system or user keychain, or the path to a PKCS&#35;12-encoded certificate and private key. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--engine"></a><span class="nroffip">--engine &lt;name&gt;</span> 
 <p class="level1">Select the OpenSSL crypto engine to use for cipher operations. Use <a class="emphasis" href="#--engine">--engine list</a> to print a list of build-time supported engines. Note that not all (or none) of the engines may be available at run-time. 
@@ -238,16 +245,24 @@ p.roffit {
 <p class="level1">(SSL) Tells curl to use the specified certificate file to verify the peer. The file may contain multiple CA certificates. The certificate(s) must be in PEM format. Normally curl is built to use a default file for this, so this option is typically used to alter that default file. 
 <p class="level1">curl recognizes the environment variable named 'CURL_CA_BUNDLE' if it is set, and uses the given path as a path to a CA cert bundle. This option overrides that variable. 
 <p class="level1">The windows version of curl will automatically look for a CA certs file named &acute;curl-ca-bundle.crt&acute;, either in the same directory as curl.exe, or in the Current Working Directory, or in any folder along your PATH. 
-<p class="level1">If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module (libnsspem.so) needs to be available for this option to work properly. 
+<p class="level1">If curl is built against the NSS SSL library, the NSS PEM PKCS&#35;11 module (libnsspem.so) needs to be available for this option to work properly. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--capath"></a><span class="nroffip">--capath &lt;CA certificate directory&gt;</span> 
 <p class="level1">(SSL) Tells curl to use the specified certificate directory to verify the peer. Multiple paths can be provided by separating them with ":" (e.g. "path1:path2:path3"). The certificates must be in PEM format, and if curl is built against OpenSSL, the directory must have been processed using the c_rehash utility supplied with OpenSSL. Using <a class="emphasis" href="#--capath">--capath</a> can allow OpenSSL-powered curl to make SSL-connections much more efficiently than using <a class="emphasis" href="#--cacert">--cacert</a> if the <a class="emphasis" href="#--cacert">--cacert</a> file contains many CA certificates. 
 <p class="level1">If this option is set, the default capath value will be ignored, and if it is used several times, the last one will be used. 
-<p class="level0"><a name="--pinnedpubkey"></a><span class="nroffip">--pinnedpubkey &lt;pinned public key&gt;</span> 
-<p class="level1">(SSL) Tells curl to use the specified public key file to verify the peer. The file must contain a single public key in PEM or DER format. 
+<p class="level0"><a name="--pinnedpubkey"></a><span class="nroffip">--pinnedpubkey &lt;pinned public key (hashes)&gt;</span> 
+<p class="level1">(SSL) Tells curl to use the specified public key file (or hashes) to verify the peer. This can be a path to a file which contains a single public key in PEM or DER format, or any number of base64 encoded sha256 hashes preceded by &acute;sha256//&acute; and seperated by &acute;;&acute; 
 <p class="level1">When negotiating a TLS or SSL connection, the server sends a certificate indicating its identity. A public key is extracted from this certificate and if it does not exactly match the public key provided to this option, curl will abort the connection before sending or receiving any data. 
-<p class="level1">This is currently only implemented in the OpenSSL, GnuTLS and GSKit backends. 
-<p class="level1">If this option is used several times, the last one will be used. (Added in 7.39.0) 
+<p class="level1">Added in 7.39.0 for OpenSSL, GnuTLS and GSKit. Added in 7.43.0 for NSS and wolfSSL/CyaSSL. sha256 support added in 7.44.0 for OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL. Other SSL backends not supported. 
+<p class="level1">If this option is used several times, the last one will be used. 
+<p class="level0"><a name="--cert-status"></a><span class="nroffip">--cert-status</span> 
+<p class="level1">(SSL) Tells curl to verify the status of the server certificate by using the Certificate Status Request (aka. OCSP stapling) TLS extension. 
+<p class="level1">If this option is enabled and the server sends an invalid (e.g. expired) response, if the response suggests that the server certificate has been revoked, or no response at all is received, the verification fails. 
+<p class="level1">This is currently only implemented in the OpenSSL, GnuTLS and NSS backends. (Added in 7.41.0) 
+<p class="level0"><a name="--false-start"></a><span class="nroffip">--false-start</span> 
+<p class="level1">
+<p class="level1">(SSL) Tells curl to use false start during the TLS handshake. False start is a mode where a TLS client will start sending application data before verifying the server's Finished message, thus saving a round trip when performing a full handshake. 
+<p class="level1">This is currently only implemented in the NSS and Secure Transport (on iOS 7.0 or later, or OS X 10.9 or later) backends. (Added in 7.42.0) 
 <p class="level0"><a name="-f"></a><span class="nroffip">-f, --fail</span> 
 <p class="level1">(HTTP) Fail silently (no output at all) on server errors. This is mostly done to better enable scripts etc to better deal with failed attempts. In normal cases when an HTTP server fails to deliver a document, it returns an HTML document stating so (which often also describes why and more). This flag will prevent curl from outputting that and return error 22. 
 <p class="level1">This method is not fail-safe and there are occasions where non-successful response codes will slip through, especially when authentication is involved (response codes 401 and 407). 
@@ -255,7 +270,7 @@ p.roffit {
 <p class="level1">(HTTP) This lets curl emulate a filled-in form in which a user has pressed the submit button. This causes curl to POST data using the Content-Type multipart/form-data according to <a href="http://www.ietf.org/rfc/rfc2388.txt">RFC 2388</a>. This enables uploading of binary files etc. To force the 'content' part to be a file, prefix the file name with an @ sign. To just get the content part from a file, prefix the file name with the symbol &lt;. The difference between @ and &lt; is then that @ makes a file get attached in the post as a file upload, while the &lt; makes a text field and just get the contents for that text field from a file. 
 <p class="level1">Example, to send your password file to the server, where 'password' is the name of the form-field to which /etc/passwd will be the input: 
 <p class="level1"><span Class="bold">curl</span> -F password=@/etc/passwd www.mypasswords.com 
-<p class="level1">To read content from stdin instead of a file, use - as the filename. This goes for both @ and &lt; constructs. 
+<p class="level1">To read content from stdin instead of a file, use - as the filename. This goes for both @ and &lt; constructs. Unfortunately it does not support reading the file from a named pipe or similar, as it needs the full size before the transfer starts. 
 <p class="level1">You can also tell curl what Content-Type to use by using 'type=', in a manner similar to: 
 <p class="level1"><span Class="bold">curl</span> -F "web=@index.html;type=text/html" url.com 
 <p class="level1">or 
@@ -285,6 +300,8 @@ p.roffit {
 <p class="level2">curl does no CWD at all. curl will do SIZE, RETR, STOR etc and give a full path to the server for all these commands. This is the fastest behavior. 
 <p class="level1"><a name="singlecwd"></a><span class="nroffip">singlecwd</span> 
 <p class="level2">curl does one CWD with the full target directory and then operates on the file "normally" (like in the multicwd case). This is somewhat more standards compliant than 'nocwd' but without the full penalty of 'multicwd'. 
+<p class="level1">
+<p class="level0"><a name=""></a><span class="nroffip"></span> 
 <p class="level1">(Added in 7.15.1) 
 <p class="level0"><a name="--ftp-pasv"></a><span class="nroffip">--ftp-pasv</span> 
 <p class="level1">(FTP) Use passive mode for the data connection. Passive is the internal default behavior, but using this option can be used to override a previous <span Class="emphasis">-P/-ftp-port</span> option. (Added in 7.11.0) 
@@ -315,7 +332,8 @@ p.roffit {
 <p class="level1">See also the <a class="emphasis" href="#-A">-A, --user-agent</a> and <a class="emphasis" href="#-e">-e, --referer</a> options. 
 <p class="level1">Starting in 7.37.0, you need <a class="emphasis" href="#--proxy-header">--proxy-header</a> to send custom headers intended for a proxy. 
 <p class="level1">Example: 
-<p class="level1"># curl -H "X-First-Name: Joe" <a href="http://192.168.0.1/">http://192.168.0.1/</a> 
+<p class="level1">&#35; curl -H "X-First-Name: Joe" <a href="http://192.168.0.1/">http://192.168.0.1/</a> 
+<p class="level1"><span Class="bold">WARNING</span>: headers set with this option will be set in all requests - even after redirects are followed, like when told with <a class="bold" href="#-L">-L, --location</a>. This can lead to the header being sent to other hosts than the original host, so sensitive headers should be used with caution combined with following redirects. 
 <p class="level1">This option can be used multiple times to add/replace/remove multiple headers. 
 <p class="level0"><a name="--hostpubmd5"></a><span class="nroffip">--hostpubmd5 &lt;md5&gt;</span> 
 <p class="level1">(SCP/SFTP) Pass a string containing 32 hexadecimal digits. The string should be the 128 bit MD5 checksum of the remote host's public key, curl will refuse the connection with the host unless the md5sums match. (Added in 7.17.1) 
@@ -340,25 +358,26 @@ p.roffit {
 <p class="level0"><a name="-K"></a><span class="nroffip">-K, --config &lt;config file&gt;</span> 
 <p class="level1">Specify which config file to read curl arguments from. The config file is a text file in which command line arguments can be written which then will be used as if they were written on the actual command line. 
 <p class="level1">Options and their parameters must be specified on the same config file line, separated by whitespace, colon, or the equals sign. Long option names can optionally be given in the config file without the initial double dashes and if so, the colon or equals characters can be used as separators. If the option is specified with one or two dashes, there can be no colon or equals character between the option and its parameter. 
-<p class="level1">If the parameter is to contain whitespace, the parameter must be enclosed within quotes. Within double quotes, the following escape sequences are available: \\, \", \t, \n, \r and \v. A backslash preceding any other letter is ignored. If the first column of a config line is a '#' character, the rest of the line will be treated as a comment. Only write one option per physical line in the config file. 
+<p class="level1">If the parameter is to contain whitespace, the parameter must be enclosed within quotes. Within double quotes, the following escape sequences are available: \\, \", \t, \n, \r and \v. A backslash preceding any other letter is ignored. If the first column of a config line is a '&#35;' character, the rest of the line will be treated as a comment. Only write one option per physical line in the config file. 
 <p class="level1">Specify the filename to -K, --config as '-' to make curl read the file from stdin. 
 <p class="level1">Note that to be able to specify a URL in the config file, you need to specify it using the <a class="emphasis" href="#--url">--url</a> option, and not by simply writing the URL on its own line. So, it could look similar to this: 
 <p class="level1">url = "<a href="http://curl.haxx.se/docs/">http://curl.haxx.se/docs/</a>" 
 <p class="level1">When curl is invoked, it always (unless <a class="emphasis" href="#-q">-q</a> is used) checks for a default config file and uses it if found. The default config file is checked for in the following places in this order: 
 <p class="level1">1) curl tries to find the "home dir": It first checks for the CURL_HOME and then the HOME environment variables. Failing that, it uses getpwuid() on Unix-like systems (which returns the home dir given the current user in your system). On Windows, it then checks for the APPDATA variable, or as a last resort the '%USERPROFILE%\Application Data'. 
 <p class="level1">2) On windows, if there is no _curlrc file in the home dir, it checks for one in the same dir the curl executable is placed. On Unix-like systems, it will simply try to load .curlrc from the determined home dir. 
-<p class="level1"><pre>
-<p class="level1"># --- Example file ---
- # this is a comment
- url = "curl.haxx.se"
- output = "curlhere.html"
- user-agent = "superagent/1.0"
- <p class="level1"># and fetch another URL too
- url = "curl.haxx.se/docs/manpage.html"
- -O
- referer = "<a href="http://nowhereatall.com/">http://nowhereatall.com/</a>"
- # --- End of example file ---
- </pre>
+<p class="level1"><pre class="level1">
+&#35; --- Example file ---
+&#35; this is a comment
+url = "curl.haxx.se"
+output = "curlhere.html"
+user-agent = "superagent/1.0"
+&nbsp;
+&#35; and fetch another URL too
+url = "curl.haxx.se/docs/manpage.html"
+-O
+referer = "<a href="http://nowhereatall.com/">http://nowhereatall.com/</a>"
+&#35; --- End of example file ---
+</pre>
 
 <p class="level1">
 <p class="level1">This option can be used multiple times to load multiple config files. 
@@ -430,7 +449,7 @@ p.roffit {
 <p class="level1">Please note that if FILE protocol is disabled, there is no way to use a local Metalink file at the time of this writing. Also note that if <a class="emphasis" href="#--metalink">--metalink</a> and <span Class="emphasis">--include</span> are used together, <span Class="emphasis">--include</span> will be ignored. This is because including headers in the response will break Metalink parser and if the headers are included in the file described in Metalink file, hash check will fail. 
 <p class="level1">(Added in 7.27.0, if built against the libmetalink library.) 
 <p class="level0"><a name="-n"></a><span class="nroffip">-n, --netrc</span> 
-<p class="level1">Makes curl scan the <span Class="emphasis">.netrc</span> (<span Class="emphasis">_netrc</span> on Windows) file in the user's home directory for login name and password. This is typically used for FTP on Unix. If used with HTTP, curl will enable user authentication. See <span Class="manpage">netrc(4)</span> or <span Class="manpage">ftp(1)</span> for details on the file format. Curl will not complain if that file doesn't have the right permissions (it should not be either world- or group-readable). The environment variable "HOME" is used to find the home directory. 
+<p class="level1">Makes curl scan the <span Class="emphasis">.netrc</span> (<span Class="emphasis">_netrc</span> on Windows) file in the user's home directory for login name and password. This is typically used for FTP on Unix. If used with HTTP, curl will enable user authentication. See <span Class="emphasis">netrc(5)</span> <span Class="emphasis">ftp(1)</span> for details on the file format. Curl will not complain if that file doesn't have the right permissions (it should not be either world- or group-readable). The environment variable "HOME" is used to find the home directory. 
 <p class="level1">A quick and very simple example of how to setup a <span Class="emphasis">.netrc</span> to allow curl to FTP to the machine host.domain.com with user name 'myself' and password 'secret' should look similar to: 
 <p class="level1"><span Class="bold">machine host.domain.com login myself password secret</span> 
 <p class="level0"><a name="-N"></a><span class="nroffip">-N, --no-buffer</span> 
@@ -463,10 +482,10 @@ p.roffit {
 <p class="level1">This option requires a library built with SSL support. Use <a class="emphasis" href="#-V">-V, --version</a> to see if your curl supports NTLM. 
 <p class="level1">If this option is used several times, only the first one is used. 
 <p class="level0"><a name="-o"></a><span class="nroffip">-o, --output &lt;file&gt;</span> 
-<p class="level1">Write output to &lt;file&gt; instead of stdout. If you are using {} or [] to fetch multiple documents, you can use '#' followed by a number in the &lt;file&gt; specifier. That variable will be replaced with the current string for the URL being fetched. Like in: 
-<p class="level1">&nbsp; curl http://{one,two}.site.com -o "file_#1.txt" 
+<p class="level1">Write output to &lt;file&gt; instead of stdout. If you are using {} or [] to fetch multiple documents, you can use '&#35;' followed by a number in the &lt;file&gt; specifier. That variable will be replaced with the current string for the URL being fetched. Like in: 
+<p class="level1">&nbsp; curl http://{one,two}.site.com -o "file_&#35;1.txt" 
 <p class="level1">or use several variables like: 
-<p class="level1">&nbsp; curl http://{site,host}.host[1-5].com -o "#1_#2" 
+<p class="level1">&nbsp; curl http://{site,host}.host[1-5].com -o "&#35;1_&#35;2" 
 <p class="level1">You may use this option as many times as the number of URLs you have. 
 <p class="level1">See also the <a class="emphasis" href="#--create-dirs">--create-dirs</a> option to create the local directories dynamically. Specifying the output as '-' (a single dash) will force the output to be done to stdout. 
 <p class="level0"><a name="-O"></a><span class="nroffip">-O, --remote-name</span> 
@@ -499,11 +518,15 @@ p.roffit {
 <p class="level1"><a name="-"></a><span class="nroffip">-</span> 
 <p class="level2">make curl pick the same IP address that is already used for the control connection 
 <p class="level1">
+<p class="level0"><a name=""></a><span class="nroffip"></span> 
 <p class="level1">If this option is used several times, the last one will be used. Disable the use of PORT with <a class="emphasis" href="#--ftp-pasv">--ftp-pasv</a>. Disable the attempt to use the EPRT command instead of PORT by using <a class="emphasis" href="#--disable-eprt">--disable-eprt</a>. EPRT is really PORT++. 
 <p class="level1">Starting in 7.19.5, you can append ":[start]-[end]" to the right of the address, to tell curl what TCP port range to use. That means you specify a port range, from a lower to a higher number. A single number works as well, but do note that it increases the risk of failure since the port may not be available. 
 <p class="level0"><a name="--pass"></a><span class="nroffip">--pass &lt;phrase&gt;</span> 
 <p class="level1">(SSL/SSH) Passphrase for the private key 
 <p class="level1">If this option is used several times, the last one will be used. 
+<p class="level0"><a name="--path-as-is"></a><span class="nroffip">--path-as-is</span> 
+<p class="level1">Tell curl to not handle sequences of /../ or /./ in the given URL path. Normally curl will squash or merge them according to standards but with this option set you tell it not to do that. 
+<p class="level1">(Added in 7.42.0) 
 <p class="level0"><a name="--post301"></a><span class="nroffip">--post301</span> 
 <p class="level1">(HTTP) Tells curl to respect <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a>/10.3.2 and not convert POST requests into GET requests when following a 301 redirection. The non-RFC behaviour is ubiquitous in web browsers, so curl does the conversion by default to maintain consistency. However, a server may require a POST to remain a POST after such a redirection. This option is meaningful only when using <a class="emphasis" href="#-L">-L, --location</a> (Added in 7.17.1) 
 <p class="level0"><a name="--post302"></a><span class="nroffip">--post302</span> 
@@ -541,6 +564,9 @@ p.roffit {
 <p class="level1">Tells curl to use HTTP Negotiate (SPNEGO) authentication when communicating with the given proxy. Use <a class="emphasis" href="#--negotiate">--negotiate</a> for enabling HTTP Negotiate (SPNEGO) with a remote host. (Added in 7.17.1) 
 <p class="level0"><a name="--proxy-ntlm"></a><span class="nroffip">--proxy-ntlm</span> 
 <p class="level1">Tells curl to use HTTP NTLM authentication when communicating with the given proxy. Use <a class="emphasis" href="#--ntlm">--ntlm</a> for enabling NTLM with a remote host. 
+<p class="level0"><a name="--proxy-service-name"></a><span class="nroffip">--proxy-service-name &lt;servicename&gt;</span> 
+<p class="level1">This option allows you to change the service name for proxy negotiation. 
+<p class="level1">Examples: --proxy-negotiate proxy-name <a class="emphasis" href="#--proxy-service-name">--proxy-service-name</a> sockd would use sockd/proxy-name.  (Added in 7.43.0). 
 <p class="level0"><a name="--proxy10"></a><span class="nroffip">--proxy1.0 &lt;proxyhost[:port]&gt;</span> 
 <p class="level1">Use the specified HTTP 1.0 proxy. If the port number is not specified, it is assumed at port 1080. 
 <p class="level1">The only difference between this and the HTTP proxy option (<a class="emphasis" href="#-x">-x, --proxy</a>), is that attempts to use CONNECT through the proxy will specify an HTTP 1.0 protocol instead of the default HTTP 1.1. 
@@ -586,6 +612,7 @@ p.roffit {
 <p class="level2"><span Class="bold">500-700,600-799</span> specifies 300 bytes from offset 500(H) 
 <p class="level2"><span Class="bold">100-199,500-599</span> specifies two separate 100-byte ranges(*)(H) 
 <p class="level1">
+<p class="level0"><a name=""></a><span class="nroffip"></span> 
 <p class="level1">(*) = NOTE that this will cause the server to reply with a multipart response! 
 <p class="level1">Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the 'start-stop' range syntax. If a non-digit character is given in the range, the server's response will be unspecified, depending on the server's configuration. 
 <p class="level1">You should also be aware that many HTTP/1.1 servers do not have this feature enabled, so that when you attempt to get a range, you'll instead get the whole document. 
@@ -617,6 +644,9 @@ p.roffit {
 <p class="level1">Silent or quiet mode. Don't show progress meter or error messages.  Makes Curl mute. It will still output the data you ask for, potentially even to the terminal/stdout unless you redirect it. 
 <p class="level0"><a name="--sasl-ir"></a><span class="nroffip">--sasl-ir</span> 
 <p class="level1">Enable initial response in SASL authentication. (Added in 7.31.0) 
+<p class="level0"><a name="--service-name"></a><span class="nroffip">--service-name &lt;servicename&gt;</span> 
+<p class="level1">This option allows you to change the service name for SPNEGO. 
+<p class="level1">Examples: --negotiate <a class="emphasis" href="#--service-name">--service-name</a> sockd would use sockd/server-name.  (Added in 7.43.0). 
 <p class="level0"><a name="-S"></a><span class="nroffip">-S, --show-error</span> 
 <p class="level1">When used with <a class="emphasis" href="#-s">-s</a> it makes curl show an error message if it fails. 
 <p class="level0"><a name="--ssl"></a><span class="nroffip">--ssl</span> 
@@ -627,6 +657,8 @@ p.roffit {
 <p class="level1">This option was formerly known as <span Class="emphasis">--ftp-ssl-reqd</span> (added in 7.15.5). That option name can still be used but will be removed in a future version. 
 <p class="level0"><a name="--ssl-allow-beast"></a><span class="nroffip">--ssl-allow-beast</span> 
 <p class="level1">(SSL) This option tells curl to not work around a security flaw in the SSL3 and TLS1.0 protocols known as BEAST.  If this option isn't used, the SSL layer may use workarounds known to cause interoperability problems with some older SSL implementations. WARNING: this option loosens the SSL security, and by using this flag you ask for exactly that.  (Added in 7.25.0) 
+<p class="level0"><a name="--ssl-no-revoke"></a><span class="nroffip">--ssl-no-revoke</span> 
+<p class="level1">(WinSSL) This option tells curl to disable certificate revocation checks. WARNING: this option loosens the SSL security, and by using this flag you ask for exactly that.  (Added in 7.44.0) 
 <p class="level0"><a name="--socks4"></a><span class="nroffip">--socks4 &lt;host[:port]&gt;</span> 
 <p class="level1">Use the specified SOCKS4 proxy. If the port number is not specified, it is assumed at port 1080. (Added in 7.15.2) 
 <p class="level1">This option overrides any previous use of <a class="emphasis" href="#-x">-x, --proxy</a>, as they are mutually exclusive. 
@@ -706,7 +738,7 @@ p.roffit {
 <p class="level1">Specify the user name and password to use for server authentication. Overrides <a class="emphasis" href="#-n">-n, --netrc</a> and <a class="emphasis" href="#--netrc-optional">--netrc-optional</a>. 
 <p class="level1">If you simply specify the user name, curl will prompt for a password. 
 <p class="level1">The user name and passwords are split up on the first colon, which makes it impossible to use a colon in the user name with this option. The password can, still. 
-<p class="level1">When using Kerberos V5 with a Windows based server you should include the Windows domain name in the user name, in order for the server to succesfully obtain a Kerberos Ticket. If you don't then the initial authentication handshake may fail. 
+<p class="level1">When using Kerberos V5 with a Windows based server you should include the Windows domain name in the user name, in order for the server to successfully obtain a Kerberos Ticket. If you don't then the initial authentication handshake may fail. 
 <p class="level1">When using NTLM, the user name can be specified simply as the user name, without the domain, if there is a single domain and forest in your setup for example. 
 <p class="level1">To specify the domain name use either Down-Level Logon Name or UPN (User Principal Name) formats. For example, EXAMPLE\user and user@example.com respectively. 
 <p class="level1">If you use a Windows SSPI-enabled curl binary and perform Kerberos V5, Negotiate, NTLM or Digest authentication then you can tell curl to select the user name and password from your environment by specifying a single colon with this option: "-u :". 
@@ -758,6 +790,7 @@ p.roffit {
 <p class="level2"><span Class="bold">time_total</span> The total time, in seconds, that the full operation lasted. The time will be displayed with millisecond resolution. 
 <p class="level2"><span Class="bold">url_effective</span> The URL that was fetched last. This is most meaningful if you've told curl to follow location: headers. 
 <p class="level1">
+<p class="level0"><a name=""></a><span class="nroffip"></span> 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-x"></a><span class="nroffip">-x, --proxy &lt;[protocol://][user:password@]proxyhost[:port]&gt;</span> 
 <p class="level1">Use the specified proxy. 
@@ -769,9 +802,10 @@ p.roffit {
 <p class="level1">The proxy host can be specified the exact same way as the proxy environment variables, including the protocol prefix (http://) and the embedded user + password. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-X"></a><span class="nroffip">-X, --request &lt;command&gt;</span> 
-<p class="level1">(HTTP) Specifies a custom request method to use when communicating with the HTTP server.  The specified request will be used instead of the method otherwise used (which defaults to GET). Read the HTTP 1.1 specification for details and explanations. Common additional HTTP requests include PUT and DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and more. 
+<p class="level1">(HTTP) Specifies a custom request method to use when communicating with the HTTP server.  The specified request method will be used instead of the method otherwise used (which defaults to GET). Read the HTTP 1.1 specification for details and explanations. Common additional HTTP requests include PUT and DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and more. 
 <p class="level1">Normally you don't need this option. All sorts of GET, HEAD, POST and PUT requests are rather invoked by using dedicated command line options. 
 <p class="level1">This option only changes the actual word used in the HTTP request, it does not alter the way curl behaves. So for example if you want to make a proper HEAD request, using -X HEAD will not suffice. You need to use the <a class="emphasis" href="#-I">-I, --head</a> option. 
+<p class="level1">The method string you set with -X will be used for all requests, which if you for example use <a class="bold" href="#-L">-L, --location</a> may cause unintended side-effects when curl doesn't change request method according to the HTTP 30x response codes - and similar. 
 <p class="level1">(FTP) Specifies a custom FTP command to use instead of LIST when doing file lists with FTP. 
 <p class="level1">(POP3) Specifies a custom POP3 command to use instead of LIST or RETR. (Added in 7.26.0) 
 <p class="level1">(IMAP) Specifies a custom IMAP command to use instead of LIST. (Added in 7.30.0) 
index 630cfdb..5e838d8 100644 (file)
Binary files a/docs/curl.pdf and b/docs/curl.pdf differ
index 5d95a8a..f43dc75 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/* Example application source code using the multi interface to download many
- * files, but with a capped maximum amount of simultaneous transfers.
- *
+/* <DESC>
+ * Source code using the multi interface to download many
+ * files, with a capped maximum amount of simultaneous transfers.
+ * </DESC>
  * Written by Michael Wallner
  */
 
index 554c405..0b8c786 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -43,7 +43,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 ###########################################################################
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -122,9 +132,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 @USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
-       $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs \
-       $(top_srcdir)/depcomp README
 check_PROGRAMS = 10-at-a-time$(EXEEXT) anyauthput$(EXEEXT) \
        cookie_interface$(EXEEXT) debug$(EXEEXT) fileupload$(EXEEXT) \
        fopen$(EXEEXT) ftpget$(EXEEXT) ftpgetresp$(EXEEXT) \
@@ -149,7 +156,9 @@ check_PROGRAMS = 10-at-a-time$(EXEEXT) anyauthput$(EXEEXT) \
        imap-search$(EXEEXT) imap-create$(EXEEXT) imap-delete$(EXEEXT) \
        imap-copy$(EXEEXT) imap-noop$(EXEEXT) imap-ssl$(EXEEXT) \
        imap-tls$(EXEEXT) imap-multi$(EXEEXT) url2file$(EXEEXT) \
-       sftpget$(EXEEXT) ftpsget$(EXEEXT) postinmemory$(EXEEXT)
+       sftpget$(EXEEXT) ftpsget$(EXEEXT) postinmemory$(EXEEXT) \
+       http2-download$(EXEEXT) http2-upload$(EXEEXT) \
+       http2-serverpush$(EXEEXT)
 subdir = docs/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
@@ -171,7 +180,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -304,6 +314,27 @@ http_post_LDADD = $(LDADD)
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@http_post_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+http2_download_SOURCES = http2-download.c
+http2_download_OBJECTS = http2-download.$(OBJEXT)
+http2_download_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@http2_download_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@http2_download_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+http2_serverpush_SOURCES = http2-serverpush.c
+http2_serverpush_OBJECTS = http2-serverpush.$(OBJEXT)
+http2_serverpush_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@http2_serverpush_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@http2_serverpush_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+http2_upload_SOURCES = http2-upload.c
+http2_upload_OBJECTS = http2-upload.$(OBJEXT)
+http2_upload_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@http2_upload_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@http2_upload_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 httpcustomheader_SOURCES = httpcustomheader.c
 httpcustomheader_OBJECTS = httpcustomheader.$(OBJEXT)
 httpcustomheader_LDADD = $(LDADD)
@@ -703,6 +734,7 @@ SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \
        cookie_interface.c debug.c externalsocket.c fileupload.c \
        fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
        ftpsget.c ftpupload.c getinfo.c getinmemory.c http-post.c \
+       http2-download.c http2-serverpush.c http2-upload.c \
        httpcustomheader.c httpput.c https.c imap-append.c imap-copy.c \
        imap-create.c imap-delete.c imap-examine.c imap-fetch.c \
        imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c \
@@ -719,6 +751,7 @@ DIST_SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \
        cookie_interface.c debug.c externalsocket.c fileupload.c \
        fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
        ftpsget.c ftpupload.c getinfo.c getinmemory.c http-post.c \
+       http2-download.c http2-serverpush.c http2-upload.c \
        httpcustomheader.c httpput.c https.c imap-append.c imap-copy.c \
        imap-create.c imap-delete.c imap-examine.c imap-fetch.c \
        imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c \
@@ -755,6 +788,8 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
+       $(top_srcdir)/depcomp README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -813,7 +848,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -868,6 +903,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -884,7 +920,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -991,7 +1026,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/examples/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign docs/examples/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -1000,7 +1034,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -1092,6 +1126,18 @@ http-post$(EXEEXT): $(http_post_OBJECTS) $(http_post_DEPENDENCIES) $(EXTRA_http_
        @rm -f http-post$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(http_post_OBJECTS) $(http_post_LDADD) $(LIBS)
 
+http2-download$(EXEEXT): $(http2_download_OBJECTS) $(http2_download_DEPENDENCIES) $(EXTRA_http2_download_DEPENDENCIES) 
+       @rm -f http2-download$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(http2_download_OBJECTS) $(http2_download_LDADD) $(LIBS)
+
+http2-serverpush$(EXEEXT): $(http2_serverpush_OBJECTS) $(http2_serverpush_DEPENDENCIES) $(EXTRA_http2_serverpush_DEPENDENCIES) 
+       @rm -f http2-serverpush$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(http2_serverpush_OBJECTS) $(http2_serverpush_LDADD) $(LIBS)
+
+http2-upload$(EXEEXT): $(http2_upload_OBJECTS) $(http2_upload_DEPENDENCIES) $(EXTRA_http2_upload_DEPENDENCIES) 
+       @rm -f http2-upload$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(http2_upload_OBJECTS) $(http2_upload_LDADD) $(LIBS)
+
 httpcustomheader$(EXEEXT): $(httpcustomheader_OBJECTS) $(httpcustomheader_DEPENDENCIES) $(EXTRA_httpcustomheader_DEPENDENCIES) 
        @rm -f httpcustomheader$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(httpcustomheader_OBJECTS) $(httpcustomheader_LDADD) $(LIBS)
@@ -1324,6 +1370,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinfo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinmemory.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-post.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-download.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-serverpush.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-upload.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpcustomheader.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpput.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/https.Po@am__quote@
@@ -1611,6 +1660,8 @@ uninstall-am:
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Makefile.inc provides the check_PROGRAMS and COMPLICATED_EXAMPLES defines
 
index 6c8df8e..b216130 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -31,7 +31,8 @@ check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \
   pop3-dele pop3-top pop3-stat pop3-noop pop3-ssl pop3-tls pop3-multi      \
   imap-list imap-lsub imap-fetch imap-store imap-append imap-examine       \
   imap-search imap-create imap-delete imap-copy imap-noop imap-ssl         \
-  imap-tls imap-multi url2file sftpget ftpsget postinmemory
+  imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \
+  http2-upload http2-serverpush
 
 # These examples require external dependencies that may not be commonly
 # available on POSIX systems, so don't bother attempting to compile them here.
index f607013..7be640c 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -21,7 +21,7 @@
 ###########################################################################
 #
 ## Makefile for building curl examples with MingW (GCC-3.2 or later)
-## and optionally OpenSSL (0.9.8), libssh2 (1.3), zlib (1.2.5), librtmp (2.3)
+## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4)
 ##
 ## Usage:   mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
 ## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-spi-winidn
@@ -38,23 +38,23 @@ ZLIB_PATH = ../../../zlib-1.2.8
 endif
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../../openssl-0.9.8zc
+OPENSSL_PATH = ../../../openssl-1.0.2a
 endif
 # Edit the path below to point to the base of your LibSSH2 package.
 ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../../libssh2-1.4.3
+LIBSSH2_PATH = ../../../libssh2-1.5.0
 endif
 # Edit the path below to point to the base of your librtmp package.
 ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../../librtmp-2.3
+LIBRTMP_PATH = ../../../librtmp-2.4
 endif
 # Edit the path below to point to the base of your libidn package.
 ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../../libidn-1.18
+LIBIDN_PATH = ../../../libidn-1.32
 endif
 # Edit the path below to point to the base of your MS IDN package.
 # Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
-# http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ad6158d7-ddba-416a-9109-07607425a815
+# https://www.microsoft.com/en-us/download/details.aspx?id=734
 ifndef WINIDN_PATH
 WINIDN_PATH = ../../../Microsoft IDN Mitigation APIs
 endif
@@ -62,6 +62,10 @@ endif
 ifndef LDAP_SDK
 LDAP_SDK = c:/novell/ndk/cldapsdk/win32
 endif
+# Edit the path below to point to the base of your nghttp2 package.
+ifndef NGHTTP2_PATH
+NGHTTP2_PATH = ../../../nghttp2-1.0.0
+endif
 
 PROOT = ../..
 
@@ -72,14 +76,24 @@ endif
 
 # Edit the var below to set to your architecture or set environment var.
 ifndef ARCH
-ARCH = w32
+ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
+ARCH    = w64
+else
+ARCH    = w32
+endif
 endif
 
 CC     = $(CROSSPREFIX)gcc
 CFLAGS = -g -O2 -Wall
 CFLAGS += -fno-strict-aliasing
 ifeq ($(ARCH),w64)
-CFLAGS += -D_AMD64_
+CFLAGS += -m64 -D_AMD64_
+LDFLAGS += -m64
+RCFLAGS += -F pe-x86-64
+else
+CFLAGS += -m32
+LDFLAGS += -m32
+RCFLAGS += -F pe-i386
 endif
 # comment LDFLAGS below to keep debug info
 LDFLAGS        = -s
@@ -158,9 +172,12 @@ ifeq ($(findstring -metalink,$(CFG)),-metalink)
 METALINK = 1
 endif
 ifeq ($(findstring -winssl,$(CFG)),-winssl)
-SCHANNEL = 1
+WINSSL = 1
 SSPI = 1
 endif
+ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
+NGHTTP2 = 1
+endif
 
 INCLUDES = -I. -I$(PROOT) -I$(PROOT)/include -I$(PROOT)/lib
 
@@ -184,6 +201,10 @@ ifdef RTMP
   CFLAGS += -DUSE_LIBRTMP
   curl_LDADD += -L"$(LIBRTMP_PATH)/librtmp" -lrtmp -lwinmm
 endif
+ifdef NGHTTP2
+  CFLAGS += -DUSE_NGHTTP2
+  curl_LDADD += -L"$(NGHTTP2_PATH)/lib" -lnghttp2
+endif
 ifdef SSH2
   CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
   curl_LDADD += -L"$(LIBSSH2_PATH)/win32" -lssh2
@@ -204,7 +225,7 @@ ifdef SSL
   ifndef DYN
     OPENSSL_LIBS += -lgdi32 -lcrypt32
   endif
-  CFLAGS += -DUSE_SSLEAY
+  CFLAGS += -DUSE_OPENSSL
   curl_LDADD += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
 endif
 ifdef ZLIB
@@ -223,7 +244,7 @@ endif
 endif
 ifdef SSPI
   CFLAGS += -DUSE_WINDOWS_SSPI
-  ifdef SCHANNEL
+  ifdef WINSSL
     CFLAGS += -DUSE_SCHANNEL
   endif
 endif
index 3fd6b3e..2d85e73 100644 (file)
@@ -19,12 +19,12 @@ endif
 
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../../openssl-0.9.8zc
+OPENSSL_PATH = ../../../openssl-1.0.2a
 endif
 
 # Edit the path below to point to the base of your LibSSH2 package.
 ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../../libssh2-1.4.3
+LIBSSH2_PATH = ../../../libssh2-1.5.0
 endif
 
 # Edit the path below to point to the base of your axTLS package.
@@ -34,12 +34,12 @@ endif
 
 # Edit the path below to point to the base of your libidn package.
 ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../../libidn-1.18
+LIBIDN_PATH = ../../../libidn-1.32
 endif
 
 # Edit the path below to point to the base of your librtmp package.
 ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../../librtmp-2.3
+LIBRTMP_PATH = ../../../librtmp-2.4
 endif
 
 # Edit the path below to point to the base of your fbopenssl package.
index b89dca2..2962645 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * HTTP PUT upload with authentiction using "any" method. libcurl picks the
+ * one the server supports/wants.
+ * </DESC>
+ */
 #include <stdio.h>
 #include <fcntl.h>
 #ifdef WIN32
index eb5cd03..ff41348 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  ***************************************************************************/
 
+/* <DESC>
+ * demonstrate the use of multi socket interface with boost::asio
+ * </DESC>
+ */
 /*
- * file: asiohiper.cpp
- * Example program to demonstrate the use of multi socket interface
- * with boost::asio
- *
  * This program is in c++ and uses boost::asio instead of libevent/libev.
  * Requires boost::asio, boost::bind and boost::system
  *
index 30a5153..67fd382 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/* Example using a "in core" PEM certificate to retrieve a https page.
- * Written by Theo Borm
+/* <DESC>
+ * CA cert in memory with OpenSSL to get a HTTPS page.
+ * </DESC>
  */
 
-/* on a netBSD system with OPENSSL& LIBCURL installed from
- * pkgsrc (using default paths) this program can be compiled using:
- * gcc -I/usr/pkg/include -L/usr/pkg/lib -lcurl -Wl,-R/usr/pkg/lib -lssl
- * -lcrypto -lz -o curlcacerttest curlcacerttest.c
- * on other operating systems you may want to change paths to headers
- * and libraries
-*/
 #include <openssl/ssl.h>
 #include <curl/curl.h>
 #include <stdio.h>
index ac0109b..7ec70ee 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * Extract lots of TLS certificate info.
+ * </DESC>
+ */
 #include <stdio.h>
 
 #include <curl/curl.h>
index 31949b8..bae8ea6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * Show transfer timing info after download completes.
+ * </DESC>
+ */
 /* Example source code to show how the callback function can be used to
  * download data into a chunk of memory instead of storing it in a file.
  * After successful download we use curl_easy_getinfo() calls to get the
index 2e7c66d..b67051c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/* This example shows usage of simple cookie interface. */
+/* <DESC>
+ * Import and export cookies with COOKIELIST.
+ * </DESC>
+ */
 
 #include <stdio.h>
 #include <string.h>
@@ -96,7 +99,12 @@ main(void)
       return 1;
     }
 
-    /* HTTP-header style cookie */
+    /* HTTP-header style cookie. If you use the Set-Cookie format and don't
+    specify a domain then the cookie is sent for any domain and will not be
+    modified, likely not what you intended. Starting in 7.43.0 any-domain
+    cookies will not be exported either. For more information refer to the
+    CURLOPT_COOKIELIST documentation.
+    */
     snprintf(nline, sizeof(nline),
       "Set-Cookie: OLD_PREF=3d141414bf4209321; "
       "expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com");
index 8cb9914..df6b419 100644 (file)
@@ -5,9 +5,12 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
+ *  Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft
+ */
+/* <DESC>
+ * use the libcurl in a gtk-threaded application
+ * </DESC>
  */
-/* Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft */
-/* an attempt to use the curl library in concert with a gtk-threaded application */
 
 #include <stdio.h>
 #include <gtk/gtk.h>
index 89d5f40..9bfb0cb 100644 (file)
@@ -9,7 +9,10 @@
   certificate presented during ssl session establishment.
 
 */
-
+/* <DESC>
+ * demonstrates use of SSL context callback, requires OpenSSL
+ * </DESC>
+ */
 
 /*
  * Copyright (c) 2003 The OpenEvidence Project.  All rights reserved.
@@ -490,7 +493,7 @@ int main(int argc, char **argv) {
         BIO_printf(p.errorbio,"the response has a correct mimetype : %s\n",
                    response);
       else
-        BIO_printf(p.errorbio,"the reponse doesn\'t has an acceptable "
+        BIO_printf(p.errorbio,"the response doesn\'t have an acceptable "
                    "mime type, it is %s instead of %s\n",
                    response,mimetypeaccept);
   }
index 36dd80d..6baab44 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * Show how CURLOPT_DEBUGFUNCTION can be used.
+ * </DESC>
+ */
 #include <stdio.h>
 #include <curl/curl.h>
 
index e03801d..5a60c8d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * multi socket interface together with libev
+ * </DESC>
+ */
 /* Example application source code using the multi socket interface to
  * download many files at once.
  *
index 5486d12..cae5ccc 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/*
- * This is an example demonstrating how an application can pass in a custom
+/* <DESC>
+ * An example demonstrating how an application can pass in a custom
  * socket to libcurl to use. This example also handles the connect itself.
+ * </DESC>
  */
 #include <stdio.h>
 #include <string.h>
index 665eca0..b695a2a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * Upload to a file:// URL
+ * </DESC>
+ */
 #include <stdio.h>
 #include <curl/curl.h>
 #include <sys/stat.h>
index 3d2a817..de9ce19 100644 (file)
  *
  * This example requires libcurl 7.9.7 or later.
  */
+/* <DESC>
+ * implements an fopen() abstraction allowing reading from URLs
+ * </DESC>
+ */
 
 #include <stdio.h>
 #include <string.h>
@@ -108,7 +112,7 @@ static size_t write_callback(char *buffer,
       size=rembuff;
     }
     else {
-      /* realloc suceeded increase buffer size*/
+      /* realloc succeeded increase buffer size*/
       url->buffer_len+=size - rembuff;
       url->buffer=newbuff;
     }
@@ -131,7 +135,7 @@ static int fill_buffer(URL_FILE *file, size_t want)
   CURLMcode mc; /* curl_multi_fdset() return code */
 
   /* only attempt to fill buffer if transactions still running and buffer
-   * doesnt exceed required size already
+   * doesn't exceed required size already
    */
   if((!file->still_running) || (file->buffer_pos > want))
     return 0;
@@ -205,14 +209,12 @@ static int fill_buffer(URL_FILE *file, size_t want)
 }
 
 /* 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, size_t want)
 {
   /* sort out buffer */
   if((file->buffer_pos - want) <=0) {
     /* ditch buffer - write will recreate */
-    if(file->buffer)
-      free(file->buffer);
-
+    free(file->buffer);
     file->buffer=NULL;
     file->buffer_pos=0;
     file->buffer_len=0;
@@ -231,7 +233,7 @@ static int use_buffer(URL_FILE *file,int want)
 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 */
+     basically use the real fopen() for standard files */
 
   URL_FILE *file;
   (void)operation;
@@ -302,9 +304,7 @@ int url_fclose(URL_FILE *file)
     break;
   }
 
-  if(file->buffer)
-    free(file->buffer);/* free any allocated buffer space */
-
+  free(file->buffer);/* free any allocated buffer space */
   free(file);
 
   return ret;
@@ -379,7 +379,7 @@ char *url_fgets(char *ptr, size_t size, URL_FILE *file)
 
   switch(file->type) {
   case CFTYPE_FILE:
-    ptr = fgets(ptr,size,file->handle.file);
+    ptr = fgets(ptr, (int)size, file->handle.file);
     break;
 
   case CFTYPE_CURL:
@@ -435,9 +435,7 @@ void url_rewind(URL_FILE *file)
     curl_multi_add_handle(multi_handle, file->handle.curl);
 
     /* ditch buffer - write will recreate - resets stream pos*/
-    if(file->buffer)
-      free(file->buffer);
-
+    free(file->buffer);
     file->buffer=NULL;
     file->buffer_pos=0;
     file->buffer_len=0;
@@ -457,7 +455,7 @@ int main(int argc, char *argv[])
   URL_FILE *handle;
   FILE *outf;
 
-  int nread;
+  size_t nread;
   char buffer[256];
   const char *url;
 
@@ -505,7 +503,7 @@ int main(int argc, char *argv[])
   }
 
   do {
-    nread = url_fread(buffer, 1,sizeof(buffer), handle);
+    nread = url_fread(buffer, 1, sizeof(buffer), handle);
     fwrite(buffer,1,nread,outf);
   } while(nread);
 
index d175ddf..ae0855c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * FTP wildcard pattern matching
+ * </DESC>
+ */
 #include <curl/curl.h>
 #include <stdio.h>
 
index bcb42bb..8ec7d73 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include <curl/curl.h>
 
-/*
- * This is an example showing how to get a single file from an FTP server.
- * It delays the actual destination file creation until the first write
- * callback so that it won't create an empty file in case the remote file
- * doesn't exist or something else fails.
+/* <DESC>
+ * Get a single file from an FTP server.
+ * </DESC>
  */
 
 struct FtpFile {
@@ -53,7 +51,7 @@ int main(void)
   CURL *curl;
   CURLcode res;
   struct FtpFile ftpfile={
-    "curl.tar.gz", /* name to store the file as if succesful */
+    "curl.tar.gz", /* name to store the file as if successful */
     NULL
   };
 
index dfdcf78..baea7d8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -24,9 +24,9 @@
 
 #include <curl/curl.h>
 
-/*
- * This is an example showing how to check a single file's size and mtime
- * from an FTP server.
+/* <DESC>
+ * Checks a single file's size and mtime from an FTP server.
+ * </DESC>
  */
 
 static size_t throw_away(void *ptr, size_t size, size_t nmemb, void *data)
index dcb296a..76c512b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include <curl/curl.h>
 
-/*
- * Similar to ftpget.c but this also stores the received response-lines
+/* <DESC>
+ * Similar to ftpget.c but also stores the received response-lines
  * in a separate file using our own callback!
- *
- * This functionality was introduced in libcurl 7.9.3.
+ * </DESC>
  */
-
 static size_t
 write_response(void *ptr, size_t size, size_t nmemb, void *data)
 {
index 0cfe320..2c1fd3e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include <curl/curl.h>
 
-/*
- * This is an example showing how to get a single file from an FTPS server.
- * It delays the actual destination file creation until the first write
- * callback so that it won't create an empty file in case the remote file
- * doesn't exist or something else fails.
+/* <DESC>
+ * Get a single file from an FTPS server.
+ * </DESC>
  */
 
 struct FtpFile {
@@ -55,7 +53,7 @@ int main(void)
   CURL *curl;
   CURLcode res;
   struct FtpFile ftpfile={
-    "yourfile.bin", /* name to store the file as if succesful */
+    "yourfile.bin", /* name to store the file as if successful */
     NULL
   };
 
index e79f8d8..b4fc79f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include <unistd.h>
 #endif
 
-/*
- * This example shows an FTP upload, with a rename of the file just after
- * a successful upload.
- *
- * Example based on source code provided by Erick Nuwendam. Thanks!
+/* <DESC>
+ * Performs an FTP upload and renames the file just after a successful
+ * transfer.
+ * </DESC>
  */
 
 #define LOCAL_FILE      "/tmp/uploadthis.txt"
index 55b8986..1a24f7c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/* Upload to FTP, resuming failed transfers
- *
- * Compile for MinGW like this:
- *  gcc -Wall -pedantic -std=c99 ftpuploadwithresume.c -o ftpuploadresume.exe
- *  -lcurl -lmsvcr70
- *
- * Written by Philip Bock
+/* <DESC>
+ * Upload to FTP, resuming failed transfers.
+ * </DESC>
  */
 
 #include <stdlib.h>
index acbe1e1..7f578df 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * Use getinfo to get content-type after completed transfer.
+ * </DESC>
+ */
 #include <stdio.h>
 #include <curl/curl.h>
 
@@ -27,18 +31,14 @@ int main(void)
   CURL *curl;
   CURLcode res;
 
-  /* http://curl.haxx.se/libcurl/c/curl_easy_init.html */
   curl = curl_easy_init();
   if(curl) {
-    /* http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTURL */
     curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com/");
-    /* http://curl.haxx.se/libcurl/c/curl_easy_perform.html */
     res = curl_easy_perform(curl);
 
     if(CURLE_OK == res) {
       char *ct;
       /* ask for the content-type */
-      /* http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
       res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
 
       if((CURLE_OK == res) && ct)
@@ -46,7 +46,6 @@ int main(void)
     }
 
     /* always cleanup */
-    /* http://curl.haxx.se/libcurl/c/curl_easy_cleanup.html */
     curl_easy_cleanup(curl);
   }
   return 0;
index 1608ec5..2cf201e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/* Example source code to show how the callback function can be used to
- * download data into a chunk of memory instead of storing it in a file.
+/* <DESC>
+ * Shows how the write callback function can be used to download data into a
+ * chunk of memory instead of storing it in a file.
+ * </DESC>
  */
 
 #include <stdio.h>
@@ -34,7 +36,6 @@ struct MemoryStruct {
   size_t size;
 };
 
-
 static size_t
 WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
 {
@@ -55,7 +56,6 @@ WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
   return realsize;
 }
 
-
 int main(void)
 {
   CURL *curl_handle;
@@ -106,8 +106,7 @@ int main(void)
   /* cleanup curl stuff */
   curl_easy_cleanup(curl_handle);
 
-  if(chunk.memory)
-    free(chunk.memory);
+  free(chunk.memory);
 
   /* we're done with libcurl, so clean it up */
   curl_global_cleanup();
index 7571ffa..0621d3e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * multi socket API usage together with with glib2
+ * </DESC>
+ */
 /* Example application source code using the multi socket interface to
  * download many files at once.
  *
index 84035aa..63614f7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * multi socket API usage with libevent 2
+ * </DESC>
+ */
 /* Example application source code using the multi socket interface to
    download many files at once.
 
index c11325d..f2c324e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  ***************************************************************************/
 
+/* <DESC>
+ * Uses the "Streaming HTML parser" to extract the href pieces in a streaming
+ * manner from a downloaded HTML.
+ * </DESC>
+ */
 /*
- * This example uses the "Streaming HTML parser" to extract the href pieces in
- * a streaming manner from a downloaded HTML. Kindly donated by Michał
- * Kowalczyk.
- *
- * The parser is found at
- * http://code.google.com/p/htmlstreamparser/
+ * The HTML parser is found at http://code.google.com/p/htmlstreamparser/
  */
 
 #include <stdio.h>
index a36e331..c1d9508 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/* Download a document and use libtidy to parse the HTML.
- * Written by Jeff Pohlmeyer
- *
+/* <DESC>
+ * Download a document and use libtidy to parse the HTML.
+ * </DESC>
+ */
+/*
  * LibTidy => http://tidy.sourceforge.net
- *
- * gcc -Wall -I/usr/local/include tidycurl.c -lcurl -ltidy -o tidycurl
- *
  */
 
 #include <stdio.h>
index ab89bb6..d91b505 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-// Get a web page, parse it with libxml.
-//
+/* <DESC>
+ * Get a web page, extract the title with libxml.
+ * </DESC>
+ */
 // Written by Lars Nilsson
 //
 // GNU C++ compile command line suggestion (edit paths accordingly):
index f1975b1..a213c39 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * simple HTTP POST using the easy interface
+ * </DESC>
+ */
 #include <stdio.h>
 #include <curl/curl.h>
 
diff --git a/docs/examples/http2-download.c b/docs/examples/http2-download.c
new file mode 100644 (file)
index 0000000..8b06507
--- /dev/null
@@ -0,0 +1,292 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at 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.
+ *
+ ***************************************************************************/
+/* <DESC>
+ * Multiplexed HTTP/2 downloads over a single connection
+ * </DESC>
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+/* somewhat unix-specific */
+#include <sys/time.h>
+#include <unistd.h>
+
+/* curl stuff */
+#include <curl/curl.h>
+
+#ifndef CURLPIPE_MULTIPLEX
+/* This little trick will just make sure that we don't enable pipelining for
+   libcurls old enough to not have this symbol. It is _not_ defined to zero in
+   a recent libcurl header. */
+#define CURLPIPE_MULTIPLEX 0
+#endif
+
+#define NUM_HANDLES 1000
+
+void *curl_hnd[NUM_HANDLES];
+int num_transfers;
+
+/* a handle to number lookup, highly ineffective when we do many
+   transfers... */
+static int hnd2num(CURL *hnd)
+{
+  int i;
+  for(i=0; i< num_transfers; i++) {
+    if(curl_hnd[i] == hnd)
+      return i;
+  }
+  return 0; /* weird, but just a fail-safe */
+}
+
+static
+void dump(const char *text, int num, unsigned char *ptr, size_t size,
+          char nohex)
+{
+  size_t i;
+  size_t c;
+
+  unsigned int width=0x10;
+
+  if(nohex)
+    /* without the hex output, we can fit more on screen */
+    width = 0x40;
+
+  fprintf(stderr, "%d %s, %ld bytes (0x%lx)\n",
+          num, text, (long)size, (long)size);
+
+  for(i=0; i<size; i+= width) {
+
+    fprintf(stderr, "%4.4lx: ", (long)i);
+
+    if(!nohex) {
+      /* hex not disabled, show it */
+      for(c = 0; c < width; c++)
+        if(i+c < size)
+          fprintf(stderr, "%02x ", ptr[i+c]);
+        else
+          fputs("   ", stderr);
+    }
+
+    for(c = 0; (c < width) && (i+c < size); c++) {
+      /* check for 0D0A; if found, skip past and start a new line of output */
+      if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
+        i+=(c+2-width);
+        break;
+      }
+      fprintf(stderr, "%c",
+              (ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
+      /* check again for 0D0A, to avoid an extra \n if it's at width */
+      if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+        i+=(c+3-width);
+        break;
+      }
+    }
+    fputc('\n', stderr); /* newline */
+  }
+}
+
+static
+int my_trace(CURL *handle, curl_infotype type,
+             char *data, size_t size,
+             void *userp)
+{
+  const char *text;
+  int num = hnd2num(handle);
+  (void)handle; /* prevent compiler warning */
+  (void)userp;
+  switch (type) {
+  case CURLINFO_TEXT:
+    fprintf(stderr, "== %d Info: %s", num, data);
+  default: /* in case a new one is introduced to shock us */
+    return 0;
+
+  case CURLINFO_HEADER_OUT:
+    text = "=> Send header";
+    break;
+  case CURLINFO_DATA_OUT:
+    text = "=> Send data";
+    break;
+  case CURLINFO_SSL_DATA_OUT:
+    text = "=> Send SSL data";
+    break;
+  case CURLINFO_HEADER_IN:
+    text = "<= Recv header";
+    break;
+  case CURLINFO_DATA_IN:
+    text = "<= Recv data";
+    break;
+  case CURLINFO_SSL_DATA_IN:
+    text = "<= Recv SSL data";
+    break;
+  }
+
+  dump(text, num, (unsigned char *)data, size, 1);
+  return 0;
+}
+
+static void setup(CURL *hnd, int num)
+{
+  FILE *out;
+  char filename[128];
+
+  sprintf(filename, "dl-%d", num);
+
+  out = fopen(filename, "wb");
+
+  /* write to this file */
+  curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
+
+  /* set the same URL */
+  curl_easy_setopt(hnd, CURLOPT_URL, "https://localhost:8443/index.html");
+
+  /* send it verbose for max debuggaility */
+  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
+  curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
+
+  /* HTTP/2 please */
+  curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
+
+  /* we use a self-signed test server, skip verification during debugging */
+  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
+  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
+
+#if (CURLPIPE_MULTIPLEX > 0)
+  /* wait for pipe connection to confirm */
+  curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
+#endif
+
+  curl_hnd[num] = hnd;
+}
+
+/*
+ * Simply download two files over HTTP/2, using the same physical connection!
+ */
+int main(int argc, char **argv)
+{
+  CURL *easy[NUM_HANDLES];
+  CURLM *multi_handle;
+  int i;
+  int still_running; /* keep number of running handles */
+
+  if(argc > 1)
+    /* if given a number, do that many transfers */
+    num_transfers = atoi(argv[1]);
+
+  if(!num_transfers || (num_transfers > NUM_HANDLES))
+    num_transfers = 3; /* a suitable low default */
+
+  /* init a multi stack */
+  multi_handle = curl_multi_init();
+
+  for(i=0; i<num_transfers; i++) {
+    easy[i] = curl_easy_init();
+    /* set options */
+    setup(easy[i], i);
+
+    /* add the individual transfer */
+    curl_multi_add_handle(multi_handle, easy[i]);
+  }
+
+  curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
+
+  /* we start some action by calling perform right away */
+  curl_multi_perform(multi_handle, &still_running);
+
+  do {
+    struct timeval timeout;
+    int rc; /* select() return code */
+    CURLMcode mc; /* curl_multi_fdset() 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(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 */
+    mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+
+    if(mc != CURLM_OK)
+    {
+      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+      break;
+    }
+
+    /* On success the value of maxfd is guaranteed to be >= -1. We call
+       select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+       no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+       to sleep 100ms, which is the minimum suggested value in the
+       curl_multi_fdset() doc. */
+
+    if(maxfd == -1) {
+#ifdef _WIN32
+      Sleep(100);
+      rc = 0;
+#else
+      /* Portable sleep for platforms other than Windows. */
+      struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+      rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+    }
+    else {
+      /* Note that on some platforms 'timeout' may be modified by select().
+         If you need access to the original value save a copy beforehand. */
+      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, &still_running);
+      break;
+    }
+  } while(still_running);
+
+  curl_multi_cleanup(multi_handle);
+
+  for(i=0; i<num_transfers; i++)
+    curl_easy_cleanup(easy[i]);
+
+  return 0;
+}
diff --git a/docs/examples/http2-serverpush.c b/docs/examples/http2-serverpush.c
new file mode 100644 (file)
index 0000000..53c491b
--- /dev/null
@@ -0,0 +1,317 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at 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.
+ *
+ ***************************************************************************/
+/* <DESC>
+ * HTTP/2 server push
+ * </DESC>
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+/* somewhat unix-specific */
+#include <sys/time.h>
+#include <unistd.h>
+
+/* curl stuff */
+#include <curl/curl.h>
+
+#ifndef CURLPIPE_MULTIPLEX
+#error "too old libcurl, can't do HTTP/2 server push!"
+#endif
+
+static
+void dump(const char *text, unsigned char *ptr, size_t size,
+          char nohex)
+{
+  size_t i;
+  size_t c;
+
+  unsigned int width=0x10;
+
+  if(nohex)
+    /* without the hex output, we can fit more on screen */
+    width = 0x40;
+
+  fprintf(stderr, "%s, %ld bytes (0x%lx)\n",
+          text, (long)size, (long)size);
+
+  for(i=0; i<size; i+= width) {
+
+    fprintf(stderr, "%4.4lx: ", (long)i);
+
+    if(!nohex) {
+      /* hex not disabled, show it */
+      for(c = 0; c < width; c++)
+        if(i+c < size)
+          fprintf(stderr, "%02x ", ptr[i+c]);
+        else
+          fputs("   ", stderr);
+    }
+
+    for(c = 0; (c < width) && (i+c < size); c++) {
+      /* check for 0D0A; if found, skip past and start a new line of output */
+      if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
+        i+=(c+2-width);
+        break;
+      }
+      fprintf(stderr, "%c",
+              (ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
+      /* check again for 0D0A, to avoid an extra \n if it's at width */
+      if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+        i+=(c+3-width);
+        break;
+      }
+    }
+    fputc('\n', stderr); /* newline */
+  }
+}
+
+static
+int my_trace(CURL *handle, curl_infotype type,
+             char *data, size_t size,
+             void *userp)
+{
+  const char *text;
+  (void)handle; /* prevent compiler warning */
+  (void)userp;
+  switch (type) {
+  case CURLINFO_TEXT:
+    fprintf(stderr, "== Info: %s", data);
+  default: /* in case a new one is introduced to shock us */
+    return 0;
+
+  case CURLINFO_HEADER_OUT:
+    text = "=> Send header";
+    break;
+  case CURLINFO_DATA_OUT:
+    text = "=> Send data";
+    break;
+  case CURLINFO_SSL_DATA_OUT:
+    text = "=> Send SSL data";
+    break;
+  case CURLINFO_HEADER_IN:
+    text = "<= Recv header";
+    break;
+  case CURLINFO_DATA_IN:
+    text = "<= Recv data";
+    break;
+  case CURLINFO_SSL_DATA_IN:
+    text = "<= Recv SSL data";
+    break;
+  }
+
+  dump(text, (unsigned char *)data, size, 1);
+  return 0;
+}
+
+static void setup(CURL *hnd)
+{
+  FILE *out = fopen("dl", "wb");
+
+  /* write to this file */
+  curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
+
+  /* set the same URL */
+  curl_easy_setopt(hnd, CURLOPT_URL, "https://localhost:8443/index.html");
+
+  /* send it verbose for max debuggaility */
+  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
+  curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
+
+  /* HTTP/2 please */
+  curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
+
+  /* we use a self-signed test server, skip verification during debugging */
+  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
+  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
+
+#if (CURLPIPE_MULTIPLEX > 0)
+  /* wait for pipe connection to confirm */
+  curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
+#endif
+
+}
+
+/* called when there's an incoming push */
+static int server_push_callback(CURL *parent,
+                                CURL *easy,
+                                size_t num_headers,
+                                struct curl_pushheaders *headers,
+                                void *userp)
+{
+  char *headp;
+  size_t i;
+  int *transfers = (int *)userp;
+  char filename[128];
+  FILE *out;
+  static unsigned int count = 0;
+
+  (void)parent; /* we have no use for this */
+
+  sprintf(filename, "push%u", count++);
+
+  /* here's a new stream, save it in a new file for each new push */
+  out = fopen(filename, "wb");
+
+  /* write to this file */
+  curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
+
+  fprintf(stderr, "**** push callback approves stream %u, got %d headers!\n",
+          count, (int)num_headers);
+
+  for(i=0; i<num_headers; i++) {
+    headp = curl_pushheader_bynum(headers, i);
+    fprintf(stderr, "**** header %u: %s\n", (int)i, headp);
+  }
+
+  headp = curl_pushheader_byname(headers, ":path");
+  if(headp) {
+    fprintf(stderr, "**** The PATH is %s\n", headp /* skip :path + colon */ );
+  }
+
+  (*transfers)++; /* one more */
+  return CURL_PUSH_OK;
+}
+
+
+/*
+ * Download a file over HTTP/2, take care of server push.
+ */
+int main(void)
+{
+  CURL *easy;
+  CURLM *multi_handle;
+  int still_running; /* keep number of running handles */
+  int transfers=1; /* we start with one */
+  struct CURLMsg *m;
+
+  /* init a multi stack */
+  multi_handle = curl_multi_init();
+
+  easy = curl_easy_init();
+
+  /* set options */
+  setup(easy);
+
+  /* add the easy transfer */
+  curl_multi_add_handle(multi_handle, easy);
+
+  curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
+  curl_multi_setopt(multi_handle, CURLMOPT_PUSHFUNCTION, server_push_callback);
+  curl_multi_setopt(multi_handle, CURLMOPT_PUSHDATA, &transfers);
+
+  /* we start some action by calling perform right away */
+  curl_multi_perform(multi_handle, &still_running);
+
+  do {
+    struct timeval timeout;
+    int rc; /* select() return code */
+    CURLMcode mc; /* curl_multi_fdset() 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(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 */
+    mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+
+    if(mc != CURLM_OK) {
+      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+      break;
+    }
+
+    /* On success the value of maxfd is guaranteed to be >= -1. We call
+       select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+       no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+       to sleep 100ms, which is the minimum suggested value in the
+       curl_multi_fdset() doc. */
+
+    if(maxfd == -1) {
+#ifdef _WIN32
+      Sleep(100);
+      rc = 0;
+#else
+      /* Portable sleep for platforms other than Windows. */
+      struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+      rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+    }
+    else {
+      /* Note that on some platforms 'timeout' may be modified by select().
+         If you need access to the original value save a copy beforehand. */
+      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, &still_running);
+      break;
+    }
+
+    /*
+     * A little caution when doing server push is that libcurl itself has
+     * created and added one or more easy handles but we need to clean them up
+     * when we are done.
+     */
+
+    do {
+      int msgq = 0;;
+      m = curl_multi_info_read(multi_handle, &msgq);
+      if(m && (m->msg == CURLMSG_DONE)) {
+        CURL *e = m->easy_handle;
+        transfers--;
+        curl_multi_remove_handle(multi_handle, e);
+        curl_easy_cleanup(e);
+      }
+    } while(m);
+
+  } while(transfers); /* as long as we have transfers going */
+
+  curl_multi_cleanup(multi_handle);
+
+
+  return 0;
+}
diff --git a/docs/examples/http2-upload.c b/docs/examples/http2-upload.c
new file mode 100644 (file)
index 0000000..2ec5505
--- /dev/null
@@ -0,0 +1,356 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at 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.
+ *
+ ***************************************************************************/
+/* <DESC>
+ * Multiplexed HTTP/2 uploads over a single connection
+ * </DESC>
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+/* somewhat unix-specific */
+#include <sys/time.h>
+#include <unistd.h>
+
+/* curl stuff */
+#include <curl/curl.h>
+
+#ifndef CURLPIPE_MULTIPLEX
+/* This little trick will just make sure that we don't enable pipelining for
+   libcurls old enough to not have this symbol. It is _not_ defined to zero in
+   a recent libcurl header. */
+#define CURLPIPE_MULTIPLEX 0
+#endif
+
+#define NUM_HANDLES 1000
+
+void *curl_hnd[NUM_HANDLES];
+int num_transfers;
+
+/* a handle to number lookup, highly ineffective when we do many
+   transfers... */
+static int hnd2num(CURL *hnd)
+{
+  int i;
+  for(i=0; i< num_transfers; i++) {
+    if(curl_hnd[i] == hnd)
+      return i;
+  }
+  return 0; /* weird, but just a fail-safe */
+}
+
+static
+void dump(const char *text, int num, unsigned char *ptr, size_t size,
+          char nohex)
+{
+  size_t i;
+  size_t c;
+  unsigned int width=0x10;
+
+  if(nohex)
+    /* without the hex output, we can fit more on screen */
+    width = 0x40;
+
+  fprintf(stderr, "%d %s, %ld bytes (0x%lx)\n",
+          num, text, (long)size, (long)size);
+
+  for(i=0; i<size; i+= width) {
+
+    fprintf(stderr, "%4.4lx: ", (long)i);
+
+    if(!nohex) {
+      /* hex not disabled, show it */
+      for(c = 0; c < width; c++)
+        if(i+c < size)
+          fprintf(stderr, "%02x ", ptr[i+c]);
+        else
+          fputs("   ", stderr);
+    }
+
+    for(c = 0; (c < width) && (i+c < size); c++) {
+      /* check for 0D0A; if found, skip past and start a new line of output */
+      if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
+        i+=(c+2-width);
+        break;
+      }
+      fprintf(stderr, "%c",
+              (ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
+      /* check again for 0D0A, to avoid an extra \n if it's at width */
+      if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+        i+=(c+3-width);
+        break;
+      }
+    }
+    fputc('\n', stderr); /* newline */
+  }
+}
+
+static
+int my_trace(CURL *handle, curl_infotype type,
+             char *data, size_t size,
+             void *userp)
+{
+  char timebuf[20];
+  const char *text;
+  int num = hnd2num(handle);
+  static time_t epoch_offset;
+  static int    known_offset;
+  struct timeval tv;
+  time_t secs;
+  struct tm *now;
+
+  (void)handle; /* prevent compiler warning */
+  (void)userp;
+
+  gettimeofday(&tv, NULL);
+  if(!known_offset) {
+    epoch_offset = time(NULL) - tv.tv_sec;
+    known_offset = 1;
+  }
+  secs = epoch_offset + tv.tv_sec;
+  now = localtime(&secs);  /* not thread safe but we don't care */
+  snprintf(timebuf, sizeof(timebuf), "%02d:%02d:%02d.%06ld",
+           now->tm_hour, now->tm_min, now->tm_sec, (long)tv.tv_usec);
+
+  switch (type) {
+  case CURLINFO_TEXT:
+    fprintf(stderr, "%s [%d] Info: %s", timebuf, num, data);
+  default: /* in case a new one is introduced to shock us */
+    return 0;
+
+  case CURLINFO_HEADER_OUT:
+    text = "=> Send header";
+    break;
+  case CURLINFO_DATA_OUT:
+    text = "=> Send data";
+    break;
+  case CURLINFO_SSL_DATA_OUT:
+    text = "=> Send SSL data";
+    break;
+  case CURLINFO_HEADER_IN:
+    text = "<= Recv header";
+    break;
+  case CURLINFO_DATA_IN:
+    text = "<= Recv data";
+    break;
+  case CURLINFO_SSL_DATA_IN:
+    text = "<= Recv SSL data";
+    break;
+  }
+
+  dump(text, num, (unsigned char *)data, size, 1);
+  return 0;
+}
+
+struct input {
+  FILE *in;
+  size_t bytes_read; /* count up */
+  CURL *hnd;
+};
+
+static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
+{
+  struct input *i = userp;
+  size_t retcode = fread(ptr, size, nmemb, i->in);
+  i->bytes_read += retcode;
+  return retcode;
+}
+
+struct input indata[NUM_HANDLES];
+
+static void setup(CURL *hnd, int num, const char *upload)
+{
+  FILE *out;
+  char url[256];
+  char filename[128];
+  struct stat file_info;
+  curl_off_t uploadsize;
+
+  sprintf(filename, "dl-%d", num);
+  out = fopen(filename, "wb");
+
+  sprintf(url, "https://localhost:8443/upload-%d", num);
+
+  /* get the file size of the local file */
+  stat(upload, &file_info);
+  uploadsize = file_info.st_size;
+
+  indata[num].in = fopen(upload, "rb");
+  indata[num].hnd = hnd;
+
+  /* write to this file */
+  curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
+
+  /* we want to use our own read function */
+  curl_easy_setopt(hnd, CURLOPT_READFUNCTION, read_callback);
+  /* read from this file */
+  curl_easy_setopt(hnd, CURLOPT_READDATA, &indata[num]);
+  /* provide the size of the upload */
+  curl_easy_setopt(hnd, CURLOPT_INFILESIZE_LARGE, uploadsize);
+
+  /* send in the URL to store the upload as */
+  curl_easy_setopt(hnd, CURLOPT_URL, url);
+
+  /* upload please */
+  curl_easy_setopt(hnd, CURLOPT_UPLOAD, 1L);
+
+  /* send it verbose for max debuggaility */
+  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
+  curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
+
+  /* HTTP/2 please */
+  curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
+
+  /* we use a self-signed test server, skip verification during debugging */
+  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
+  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
+
+#if (CURLPIPE_MULTIPLEX > 0)
+  /* wait for pipe connection to confirm */
+  curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
+#endif
+
+  curl_hnd[num] = hnd;
+}
+
+/*
+ * Upload all files over HTTP/2, using the same physical connection!
+ */
+int main(int argc, char **argv)
+{
+  CURL *easy[NUM_HANDLES];
+  CURLM *multi_handle;
+  int i;
+  int still_running; /* keep number of running handles */
+  const char *filename = "index.html";
+
+  if(argc > 1)
+    /* if given a number, do that many transfers */
+    num_transfers = atoi(argv[1]);
+
+  if(argc > 2)
+    /* if given a file name, upload this! */
+    filename = argv[2];
+
+  if(!num_transfers || (num_transfers > NUM_HANDLES))
+    num_transfers = 3; /* a suitable low default */
+
+  /* init a multi stack */
+  multi_handle = curl_multi_init();
+
+  for(i=0; i<num_transfers; i++) {
+    easy[i] = curl_easy_init();
+    /* set options */
+    setup(easy[i], i, filename);
+
+    /* add the individual transfer */
+    curl_multi_add_handle(multi_handle, easy[i]);
+  }
+
+  curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
+
+  /* We do HTTP/2 so let's stick to one connection per host */
+  curl_multi_setopt(multi_handle, CURLMOPT_MAX_HOST_CONNECTIONS, 1L);
+
+  /* we start some action by calling perform right away */
+  curl_multi_perform(multi_handle, &still_running);
+
+  do {
+    struct timeval timeout;
+    int rc; /* select() return code */
+    CURLMcode mc; /* curl_multi_fdset() 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(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 */
+    mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+
+    if(mc != CURLM_OK)
+    {
+      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+      break;
+    }
+
+    /* On success the value of maxfd is guaranteed to be >= -1. We call
+       select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+       no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+       to sleep 100ms, which is the minimum suggested value in the
+       curl_multi_fdset() doc. */
+
+    if(maxfd == -1) {
+#ifdef _WIN32
+      Sleep(100);
+      rc = 0;
+#else
+      /* Portable sleep for platforms other than Windows. */
+      struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+      rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+    }
+    else {
+      /* Note that on some platforms 'timeout' may be modified by select().
+         If you need access to the original value save a copy beforehand. */
+      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, &still_running);
+      break;
+    }
+  } while(still_running);
+
+  curl_multi_cleanup(multi_handle);
+
+  for(i=0; i<num_transfers; i++)
+    curl_easy_cleanup(easy[i]);
+
+  return 0;
+}
index 8542ead..e742db9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * HTTP request with custom modified, removed and added headers
+ * </DESC>
+ */
 #include <stdio.h>
 #include <curl/curl.h>
 
index 2e9dc21..7119116 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * HTTP PUT with easy interface and read callback
+ * </DESC>
+ */
 #include <stdio.h>
 #include <fcntl.h>
 #include <sys/stat.h>
index bd9a33b..2d5909e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * Simple HTTPS GET
+ * </DESC>
+ */
 #include <stdio.h>
 #include <curl/curl.h>
 
index fa531a8..fb58b4b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * Simple IMAP APPEND use
+ * </DESC>
+ */
 #include <stdio.h>
 #include <string.h>
 #include <curl/curl.h>
index e42ff39..eec9b0e 100644 (file)
@@ -60,7 +60,7 @@ int main(void)
      * they have mentioned in their server certificate's commonName (or
      * subjectAltName) fields, libcurl will refuse to connect. You can skip
      * this check, but this will make the connection less secure. */
-#ifdef SKIP_HOSTNAME_VERFICATION
+#ifdef SKIP_HOSTNAME_VERIFICATION
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
 #endif
 
index 5fb86be..6769024 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/* This is an example showing the multi interface and the debug callback. */
+/* <DESC>
+ * multi interface and debug callback
+ * </DESC>
+ */
 
 #include <stdio.h>
 #include <string.h>
index 0d8d0de..d652e7c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * multi interface code doing two parallel HTTP transfers
+ * </DESC>
+ */
 #include <stdio.h>
 #include <string.h>
 
index f511d66..115dc0c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/* This is an example application source code using the multi interface
- * to do a multipart formpost without "blocking". */
+/* <DESC>
+ * using the multi interface to do a multipart formpost without blocking
+ * </DESC>
+ */
+
 #include <stdio.h>
 #include <string.h>
 #include <sys/time.h>
@@ -64,7 +67,7 @@ int main(void)
   curl = curl_easy_init();
   multi_handle = curl_multi_init();
 
-  /* initalize custom header list (stating that Expect: 100-continue is not
+  /* initialize custom header list (stating that Expect: 100-continue is not
      wanted */
   headerlist = curl_slist_append(headerlist, buf);
   if(curl && multi_handle) {
index 47e23f5..1df9444 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/* This is a very simple example using the multi interface. */
+/* <DESC>
+ * using the multi interface to do a single download
+ * </DESC>
+ */
 
 #include <stdio.h>
 #include <string.h>
@@ -76,12 +79,12 @@ int main(void)
 
     if(mc != CURLM_OK)
     {
-      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+      fprintf(stderr, "curl_multi_wait() failed, code %d.\n", mc);
       break;
     }
 
     /* 'numfds' being zero means either a timeout or no file descriptors to
-       wait for. Try timeout on first occurance, then assume no file
+       wait for. Try timeout on first occurrence, then assume no file
        descriptors and no file descriptors to wait for means wait for 100
        milliseconds. */
 
index 0c0f8a2..3d6e6de 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  ***************************************************************************/
 
+/* <DESC>
+ * multi_socket API using libuv
+ * </DESC>
+ */
 /* Example application code using the multi socket interface to download
    multiple files at once, but instead of using curl_multi_perform and
    curl_multi_wait, which uses select(), we use libuv.
index 831a074..23d5d8a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/* A multi-threaded example that uses pthreads extensively to fetch
- * X remote files at once */
+/* <DESC>
+ * A multi-threaded example that uses pthreads to fetch several files at once
+ * </DESC>
+ */
 
 #include <stdio.h>
 #include <pthread.h>
index ad54f08..03ec1f2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/* Example source code to show one way to set the necessary OpenSSL locking
- * callbacks if you want to do multi-threaded transfers with HTTPS/FTPS with
- * libcurl built to use OpenSSL.
- *
+/* <DESC>
+ * one way to set the necessary OpenSSL locking callbacks if you want to do
+ * multi-threaded transfers with HTTPS/FTPS with libcurl built to use OpenSSL.
+ * </DESC>
+ */
+/*
  * This is not a complete stand-alone example.
  *
  * Author: Jeremy Brown
  */
 
-
 #include <stdio.h>
 #include <pthread.h>
 #include <openssl/err.h>
index 0917dfd..3e6af18 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+/* <DESC>
+ * re-using handles to do HTTP persistent connections
+ * </DESC>
+ */
 #include <stdio.h>
 #include <unistd.h>
 #include <curl/curl.h>
index 4353086..6df09a2 100644 (file)
@@ -69,7 +69,7 @@ int main(void)
   curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
   curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
 
-  /* This will retreive message 1 from the user's mailbox */
+  /* This will retrieve message 1 from the user's mailbox */
   curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
 
   /* Tell the multi stack about our easy handle */
index e5a50f2..b5113fa 100644 (file)
@@ -39,7 +39,7 @@ int main(void)
     curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
     curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
 
-    /* This will retreive message 1 from the user's mailbox */
+    /* This will retrieve message 1 from the user's mailbox */
     curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
 
     /* Perform the retr */
index 45e0054..0bbec8d 100644 (file)
@@ -40,7 +40,7 @@ int main(void)
     curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
     curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
 
-    /* This will retreive message 1 from the user's mailbox. Note the use of
+    /* This will retrieve message 1 from the user's mailbox. Note the use of
      * pop3s:// rather than pop3:// to request a SSL based connection. */
     curl_easy_setopt(curl, CURLOPT_URL, "pop3s://pop.example.com/1");
 
@@ -60,7 +60,7 @@ int main(void)
      * they have mentioned in their server certificate's commonName (or
      * subjectAltName) fields, libcurl will refuse to connect. You can skip
      * this check, but this will make the connection less secure. */
-#ifdef SKIP_HOSTNAME_VERFICATION
+#ifdef SKIP_HOSTNAME_VERIFICATION
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
 #endif
 
index 812d89b..58278a1 100644 (file)
@@ -40,7 +40,7 @@ int main(void)
     curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
     curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
 
-    /* This will retreive message 1 from the user's mailbox */
+    /* This will retrieve message 1 from the user's mailbox */
     curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
 
     /* In this example, we'll start with a plain text connection, and upgrade
index 3e1cfb0..a2f0427 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/* An example source code that issues a HTTP POST and we provide the actual
+/* <DESC>
+ * An example source code that issues a HTTP POST and we provide the actual
  * data through a read callback.
+ * </DESC>
  */
 #include <stdio.h>
 #include <string.h>
index cd2bd13..3afac4b 100644 (file)
@@ -101,8 +101,7 @@ int main(void)
     /* always cleanup */
     curl_easy_cleanup(curl);
 
-    if(chunk.memory)
-      free(chunk.memory);
+    free(chunk.memory);
 
     /* we're done with libcurl, so clean it up */
     curl_global_cleanup();
index 67dcc13..88ea78c 100644 (file)
@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
                CURLFORM_END);
 
   curl = curl_easy_init();
-  /* initalize custom header list (stating that Expect: 100-continue is not
+  /* initialize custom header list (stating that Expect: 100-continue is not
      wanted */
   headerlist = curl_slist_append(headerlist, buf);
   if(curl) {
index 8317462..434299d 100644 (file)
@@ -58,7 +58,7 @@ int main(void)
   CURL *curl;
   CURLcode res;
   struct FtpFile ftpfile={
-    "yourfile.bin", /* name to store the file as if succesful */
+    "yourfile.bin", /* name to store the file as if successful */
     NULL
   };
 
index af4d1b6..eea90b8 100644 (file)
@@ -24,7 +24,7 @@
 #include <curl/curl.h>
 
 /* This is a simple example showing how to send mail using libcurl's SMTP
- * capabilities. For an exmaple of using the multi interface please see
+ * capabilities. For an example of using the multi interface please see
  * smtp-multi.c.
  *
  * Note that this example requires libcurl 7.20.0 or above.
index 9a68a7f..a774403 100644 (file)
@@ -111,7 +111,7 @@ int main(void)
      * they have mentioned in their server certificate's commonName (or
      * subjectAltName) fields, libcurl will refuse to connect. You can skip
      * this check, but this will make the connection less secure. */
-#ifdef SKIP_HOSTNAME_VERFICATION
+#ifdef SKIP_HOSTNAME_VERIFICATION
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
 #endif
 
index 4d67f98..8193445 100644 (file)
@@ -120,7 +120,7 @@ int main(void)
   XML_SetElementHandler(parser, startElement, endElement);
   XML_SetCharacterDataHandler(parser, characterDataHandler);
 
-  /* Initalize a libcurl handle. */
+  /* Initialize a libcurl handle. */
   curl_global_init(CURL_GLOBAL_ALL ^ CURL_GLOBAL_SSL);
   curl_handle = curl_easy_init();
   curl_easy_setopt(curl_handle, CURLOPT_URL, "http://www.w3schools.com/xml/simple.xml");
index ef0caa6..c7c9142 100644 (file)
@@ -1,63 +1,55 @@
-                                  _   _ ____  _
-                              ___| | | |  _ \| |
-                             / __| | | | |_) | |
-                            | (__| |_| |  _ <| |___
-                             \___|\___/|_| \_\_____|
-
-                          libcurl's binary interface
-
 ABI - Application Binary Interface
-----------------------------------
+==================================
 
 "ABI" describes the low-level interface between an application program and a
 library. Calling conventions, function arguments, return values, struct
 sizes/defines and more.
+ "ABI" describes the low-level interface between an application program and a
+ library. Calling conventions, function arguments, return values, struct
+ sizes/defines and more.
 
 [Wikipedia has a longer description](http://en.wikipedia.org/wiki/Application_binary_interface)
[Wikipedia has a longer description](https://en.wikipedia.org/wiki/Application_binary_interface)
 
 Upgrades
 --------
 
 In the vast majority of all cases, a typical libcurl upgrade does not break
 the ABI at all. Your application can remain using libcurl just as before,
 only with less bugs and possibly with added new features. You need to read
-  the release notes, and if they mention an ABI break/soname bump, you may
-  have to verify that your application still builds fine and uses libcurl as
 it now is defined to work.
+ In the vast majority of all cases, a typical libcurl upgrade does not break
+ the ABI at all. Your application can remain using libcurl just as before,
+ only with less bugs and possibly with added new features. You need to read
+ the release notes, and if they mention an ABI break/soname bump, you may have
+ to verify that your application still builds fine and uses libcurl as it now
+ is defined to work.
 
 Version Numbers
 ---------------
 
 In libcurl land, you really can't tell by the libcurl version number if that
 libcurl is binary compatible or not with another libcurl version.
+ In libcurl land, you really can't tell by the libcurl version number if that
+ libcurl is binary compatible or not with another libcurl version.
 
 Soname Bumps
 ------------
 
 Whenever there are changes done to the library that will cause an ABI
 breakage, that may require your application to get attention or possibly be
 changed to adhere to new things, we will bump the soname. Then the library
 will get a different output name and thus can in fact be installed in
 parallel with an older installed lib (on most systems). Thus, old
 applications built against the previous ABI version will remain working and
 using the older lib, while newer applications build and use the newer one.
+ Whenever there are changes done to the library that will cause an ABI
+ breakage, that may require your application to get attention or possibly be
+ changed to adhere to new things, we will bump the soname. Then the library
+ will get a different output name and thus can in fact be installed in
+ parallel with an older installed lib (on most systems). Thus, old
+ applications built against the previous ABI version will remain working and
+ using the older lib, while newer applications build and use the newer one.
 
 During the first seven years of libcurl releases, there have only been four
 ABI breakages.
+ During the first seven years of libcurl releases, there have only been four
+ ABI breakages.
 
 We are determined to bump the SONAME as rarely as possible.  Ideally, we
 never do it again.
+ We are determined to bump the SONAME as rarely as possible.  Ideally, we
+ never do it again.
 
 Downgrades
 ----------
 
 Going to an older libcurl version from one you're currently using can be a
 tricky thing. Mostly we add features and options to newer libcurls as that
 won't break ABI or hamper existing applications. This has the implication
-  that going backwards may get you in a situation where you pick a libcurl
-  that doesn't support the options your application needs. Or possibly you
 even downgrade so far so you cross an ABI break border and thus a different
 soname, and then your application may need to adapt to the modified ABI.
+ Going to an older libcurl version from one you're currently using can be a
+ tricky thing. Mostly we add features and options to newer libcurls as that
+ won't break ABI or hamper existing applications. This has the implication
+ that going backwards may get you in a situation where you pick a libcurl that
+ doesn't support the options your application needs. Or possibly you even
+ downgrade so far so you cross an ABI break border and thus a different
+ soname, and then your application may need to adapt to the modified ABI.
 
 History
 -------
index c47678b..5456ee4 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -29,18 +29,19 @@ man_MANS = curl_easy_cleanup.3 curl_easy_getinfo.3 curl_easy_init.3  \
  curl_formadd.3 curl_formfree.3 curl_getdate.3 curl_getenv.3            \
  curl_slist_append.3 curl_slist_free_all.3 curl_version.3               \
  curl_version_info.3 curl_escape.3 curl_unescape.3 curl_free.3          \
- curl_strequal.3 curl_mprintf.3 curl_global_init.3 curl_global_cleanup.3 \
- curl_multi_add_handle.3 curl_multi_cleanup.3 curl_multi_fdset.3        \
- curl_multi_info_read.3 curl_multi_init.3 curl_multi_perform.3          \
- curl_multi_remove_handle.3 curl_share_cleanup.3 curl_share_init.3      \
- curl_share_setopt.3 libcurl.3 libcurl-easy.3 libcurl-multi.3           \
- libcurl-share.3 libcurl-errors.3 curl_easy_strerror.3                  \
+ curl_strequal.3 curl_mprintf.3 curl_global_init.3                      \
+ curl_global_cleanup.3 curl_multi_add_handle.3 curl_multi_cleanup.3     \
+ curl_multi_fdset.3 curl_multi_info_read.3 curl_multi_init.3            \
+ curl_multi_perform.3 curl_multi_remove_handle.3 curl_share_cleanup.3   \
+ curl_share_init.3 curl_share_setopt.3 libcurl.3 libcurl-easy.3         \
+ libcurl-multi.3 libcurl-share.3 libcurl-errors.3 curl_easy_strerror.3  \
  curl_multi_strerror.3 curl_share_strerror.3 curl_global_init_mem.3     \
  libcurl-tutorial.3 curl_easy_reset.3 curl_easy_escape.3                \
  curl_easy_unescape.3 curl_multi_setopt.3 curl_multi_socket.3           \
  curl_multi_timeout.3 curl_formget.3 curl_multi_assign.3                \
  curl_easy_pause.3 curl_easy_recv.3 curl_easy_send.3                    \
- curl_multi_socket_action.3 curl_multi_wait.3
+ curl_multi_socket_action.3 curl_multi_wait.3 libcurl-symbols.3         \
+ libcurl-thread.3
 
 HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html              \
  curl_easy_init.html curl_easy_perform.html curl_easy_setopt.html      \
@@ -60,38 +61,43 @@ HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html           \
  curl_easy_unescape.html curl_multi_setopt.html curl_multi_socket.html \
  curl_multi_timeout.html curl_formget.html curl_multi_assign.html      \
  curl_easy_pause.html curl_easy_recv.html curl_easy_send.html          \
- curl_multi_socket_action.html curl_multi_wait.html
+ curl_multi_socket_action.html curl_multi_wait.html                    \
+ libcurl-symbols.html libcurl-thread.html
 
 PDFPAGES = curl_easy_cleanup.pdf curl_easy_getinfo.pdf                  \
  curl_easy_init.pdf curl_easy_perform.pdf curl_easy_setopt.pdf          \
  curl_easy_duphandle.pdf curl_formadd.pdf curl_formfree.pdf             \
- curl_getdate.pdf curl_getenv.pdf curl_slist_append.pdf                         \
- curl_slist_free_all.pdf curl_version.pdf curl_version_info.pdf                 \
+ curl_getdate.pdf curl_getenv.pdf curl_slist_append.pdf                 \
+ curl_slist_free_all.pdf curl_version.pdf curl_version_info.pdf         \
  curl_escape.pdf curl_unescape.pdf curl_free.pdf curl_strequal.pdf      \
  curl_mprintf.pdf curl_global_init.pdf curl_global_cleanup.pdf          \
  curl_multi_add_handle.pdf curl_multi_cleanup.pdf curl_multi_fdset.pdf  \
  curl_multi_info_read.pdf curl_multi_init.pdf curl_multi_perform.pdf    \
- curl_multi_remove_handle.pdf curl_share_cleanup.pdf curl_share_init.pdf \
- curl_share_setopt.pdf libcurl.pdf libcurl-multi.pdf libcurl-easy.pdf   \
- libcurl-share.pdf libcurl-errors.pdf curl_easy_strerror.pdf            \
- curl_multi_strerror.pdf curl_share_strerror.pdf                        \
- curl_global_init_mem.pdf libcurl-tutorial.pdf curl_easy_reset.pdf      \
- curl_easy_escape.pdf curl_easy_unescape.pdf curl_multi_setopt.pdf      \
- curl_multi_socket.pdf curl_multi_timeout.pdf curl_formget.pdf          \
- curl_multi_assign.pdf curl_easy_pause.pdf curl_easy_recv.pdf           \
- curl_easy_send.pdf curl_multi_socket_action.pdf curl_multi_wait.pdf
+ curl_multi_remove_handle.pdf curl_share_cleanup.pdf                    \
+ curl_share_init.pdf curl_share_setopt.pdf libcurl.pdf                  \
+ libcurl-multi.pdf libcurl-easy.pdf libcurl-share.pdf                   \
+ libcurl-errors.pdf curl_easy_strerror.pdf curl_multi_strerror.pdf      \
+ curl_share_strerror.pdf curl_global_init_mem.pdf libcurl-tutorial.pdf  \
+ curl_easy_reset.pdf curl_easy_escape.pdf curl_easy_unescape.pdf        \
+ curl_multi_setopt.pdf curl_multi_socket.pdf curl_multi_timeout.pdf     \
+ curl_formget.pdf curl_multi_assign.pdf curl_easy_pause.pdf             \
+ curl_easy_recv.pdf curl_easy_send.pdf curl_multi_socket_action.pdf     \
+ curl_multi_wait.pdf libcurl-symbols.pdf libcurl-thread.pdf
 
 m4macrodir = $(datadir)/aclocal
 dist_m4macro_DATA = libcurl.m4
 
-CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
+CLEANFILES = $(HTMLPAGES) $(PDFPAGES) $(TESTS) libcurl-symbols.3
 
 EXTRA_DIST = $(man_MANS) $(HTMLPAGES) index.html $(PDFPAGES) ABI \
-  symbols-in-versions symbols.pl
+  symbols-in-versions symbols.pl mksymbolsmanpage.pl
 MAN2HTML= roffit --mandir=. < $< >$@
 
 SUFFIXES = .3 .html
 
+libcurl-symbols.3: $(srcdir)/symbols-in-versions $(srcdir)/mksymbolsmanpage.pl
+       perl $(srcdir)/mksymbolsmanpage.pl < $(srcdir)/symbols-in-versions > $@
+
 html: $(HTMLPAGES)
        cd opts; make html
 
@@ -107,3 +113,17 @@ pdf: $(PDFPAGES)
        ps2pdf $$foo.ps $@; \
        rm $$foo.ps; \
        echo "converted $< to $@")
+
+# Make sure each option man page is referenced in the main man page
+TESTS = check-easy check-multi
+LOG_COMPILER = $(PERL)
+# The test fails if the log file contains any text
+AM_LOG_FLAGS = -p -e 'die "$$_" if ($$_);'
+
+check-easy: $(srcdir)/curl_easy_setopt.3 $(srcdir)/opts/CURLOPT*.3
+       OPTS="$$(ls $(srcdir)/opts/CURLOPT*.3 | $(SED) -e 's,^.*/,,' -e 's,\.3$$,,')" && \
+       for opt in $$OPTS; do grep "^\.IP $$opt$$" $(srcdir)/curl_easy_setopt.3 >/dev/null || echo Missing $$opt; done > $@
+
+check-multi: $(srcdir)/curl_multi_setopt.3 $(srcdir)/opts/CURLMOPT*.3
+       OPTS="$$(ls $(srcdir)/opts/CURLMOPT*.3 | $(SED) -e 's,^.*/,,' -e 's,\.3$$,,')" && \
+       for opt in $$OPTS; do grep "^\.IP $$opt$$" $(srcdir)/curl_multi_setopt.3 >/dev/null || echo Missing $$opt; done > $@
index 7430e81..26b036c 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 ###########################################################################
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -101,8 +111,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = docs/libcurl
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs $(dist_m4macro_DATA)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -123,7 +131,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(dist_m4macro_DATA) \
+       $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -195,7 +205,7 @@ am__recursive_targets = \
   $(RECURSIVE_CLEAN_TARGETS) \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-       distdir
+       check recheck distdir
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -215,7 +225,184 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red='\e[0;31m'; \
+    grn='\e[0;32m'; \
+    lgn='\e[1;32m'; \
+    blu='\e[1;34m'; \
+    mgn='\e[0;35m'; \
+    brg='\e[1m'; \
+    std='\e[m'; \
+  fi; \
+}
+am__recheck_rx = ^[    ]*:recheck:[    ]*
+am__global_test_result_rx = ^[         ]*:global-test-result:[         ]*
+am__copy_in_global_log_rx = ^[         ]*:copy-in-global-log:[         ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+           recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[       ]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);                                     \
+$(am__vpath_adj_setup) $(am__vpath_adj)                        \
+$(am__tty_colors);                                     \
+srcdir=$(srcdir); export srcdir;                       \
+case "$@" in                                           \
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;   \
+    *) am__odir=.;;                                    \
+esac;                                                  \
+test "x$$am__odir" = x"." || test -d "$$am__odir"      \
+  || $(MKDIR_P) "$$am__odir" || exit $$?;              \
+if test -f "./$$f"; then dir=./;                       \
+elif test -f "$$f"; then dir=;                         \
+else dir="$(srcdir)/"; fi;                             \
+tst=$$dir$$f; log='$@';                                \
+if test -n '$(DISABLE_HARD_ERRORS)'; then              \
+  am__enable_hard_errors=no;                           \
+else                                                   \
+  am__enable_hard_errors=yes;                          \
+fi;                                                    \
+case " $(XFAIL_TESTS) " in                             \
+  *[\ \        ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
+    am__expect_failure=yes;;                           \
+  *)                                                   \
+    am__expect_failure=no;;                            \
+esac;                                                  \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+       $(TEST_LOG_FLAGS)
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/test-driver
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -299,7 +486,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -352,6 +539,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -368,7 +556,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -435,18 +622,19 @@ man_MANS = curl_easy_cleanup.3 curl_easy_getinfo.3 curl_easy_init.3        \
  curl_formadd.3 curl_formfree.3 curl_getdate.3 curl_getenv.3            \
  curl_slist_append.3 curl_slist_free_all.3 curl_version.3               \
  curl_version_info.3 curl_escape.3 curl_unescape.3 curl_free.3          \
- curl_strequal.3 curl_mprintf.3 curl_global_init.3 curl_global_cleanup.3 \
- curl_multi_add_handle.3 curl_multi_cleanup.3 curl_multi_fdset.3        \
- curl_multi_info_read.3 curl_multi_init.3 curl_multi_perform.3          \
- curl_multi_remove_handle.3 curl_share_cleanup.3 curl_share_init.3      \
- curl_share_setopt.3 libcurl.3 libcurl-easy.3 libcurl-multi.3           \
- libcurl-share.3 libcurl-errors.3 curl_easy_strerror.3                  \
+ curl_strequal.3 curl_mprintf.3 curl_global_init.3                      \
+ curl_global_cleanup.3 curl_multi_add_handle.3 curl_multi_cleanup.3     \
+ curl_multi_fdset.3 curl_multi_info_read.3 curl_multi_init.3            \
+ curl_multi_perform.3 curl_multi_remove_handle.3 curl_share_cleanup.3   \
+ curl_share_init.3 curl_share_setopt.3 libcurl.3 libcurl-easy.3         \
+ libcurl-multi.3 libcurl-share.3 libcurl-errors.3 curl_easy_strerror.3  \
  curl_multi_strerror.3 curl_share_strerror.3 curl_global_init_mem.3     \
  libcurl-tutorial.3 curl_easy_reset.3 curl_easy_escape.3                \
  curl_easy_unescape.3 curl_multi_setopt.3 curl_multi_socket.3           \
  curl_multi_timeout.3 curl_formget.3 curl_multi_assign.3                \
  curl_easy_pause.3 curl_easy_recv.3 curl_easy_send.3                    \
- curl_multi_socket_action.3 curl_multi_wait.3
+ curl_multi_socket_action.3 curl_multi_wait.3 libcurl-symbols.3         \
+ libcurl-thread.3
 
 HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html              \
  curl_easy_init.html curl_easy_perform.html curl_easy_setopt.html      \
@@ -466,39 +654,47 @@ HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html         \
  curl_easy_unescape.html curl_multi_setopt.html curl_multi_socket.html \
  curl_multi_timeout.html curl_formget.html curl_multi_assign.html      \
  curl_easy_pause.html curl_easy_recv.html curl_easy_send.html          \
- curl_multi_socket_action.html curl_multi_wait.html
+ curl_multi_socket_action.html curl_multi_wait.html                    \
+ libcurl-symbols.html libcurl-thread.html
 
 PDFPAGES = curl_easy_cleanup.pdf curl_easy_getinfo.pdf                  \
  curl_easy_init.pdf curl_easy_perform.pdf curl_easy_setopt.pdf          \
  curl_easy_duphandle.pdf curl_formadd.pdf curl_formfree.pdf             \
- curl_getdate.pdf curl_getenv.pdf curl_slist_append.pdf                         \
- curl_slist_free_all.pdf curl_version.pdf curl_version_info.pdf                 \
+ curl_getdate.pdf curl_getenv.pdf curl_slist_append.pdf                 \
+ curl_slist_free_all.pdf curl_version.pdf curl_version_info.pdf         \
  curl_escape.pdf curl_unescape.pdf curl_free.pdf curl_strequal.pdf      \
  curl_mprintf.pdf curl_global_init.pdf curl_global_cleanup.pdf          \
  curl_multi_add_handle.pdf curl_multi_cleanup.pdf curl_multi_fdset.pdf  \
  curl_multi_info_read.pdf curl_multi_init.pdf curl_multi_perform.pdf    \
- curl_multi_remove_handle.pdf curl_share_cleanup.pdf curl_share_init.pdf \
- curl_share_setopt.pdf libcurl.pdf libcurl-multi.pdf libcurl-easy.pdf   \
- libcurl-share.pdf libcurl-errors.pdf curl_easy_strerror.pdf            \
- curl_multi_strerror.pdf curl_share_strerror.pdf                        \
- curl_global_init_mem.pdf libcurl-tutorial.pdf curl_easy_reset.pdf      \
- curl_easy_escape.pdf curl_easy_unescape.pdf curl_multi_setopt.pdf      \
- curl_multi_socket.pdf curl_multi_timeout.pdf curl_formget.pdf          \
- curl_multi_assign.pdf curl_easy_pause.pdf curl_easy_recv.pdf           \
- curl_easy_send.pdf curl_multi_socket_action.pdf curl_multi_wait.pdf
+ curl_multi_remove_handle.pdf curl_share_cleanup.pdf                    \
+ curl_share_init.pdf curl_share_setopt.pdf libcurl.pdf                  \
+ libcurl-multi.pdf libcurl-easy.pdf libcurl-share.pdf                   \
+ libcurl-errors.pdf curl_easy_strerror.pdf curl_multi_strerror.pdf      \
+ curl_share_strerror.pdf curl_global_init_mem.pdf libcurl-tutorial.pdf  \
+ curl_easy_reset.pdf curl_easy_escape.pdf curl_easy_unescape.pdf        \
+ curl_multi_setopt.pdf curl_multi_socket.pdf curl_multi_timeout.pdf     \
+ curl_formget.pdf curl_multi_assign.pdf curl_easy_pause.pdf             \
+ curl_easy_recv.pdf curl_easy_send.pdf curl_multi_socket_action.pdf     \
+ curl_multi_wait.pdf libcurl-symbols.pdf libcurl-thread.pdf
 
 m4macrodir = $(datadir)/aclocal
 dist_m4macro_DATA = libcurl.m4
-CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
+CLEANFILES = $(HTMLPAGES) $(PDFPAGES) $(TESTS) libcurl-symbols.3
 EXTRA_DIST = $(man_MANS) $(HTMLPAGES) index.html $(PDFPAGES) ABI \
-  symbols-in-versions symbols.pl
+  symbols-in-versions symbols.pl mksymbolsmanpage.pl
 
 MAN2HTML = roffit --mandir=. < $< >$@
 SUFFIXES = .3 .html
+
+# Make sure each option man page is referenced in the main man page
+TESTS = check-easy check-multi
+LOG_COMPILER = $(PERL)
+# The test fails if the log file contains any text
+AM_LOG_FLAGS = -p -e 'die "$$_" if ($$_);'
 all: all-recursive
 
 .SUFFIXES:
-.SUFFIXES: .3 .html .pdf
+.SUFFIXES: .3 .html .log .pdf .test .test$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
@@ -511,7 +707,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/libcurl/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign docs/libcurl/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -699,6 +894,176 @@ cscopelist-am: $(am__tagged_files)
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+       rm -f $< $@
+       $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+       @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+       @$(am__set_TESTS_bases); \
+       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+       redo_bases=`for i in $$bases; do \
+                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+                   done`; \
+       if test -n "$$redo_bases"; then \
+         redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+         redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+         if $(am__make_dryrun); then :; else \
+           rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+         fi; \
+       fi; \
+       if test -n "$$am__remaking_logs"; then \
+         echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+              "recursion detected" >&2; \
+       elif test -n "$$redo_logs"; then \
+         am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+       fi; \
+       if $(am__make_dryrun); then :; else \
+         st=0;  \
+         errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+         for i in $$redo_bases; do \
+           test -f $$i.trs && test -r $$i.trs \
+             || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+           test -f $$i.log && test -r $$i.log \
+             || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+         done; \
+         test $$st -eq 0 || exit 1; \
+       fi
+       @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+       ws='[   ]'; \
+       results=`for b in $$bases; do echo $$b.trs; done`; \
+       test -n "$$results" || results=/dev/null; \
+       all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+       pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+       fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+       skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+       xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+       xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+       error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+       if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+         success=true; \
+       else \
+         success=false; \
+       fi; \
+       br='==================='; br=$$br$$br$$br$$br; \
+       result_count () \
+       { \
+           if test x"$$1" = x"--maybe-color"; then \
+             maybe_colorize=yes; \
+           elif test x"$$1" = x"--no-color"; then \
+             maybe_colorize=no; \
+           else \
+             echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+           fi; \
+           shift; \
+           desc=$$1 count=$$2; \
+           if test $$maybe_colorize = yes && test $$count -gt 0; then \
+             color_start=$$3 color_end=$$std; \
+           else \
+             color_start= color_end=; \
+           fi; \
+           echo "$${color_start}# $$desc $$count$${color_end}"; \
+       }; \
+       create_testsuite_report () \
+       { \
+         result_count $$1 "TOTAL:" $$all   "$$brg"; \
+         result_count $$1 "PASS: " $$pass  "$$grn"; \
+         result_count $$1 "SKIP: " $$skip  "$$blu"; \
+         result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+         result_count $$1 "FAIL: " $$fail  "$$red"; \
+         result_count $$1 "XPASS:" $$xpass "$$red"; \
+         result_count $$1 "ERROR:" $$error "$$mgn"; \
+       }; \
+       {                                                               \
+         echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
+           $(am__rst_title);                                           \
+         create_testsuite_report --no-color;                           \
+         echo;                                                         \
+         echo ".. contents:: :depth: 2";                               \
+         echo;                                                         \
+         for b in $$bases; do echo $$b; done                           \
+           | $(am__create_global_log);                                 \
+       } >$(TEST_SUITE_LOG).tmp || exit 1;                             \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+       if $$success; then                                              \
+         col="$$grn";                                                  \
+        else                                                           \
+         col="$$red";                                                  \
+         test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
+       fi;                                                             \
+       echo "$${col}$$br$${std}";                                      \
+       echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
+       echo "$${col}$$br$${std}";                                      \
+       create_testsuite_report --maybe-color;                          \
+       echo "$$col$$br$$std";                                          \
+       if $$success; then :; else                                      \
+         echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";         \
+         if test -n "$(PACKAGE_BUGREPORT)"; then                       \
+           echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+         fi;                                                           \
+         echo "$$col$$br$$std";                                        \
+       fi;                                                             \
+       $$success || exit 1
+
+check-TESTS:
+       @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+       @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+       log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+       exit $$?;
+recheck: all 
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       bases=`for i in $$bases; do echo $$i; done \
+                | $(am__list_recheck_tests)` || exit 1; \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       log_list=`echo $$log_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+               am__force_recheck=am--force-recheck \
+               TEST_LOGS="$$log_list"; \
+       exit $$?
+check-easy.log: check-easy
+       @p='check-easy'; \
+       b='check-easy'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+check-multi.log: check-multi
+       @p='check-multi'; \
+       b='check-multi'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+       @p='$<'; \
+       $(am__set_b); \
+       $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@      @p='$<'; \
+@am__EXEEXT_TRUE@      $(am__set_b); \
+@am__EXEEXT_TRUE@      $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@      --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
+
 distdir: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -755,6 +1120,7 @@ distdir: $(DISTFILES)
          fi; \
        done
 check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
 check: check-recursive
 all-am: Makefile $(MANS) $(DATA)
 installdirs: installdirs-recursive
@@ -782,6 +1148,9 @@ install-strip:
            "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
        fi
 mostlyclean-generic:
+       -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+       -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+       -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
        -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -857,23 +1226,29 @@ uninstall-am: uninstall-dist_m4macroDATA uninstall-man
 
 uninstall-man: uninstall-man3
 
-.MAKE: $(am__recursive_targets) install-am install-strip
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
 
 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
-       check-am clean clean-generic clean-libtool cscopelist-am ctags \
-       ctags-am distclean distclean-generic distclean-libtool \
-       distclean-tags distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am \
-       install-dist_m4macroDATA install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man install-man3 \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am installdirs \
-       installdirs-am maintainer-clean maintainer-clean-generic \
-       mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-       ps ps-am tags tags-am uninstall uninstall-am \
-       uninstall-dist_m4macroDATA uninstall-man uninstall-man3
+       check-TESTS check-am clean clean-generic clean-libtool \
+       cscopelist-am ctags ctags-am distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dist_m4macroDATA install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-man3 install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+       uninstall uninstall-am uninstall-dist_m4macroDATA \
+       uninstall-man uninstall-man3
 
+.PRECIOUS: Makefile
+
+
+libcurl-symbols.3: $(srcdir)/symbols-in-versions $(srcdir)/mksymbolsmanpage.pl
+       perl $(srcdir)/mksymbolsmanpage.pl < $(srcdir)/symbols-in-versions > $@
 
 html: $(HTMLPAGES)
        cd opts; make html
@@ -891,6 +1266,14 @@ pdf: $(PDFPAGES)
        rm $$foo.ps; \
        echo "converted $< to $@")
 
+check-easy: $(srcdir)/curl_easy_setopt.3 $(srcdir)/opts/CURLOPT*.3
+       OPTS="$$(ls $(srcdir)/opts/CURLOPT*.3 | $(SED) -e 's,^.*/,,' -e 's,\.3$$,,')" && \
+       for opt in $$OPTS; do grep "^\.IP $$opt$$" $(srcdir)/curl_easy_setopt.3 >/dev/null || echo Missing $$opt; done > $@
+
+check-multi: $(srcdir)/curl_multi_setopt.3 $(srcdir)/opts/CURLMOPT*.3
+       OPTS="$$(ls $(srcdir)/opts/CURLMOPT*.3 | $(SED) -e 's,^.*/,,' -e 's,\.3$$,,')" && \
+       for opt in $$OPTS; do grep "^\.IP $$opt$$" $(srcdir)/curl_multi_setopt.3 >/dev/null || echo Missing $$opt; done > $@
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 403bfd3..e8cd550 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -63,5 +63,6 @@ if(curl) {
 }
 .fi
 .SH "SEE ALSO"
-.BR curl_easy_init "(3), "
-
+.BR curl_easy_init "(3), " curl_easy_duphandle "(3), "
+.BR curl_easy_reset "(3), "
+.BR curl_multi_cleanup "(3), " curl_multi_remove_handle "(3) "
index 752461e..5255119 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_easy_cleanup man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -55,18 +60,17 @@ p.roffit {
 <p class="level0">Any use of the <span Class="bold">handle</span> after this function has been called and have returned, is illegal. <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> kills the handle and all memory associated with it! 
 <p class="level0">For libcurl versions before 7.17,: after you've called this function, you can safely remove all the strings you've previously told libcurl to use, as it won't use them anymore now. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">None <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; CURLcode res;
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- &nbsp; res = curl_easy_perform(curl);
- &nbsp; curl_easy_cleanup(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; CURLcode res;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp; res = curl_easy_perform(curl);
+&nbsp; curl_easy_cleanup(curl);
+}
+</pre>
 
 <p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <span Class="manpage"> </span> 
-<p class="level0"><p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_duphandle.html">curl_easy_duphandle</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_easy_reset.html">curl_easy_reset</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 7e22eed..1ec0302 100644 (file)
Binary files a/docs/libcurl/curl_easy_cleanup.pdf and b/docs/libcurl/curl_easy_cleanup.pdf differ
index 080723a..34cba58 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -47,4 +47,6 @@ in a synchronous way, the input handle may not be in use when cloned.
 If this function returns NULL, something went wrong and no valid handle was
 returned.
 .SH "SEE ALSO"
-.BR curl_easy_init "(3)," curl_easy_cleanup "(3)," curl_global_init "(3)"
+.BR curl_easy_init "(3)," curl_easy_cleanup "(3)," curl_easy_reset "(3),"
+.BR curl_global_init "(3)"
+
index 19b1f6f..34c5ec8 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_easy_duphandle man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -55,6 +60,7 @@ p.roffit {
 <p class="level0">The new handle will <span Class="bold">not</span> inherit any state information, no connections, no SSL sessions and no cookies. 
 <p class="level0"><span Class="bold">Note</span> that even in multi-threaded programs, this function must be called in a synchronous way, the input handle may not be in use when cloned. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">If this function returns NULL, something went wrong and no valid handle was returned. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_global_init.html">curl_global_init</a>, <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_easy_reset.html">curl_easy_reset</a>, <a Class="manpage" href="./curl_global_init.html">curl_global_init</a>, 
+<p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index b0fadf1..c0c0b62 100644 (file)
Binary files a/docs/libcurl/curl_easy_duphandle.pdf and b/docs/libcurl/curl_easy_duphandle.pdf differ
index 7c8c658..da2b382 100644 (file)
@@ -29,13 +29,13 @@ curl_easy_escape - URL encodes the given string
 .BI "char *curl_easy_escape( CURL *" curl ", char *" string ", int "length " );"
 .ad
 .SH DESCRIPTION
-This function converts the given input \fBstring\fP to an URL encoded string
+This function converts the given input \fIstring\fP to a URL encoded string
 and returns that as a new allocated string. All input characters that are not
 a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped"
 version (%NN where NN is a two-digit hexadecimal number).
 
-If the \fBlength\fP argument is set to 0 (zero), \fIcurl_easy_escape(3)\fP
-uses strlen() on the input \fBurl\fP to find out the size.
+If \fIlength\fP is set to 0 (zero), \fIcurl_easy_escape(3)\fP uses strlen() on
+the input \fIstring\fP to find out the size.
 
 You must \fIcurl_free(3)\fP the returned string when you're done with it.
 .SH AVAILABILITY
index 1852342..8892941 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_easy_escape man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -50,21 +55,21 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">char *curl_easy_escape( CURL * curl , char * string , int length  );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function converts the given input <span Class="bold">string</span> to an URL encoded string and returns that as a new allocated string. All input characters that are not a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped" version (%NN where NN is a two-digit hexadecimal number). 
-<p class="level0">If the <span Class="bold">length</span> argument is set to 0 (zero), <a Class="emphasis" href="./curl_easy_escape.html">curl_easy_escape</a> uses strlen() on the input <span Class="bold">url</span> to find out the size. 
+<p class="level0">This function converts the given input <span Class="emphasis">string</span> to a URL encoded string and returns that as a new allocated string. All input characters that are not a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped" version (%NN where NN is a two-digit hexadecimal number). 
+<p class="level0">If <span Class="emphasis">length</span> is set to 0 (zero), <a Class="emphasis" href="./curl_easy_escape.html">curl_easy_escape</a> uses strlen() on the input <span Class="emphasis">string</span> to find out the size. 
 <p class="level0">You must <a Class="emphasis" href="./curl_free.html">curl_free</a> the returned string when you're done with it. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.15.4 and replaces the old <a Class="emphasis" href="./curl_escape.html">curl_escape</a> function. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a zero terminated string or NULL if it failed. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; char *output = curl_easy_escape(curl, "data to convert", 15);
- &nbsp; if(output) {
- &nbsp;   printf("Encoded: %sn", output);
- &nbsp;   curl_free(output);
- &nbsp; }
- }}
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; char *output = curl_easy_escape(curl, "data to convert", 15);
+&nbsp; if(output) {
+&nbsp;   printf("Encoded: %sn", output);
+&nbsp;   curl_free(output);
+&nbsp; }
+}}
+</pre>
 
 <p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./curl_easy_unescape.html">curl_easy_unescape</a>, <a Class="manpage" href="./curl_free.html">curl_free</a>, <span Class="manpage">  <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a></span> <p class="roffit">
index d6ca4c2..a642be8 100644 (file)
Binary files a/docs/libcurl/curl_easy_escape.pdf and b/docs/libcurl/curl_easy_escape.pdf differ
index 0f0fd2e..d48ca04 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -236,6 +236,26 @@ option may not be available for all SSL backends; unsupported SSL backends
 will return 'CURLSSLBACKEND_NONE' to indicate that they are not supported;
 this does not mean that no SSL backend was used. (Added in 7.34.0)
 
+.nf
+struct curl_tlssessioninfo {
+  curl_sslbackend backend;
+  void *internals;
+};
+.fi
+
+The \fIinternals\fP struct member will point to a TLS library specific pointer
+with the following underlying types:
+.RS
+.IP OpenSSL
+SSL_CTX *
+.IP GnuTLS
+gnutls_session_t
+.IP NSS
+PRFileDesc *
+.IP gskit
+gsk_handle
+.RE
+
 .IP CURLINFO_CONDITION_UNMET
 Pass a pointer to a long to receive the number 1 if the condition provided in
 the previous request didn't match (see \fICURLOPT_TIMECONDITION(3)\fP). Alas,
index af26a2f..3113bff 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_easy_getinfo man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -133,6 +138,25 @@ p.roffit {
 <p class="level0"><a name="CURLINFOTLSSESSION"></a><span class="nroffip">CURLINFO_TLS_SESSION</span> 
 <p class="level1">Pass a pointer to a 'struct curl_tlssessioninfo *'.  The pointer will be initialized to refer to a 'struct curl_tlssessioninfo *' that will contain an enum indicating the SSL library used for the handshake and the respective internal TLS session structure of this underlying SSL library. 
 <p class="level1">This may then be used to extract certificate information in a format convenient for further processing, such as manual validation. NOTE: this option may not be available for all SSL backends; unsupported SSL backends will return 'CURLSSLBACKEND_NONE' to indicate that they are not supported; this does not mean that no SSL backend was used. (Added in 7.34.0) 
+<p class="level1"><pre class="level1">
+struct curl_tlssessioninfo {
+&nbsp; curl_sslbackend backend;
+&nbsp; void *internals;
+};
+</pre>
+
+<p class="level1">
+<p class="level1">The <span Class="emphasis">internals</span> struct member will point to a TLS library specific pointer with the following underlying types: 
+<p class="level2">
+<p class="level1"><a name="OpenSSL"></a><span class="nroffip">OpenSSL</span> 
+<p class="level2">SSL_CTX * 
+<p class="level1"><a name="GnuTLS"></a><span class="nroffip">GnuTLS</span> 
+<p class="level2">gnutls_session_t 
+<p class="level1"><a name="NSS"></a><span class="nroffip">NSS</span> 
+<p class="level2">PRFileDesc * 
+<p class="level1"><a name="gskit"></a><span class="nroffip">gskit</span> 
+<p class="level2">gsk_handle 
+<p class="level1">
 <p class="level1">
 <p class="level0"><a name="CURLINFOCONDITIONUNMET"></a><span class="nroffip">CURLINFO_CONDITION_UNMET</span> 
 <p class="level1">Pass a pointer to a long to receive the number 1 if the condition provided in the previous request didn't match (see <span Class="emphasis">CURLOPT_TIMECONDITION(3)</span>). Alas, if this returns a 1 you know that the reason you didn't get data in return is because it didn't fulfill the condition. The long ths argument points to will get a zero stored if the condition instead was met. (Added in 7.19.4) 
@@ -147,18 +171,19 @@ p.roffit {
 <p class="level1">Applications wishing to resume an RTSP session on another connection should retrieve this info before closing the active connection. 
 <p class="level0"><a name="CURLINFORTSPCSEQRECV"></a><span class="nroffip">CURLINFO_RTSP_CSEQ_RECV</span> 
 <p class="level1">Pass a pointer to a long to receive the most recently received CSeq from the server. If your application encounters a <span Class="emphasis">CURLE_RTSP_CSEQ_ERROR</span> then you may wish to troubleshoot and/or fix the CSeq mismatch by peeking at this value. <a name="TIMES"></a><h2 class="nroffsh">TIMES</h2>
-<p class="level0"><pre>
-<p class="level0">An overview of the six time values available from curl_easy_getinfo()
- <p class="level0">curl_easy_perform()
- &nbsp;   |
- &nbsp;   |--NAMELOOKUP
- &nbsp;   |--|--CONNECT
- &nbsp;   |--|--|--APPCONNECT
- &nbsp;   |--|--|--|--PRETRANSFER
- &nbsp;   |--|--|--|--|--STARTTRANSFER
- &nbsp;   |--|--|--|--|--|--TOTAL
- &nbsp;   |--|--|--|--|--|--REDIRECT
- </pre>
+<p class="level0"><pre class="level0">
+An overview of the six time values available from curl_easy_getinfo()
+&nbsp;
+curl_easy_perform()
+&nbsp;   |
+&nbsp;   |--NAMELOOKUP
+&nbsp;   |--|--CONNECT
+&nbsp;   |--|--|--APPCONNECT
+&nbsp;   |--|--|--|--PRETRANSFER
+&nbsp;   |--|--|--|--|--STARTTRANSFER
+&nbsp;   |--|--|--|--|--|--TOTAL
+&nbsp;   |--|--|--|--|--|--REDIRECT
+</pre>
 
 <p class="level0">
 <p class="level0"><a name="NAMELOOKUP"></a><span class="nroffip">NAMELOOKUP</span> 
index 9801b97..009c589 100644 (file)
Binary files a/docs/libcurl/curl_easy_getinfo.pdf and b/docs/libcurl/curl_easy_getinfo.pdf differ
index 28ec035..6dd0aea 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_easy_init man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -53,15 +58,15 @@ p.roffit {
 <p class="level0">If you did not already call <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a>, <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> does it automatically.  This may be lethal in multi-threaded cases, since <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> is not thread-safe, and it may result in resource problems because there is no corresponding cleanup. 
 <p class="level0">You are strongly advised to not allow this automatic behaviour, by calling <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> yourself properly.  See the description in <span Class="bold">libcurl</span>(3) of global environment requirements for details of how to use this function. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">If this function returns NULL, something went wrong and you cannot use the other curl functions. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; CURLcode res;
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- &nbsp; res = curl_easy_perform(curl);
- &nbsp; curl_easy_cleanup(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; CURLcode res;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp; res = curl_easy_perform(curl);
+&nbsp; curl_easy_cleanup(curl);
+}
+</pre>
 
 <p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_global_init.html">curl_global_init</a>, <a Class="manpage" href="./curl_easy_reset.html">curl_easy_reset</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_easy_perform.html">curl_easy_perform</a>, <p class="roffit">
index faa85c1..c74dfa7 100644 (file)
Binary files a/docs/libcurl/curl_easy_init.pdf and b/docs/libcurl/curl_easy_init.pdf differ
index bb646e5..b8dbe40 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_easy_pause man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 1ce558f..a114987 100644 (file)
Binary files a/docs/libcurl/curl_easy_pause.pdf and b/docs/libcurl/curl_easy_pause.pdf differ
index e40c1e4..fc8c59e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -66,7 +66,7 @@ if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
   res = curl_easy_perform(curl);
   curl_easy_cleanup(curl);
-}}
+}
 .fi
 .SH "SEE ALSO"
 .BR curl_easy_init "(3), " curl_easy_setopt "(3), "
index c5b90b2..d76edd3 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_easy_perform man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -56,15 +61,15 @@ p.roffit {
 <p class="level0">You must never call this function simultaneously from two places using the same <span Class="bold">easy_handle</span>. Let the function return first before invoking it another time. If you want parallel transfers, you must use several curl easy_handles. 
 <p class="level0">While the <span Class="bold">easy_handle</span> is added to a multi handle, it cannot be used by <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLE_OK (0) means everything was ok, non-zero means an error occurred as <span Class="emphasis">&lt;curl/curl.h&gt;</span> defines - see <a Class="emphasis" href="./libcurl-errors.html">libcurl-errors</a>. If the <span Class="bold">CURLOPT_ERRORBUFFER(3)</span> was set with <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> there will be a readable error message in the error buffer when non-zero is returned. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; CURLcode res;
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- &nbsp; res = curl_easy_perform(curl);
- &nbsp; curl_easy_cleanup(curl);
- }}
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; CURLcode res;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp; res = curl_easy_perform(curl);
+&nbsp; curl_easy_cleanup(curl);
+}
+</pre>
 
 <p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_add_handle.html">curl_multi_add_handle</a>, <a Class="manpage" href="./curl_multi_perform.html">curl_multi_perform</a>, <span Class="manpage"> </span> <a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <span Class="manpage"> </span> 
index 2f47acb..490486b 100644 (file)
Binary files a/docs/libcurl/curl_easy_perform.pdf and b/docs/libcurl/curl_easy_perform.pdf differ
index c661f4b..d425fe2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -42,8 +42,9 @@ buffer. The variable \fBn\fP points to will receive the number of received
 bytes.
 
 To establish the connection, set \fBCURLOPT_CONNECT_ONLY(3)\fP option before
-calling \fIcurl_easy_perform(3)\fP. Note that \fIcurl_easy_recv(3)\fP does not
-work on connections that were created without this option.
+calling \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP. Note that
+\fIcurl_easy_recv(3)\fP does not work on connections that were created without
+this option.
 
 You must ensure that the socket has data to read before calling
 \fIcurl_easy_recv(3)\fP, otherwise the call will return \fBCURLE_AGAIN\fP -
index 1eb2534..e38a7e8 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_easy_recv man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -52,7 +57,7 @@ p.roffit {
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This function receives raw data from the established connection. You may use it together with <a Class="emphasis" href="./curl_easy_send.html">curl_easy_send</a> to implement custom protocols using libcurl. This functionality can be particularly useful if you use proxies and/or SSL encryption: libcurl will take care of proxy negotiation and connection set-up. 
 <p class="level0"><span Class="bold">buffer</span> is a pointer to your buffer that will get the received data. <span Class="bold">buflen</span> is the maximum amount of data you can get in that buffer. The variable <span Class="bold">n</span> points to will receive the number of received bytes. 
-<p class="level0">To establish the connection, set <span Class="bold">CURLOPT_CONNECT_ONLY(3)</span> option before calling <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>. Note that <a Class="emphasis" href="./curl_easy_recv.html">curl_easy_recv</a> does not work on connections that were created without this option. 
+<p class="level0">To establish the connection, set <span Class="bold">CURLOPT_CONNECT_ONLY(3)</span> option before calling <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> or <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>. Note that <a Class="emphasis" href="./curl_easy_recv.html">curl_easy_recv</a> does not work on connections that were created without this option. 
 <p class="level0">You must ensure that the socket has data to read before calling <a Class="emphasis" href="./curl_easy_recv.html">curl_easy_recv</a>, otherwise the call will return <span Class="bold">CURLE_AGAIN</span> - the socket is used in non-blocking mode internally. Use <a Class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo</a> with <span Class="bold">CURLINFO_LASTSOCKET</span> to obtain the socket; use your operating system facilities like <span Class="emphasis">select(2)</span> to check if it has any data you can read. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.18.2. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">On success, returns <span Class="bold">CURLE_OK</span>, stores the received data into <span Class="bold">buffer</span>, and the number of bytes it actually read into <span Class="bold">*n</span>. 
index afdd743..e445f9a 100644 (file)
Binary files a/docs/libcurl/curl_easy_recv.pdf and b/docs/libcurl/curl_easy_recv.pdf differ
index 6a290fb..033f1e2 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_easy_reset man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 58ce522..6defb7b 100644 (file)
Binary files a/docs/libcurl/curl_easy_reset.pdf and b/docs/libcurl/curl_easy_reset.pdf differ
index 28e8866..6f5a6ea 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -40,8 +40,9 @@ connection set-up.
 The variable \fBn\fP points to will receive the number of sent bytes.
 
 To establish the connection, set \fBCURLOPT_CONNECT_ONLY(3)\fP option before
-calling \fIcurl_easy_perform(3)\fP. Note that \fIcurl_easy_send(3)\fP will not
-work on connections that were created without this option.
+calling \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform()\fP. Note that
+\fIcurl_easy_send(3)\fP will not work on connections that were created without
+this option.
 
 You must ensure that the socket is writable before calling
 \fIcurl_easy_send(3)\fP, otherwise the call will return \fBCURLE_AGAIN\fP -
index 4d52db5..6f2f498 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_easy_send man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -52,7 +57,7 @@ p.roffit {
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This function sends arbitrary data over the established connection. You may use it together with <a Class="emphasis" href="./curl_easy_recv.html">curl_easy_recv</a> to implement custom protocols using libcurl. This functionality can be particularly useful if you use proxies and/or SSL encryption: libcurl will take care of proxy negotiation and connection set-up. 
 <p class="level0"><span Class="bold">buffer</span> is a pointer to the data of length <span Class="bold">buflen</span> that you want sent. The variable <span Class="bold">n</span> points to will receive the number of sent bytes. 
-<p class="level0">To establish the connection, set <span Class="bold">CURLOPT_CONNECT_ONLY(3)</span> option before calling <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>. Note that <a Class="emphasis" href="./curl_easy_send.html">curl_easy_send</a> will not work on connections that were created without this option. 
+<p class="level0">To establish the connection, set <span Class="bold">CURLOPT_CONNECT_ONLY(3)</span> option before calling <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> or <span Class="emphasis">curl_multi_perform()</span>. Note that <a Class="emphasis" href="./curl_easy_send.html">curl_easy_send</a> will not work on connections that were created without this option. 
 <p class="level0">You must ensure that the socket is writable before calling <a Class="emphasis" href="./curl_easy_send.html">curl_easy_send</a>, otherwise the call will return <span Class="bold">CURLE_AGAIN</span> - the socket is used in non-blocking mode internally. Use <a Class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo</a> with <span Class="bold">CURLINFO_LASTSOCKET</span> to obtain the socket; use your operating system facilities like <span Class="emphasis">select(2)</span> to check if it can be written to. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.18.2. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">On success, returns <span Class="bold">CURLE_OK</span> and stores the number of bytes actually sent into <span Class="bold">*n</span>. Note that this may very well be less than the amount you wanted to send. 
index 32e30a1..a947448 100644 (file)
Binary files a/docs/libcurl/curl_easy_send.pdf and b/docs/libcurl/curl_easy_send.pdf differ
index ecfa38f..a9a6230 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -50,6 +50,8 @@ really \fICURLOPT_POSTFIELDS(3)\fP, but the alternative that copies the string
 \fICURLOPT_COPYPOSTFIELDS(3)\fP has some usage characteristics you need to
 read up on.
 
+The order in which the options are set does not matter.
+
 Before version 7.17.0, strings were not copied. Instead the user was forced
 keep them available until libcurl no longer needed them.
 
@@ -145,6 +147,8 @@ Fail on HTTP 4xx errors. \fICURLOPT_FAILONERROR(3)\fP
 .SH NETWORK OPTIONS
 .IP CURLOPT_URL
 URL to work on. See \fICURLOPT_URL(3)\fP
+.IP CURLOPT_PATH_AS_IS
+Disable squashing /../ and /./ sequences in the path. See \fICURLOPT_PATH_AS_IS(3)\fP
 .IP CURLOPT_PROTOCOLS
 Allowed protocols. See \fICURLOPT_PROTOCOLS(3)\fP
 .IP CURLOPT_REDIR_PROTOCOLS
@@ -163,6 +167,10 @@ Tunnel through the HTTP proxy. \fICURLOPT_HTTPPROXYTUNNEL(3)\fP
 Socks5 GSSAPI service name. \fICURLOPT_SOCKS5_GSSAPI_SERVICE(3)\fP
 .IP CURLOPT_SOCKS5_GSSAPI_NEC
 Socks5 GSSAPI NEC mode. See \fICURLOPT_SOCKS5_GSSAPI_NEC(3)\fP
+.IP CURLOPT_PROXY_SERVICE_NAME
+Proxy service name. \fICURLOPT_PROXY_SERVICE_NAME(3)\fP
+.IP CURLOPT_SERVICE_NAME
+SPNEGO service name. \fICURLOPT_SERVICE_NAME(3)\fP
 .IP CURLOPT_INTERFACE
 Bind connection locally to this. See \fICURLOPT_INTERFACE(3)\fP
 .IP CURLOPT_LOCALPORT
@@ -214,6 +222,8 @@ HTTP server authentication methods. See \fICURLOPT_HTTPAUTH(3)\fP
 TLS authentication user name. See \fICURLOPT_TLSAUTH_USERNAME(3)\fP
 .IP CURLOPT_TLSAUTH_PASSWORD
 TLS authentication password. See \fICURLOPT_TLSAUTH_PASSWORD(3)\fP
+.IP CURLOPT_TLSAUTH_TYPE
+TLS authentication methods. See \fICURLOPT_TLSAUTH_TYPE(3)\fP
 .IP CURLOPT_PROXYAUTH
 HTTP proxy authentication methods. See \fICURLOPT_PROXYAUTH(3)\fP
 .IP CURLOPT_SASL_IR
@@ -283,6 +293,8 @@ Disable Content decoding. See \fICURLOPT_HTTP_CONTENT_DECODING(3)\fP
 Disable Transfer decoding. See \fICURLOPT_HTTP_TRANSFER_DECODING(3)\fP
 .IP CURLOPT_EXPECT_100_TIMEOUT_MS
 100-continue timeout. See \fICURLOPT_EXPECT_100_TIMEOUT_MS(3)\fP
+.IP CURLOPT_PIPEWAIT
+Wait on connection to pipeline on it. See \fICURLOPT_PIPEWAIT(3)\fP
 .SH SMTP OPTIONS
 .IP CURLOPT_MAIL_FROM
 Address of the sender. See \fICURLOPT_MAIL_FROM(3)\fP
@@ -411,6 +423,8 @@ Bind name resolves to this interface. See \fICURLOPT_DNS_INTERFACE(3)\fP
 Bind name resolves to this IP4 address. See \fICURLOPT_DNS_LOCAL_IP4(3)\fP
 .IP CURLOPT_DNS_LOCAL_IP6
 Bind name resolves to this IP6 address. See \fICURLOPT_DNS_LOCAL_IP6(3)\fP
+.IP CURLOPT_DNS_SERVERS
+Preferred DNS servers. See \fICURLOPT_DNS_SERVERS(3)\fP
 .IP CURLOPT_ACCEPTTIMEOUT_MS
 Timeout for waiting for the server's connect back to be accepted. See \fICURLOPT_ACCEPTTIMEOUT_MS(3)\fP
 .SH SSL and SECURITY OPTIONS
@@ -432,10 +446,16 @@ Enable use of NPN. See \fICURLOPT_SSL_ENABLE_NPN(3)\fP
 Use identifier with SSL engine. See \fICURLOPT_SSLENGINE(3)\fP
 .IP CURLOPT_SSLENGINE_DEFAULT
 Default SSL engine. See \fICURLOPT_SSLENGINE_DEFAULT(3)\fP
+.IP CURLOPT_SSL_FALSESTART
+Enable TLS False Start. See \fICURLOPT_SSL_FALSESTART(3)\fP
 .IP CURLOPT_SSLVERSION
 SSL version to use. See \fICURLOPT_SSLVERSION(3)\fP
+.IP CURLOPT_SSL_VERIFYHOST
+Verify the host name in the SSL certificate. See \fICURLOPT_SSL_VERIFYHOST(3)\fP
 .IP CURLOPT_SSL_VERIFYPEER
 Verify the SSL certificate. See \fICURLOPT_SSL_VERIFYPEER(3)\fP
+.IP CURLOPT_SSL_VERIFYSTATUS
+Verify the SSL certificate's status. See \fICURLOPT_SSL_VERIFYSTATUS(3)\fP
 .IP CURLOPT_CAINFO
 CA cert bundle. See \fICURLOPT_CAINFO(3)\fP
 .IP CURLOPT_ISSUERCERT
@@ -444,8 +464,6 @@ Issuer certificate. See \fICURLOPT_ISSUERCERT(3)\fP
 Path to CA cert bundle. See \fICURLOPT_CAPATH(3)\fP
 .IP CURLOPT_CRLFILE
 Certificate Revocation List. See \fICURLOPT_CRLFILE(3)\fP
-.IP CURLOPT_SSL_VERIFYHOST
-Verify the host name in the SSL certificate. See \fICURLOPT_SSL_VERIFYHOST(3)\fP
 .IP CURLOPT_CERTINFO
 Extract certificate info. See \fICURLOPT_CERTINFO(3)\fP
 .IP CURLOPT_PINNEDPUBLICKEY
index 43e0b43..890097c 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_easy_setopt man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_easy_setopt - set options for a curl easy handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> is used to tell libcurl how to behave. By setting the appropriate options, the application can change libcurl's behavior.  All options are set with an <span Class="emphasis">option</span> followed by a <span Class="emphasis">parameter</span>. That parameter can be a <span Class="bold">long</span>, a <span Class="bold">function pointer</span>, an <span class="bold">object pointer</span> or a <span Class="bold">curl_off_t</span>, depending on what the specific option expects. Read this manual carefully as bad input values may cause libcurl to behave badly!  You can only set one option in each function call. A typical application uses many <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> calls in the setup phase. 
 <p class="level0">Options set with this function call are valid for all forthcoming transfers performed using this <span Class="emphasis">handle</span>.  The options are not in any way reset between transfers, so if you want subsequent transfers with different options, you must change them between the transfers. You can optionally reset all options back to internal default with <a Class="emphasis" href="./curl_easy_reset.html">curl_easy_reset</a>. 
 <p class="level0">Strings passed to libcurl as 'char *' arguments, are copied by the library; thus the string storage associated to the pointer argument may be overwritten after <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> returns. The only exception to this rule is really <span Class="emphasis">CURLOPT_POSTFIELDS(3)</span>, but the alternative that copies the string <span Class="emphasis">CURLOPT_COPYPOSTFIELDS(3)</span> has some usage characteristics you need to read up on. 
+<p class="level0">The order in which the options are set does not matter. 
 <p class="level0">Before version 7.17.0, strings were not copied. Instead the user was forced keep them available until libcurl no longer needed them. 
 <p class="level0">The <span Class="emphasis">handle</span> is the return code from a <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> or <a Class="emphasis" href="./curl_easy_duphandle.html">curl_easy_duphandle</a> call. <a name="BEHAVIOR"></a><h2 class="nroffsh">BEHAVIOR OPTIONS</h2>
 <p class="level0">
@@ -144,6 +150,8 @@ p.roffit {
 <p class="level0">
 <p class="level0"><a name="CURLOPTURL"></a><span class="nroffip">CURLOPT_URL</span> 
 <p class="level1">URL to work on. See <span Class="emphasis">CURLOPT_URL(3)</span> 
+<p class="level0"><a name="CURLOPTPATHASIS"></a><span class="nroffip">CURLOPT_PATH_AS_IS</span> 
+<p class="level1">Disable squashing /../ and /./ sequences in the path. See <span Class="emphasis">CURLOPT_PATH_AS_IS(3)</span> 
 <p class="level0"><a name="CURLOPTPROTOCOLS"></a><span class="nroffip">CURLOPT_PROTOCOLS</span> 
 <p class="level1">Allowed protocols. See <span Class="emphasis">CURLOPT_PROTOCOLS(3)</span> 
 <p class="level0"><a name="CURLOPTREDIRPROTOCOLS"></a><span class="nroffip">CURLOPT_REDIR_PROTOCOLS</span> 
@@ -162,6 +170,10 @@ p.roffit {
 <p class="level1">Socks5 GSSAPI service name. <span Class="emphasis">CURLOPT_SOCKS5_GSSAPI_SERVICE(3)</span> 
 <p class="level0"><a name="CURLOPTSOCKS5GSSAPINEC"></a><span class="nroffip">CURLOPT_SOCKS5_GSSAPI_NEC</span> 
 <p class="level1">Socks5 GSSAPI NEC mode. See <span Class="emphasis">CURLOPT_SOCKS5_GSSAPI_NEC(3)</span> 
+<p class="level0"><a name="CURLOPTPROXYSERVICENAME"></a><span class="nroffip">CURLOPT_PROXY_SERVICE_NAME</span> 
+<p class="level1">Proxy service name. <span Class="emphasis">CURLOPT_PROXY_SERVICE_NAME(3)</span> 
+<p class="level0"><a name="CURLOPTSERVICENAME"></a><span class="nroffip">CURLOPT_SERVICE_NAME</span> 
+<p class="level1">SPNEGO service name. <span Class="emphasis">CURLOPT_SERVICE_NAME(3)</span> 
 <p class="level0"><a name="CURLOPTINTERFACE"></a><span class="nroffip">CURLOPT_INTERFACE</span> 
 <p class="level1">Bind connection locally to this. See <span Class="emphasis">CURLOPT_INTERFACE(3)</span> 
 <p class="level0"><a name="CURLOPTLOCALPORT"></a><span class="nroffip">CURLOPT_LOCALPORT</span> 
@@ -213,6 +225,8 @@ p.roffit {
 <p class="level1">TLS authentication user name. See <span Class="emphasis">CURLOPT_TLSAUTH_USERNAME(3)</span> 
 <p class="level0"><a name="CURLOPTTLSAUTHPASSWORD"></a><span class="nroffip">CURLOPT_TLSAUTH_PASSWORD</span> 
 <p class="level1">TLS authentication password. See <span Class="emphasis">CURLOPT_TLSAUTH_PASSWORD(3)</span> 
+<p class="level0"><a name="CURLOPTTLSAUTHTYPE"></a><span class="nroffip">CURLOPT_TLSAUTH_TYPE</span> 
+<p class="level1">TLS authentication methods. See <span Class="emphasis">CURLOPT_TLSAUTH_TYPE(3)</span> 
 <p class="level0"><a name="CURLOPTPROXYAUTH"></a><span class="nroffip">CURLOPT_PROXYAUTH</span> 
 <p class="level1">HTTP proxy authentication methods. See <span Class="emphasis">CURLOPT_PROXYAUTH(3)</span> 
 <p class="level0"><a name="CURLOPTSASLIR"></a><span class="nroffip">CURLOPT_SASL_IR</span> 
@@ -281,7 +295,9 @@ p.roffit {
 <p class="level0"><a name="CURLOPTHTTPTRANSFERDECODING"></a><span class="nroffip">CURLOPT_HTTP_TRANSFER_DECODING</span> 
 <p class="level1">Disable Transfer decoding. See <span Class="emphasis">CURLOPT_HTTP_TRANSFER_DECODING(3)</span> 
 <p class="level0"><a name="CURLOPTEXPECT100TIMEOUTMS"></a><span class="nroffip">CURLOPT_EXPECT_100_TIMEOUT_MS</span> 
-<p class="level1">100-continue timeout. See <span Class="emphasis">CURLOPT_EXPECT_100_TIMEOUT_MS(3)</span> <a name="SMTP"></a><h2 class="nroffsh">SMTP OPTIONS</h2>
+<p class="level1">100-continue timeout. See <span Class="emphasis">CURLOPT_EXPECT_100_TIMEOUT_MS(3)</span> 
+<p class="level0"><a name="CURLOPTPIPEWAIT"></a><span class="nroffip">CURLOPT_PIPEWAIT</span> 
+<p class="level1">Wait on connection to pipeline on it. See <span Class="emphasis">CURLOPT_PIPEWAIT(3)</span> <a name="SMTP"></a><h2 class="nroffsh">SMTP OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTMAILFROM"></a><span class="nroffip">CURLOPT_MAIL_FROM</span> 
 <p class="level1">Address of the sender. See <span Class="emphasis">CURLOPT_MAIL_FROM(3)</span> 
@@ -410,6 +426,8 @@ p.roffit {
 <p class="level1">Bind name resolves to this IP4 address. See <span Class="emphasis">CURLOPT_DNS_LOCAL_IP4(3)</span> 
 <p class="level0"><a name="CURLOPTDNSLOCALIP6"></a><span class="nroffip">CURLOPT_DNS_LOCAL_IP6</span> 
 <p class="level1">Bind name resolves to this IP6 address. See <span Class="emphasis">CURLOPT_DNS_LOCAL_IP6(3)</span> 
+<p class="level0"><a name="CURLOPTDNSSERVERS"></a><span class="nroffip">CURLOPT_DNS_SERVERS</span> 
+<p class="level1">Preferred DNS servers. See <span Class="emphasis">CURLOPT_DNS_SERVERS(3)</span> 
 <p class="level0"><a name="CURLOPTACCEPTTIMEOUTMS"></a><span class="nroffip">CURLOPT_ACCEPTTIMEOUT_MS</span> 
 <p class="level1">Timeout for waiting for the server's connect back to be accepted. See <span Class="emphasis">CURLOPT_ACCEPTTIMEOUT_MS(3)</span> <a name="SSL"></a><h2 class="nroffsh">SSL and SECURITY OPTIONS</h2>
 <p class="level0">
@@ -431,10 +449,16 @@ p.roffit {
 <p class="level1">Use identifier with SSL engine. See <span Class="emphasis">CURLOPT_SSLENGINE(3)</span> 
 <p class="level0"><a name="CURLOPTSSLENGINEDEFAULT"></a><span class="nroffip">CURLOPT_SSLENGINE_DEFAULT</span> 
 <p class="level1">Default SSL engine. See <span Class="emphasis">CURLOPT_SSLENGINE_DEFAULT(3)</span> 
+<p class="level0"><a name="CURLOPTSSLFALSESTART"></a><span class="nroffip">CURLOPT_SSL_FALSESTART</span> 
+<p class="level1">Enable TLS False Start. See <span Class="emphasis">CURLOPT_SSL_FALSESTART(3)</span> 
 <p class="level0"><a name="CURLOPTSSLVERSION"></a><span class="nroffip">CURLOPT_SSLVERSION</span> 
 <p class="level1">SSL version to use. See <span Class="emphasis">CURLOPT_SSLVERSION(3)</span> 
+<p class="level0"><a name="CURLOPTSSLVERIFYHOST"></a><span class="nroffip">CURLOPT_SSL_VERIFYHOST</span> 
+<p class="level1">Verify the host name in the SSL certificate. See <span Class="emphasis">CURLOPT_SSL_VERIFYHOST(3)</span> 
 <p class="level0"><a name="CURLOPTSSLVERIFYPEER"></a><span class="nroffip">CURLOPT_SSL_VERIFYPEER</span> 
 <p class="level1">Verify the SSL certificate. See <span Class="emphasis">CURLOPT_SSL_VERIFYPEER(3)</span> 
+<p class="level0"><a name="CURLOPTSSLVERIFYSTATUS"></a><span class="nroffip">CURLOPT_SSL_VERIFYSTATUS</span> 
+<p class="level1">Verify the SSL certificate's status. See <span Class="emphasis">CURLOPT_SSL_VERIFYSTATUS(3)</span> 
 <p class="level0"><a name="CURLOPTCAINFO"></a><span class="nroffip">CURLOPT_CAINFO</span> 
 <p class="level1">CA cert bundle. See <span Class="emphasis">CURLOPT_CAINFO(3)</span> 
 <p class="level0"><a name="CURLOPTISSUERCERT"></a><span class="nroffip">CURLOPT_ISSUERCERT</span> 
@@ -443,8 +467,6 @@ p.roffit {
 <p class="level1">Path to CA cert bundle. See <span Class="emphasis">CURLOPT_CAPATH(3)</span> 
 <p class="level0"><a name="CURLOPTCRLFILE"></a><span class="nroffip">CURLOPT_CRLFILE</span> 
 <p class="level1">Certificate Revocation List. See <span Class="emphasis">CURLOPT_CRLFILE(3)</span> 
-<p class="level0"><a name="CURLOPTSSLVERIFYHOST"></a><span class="nroffip">CURLOPT_SSL_VERIFYHOST</span> 
-<p class="level1">Verify the host name in the SSL certificate. See <span Class="emphasis">CURLOPT_SSL_VERIFYHOST(3)</span> 
 <p class="level0"><a name="CURLOPTCERTINFO"></a><span class="nroffip">CURLOPT_CERTINFO</span> 
 <p class="level1">Extract certificate info. See <span Class="emphasis">CURLOPT_CERTINFO(3)</span> 
 <p class="level0"><a name="CURLOPTPINNEDPUBLICKEY"></a><span class="nroffip">CURLOPT_PINNEDPUBLICKEY</span> 
@@ -492,15 +514,15 @@ p.roffit {
 <p class="level1">TELNET options. See <span Class="emphasis">CURLOPT_TELNETOPTIONS(3)</span> <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0"><span Class="emphasis">CURLE_OK</span> (zero) means that the option was set properly, non-zero means an error occurred as <span Class="emphasis">&lt;curl/curl.h&gt;</span> defines. See the <a Class="emphasis" href="./libcurl-errors.html">libcurl-errors</a> man page for the full list with descriptions. 
 <p class="level0">If you try to set an option that libcurl doesn't know about, perhaps because the library is too old to support it or the option was removed in a recent version, this function will return <span Class="emphasis">CURLE_UNKNOWN_OPTION</span>. If support for the option was disabled at compile-time, it will return <span Class="emphasis">CURLE_NOT_BUILT_IN</span>. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; CURLcode res;
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- &nbsp; res = curl_easy_perform(curl);
- &nbsp; curl_easy_cleanup(curl);
- }}
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; CURLcode res;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp; res = curl_easy_perform(curl);
+&nbsp; curl_easy_cleanup(curl);
+}}
+</pre>
 
 <p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_easy_reset.html">curl_easy_reset</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_setopt.html">curl_multi_setopt</a>, <span Class="manpage"> </span> <p class="roffit">
index 4f2c948..9e2eff0 100644 (file)
Binary files a/docs/libcurl/curl_easy_setopt.pdf and b/docs/libcurl/curl_easy_setopt.pdf differ
index e279cb6..0cb4e99 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_easy_strerror man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_easy_strerror - return string describing error code <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">const char *curl_easy_strerror(CURLcode errornum); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">The <a Class="emphasis" href="./curl_easy_strerror.html">curl_easy_strerror</a> function returns a string describing the CURLcode error code passed in the argument <span Class="emphasis">errornum</span>. 
 <p class="level0">Typically applications also appreciate <span Class="emphasis">CURLOPT_ERRORBUFFER(3)</span> for more specific error descriptions generated at run-time. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
index 5997beb..633eb32 100644 (file)
Binary files a/docs/libcurl/curl_easy_strerror.pdf and b/docs/libcurl/curl_easy_strerror.pdf differ
index 357ad23..23ce9c3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -48,4 +48,4 @@ Added in 7.15.4 and replaces the old \fIcurl_unescape(3)\fP function.
 .SH RETURN VALUE
 A pointer to a zero terminated string or NULL if it failed.
 .SH "SEE ALSO"
-.BR curl_easy_escape "(3), " curl_free "(3)," RFC 2396
+.BR curl_easy_escape "(3), " curl_free "(3)," RFC 3986
index a2538ad..686ecc3 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_easy_unescape man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -56,6 +61,6 @@ p.roffit {
 <p class="level0">You must <a Class="emphasis" href="./curl_free.html">curl_free</a> the returned string when you're done with it. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.15.4 and replaces the old <a Class="emphasis" href="./curl_unescape.html">curl_unescape</a> function. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a zero terminated string or NULL if it failed. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./curl_easy_escape.html">curl_easy_escape</a>, <a Class="manpage" href="./curl_free.html">curl_free</a>, <span Class="manpage"> <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a></span> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_escape.html">curl_easy_escape</a>, <a Class="manpage" href="./curl_free.html">curl_free</a>, <span Class="manpage"> <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a></span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index e7880c2..b04a494 100644 (file)
Binary files a/docs/libcurl/curl_easy_unescape.pdf and b/docs/libcurl/curl_easy_unescape.pdf differ
index 2178839..c838c52 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_escape man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 3c9fea2..271e5bc 100644 (file)
Binary files a/docs/libcurl/curl_escape.pdf and b/docs/libcurl/curl_escape.pdf differ
index 3e48149..cdae51b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -103,6 +103,9 @@ given file match one of the internally known file extensions.  For
 providing multiple \fBCURLFORM_FILE\fP arguments each followed by the filename
 (and each \fICURLFORM_FILE\fP is allowed to have a
 \fICURLFORM_CONTENTTYPE\fP).
+
+The given upload file has to exist in its full in the file system already when
+the upload starts, as libcurl needs to read the correct file size beforehand.
 .IP CURLFORM_CONTENTTYPE
 is used in combination with \fICURLFORM_FILE\fP. Followed by a pointer to a
 string which provides the content-type for this part, possibly instead of an
index dbf8a80..d0b9e29 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_formadd man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -72,6 +77,7 @@ p.roffit {
 <p class="level1">followed by a filename, causes that file to be read and its contents used as data in this part. This part does <span Class="emphasis">not</span> automatically become a file upload part simply because its data was read from a file. 
 <p class="level0"><a name="CURLFORMFILE"></a><span class="nroffip">CURLFORM_FILE</span> 
 <p class="level1">followed by a filename, makes this part a file upload part. It sets the <span Class="emphasis">filename</span> field to the basename of the provided filename, it reads the contents of the file and passes them as data and sets the content-type if the given file match one of the internally known file extensions.  For <a class="bold" href="#CURLFORMFILE">CURLFORM_FILE</a> the user may send one or more files in one part by providing multiple <a class="bold" href="#CURLFORMFILE">CURLFORM_FILE</a> arguments each followed by the filename (and each <a class="emphasis" href="#CURLFORMFILE">CURLFORM_FILE</a> is allowed to have a <a class="emphasis" href="#CURLFORMCONTENTTYPE">CURLFORM_CONTENTTYPE</a>). 
+<p class="level1">The given upload file has to exist in its full in the file system already when the upload starts, as libcurl needs to read the correct file size beforehand. 
 <p class="level0"><a name="CURLFORMCONTENTTYPE"></a><span class="nroffip">CURLFORM_CONTENTTYPE</span> 
 <p class="level1">is used in combination with <a class="emphasis" href="#CURLFORMFILE">CURLFORM_FILE</a>. Followed by a pointer to a string which provides the content-type for this part, possibly instead of an internally chosen one. 
 <p class="level0"><a name="CURLFORMFILENAME"></a><span class="nroffip">CURLFORM_FILENAME</span> 
@@ -91,73 +97,86 @@ p.roffit {
 <p class="level1">When you've passed the HttpPost pointer to <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> (using the <span Class="emphasis">CURLOPT_HTTPPOST(3)</span> option), you must not free the list until after you've called <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> for the curl handle. 
 <p class="level1">See example below. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">0 means everything was ok, non-zero means an error occurred corresponding to a CURL_FORMADD_* constant defined in <span Class="emphasis">&lt;curl/curl.h&gt;</span> <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0"><p class="level0">&nbsp;struct curl_httppost* post = NULL;
- &nbsp;struct curl_httppost* last = NULL;
- &nbsp;char namebuffer[] = "name buffer";
- &nbsp;long namelength = strlen(namebuffer);
- &nbsp;char buffer[] = "test buffer";
- &nbsp;char htmlbuffer[] = "&lt;HTML&gt;test buffer&lt;/HTML&gt;";
- &nbsp;long htmlbufferlength = strlen(htmlbuffer);
- &nbsp;struct curl_forms forms[3];
- &nbsp;char file1[] = "my-face.jpg";
- &nbsp;char file2[] = "your-face.jpg";
- &nbsp;/* add null character into htmlbuffer, to demonstrate that
- &nbsp;   transfers of buffers containing null characters actually work
- &nbsp;*/
- &nbsp;htmlbuffer[8] = '\0';
- <p class="level0">&nbsp;/* Add simple name/content section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "name",
- &nbsp;             CURLFORM_COPYCONTENTS, "content", CURLFORM_END);
- <p class="level0">&nbsp;/* Add simple name/content/contenttype section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "htmlcode",
- &nbsp;             CURLFORM_COPYCONTENTS, "&lt;HTML&gt;&lt;/HTML&gt;",
- &nbsp;             CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END);
- <p class="level0">&nbsp;/* Add name/ptrcontent section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "name_for_ptrcontent",
- &nbsp;             CURLFORM_PTRCONTENTS, buffer, CURLFORM_END);
- <p class="level0">&nbsp;/* Add ptrname/ptrcontent section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_PTRNAME, namebuffer,
- &nbsp;             CURLFORM_PTRCONTENTS, buffer, CURLFORM_NAMELENGTH,
- &nbsp;             namelength, CURLFORM_END);
- <p class="level0">&nbsp;/* Add name/ptrcontent/contenttype section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "html_code_with_hole",
- &nbsp;             CURLFORM_PTRCONTENTS, htmlbuffer,
- &nbsp;             CURLFORM_CONTENTSLENGTH, htmlbufferlength,
- &nbsp;             CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END);
- <p class="level0">&nbsp;/* Add simple file section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture",
- &nbsp;             CURLFORM_FILE, "my-face.jpg", CURLFORM_END);
- <p class="level0">&nbsp;/* Add file/contenttype section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture",
- &nbsp;             CURLFORM_FILE, "my-face.jpg",
- &nbsp;             CURLFORM_CONTENTTYPE, "image/jpeg", CURLFORM_END);
- <p class="level0">&nbsp;/* Add two file section */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures",
- &nbsp;             CURLFORM_FILE, "my-face.jpg",
- &nbsp;             CURLFORM_FILE, "your-face.jpg", CURLFORM_END);
- <p class="level0">&nbsp;/* Add two file section using CURLFORM_ARRAY */
- &nbsp;forms[0].option = CURLFORM_FILE;
- &nbsp;forms[0].value  = file1;
- &nbsp;forms[1].option = CURLFORM_FILE;
- &nbsp;forms[1].value  = file2;
- &nbsp;forms[2].option  = CURLFORM_END;
- <p class="level0">&nbsp;/* Add a buffer to upload */
- &nbsp;curl_formadd(&post, &last,
- &nbsp;             CURLFORM_COPYNAME, "name",
- &nbsp;             CURLFORM_BUFFER, "data",
- &nbsp;             CURLFORM_BUFFERPTR, record,
- &nbsp;             CURLFORM_BUFFERLENGTH, record_length,
- &nbsp;             CURLFORM_END);
- <p class="level0">&nbsp;/* no option needed for the end marker */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures",
- &nbsp;             CURLFORM_ARRAY, forms, CURLFORM_END);
- &nbsp;/* Add the content of a file as a normal post text value */
- &nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "filecontent",
- &nbsp;             CURLFORM_FILECONTENT, ".bashrc", CURLFORM_END);
- &nbsp;/* Set the form info */
- &nbsp;curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
- <p class="level0"></pre>
+<p class="level0"><pre class="level0">
+&nbsp;
+&nbsp;struct curl_httppost* post = NULL;
+&nbsp;struct curl_httppost* last = NULL;
+&nbsp;char namebuffer[] = "name buffer";
+&nbsp;long namelength = strlen(namebuffer);
+&nbsp;char buffer[] = "test buffer";
+&nbsp;char htmlbuffer[] = "&lt;HTML&gt;test buffer&lt;/HTML&gt;";
+&nbsp;long htmlbufferlength = strlen(htmlbuffer);
+&nbsp;struct curl_forms forms[3];
+&nbsp;char file1[] = "my-face.jpg";
+&nbsp;char file2[] = "your-face.jpg";
+&nbsp;/* add null character into htmlbuffer, to demonstrate that
+&nbsp;   transfers of buffers containing null characters actually work
+&nbsp;*/
+&nbsp;htmlbuffer[8] = '\0';
+&nbsp;
+&nbsp;/* Add simple name/content section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "name",
+&nbsp;             CURLFORM_COPYCONTENTS, "content", CURLFORM_END);
+&nbsp;
+&nbsp;/* Add simple name/content/contenttype section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "htmlcode",
+&nbsp;             CURLFORM_COPYCONTENTS, "&lt;HTML&gt;&lt;/HTML&gt;",
+&nbsp;             CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END);
+&nbsp;
+&nbsp;/* Add name/ptrcontent section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "name_for_ptrcontent",
+&nbsp;             CURLFORM_PTRCONTENTS, buffer, CURLFORM_END);
+&nbsp;
+&nbsp;/* Add ptrname/ptrcontent section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_PTRNAME, namebuffer,
+&nbsp;             CURLFORM_PTRCONTENTS, buffer, CURLFORM_NAMELENGTH,
+&nbsp;             namelength, CURLFORM_END);
+&nbsp;
+&nbsp;/* Add name/ptrcontent/contenttype section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "html_code_with_hole",
+&nbsp;             CURLFORM_PTRCONTENTS, htmlbuffer,
+&nbsp;             CURLFORM_CONTENTSLENGTH, htmlbufferlength,
+&nbsp;             CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END);
+&nbsp;
+&nbsp;/* Add simple file section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture",
+&nbsp;             CURLFORM_FILE, "my-face.jpg", CURLFORM_END);
+&nbsp;
+&nbsp;/* Add file/contenttype section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture",
+&nbsp;             CURLFORM_FILE, "my-face.jpg",
+&nbsp;             CURLFORM_CONTENTTYPE, "image/jpeg", CURLFORM_END);
+&nbsp;
+&nbsp;/* Add two file section */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures",
+&nbsp;             CURLFORM_FILE, "my-face.jpg",
+&nbsp;             CURLFORM_FILE, "your-face.jpg", CURLFORM_END);
+&nbsp;
+&nbsp;/* Add two file section using CURLFORM_ARRAY */
+&nbsp;forms[0].option = CURLFORM_FILE;
+&nbsp;forms[0].value  = file1;
+&nbsp;forms[1].option = CURLFORM_FILE;
+&nbsp;forms[1].value  = file2;
+&nbsp;forms[2].option  = CURLFORM_END;
+&nbsp;
+&nbsp;/* Add a buffer to upload */
+&nbsp;curl_formadd(&post, &last,
+&nbsp;             CURLFORM_COPYNAME, "name",
+&nbsp;             CURLFORM_BUFFER, "data",
+&nbsp;             CURLFORM_BUFFERPTR, record,
+&nbsp;             CURLFORM_BUFFERLENGTH, record_length,
+&nbsp;             CURLFORM_END);
+&nbsp;
+&nbsp;/* no option needed for the end marker */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures",
+&nbsp;             CURLFORM_ARRAY, forms, CURLFORM_END);
+&nbsp;/* Add the content of a file as a normal post text value */
+&nbsp;curl_formadd(&post, &last, CURLFORM_COPYNAME, "filecontent",
+&nbsp;             CURLFORM_FILECONTENT, ".bashrc", CURLFORM_END);
+&nbsp;/* Set the form info */
+&nbsp;curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
+&nbsp;
+</pre>
 <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_formfree.html">curl_formfree</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
index 50f2a7c..27bdeda 100644 (file)
Binary files a/docs/libcurl/curl_formadd.pdf and b/docs/libcurl/curl_formadd.pdf differ
index 620220e..4ee26bb 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_formfree man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 3182daa..b713cc6 100644 (file)
Binary files a/docs/libcurl/curl_formfree.pdf and b/docs/libcurl/curl_formfree.pdf differ
index b526221..5781bce 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -26,7 +26,7 @@ curl_formget - serialize a previously built multipart/formdata HTTP POST chain
 .nf
 .B #include <curl/curl.h>
 
-void curl_formget(struct curl_httppost * form, void *userp,
+int curl_formget(struct curl_httppost * form, void *userp,
                   curl_formget_callback append );
 .SH DESCRIPTION
 curl_formget() is used to serialize data previously built/appended with
index 29c0868..c4e40aa 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_formget man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,33 +52,36 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_formget - serialize a previously built multipart/formdata HTTP POST chain <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
-<p class="level0">void curl_formget(struct curl_httppost * form, void *userp,
- &nbsp;                 curl_formget_callback append );
- </pre>
+<p class="level0"><pre class="level0">
+<span Class="bold">#include &lt;curl/curl.h&gt;</span> 
+&nbsp;
+int curl_formget(struct curl_httppost * form, void *userp,
+&nbsp;                 curl_formget_callback append );
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">curl_formget() is used to serialize data previously built/appended with <a Class="emphasis" href="./curl_formadd.html">curl_formadd</a>. Accepts a void pointer as second argument named <span Class="emphasis">userp</span> which will be passed as the first argument to the curl_formget_callback function. 
 <p class="level0"><span Class="bold">typedef size_t (*curl_formget_callback)(void * userp,  const char * buf,</span> <span Class="bold"> size_t  len );</span> 
 <p class="level0">The curl_formget_callback will be executed for each part of the HTTP POST chain. The character buffer passed to the callback must not be freed. The callback should return the buffer length passed to it on success. 
 <p class="level0">If the <span Class="bold">CURLFORM_STREAM</span> option is used in the formpost, it will prevent <a Class="emphasis" href="./curl_formget.html">curl_formget</a> from working until you've performed the actual HTTP request as only then will libcurl get the actual read callback to use! <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">0 means everything was ok, non-zero means an error occurred <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0"><p class="level0">&nbsp;size_t print_httppost_callback(void *arg, const char *buf, size_t len)
- &nbsp;{
- &nbsp;  fwrite(buf, len, 1, stdout);
- &nbsp;  (*(size_t *) arg) += len;
- &nbsp;  return len;
- &nbsp;}
- <p class="level0">&nbsp;size_t print_httppost(struct curl_httppost *post)
- &nbsp;{
- &nbsp;  size_t total_size = 0;
- &nbsp;  if(curl_formget(post, &total_size, print_httppost_callback)) {
- &nbsp;    return (size_t) -1;
- &nbsp;  }
- &nbsp;  return total_size;
- &nbsp;}
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;
+&nbsp;size_t print_httppost_callback(void *arg, const char *buf, size_t len)
+&nbsp;{
+&nbsp;  fwrite(buf, len, 1, stdout);
+&nbsp;  (*(size_t *) arg) += len;
+&nbsp;  return len;
+&nbsp;}
+&nbsp;
+&nbsp;size_t print_httppost(struct curl_httppost *post)
+&nbsp;{
+&nbsp;  size_t total_size = 0;
+&nbsp;  if(curl_formget(post, &total_size, print_httppost_callback)) {
+&nbsp;    return (size_t) -1;
+&nbsp;  }
+&nbsp;  return total_size;
+&nbsp;}
+</pre>
 <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.15.5 <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./curl_formadd.html">curl_formadd</a>, <p class="roffit">
index 6b50dc5..62e679b 100644 (file)
Binary files a/docs/libcurl/curl_formget.pdf and b/docs/libcurl/curl_formget.pdf differ
index 87fd071..e5eaa66 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_free man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 20e226c..8df5481 100644 (file)
Binary files a/docs/libcurl/curl_free.pdf and b/docs/libcurl/curl_free.pdf differ
index ff31ac7..2e7d7aa 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -91,7 +91,7 @@ Sat, 11 Sep 2004 21:32:11 +0200
 This parser was written to handle date formats specified in RFC 822 (including
 the update in RFC 1123) using time zone name or time zone delta and RFC 850
 (obsoleted by RFC 1036) and ANSI C's asctime() format. These formats are the
-only ones RFC2616 says HTTP applications may use.
+only ones RFC 7231 says HTTP applications may use.
 .SH RETURN VALUE
 This function returns -1 when it fails to parse the date string. Otherwise it
 returns the number of seconds as described.
index 53cd9bb..1391898 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_getdate man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -58,33 +63,33 @@ p.roffit {
 <p class="level0"><span Class="bold">day of the week items</span> Specifies a day of the week. Days of the week may be spelled out in full (using english): `Sunday', `Monday', etc or they may be abbreviated to their first three letters. This is usually not info that adds anything. 
 <p class="level0"><span Class="bold">pure numbers</span> If a decimal number of the form YYYYMMDD appears, then YYYY is read as the year, MM as the month number and DD as the day of the month, for the specified calendar date. 
 <p class="level0"><a name="EXAMPLES"></a><h2 class="nroffsh">EXAMPLES</h2>
-<p class="level0"><pre>
-<p class="level0">Sun, 06 Nov 1994 08:49:37 GMT
- Sunday, 06-Nov-94 08:49:37 GMT
- Sun Nov  6 08:49:37 1994
- 06 Nov 1994 08:49:37 GMT
- 06-Nov-94 08:49:37 GMT
- Nov  6 08:49:37 1994
- 06 Nov 1994 08:49:37
- 06-Nov-94 08:49:37
- 1994 Nov 6 08:49:37
- GMT 08:49:37 06-Nov-94 Sunday
- 94 6 Nov 08:49:37
- 1994 Nov 6
- 06-Nov-94
- Sun Nov 6 94
- 1994.Nov.6
- Sun/Nov/6/94/GMT
- Sun, 06 Nov 1994 08:49:37 CET
- 06 Nov 1994 08:49:37 EST
- Sun, 12 Sep 2004 15:05:58 -0700
- Sat, 11 Sep 2004 21:32:11 +0200
- 20040912 15:05:58 -0700
- 20040911 +0200
- </pre>
+<p class="level0"><pre class="level0">
+Sun, 06 Nov 1994 08:49:37 GMT
+Sunday, 06-Nov-94 08:49:37 GMT
+Sun Nov  6 08:49:37 1994
+06 Nov 1994 08:49:37 GMT
+06-Nov-94 08:49:37 GMT
+Nov  6 08:49:37 1994
+06 Nov 1994 08:49:37
+06-Nov-94 08:49:37
+1994 Nov 6 08:49:37
+GMT 08:49:37 06-Nov-94 Sunday
+94 6 Nov 08:49:37
+1994 Nov 6
+06-Nov-94
+Sun Nov 6 94
+1994.Nov.6
+Sun/Nov/6/94/GMT
+Sun, 06 Nov 1994 08:49:37 CET
+06 Nov 1994 08:49:37 EST
+Sun, 12 Sep 2004 15:05:58 -0700
+Sat, 11 Sep 2004 21:32:11 +0200
+20040912 15:05:58 -0700
+20040911 +0200
+</pre>
 
 <p class="level0"><a name="STANDARDS"></a><h2 class="nroffsh">STANDARDS</h2>
-<p class="level0">This parser was written to handle date formats specified in <a href="http://www.ietf.org/rfc/rfc822.txt">RFC 822</a> (including the update in <a href="http://www.ietf.org/rfc/rfc1123.txt">RFC 1123</a>) using time zone name or time zone delta and RFC 850 (obsoleted by <a href="http://www.ietf.org/rfc/rfc1036.txt">RFC 1036</a>) and ANSI C's asctime() format. These formats are the only ones <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> says HTTP applications may use. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">This parser was written to handle date formats specified in <a href="http://www.ietf.org/rfc/rfc822.txt">RFC 822</a> (including the update in <a href="http://www.ietf.org/rfc/rfc1123.txt">RFC 1123</a>) using time zone name or time zone delta and RFC 850 (obsoleted by <a href="http://www.ietf.org/rfc/rfc1036.txt">RFC 1036</a>) and ANSI C's asctime() format. These formats are the only ones <a href="http://www.ietf.org/rfc/rfc7231.txt">RFC 7231</a> says HTTP applications may use. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">This function returns -1 when it fails to parse the date string. Otherwise it returns the number of seconds as described. 
 <p class="level0">If the year is larger than 2037 on systems with 32 bit time_t, this function will return 0x7fffffff (since that is the largest possible signed 32 bit number). 
 <p class="level0">Having a 64 bit time_t is not a guarantee that dates beyond 03:14:07 UTC, January 19, 2038 will work fine. On systems with a 64 bit time_t but with a crippled mktime(), <a Class="emphasis" href="./curl_getdate.html">curl_getdate</a> will return -1 in this case. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
index c004c5a..36c7c7a 100644 (file)
Binary files a/docs/libcurl/curl_getdate.pdf and b/docs/libcurl/curl_getdate.pdf differ
index 0cb0c38..d73a0af 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_getenv man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index fe807fa..16beec2 100644 (file)
Binary files a/docs/libcurl/curl_getenv.pdf and b/docs/libcurl/curl_getenv.pdf differ
index f46b009..1f798d8 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_global_cleanup man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 2fcac63..1de52a5 100644 (file)
Binary files a/docs/libcurl/curl_global_cleanup.pdf and b/docs/libcurl/curl_global_cleanup.pdf differ
index 1552321..7a8ca60 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_global_init man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index f10df0d..6d234fd 100644 (file)
Binary files a/docs/libcurl/curl_global_init.pdf and b/docs/libcurl/curl_global_init.pdf differ
index 9cddef7..a21e63d 100644 (file)
@@ -36,9 +36,10 @@ This function works exactly as \fIcurl_global_init(3)\fP with one addition: it
 allows the application to set callbacks to replace the otherwise used internal
 memory functions.
 
-This man page only adds documentation for the callbacks, see the
-\fIcurl_global_init(3)\fP man page for all the rest. When you use this
-function, all callback arguments must be set to valid function pointers.
+When you use this function, all callback arguments must be set to valid
+function pointers. \fBIf you are using libcurl from multiple threads or with
+the threaded resolver (the default in Windows) the callback replacement
+functions must be thread safe.\fP
 
 The prototypes for the given callbacks should match these:
 .IP "void *malloc_callback(size_t size);"
@@ -51,6 +52,9 @@ To replace realloc()
 To replace strdup()
 .IP "void *calloc_callback(size_t nmemb, size_t size);"
 To replace calloc()
+.RE
+This function is otherwise the same as \fIcurl_global_init(3)\fP, please refer
+to that man page for documentation.
 .SH "CAUTION"
 Manipulating these gives considerable powers to the application to severely
 screw things up for libcurl. Take care!
index 883277c..b8c4bcd 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_global_init_mem man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,8 +52,8 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_global_init_mem - Global libcurl initialisation with memory callbacks <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> <pre>
-<p class="level0"><span Class="bold">CURLcode curl_global_init_mem(long  flags,</span> 
+<p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> <pre class="level0">
+<span Class="bold">CURLcode curl_global_init_mem(long  flags,</span> 
 <span Class="bold"> curl_malloc_callback m,</span> 
 <span Class="bold"> curl_free_callback f,</span> 
 <span Class="bold"> curl_realloc_callback r,</span> 
@@ -57,7 +62,7 @@ p.roffit {
 </pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This function works exactly as <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> with one addition: it allows the application to set callbacks to replace the otherwise used internal memory functions. 
-<p class="level0">This man page only adds documentation for the callbacks, see the <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> man page for all the rest. When you use this function, all callback arguments must be set to valid function pointers. 
+<p class="level0">When you use this function, all callback arguments must be set to valid function pointers. <span class="bold">If you are using libcurl from multiple threads or with the threaded resolver (the default in Windows) the callback replacement functions must be thread safe.</span> 
 <p class="level0">The prototypes for the given callbacks should match these: 
 <p class="level0"><a name="void"></a><span class="nroffip">void *malloc_callback(size_t size);</span> 
 <p class="level1">To replace malloc() 
@@ -68,7 +73,8 @@ p.roffit {
 <p class="level0"><a name="char"></a><span class="nroffip">char *strdup_callback(const char *str);</span> 
 <p class="level1">To replace strdup() 
 <p class="level0"><a name="void"></a><span class="nroffip">void *calloc_callback(size_t nmemb, size_t size);</span> 
-<p class="level1">To replace calloc() <a name="CAUTION"></a><h2 class="nroffsh">CAUTION</h2>
+<p class="level1">To replace calloc() 
+<p class="level0">This function is otherwise the same as <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a>, please refer to that man page for documentation. <a name="CAUTION"></a><h2 class="nroffsh">CAUTION</h2>
 <p class="level0">Manipulating these gives considerable powers to the application to severely screw things up for libcurl. Take care! <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./curl_global_init.html">curl_global_init</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_global_cleanup.html">curl_global_cleanup</a>, <span Class="manpage"> </span> 
 <p class="level0"><p class="roffit">
index fb9b164..1d98c68 100644 (file)
Binary files a/docs/libcurl/curl_global_init_mem.pdf and b/docs/libcurl/curl_global_init_mem.pdf differ
index 9bc9790..6db77f3 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_printf man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -63,7 +68,7 @@ p.roffit {
 <p class="level1"><span Class="bold">curl_maprintf()</span> Like printf() but returns the output string as a malloc()ed string. The returned string must be free()ed by the receiver. 
 <p class="level1"><span Class="bold">curl_mvaprintf()</span> Like curl_maprintf() but takes a va_list pointer argument instead of a variable amount of arguments. 
 <p class="level0">
-<p class="level0">To easily use all these cloned functions instead of the normal ones, #define _MPRINTF_REPLACE before you include the &lt;curl/mprintf.h&gt; file. Then all the normal names like printf, fprintf, sprintf etc will use the curl-functions instead. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">To easily use all these cloned functions instead of the normal ones, &#35;define _MPRINTF_REPLACE before you include the &lt;curl/mprintf.h&gt; file. Then all the normal names like printf, fprintf, sprintf etc will use the curl-functions instead. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">These function will be removed from the public libcurl API in a near future. They will instead be made "available" by source code access only, and then as curlx_-prefixed functions. See lib/README.curlx for further details. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">The <span Class="bold">curl_maprintf</span> and <span Class="bold">curl_mvaprintf</span> functions return a pointer to a newly allocated string, or NULL if it failed. 
 <p class="level0">All other functions return the number of characters they actually outputted. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
index 37c754a..ac74bc4 100644 (file)
Binary files a/docs/libcurl/curl_mprintf.pdf and b/docs/libcurl/curl_mprintf.pdf differ
index a0f2ae2..2929a1c 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_add_handle man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_multi_add_handle - add an easy handle to a multi session <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle); 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Adds a standard easy handle to the multi stack. This function call will make this <span Class="emphasis">multi_handle</span> control the specified <span Class="emphasis">easy_handle</span>. 
index c5fa51b..f9ec566 100644 (file)
Binary files a/docs/libcurl/curl_multi_add_handle.pdf and b/docs/libcurl/curl_multi_add_handle.pdf differ
index 64a7da4..ade4a7f 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_assign man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_multi_assign - set data to associate with an internal socket <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd, &nbsp;                           void *sockptr); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This function creates an association in the multi handle between the given socket and a private pointer of the application. This is designed for <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> uses. 
 <p class="level0">When set, the <span Class="emphasis">sockptr</span> pointer will be passed to all future socket callbacks for the specific <span Class="emphasis">sockfd</span> socket. 
index 4ec8b3e..a3f1e26 100644 (file)
Binary files a/docs/libcurl/curl_multi_assign.pdf and b/docs/libcurl/curl_multi_assign.pdf differ
index b0a52bf..95aa4f9 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_cleanup man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 6db40f0..8204aee 100644 (file)
Binary files a/docs/libcurl/curl_multi_cleanup.pdf and b/docs/libcurl/curl_multi_cleanup.pdf differ
index 64678bd..3a48bbc 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_fdset man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,14 +52,15 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_multi_fdset - extracts file descriptor information from a multi handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLMcode curl_multi_fdset(CURLM *multi_handle,
- &nbsp;                          fd_set *read_fd_set,
- &nbsp;                          fd_set *write_fd_set,
- &nbsp;                          fd_set *exc_fd_set,
- &nbsp;                          int *max_fd);
- <p class="level0"></pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLMcode curl_multi_fdset(CURLM *multi_handle,
+&nbsp;                          fd_set *read_fd_set,
+&nbsp;                          fd_set *write_fd_set,
+&nbsp;                          fd_set *exc_fd_set,
+&nbsp;                          int *max_fd);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This function extracts file descriptor information from a given multi_handle. libcurl returns its fd_set sets. The application can use these to select() on, but be sure to FD_ZERO them before calling this function as <a Class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset</a> only adds its own descriptors, it doesn't zero or otherwise remove any others. The <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> function should be called as soon as one of them is ready to be read from or written to. 
 <p class="level0">If the <span Class="emphasis">read_fd_set</span> argument is not a null pointer, it points to an object of type fd_set that on returns specifies the file descriptors to be checked for being ready to read. 
index 9333266..5b83a0e 100644 (file)
Binary files a/docs/libcurl/curl_multi_fdset.pdf and b/docs/libcurl/curl_multi_fdset.pdf differ
index 8751764..03be341 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -49,8 +49,8 @@ calling \fIcurl_multi_cleanup(3)\fP, \fIcurl_multi_remove_handle(3)\fP or
 \fIcurl_easy_cleanup(3)\fP.
 
 The 'CURLMsg' struct is very simple and only contains very basic information.
-If more involved information is wanted, the particular "easy handle" in
-present in that struct and can thus be used in subsequent regular
+If more involved information is wanted, the particular "easy handle" is
+present in that struct and can be used in subsequent regular
 \fIcurl_easy_getinfo(3)\fP calls (or similar):
 
 .nf
@@ -68,6 +68,24 @@ is done, and then \fBresult\fP contains the return code for the easy handle
 that just completed.
 
 At this point, there are no other \fBmsg\fP types defined.
+.SH EXAMPLE
+.nf
+struct CURLMsg *m;
+
+/* call curl_multi_perform or curl_multi_socket_action first, then loop
+   through and check if there are any transfers that have completed */
+
+do {
+  int msgq = 0;
+  m = curl_multi_info_read(multi_handle, &msgq);
+  if(m && (m->msg == CURLMSG_DONE)) {
+    CURL *e = m->easy_handle;
+    transfers--;
+    curl_multi_remove_handle(multi_handle, e);
+    curl_easy_cleanup(e);
+  }
+} while(m);
+.fi
 .SH "RETURN VALUE"
 A pointer to a filled-in struct, or NULL if it failed or ran out of
 structs. It also writes the number of messages left in the queue (after this
index 816f55b..f83ed9e 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_info_read man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,27 +52,46 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_multi_info_read - read multi stack informationals <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMsg *curl_multi_info_read( CURLM *multi_handle, &nbsp;                              int *msgs_in_queue); 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Ask the multi handle if there are any messages/informationals from the individual transfers. Messages may include informationals such as an error code from the transfer or just the fact that a transfer is completed. More details on these should be written down as well. 
 <p class="level0">Repeated calls to this function will return a new struct each time, until a NULL is returned as a signal that there is no more to get at this point. The integer pointed to with <span Class="emphasis">msgs_in_queue</span> will contain the number of remaining messages after this function was called. 
 <p class="level0">When you fetch a message using this function, it is removed from the internal queue so calling this function again will not return the same message again. It will instead return new messages at each new invoke until the queue is emptied. 
 <p class="level0"><span Class="bold">WARNING:</span> The data the returned pointer points to will not survive calling <a Class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a> or <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>. 
-<p class="level0">The 'CURLMsg' struct is very simple and only contains very basic information. If more involved information is wanted, the particular "easy handle" in present in that struct and can thus be used in subsequent regular <a Class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo</a> calls (or similar): 
-<p class="level0"><pre>
-<p class="level0">&nbsp;struct CURLMsg {
- &nbsp;  CURLMSG msg;       /* what this message means */
- &nbsp;  CURL *easy_handle; /* the handle it concerns */
- &nbsp;  union {
- &nbsp;    void *whatever;    /* message-specific data */
- &nbsp;    CURLcode result;   /* return code for transfer */
- &nbsp;  } data;
- &nbsp;};
- </pre>
+<p class="level0">The 'CURLMsg' struct is very simple and only contains very basic information. If more involved information is wanted, the particular "easy handle" is present in that struct and can be used in subsequent regular <a Class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo</a> calls (or similar): 
+<p class="level0"><pre class="level0">
+&nbsp;struct CURLMsg {
+&nbsp;  CURLMSG msg;       /* what this message means */
+&nbsp;  CURL *easy_handle; /* the handle it concerns */
+&nbsp;  union {
+&nbsp;    void *whatever;    /* message-specific data */
+&nbsp;    CURLcode result;   /* return code for transfer */
+&nbsp;  } data;
+&nbsp;};
+</pre>
 
 <p class="level0">When <span Class="bold">msg</span> is <span Class="emphasis">CURLMSG_DONE</span>, the message identifies a transfer that is done, and then <span Class="bold">result</span> contains the return code for the easy handle that just completed. 
-<p class="level0">At this point, there are no other <span Class="bold">msg</span> types defined. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">At this point, there are no other <span Class="bold">msg</span> types defined. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+struct CURLMsg *m;
+&nbsp;
+/* call curl_multi_perform or curl_multi_socket_action first, then loop
+&nbsp;  through and check if there are any transfers that have completed */
+&nbsp;
+do {
+&nbsp; int msgq = 0;
+&nbsp; m = curl_multi_info_read(multi_handle, &msgq);
+&nbsp; if(m && (m-&gt;msg == CURLMSG_DONE)) {
+&nbsp;   CURL *e = m-&gt;easy_handle;
+&nbsp;   transfers--;
+&nbsp;   curl_multi_remove_handle(multi_handle, e);
+&nbsp;   curl_easy_cleanup(e);
+&nbsp; }
+} while(m);
+</pre>
+
+<p class="level0"><a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a filled-in struct, or NULL if it failed or ran out of structs. It also writes the number of messages left in the queue (after this read) in the integer the second argument points to. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_init.html">curl_multi_init</a>, <a Class="manpage" href="./curl_multi_perform.html">curl_multi_perform</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
index 569c045..9fe52da 100644 (file)
Binary files a/docs/libcurl/curl_multi_info_read.pdf and b/docs/libcurl/curl_multi_info_read.pdf differ
index 9fe752d..fbad8e4 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_init man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 68ed873..168a740 100644 (file)
Binary files a/docs/libcurl/curl_multi_init.pdf and b/docs/libcurl/curl_multi_init.pdf differ
index e0e5b02..3ec1fad 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -49,6 +49,55 @@ added handle fails very quickly, it may never be counted as a running_handle.
 
 When \fIrunning_handles\fP is set to zero (0) on the return of this function,
 there is no longer any transfers in progress.
+.SH EXAMPLE
+.nf
+#ifdef _WIN32
+#define SHORT_SLEEP Sleep(100)
+#else
+#define SHORT_SLEEP usleep(100000)
+#endif
+
+fd_set fdread;
+fd_set fdwrite;
+fd_set fdexcep;
+int maxfd = -1;
+
+long curl_timeo;
+
+curl_multi_timeout(multi_handle, &curl_timeo);
+if(curl_timeo < 0)
+  curl_timeo = 1000;
+
+timeout.tv_sec = curl_timeo / 1000;
+timeout.tv_usec = (curl_timeo % 1000) * 1000;
+
+FD_ZERO(&fdread);
+FD_ZERO(&fdwrite);
+FD_ZERO(&fdexcep);
+
+/* get file descriptors from the transfers */
+mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+
+if(maxfd == -1) {
+  SHORT_SLEEP;
+  rc = 0;
+}
+else
+  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, &still_running);
+  break;
+}
+
+/* if there are still transfers, loop! */
+.fi
 .SH "RETURN VALUE"
 CURLMcode type, general libcurl multi interface error code.
 
index 27c3cbb..bf68abd 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_perform man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,13 +52,63 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_multi_perform - reads/writes available data from each easy handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles); 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This function handles transfers on all the added handles that need attention in an non-blocking fashion. 
 <p class="level0">When an application has found out there's data available for the multi_handle or a timeout has elapsed, the application should call this function to read/write whatever there is to read or write right now etc. <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> returns as soon as the reads/writes are done. This function does not require that there actually is any data available for reading or that data can be written, it can be called just in case. It will write the number of handles that still transfer data in the second argument's integer-pointer. 
 <p class="level0">If the amount of <span Class="emphasis">running_handles</span> is changed from the previous call (or is less than the amount of easy handles you've added to the multi handle), you know that there is one or more transfers less "running". You can then call <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> to get information about each individual completed transfer, and that returned info includes CURLcode and more. If an added handle fails very quickly, it may never be counted as a running_handle. 
-<p class="level0">When <span Class="emphasis">running_handles</span> is set to zero (0) on the return of this function, there is no longer any transfers in progress. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">When <span Class="emphasis">running_handles</span> is set to zero (0) on the return of this function, there is no longer any transfers in progress. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+&#35;ifdef _WIN32
+&#35;define SHORT_SLEEP Sleep(100)
+&#35;else
+&#35;define SHORT_SLEEP usleep(100000)
+&#35;endif
+&nbsp;
+fd_set fdread;
+fd_set fdwrite;
+fd_set fdexcep;
+int maxfd = -1;
+&nbsp;
+long curl_timeo;
+&nbsp;
+curl_multi_timeout(multi_handle, &curl_timeo);
+if(curl_timeo &lt; 0)
+&nbsp; curl_timeo = 1000;
+&nbsp;
+timeout.tv_sec = curl_timeo / 1000;
+timeout.tv_usec = (curl_timeo % 1000) * 1000;
+&nbsp;
+FD_ZERO(&fdread);
+FD_ZERO(&fdwrite);
+FD_ZERO(&fdexcep);
+&nbsp;
+/* get file descriptors from the transfers */
+mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+&nbsp;
+if(maxfd == -1) {
+&nbsp; SHORT_SLEEP;
+&nbsp; rc = 0;
+}
+else
+&nbsp; rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+&nbsp;
+switch(rc) {
+case -1:
+&nbsp; /* select error */
+&nbsp; break;
+case 0:
+default:
+&nbsp; /* timeout or readable/writable sockets */
+&nbsp; curl_multi_perform(multi_handle, &still_running);
+&nbsp; break;
+}
+&nbsp;
+/* if there are still transfers, loop! */
+</pre>
+
+<p class="level0"><a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLMcode type, general libcurl multi interface error code. 
 <p class="level0">Before version 7.20.0: If you receive <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span>, this basically means that you should call <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> again, before you select() on more actions. You don't have to do it immediately, but the return code means that libcurl may have more data available to return or that there may be more data to send off before it is "satisfied". Do note that <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> will return <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span> only when it wants to be called again <span Class="bold">immediately</span>. When things are fine and there is nothing immediate it wants done, it'll return <span Class="emphasis">CURLM_OK</span> and you need to wait for "action" and then call this function again. 
 <p class="level0">This function only returns errors etc regarding the whole multi stack. Problems still might have occurred on individual transfers even when this function returns <span Class="emphasis">CURLM_OK</span>. Use <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> to figure out how individual transfers did. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
index eeb7ea3..d3803f6 100644 (file)
Binary files a/docs/libcurl/curl_multi_perform.pdf and b/docs/libcurl/curl_multi_perform.pdf differ
index 1c2165b..c819fc9 100644 (file)
@@ -28,7 +28,7 @@ curl_multi_remove_handle - remove an easy handle from a multi session
 CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle);
 .ad
 .SH DESCRIPTION
-Removes a given \fIeasy_handle\fI from the \fImulti_handle\fI. This will make
+Removes a given \fIeasy_handle\fP from the \fImulti_handle\fP. This will make
 the specified easy handle be removed from this multi handle's control.
 
 When the easy handle has been removed from a multi stack, it is again
index aff0d60..df13ac7 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_remove_handle man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,10 +52,10 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_multi_remove_handle - remove an easy handle from a multi session <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle); 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Removes a given <span class="emphasis">easy_handle<span class="emphasis"> from the <span class="emphasis">multi_handle<span class="emphasis">. This will make the specified easy handle be removed from this multi handle's control. 
+<p class="level0">Removes a given <span Class="emphasis">easy_handle</span> from the <span Class="emphasis">multi_handle</span>. This will make the specified easy handle be removed from this multi handle's control. 
 <p class="level0">When the easy handle has been removed from a multi stack, it is again perfectly legal to invoke <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> on this easy handle. 
 <p class="level0">Removing an easy handle while being used is perfectly legal and will effectively halt the transfer in progress involving that easy handle. All other easy handles and transfers will remain unaffected. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLMcode type, general libcurl multi interface error code. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
index 8aeff5f..36bafde 100644 (file)
Binary files a/docs/libcurl/curl_multi_remove_handle.pdf and b/docs/libcurl/curl_multi_remove_handle.pdf differ
index 4cd4075..9565193 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -37,30 +37,36 @@ expects. Read this manual carefully as bad input values may cause libcurl to
 behave badly!  You can only set one option in each function call.
 
 .SH OPTIONS
-.IP CURLMOPT_SOCKETFUNCTION
-See \fICURLMOPT_SOCKETFUNCTION(3)\fP
-.IP CURLMOPT_SOCKETDATA
-See \fICURLMOPT_SOCKETDATA(3)\fP
-.IP CURLMOPT_PIPELINING
-See \fICURLMOPT_PIPELINING(3)\fP
-.IP CURLMOPT_TIMERFUNCTION
-See \fICURLMOPT_TIMERFUNCTION(3)\fP
-.IP CURLMOPT_TIMERDATA
-See \fICURLMOPT_TIMERDATA(3)\fP
+.IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
+See \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP
+.IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
+See \fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP
 .IP CURLMOPT_MAX_HOST_CONNECTIONS
 See \fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP
 .IP CURLMOPT_MAX_PIPELINE_LENGTH
 See \fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP
-.IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
-See \fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP
-.IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
-See \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP
+.IP CURLMOPT_MAX_TOTAL_CONNECTIONS
+See \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP
+.IP CURLMOPT_MAXCONNECTS
+See \fICURLMOPT_MAXCONNECTS(3)\fP
+.IP CURLMOPT_PIPELINING
+See \fICURLMOPT_PIPELINING(3)\fP
 .IP CURLMOPT_PIPELINING_SITE_BL
 See \fICURLMOPT_PIPELINING_SITE_BL(3)\fP
 .IP CURLMOPT_PIPELINING_SERVER_BL
 See \fICURLMOPT_PIPELINING_SERVER_BL(3)\fP
-.IP CURLMOPT_MAX_TOTAL_CONNECTIONS
-See \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP
+.IP CURLMOPT_PUSHFUNCTION
+See \fICURLMOPT_PUSHFUNCTION(3)\fP
+.IP CURLMOPT_PUSHDATA
+See \fICURLMOPT_PUSHDATA(3)\fP
+.IP CURLMOPT_SOCKETFUNCTION
+See \fICURLMOPT_SOCKETFUNCTION(3)\fP
+.IP CURLMOPT_SOCKETDATA
+See \fICURLMOPT_SOCKETDATA(3)\fP
+.IP CURLMOPT_TIMERFUNCTION
+See \fICURLMOPT_TIMERFUNCTION(3)\fP
+.IP CURLMOPT_TIMERDATA
+See \fICURLMOPT_TIMERDATA(3)\fP
 .SH RETURNS
 The standard CURLMcode for multi interface error codes. Note that it returns a
 CURLM_UNKNOWN_OPTION if you try setting an option that this version of libcurl
index 55d4208..3edcf24 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_setopt man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,35 +52,41 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_multi_setopt - set options for a curl multi handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a> is used to tell a libcurl multi handle how to behave. By using the appropriate options to <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>, you can change libcurl's behaviour when using that multi handle.  All options are set with the <span Class="emphasis">option</span> followed by the parameter <span Class="emphasis">param</span>. That parameter can be a <span Class="bold">long</span>, a <span Class="bold">function pointer</span>, an <span class="bold">object pointer</span> or a <span Class="bold">curl_off_t</span> type, depending on what the specific option expects. Read this manual carefully as bad input values may cause libcurl to behave badly!  You can only set one option in each function call. 
 <p class="level0"><a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
 <p class="level0">
-<p class="level0"><a name="CURLMOPTSOCKETFUNCTION"></a><span class="nroffip">CURLMOPT_SOCKETFUNCTION</span> 
-<p class="level1">See <span Class="emphasis">CURLMOPT_SOCKETFUNCTION(3)</span> 
-<p class="level0"><a name="CURLMOPTSOCKETDATA"></a><span class="nroffip">CURLMOPT_SOCKETDATA</span> 
-<p class="level1">See <span Class="emphasis">CURLMOPT_SOCKETDATA(3)</span> 
-<p class="level0"><a name="CURLMOPTPIPELINING"></a><span class="nroffip">CURLMOPT_PIPELINING</span> 
-<p class="level1">See <span Class="emphasis">CURLMOPT_PIPELINING(3)</span> 
-<p class="level0"><a name="CURLMOPTTIMERFUNCTION"></a><span class="nroffip">CURLMOPT_TIMERFUNCTION</span> 
-<p class="level1">See <span Class="emphasis">CURLMOPT_TIMERFUNCTION(3)</span> 
-<p class="level0"><a name="CURLMOPTTIMERDATA"></a><span class="nroffip">CURLMOPT_TIMERDATA</span> 
-<p class="level1">See <span Class="emphasis">CURLMOPT_TIMERDATA(3)</span> 
+<p class="level0"><a name="CURLMOPTCHUNKLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</span> 
+<p class="level1">See <span Class="emphasis">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)</span> 
+<p class="level0"><a name="CURLMOPTCONTENTLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</span> 
+<p class="level1">See <span Class="emphasis">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)</span> 
 <p class="level0"><a name="CURLMOPTMAXHOSTCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_HOST_CONNECTIONS</span> 
 <p class="level1">See <span Class="emphasis">CURLMOPT_MAX_HOST_CONNECTIONS(3)</span> 
 <p class="level0"><a name="CURLMOPTMAXPIPELINELENGTH"></a><span class="nroffip">CURLMOPT_MAX_PIPELINE_LENGTH</span> 
 <p class="level1">See <span Class="emphasis">CURLMOPT_MAX_PIPELINE_LENGTH(3)</span> 
-<p class="level0"><a name="CURLMOPTCONTENTLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</span> 
-<p class="level1">See <span Class="emphasis">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)</span> 
-<p class="level0"><a name="CURLMOPTCHUNKLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</span> 
-<p class="level1">See <span Class="emphasis">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)</span> 
+<p class="level0"><a name="CURLMOPTMAXTOTALCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_TOTAL_CONNECTIONS</span> 
+<p class="level1">See <span Class="emphasis">CURLMOPT_MAX_TOTAL_CONNECTIONS(3)</span> 
+<p class="level0"><a name="CURLMOPTMAXCONNECTS"></a><span class="nroffip">CURLMOPT_MAXCONNECTS</span> 
+<p class="level1">See <span Class="emphasis">CURLMOPT_MAXCONNECTS(3)</span> 
+<p class="level0"><a name="CURLMOPTPIPELINING"></a><span class="nroffip">CURLMOPT_PIPELINING</span> 
+<p class="level1">See <span Class="emphasis">CURLMOPT_PIPELINING(3)</span> 
 <p class="level0"><a name="CURLMOPTPIPELININGSITEBL"></a><span class="nroffip">CURLMOPT_PIPELINING_SITE_BL</span> 
 <p class="level1">See <span Class="emphasis">CURLMOPT_PIPELINING_SITE_BL(3)</span> 
 <p class="level0"><a name="CURLMOPTPIPELININGSERVERBL"></a><span class="nroffip">CURLMOPT_PIPELINING_SERVER_BL</span> 
 <p class="level1">See <span Class="emphasis">CURLMOPT_PIPELINING_SERVER_BL(3)</span> 
-<p class="level0"><a name="CURLMOPTMAXTOTALCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_TOTAL_CONNECTIONS</span> 
-<p class="level1">See <span Class="emphasis">CURLMOPT_MAX_TOTAL_CONNECTIONS(3)</span> <a name="RETURNS"></a><h2 class="nroffsh">RETURNS</h2>
+<p class="level0"><a name="CURLMOPTPUSHFUNCTION"></a><span class="nroffip">CURLMOPT_PUSHFUNCTION</span> 
+<p class="level1">See <span Class="emphasis">CURLMOPT_PUSHFUNCTION(3)</span> 
+<p class="level0"><a name="CURLMOPTPUSHDATA"></a><span class="nroffip">CURLMOPT_PUSHDATA</span> 
+<p class="level1">See <span Class="emphasis">CURLMOPT_PUSHDATA(3)</span> 
+<p class="level0"><a name="CURLMOPTSOCKETFUNCTION"></a><span class="nroffip">CURLMOPT_SOCKETFUNCTION</span> 
+<p class="level1">See <span Class="emphasis">CURLMOPT_SOCKETFUNCTION(3)</span> 
+<p class="level0"><a name="CURLMOPTSOCKETDATA"></a><span class="nroffip">CURLMOPT_SOCKETDATA</span> 
+<p class="level1">See <span Class="emphasis">CURLMOPT_SOCKETDATA(3)</span> 
+<p class="level0"><a name="CURLMOPTTIMERFUNCTION"></a><span class="nroffip">CURLMOPT_TIMERFUNCTION</span> 
+<p class="level1">See <span Class="emphasis">CURLMOPT_TIMERFUNCTION(3)</span> 
+<p class="level0"><a name="CURLMOPTTIMERDATA"></a><span class="nroffip">CURLMOPT_TIMERDATA</span> 
+<p class="level1">See <span Class="emphasis">CURLMOPT_TIMERDATA(3)</span> <a name="RETURNS"></a><h2 class="nroffsh">RETURNS</h2>
 <p class="level0">The standard CURLMcode for multi interface error codes. Note that it returns a CURLM_UNKNOWN_OPTION if you try setting an option that this version of libcurl doesn't know of. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.15.4. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_init.html">curl_multi_init</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_socket.html">curl_multi_socket</a>, <a Class="manpage" href="./curl_multi_info_read.html">curl_multi_info_read</a>, <p class="roffit">
index 3f45250..3e2ccaf 100644 (file)
Binary files a/docs/libcurl/curl_multi_setopt.pdf and b/docs/libcurl/curl_multi_setopt.pdf differ
index 3cc80c7..1b73518 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_socket man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,13 +52,14 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_multi_socket - reads/writes available data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd,
- &nbsp;                           int *running_handles);
- <p class="level0">CURLMcode curl_multi_socket_all(CURLM *multi_handle,
- &nbsp;                               int *running_handles);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd,
+&nbsp;                           int *running_handles);
+&nbsp;
+CURLMcode curl_multi_socket_all(CURLM *multi_handle,
+&nbsp;                               int *running_handles);
+</pre>
 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">These functions are deprecated. Do not use! See <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> instead! 
@@ -63,13 +69,15 @@ p.roffit {
 <p class="level0">Usage of <a Class="emphasis" href="./curl_multi_socket.html">curl_multi_socket</a> is deprecated, whereas the function is equivalent to <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> with <span Class="bold">ev_bitmask</span> set to 0. 
 <p class="level0">Force libcurl to (re-)check all its internal sockets and transfers instead of just a single one by calling <a Class="bold" href="./curl_multi_socket_all.html">curl_multi_socket_all</a>. Note that there should not be any reason to use this function! <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK DETAILS</h2>
 <p class="level0">
-<p class="level0">The socket <span Class="bold">callback</span> function uses a prototype like this <pre>
-<p class="level0"><p class="level0">&nbsp; int curl_socket_callback(CURL *easy,      /* easy handle */
- &nbsp;                          curl_socket_t s, /* socket */
- &nbsp;                          int action,      /* see values below */
- &nbsp;                          void *userp,    /* private callback pointer */
- &nbsp;                          void *socketp); /* private socket pointer */
- <p class="level0"></pre>
+<p class="level0">The socket <span Class="bold">callback</span> function uses a prototype like this <pre class="level0">
+&nbsp;
+&nbsp; int curl_socket_callback(CURL *easy,      /* easy handle */
+&nbsp;                          curl_socket_t s, /* socket */
+&nbsp;                          int action,      /* see values below */
+&nbsp;                          void *userp,    /* private callback pointer */
+&nbsp;                          void *socketp); /* private socket pointer */
+&nbsp;
+</pre>
 
 <p class="level0">The callback MUST return 0. 
 <p class="level0">The <span Class="emphasis">easy</span> argument is a pointer to the easy handle that deals with this particular socket. Note that a single handle may work with several sockets simultaneously. 
index a40cb23..6fbf187 100644 (file)
Binary files a/docs/libcurl/curl_multi_socket.pdf and b/docs/libcurl/curl_multi_socket.pdf differ
index 319754b..5d01486 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_socket_action man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,13 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_multi_socket_action - reads/writes available data given an action <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLMcode curl_multi_socket_action(CURLM * multi_handle,
- &nbsp;                                  curl_socket_t sockfd, int ev_bitmask,
- &nbsp;                                  int *running_handles);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLMcode curl_multi_socket_action(CURLM * multi_handle,
+&nbsp;                                  curl_socket_t sockfd, int ev_bitmask,
+&nbsp;                                  int *running_handles);
+</pre>
 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">When the application has detected action on a socket handled by libcurl, it should call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> with the <span Class="bold">sockfd</span> argument set to the socket with the action. When the events on a socket are known, they can be passed as an events bitmask <span Class="bold">ev_bitmask</span> by first setting <span Class="bold">ev_bitmask</span> to 0, and then adding using bitwise OR (|) any combination of events to be chosen from CURL_CSELECT_IN, CURL_CSELECT_OUT or CURL_CSELECT_ERR. When the events on a socket are unknown, pass 0 instead, and libcurl will test the descriptor internally. It is also permissible to pass CURL_SOCKET_TIMEOUT to the <span Class="bold">sockfd</span> parameter in order to initiate the whole process or when a timeout occurs. 
@@ -60,16 +66,18 @@ p.roffit {
 <p class="level0">The <a Class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> functions inform the application about updates in the socket (file descriptor) status by doing none, one, or multiple calls to the socket callback function set with the CURLMOPT_SOCKETFUNCTION option to <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>. They update the status with changes since the previous time the callback was called. 
 <p class="level0">Get the timeout time by setting the <span Class="emphasis">CURLMOPT_TIMERFUNCTION</span> option with <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>. Your application will then get called with information on how long to wait for socket actions at most before doing the timeout action: call the <a Class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> function with the <span Class="bold">sockfd</span> argument set to CURL_SOCKET_TIMEOUT. You can also use the <a Class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout</a> function to poll the value at any given time, but for an event-based system using the callback is far better than relying on polling the timeout value. <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK DETAILS</h2>
 <p class="level0">
-<p class="level0">The socket <span Class="bold">callback</span> function uses a prototype like this <pre>
-<p class="level0"><p class="level0">&nbsp; int curl_socket_callback(CURL *easy,      /* easy handle */
- &nbsp;                          curl_socket_t s, /* socket */
- &nbsp;                          int action,      /* see values below */
- &nbsp;                          void *userp,    /* private callback pointer */
- &nbsp;                          void *socketp); /* private socket pointer,
- &nbsp;                                             <span Class="bold">NULL</span> if not
- &nbsp;                                             previously assigned with
- &nbsp;                                             <a Class="bold" href="./curl_multi_assign.html">curl_multi_assign</a> */
- <p class="level0"></pre>
+<p class="level0">The socket <span Class="bold">callback</span> function uses a prototype like this <pre class="level0">
+&nbsp;
+&nbsp; int curl_socket_callback(CURL *easy,      /* easy handle */
+&nbsp;                          curl_socket_t s, /* socket */
+&nbsp;                          int action,      /* see values below */
+&nbsp;                          void *userp,    /* private callback pointer */
+&nbsp;                          void *socketp); /* private socket pointer,
+&nbsp;                                             <span Class="bold">NULL</span> if not
+&nbsp;                                             previously assigned with
+&nbsp;                                             <a Class="bold" href="./curl_multi_assign.html">curl_multi_assign</a> */
+&nbsp;
+</pre>
 
 <p class="level0">The callback MUST return 0. 
 <p class="level0">The <span Class="emphasis">easy</span> argument is a pointer to the easy handle that deals with this particular socket. Note that a single handle may work with several sockets simultaneously. 
index a492238..6ef1a48 100644 (file)
Binary files a/docs/libcurl/curl_multi_socket_action.pdf and b/docs/libcurl/curl_multi_socket_action.pdf differ
index 34b20a9..58f1193 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_strerror man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,8 +52,8 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_multi_strerror - return string describing error code <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
+<p class="level0"><pre class="level0">
+<span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <span Class="bold">const char *curl_multi_strerror(CURLMcode  errornum );</span> 
 </pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
index a9c4d89..41c7ec0 100644 (file)
Binary files a/docs/libcurl/curl_multi_strerror.pdf and b/docs/libcurl/curl_multi_strerror.pdf differ
index e18b935..f0c9079 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -49,6 +49,22 @@ SHOULD instead use \fIcurl_multi_setopt(3)\fP and its
 Note: if libcurl returns a -1 timeout here, it just means that libcurl
 currently has no stored timeout value. You must not wait too long (more than a
 few seconds perhaps) before you call curl_multi_perform() again.
+.SH EXAMPLE
+.nf
+struct timeval timeout;
+long timeo;
+
+curl_multi_timeout(multi_handle, &timeo);
+if(timeo < 0)
+  /* no set timeout, use a default */
+  timeo = 980;
+
+timeout.tv_sec = timeo / 1000;
+timeout.tv_usec = (timeo % 1000) * 1000;
+
+/* wait for activities no longer than the set timeout */
+select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+.fi
 .SH "RETURN VALUE"
 The standard CURLMcode for multi interface error codes.
 .SH "TYPICAL USAGE"
index 952a6ff..84161c8 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_timeout man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,14 +52,31 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_multi_timeout - how long to wait for action before proceeding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_timeout(CURLM *multi_handle, long *timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">
 <p class="level0">An application using the libcurl multi interface should call <a Class="bold" href="./curl_multi_timeout.html">curl_multi_timeout</a> to figure out how long it should wait for socket actions - at most - before proceeding. 
 <p class="level0">Proceeding means either doing the socket-style timeout action: call the <a Class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> function with the <span Class="bold">sockfd</span> argument set to CURL_SOCKET_TIMEOUT, or call <a Class="bold" href="./curl_multi_perform.html">curl_multi_perform</a> if you're using the simpler and older multi interface approach. 
 <p class="level0">The timeout value returned in the long <span Class="bold">timeout</span> points to, is in number of milliseconds at this very moment. If 0, it means you should proceed immediately without waiting for anything. If it returns -1, there's no timeout at all set. 
 <p class="level0">An application that uses the multi_socket API SHOULD NOT use this function, but SHOULD instead use <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a> and its </span>CURLMOPT_TIMERFUNCTION</span> option for proper and desired behavior. 
-<p class="level0">Note: if libcurl returns a -1 timeout here, it just means that libcurl currently has no stored timeout value. You must not wait too long (more than a few seconds perhaps) before you call curl_multi_perform() again. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Note: if libcurl returns a -1 timeout here, it just means that libcurl currently has no stored timeout value. You must not wait too long (more than a few seconds perhaps) before you call curl_multi_perform() again. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+struct timeval timeout;
+long timeo;
+&nbsp;
+curl_multi_timeout(multi_handle, &timeo);
+if(timeo &lt; 0)
+&nbsp; /* no set timeout, use a default */
+&nbsp; timeo = 980;
+&nbsp;
+timeout.tv_sec = timeo / 1000;
+timeout.tv_usec = (timeo % 1000) * 1000;
+&nbsp;
+/* wait for activities no longer than the set timeout */
+select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+</pre>
+
+<p class="level0"><a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">The standard CURLMcode for multi interface error codes. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
 <p class="level0">Call <a Class="bold" href="./curl_multi_timeout.html">curl_multi_timeout</a>, then wait for action on the sockets. You figure out which sockets to wait for by calling <a Class="bold" href="./curl_multi_fdset.html">curl_multi_fdset</a> or by a previous call to <a Class="bold" href="./curl_multi_socket.html">curl_multi_socket</a>. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.15.4. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
index b5d5501..bd5b983 100644 (file)
Binary files a/docs/libcurl/curl_multi_timeout.pdf and b/docs/libcurl/curl_multi_timeout.pdf differ
index a76fba3..45c2e8c 100644 (file)
@@ -44,7 +44,7 @@ The calling application may pass additional curl_waitfd structures which are
 similar to \fIpoll(2)\fP's pollfd structure to be waited on in the same call.
 
 On completion, if \fInumfds\fP is non-NULL, it will be populated with the
-total number of file descriptors on which interesting events occured. This
+total number of file descriptors on which interesting events occurred. This
 number can include both libcurl internal descriptors as well as descriptors
 provided in \fIextra_fds\fP.
 
index fa10dee..9e85816 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_multi_wait man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,27 +52,28 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_multi_wait - polls on all easy handles in a multi handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLMcode curl_multi_wait(CURLM *multi_handle,
- &nbsp;                         struct curl_waitfd extra_fds[],
- &nbsp;                         unsigned int extra_nfds,
- &nbsp;                         int timeout_ms,
- &nbsp;                         int *numfds);
- <p class="level0"></pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLMcode curl_multi_wait(CURLM *multi_handle,
+&nbsp;                         struct curl_waitfd extra_fds[],
+&nbsp;                         unsigned int extra_nfds,
+&nbsp;                         int timeout_ms,
+&nbsp;                         int *numfds);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><a Class="emphasis" href="./curl_multi_wait.html">curl_multi_wait</a> polls all file descriptors used by the curl easy handles contained in the given multi handle set.  It will block until activity is detected on at least one of the handles or <span Class="emphasis">timeout_ms</span> has passed. Alternatively, if the multi handle has a pending internal timeout that has a shorter expiry time than <span Class="emphasis">timeout_ms</span>, that shorter time will be used instead to make sure timeout accuracy is reasonably kept. 
 <p class="level0">The calling application may pass additional curl_waitfd structures which are similar to <span Class="emphasis">poll(2)</span>'s pollfd structure to be waited on in the same call. 
-<p class="level0">On completion, if <span Class="emphasis">numfds</span> is non-NULL, it will be populated with the total number of file descriptors on which interesting events occured. This number can include both libcurl internal descriptors as well as descriptors provided in <span Class="emphasis">extra_fds</span>. 
+<p class="level0">On completion, if <span Class="emphasis">numfds</span> is non-NULL, it will be populated with the total number of file descriptors on which interesting events occurred. This number can include both libcurl internal descriptors as well as descriptors provided in <span Class="emphasis">extra_fds</span>. 
 <p class="level0">If no extra file descriptors are provided and libcurl has no file descriptor to offer to wait for, this function will return immediately. 
 <p class="level0">This function is encouraged to be used instead of select(3) when using the multi interface to allow applications to easier circumvent the common problem with 1024 maximum file descriptors. <a name="curlwaitfd"></a><h2 class="nroffsh">curl_waitfd</h2>
-<p class="level0"><pre>
-<p class="level0">struct curl_waitfd {
- &nbsp; curl_socket_t fd;
- &nbsp; short events;
- &nbsp; short revents;
- };
- </pre>
+<p class="level0"><pre class="level0">
+struct curl_waitfd {
+&nbsp; curl_socket_t fd;
+&nbsp; short events;
+&nbsp; short revents;
+};
+</pre>
 
 <p class="level0">
 <p class="level0"><a name="CURLWAITPOLLIN"></a><span class="nroffip">CURL_WAIT_POLLIN</span> 
index 1c65e52..3fe2fd0 100644 (file)
Binary files a/docs/libcurl/curl_multi_wait.pdf and b/docs/libcurl/curl_multi_wait.pdf differ
index 55d7174..5c8d071 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_share_cleanup man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 8aa8433..ce11d4b 100644 (file)
Binary files a/docs/libcurl/curl_share_cleanup.pdf and b/docs/libcurl/curl_share_cleanup.pdf differ
index aa7f54c..d101814 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_share_init man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 026cc71..c922db5 100644 (file)
Binary files a/docs/libcurl/curl_share_init.pdf and b/docs/libcurl/curl_share_init.pdf differ
index 9b36241..b410010 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_share_setopt man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index dfa711b..a6798b6 100644 (file)
Binary files a/docs/libcurl/curl_share_setopt.pdf and b/docs/libcurl/curl_share_setopt.pdf differ
index 7dc5423..4d0245e 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_share_strerror man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,8 +52,8 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_share_strerror - return string describing error code <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
+<p class="level0"><pre class="level0">
+<span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <span Class="bold">const char *curl_share_strerror(CURLSHcode  errornum );</span> 
 </pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
index 99d3c2e..536ea8a 100644 (file)
Binary files a/docs/libcurl/curl_share_strerror.pdf and b/docs/libcurl/curl_share_strerror.pdf differ
index 529560e..1a0a657 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -46,6 +46,10 @@ pointer is returned.
  struct curl_slist *slist=NULL;
 
  slist = curl_slist_append(slist, "pragma:");
+
+ if (slist == NULL)
+   return -1;
+
  curl_easy_setopt(handle, CURLOPT_HTTPHEADER, slist);
 
  curl_easy_perform(handle);
index 4134777..3d7b057 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_slist_append man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -53,14 +58,21 @@ p.roffit {
 <p class="level0">curl_slist_append() appends a specified string to a linked list of strings. The existing <span Class="emphasis">list</span> should be passed as the first argument while the new list is returned from this function. The specified <span Class="emphasis">string</span> has been appended when this function returns. curl_slist_append() copies the string. 
 <p class="level0">The list should be freed again (after usage) with <a Class="bold" href="./curl_slist_free_all.html">curl_slist_free_all</a>. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A null pointer is returned if anything went wrong, otherwise the new list pointer is returned. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">&nbsp;CURL handle;
- &nbsp;struct curl_slist *slist=NULL;
- <p class="level0">&nbsp;slist = curl_slist_append(slist, "pragma:");
- &nbsp;curl_easy_setopt(handle, CURLOPT_HTTPHEADER, slist);
- <p class="level0">&nbsp;curl_easy_perform(handle);
- <p class="level0">&nbsp;curl_slist_free_all(slist); /* free the list again */
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;CURL handle;
+&nbsp;struct curl_slist *slist=NULL;
+&nbsp;
+&nbsp;slist = curl_slist_append(slist, "pragma:");
+&nbsp;
+&nbsp;if (slist == NULL)
+&nbsp;  return -1;
+&nbsp;
+&nbsp;curl_easy_setopt(handle, CURLOPT_HTTPHEADER, slist);
+&nbsp;
+&nbsp;curl_easy_perform(handle);
+&nbsp;
+&nbsp;curl_slist_free_all(slist); /* free the list again */
+</pre>
 
 <p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./curl_slist_free_all.html">curl_slist_free_all</a>, <span Class="manpage"> </span> <p class="roffit">
index 740f9a2..fc29638 100644 (file)
Binary files a/docs/libcurl/curl_slist_append.pdf and b/docs/libcurl/curl_slist_append.pdf differ
index f2f4084..d6fc3ff 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_slist_free_all man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index f7cf88b..469e9bb 100644 (file)
@@ -62,12 +62,12 @@ endobj
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-224f381b10d2' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-224f381b10d2' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:17:46+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:17:46+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:7592967e-78d5-11f0-0000-224f381b10d2' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:7592967e-78d5-11f0-0000-224f381b10d2' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:03+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:03+02:00</xmp:CreateDate>
 <xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-224f381b10d2' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6013794a-cf2b-11ef-0000-224f381b10d2'/>
-<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-224f381b10d2' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:7592967e-78d5-11f0-0000-224f381b10d2' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:7592967e-78d5-11f0-0000-224f381b10d2'/>
+<rdf:Description rdf:about='uuid:7592967e-78d5-11f0-0000-224f381b10d2' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
@@ -76,9 +76,9 @@ endobj
 endstream
 endobj
 2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091746+01'00')
-/ModDate(D:20150108091746+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081103+02'00')
+/ModDate(D:20150812081103+02'00')
 /Creator(groff version 1.22.3)>>endobj
 xref
 0 14
@@ -98,7 +98,7 @@ xref
 0000001254 00000 n 
 trailer
 << /Size 14 /Root 1 0 R /Info 2 0 R
-/ID [<DB6875C734A7401EEB3BB1ED327E3A46><DB6875C734A7401EEB3BB1ED327E3A46>]
+/ID [<D9B4DC6DEE3C38505572D5178C4C423B><D9B4DC6DEE3C38505572D5178C4C423B>]
 >>
 startxref
 2831
index c4f6b55..86f9a36 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_strequal man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 9618b8e..4a9e5ed 100644 (file)
Binary files a/docs/libcurl/curl_strequal.pdf and b/docs/libcurl/curl_strequal.pdf differ
index e8180b2..f1e4ff0 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_unescape man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index d3f74c1..648ff3f 100644 (file)
Binary files a/docs/libcurl/curl_unescape.pdf and b/docs/libcurl/curl_unescape.pdf differ
index ab308d0..354bf92 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_version man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 81f0d9c..e57c8cc 100644 (file)
Binary files a/docs/libcurl/curl_version.pdf and b/docs/libcurl/curl_version.pdf differ
index 1b8f9c1..e9d5ab7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -57,7 +57,7 @@ typedef struct {
   char *ssl_version;        /* human readable string */
   long ssl_version_num;     /* not used, always zero */
   const char *libz_version; /* human readable string */
-  const char **protocols;   /* list of protocols */
+  const char * const *protocols; /* protocols */
 
   /* when 'age' is 1 or higher, the members below also exist: */
   const char *ares;         /* human readable string */
index 793fc2a..4c39887 100644 (file)
@@ -4,15 +4,20 @@
 <title>curl_version_info man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -54,29 +59,35 @@ p.roffit {
 <p class="level0">&nbsp;       data = curl_version_info(CURLVERSION_NOW); 
 <p class="level0">Applications should use this information to judge if things are possible to do or not, instead of using compile-time checks, as dynamic/DLL libraries can be changed independent of applications. 
 <p class="level0">The curl_version_info_data struct looks like this 
-<p class="level0"><pre>
-<p class="level0">typedef struct {
- &nbsp; CURLversion age;          /* see description below */
- <p class="level0">&nbsp; /* when 'age' is 0 or higher, the members below also exist: */
- &nbsp; const char *version;      /* human readable string */
- &nbsp; unsigned int version_num; /* numeric representation */
- &nbsp; const char *host;         /* human readable string */
- &nbsp; int features;             /* bitmask, see below */
- &nbsp; char *ssl_version;        /* human readable string */
- &nbsp; long ssl_version_num;     /* not used, always zero */
- &nbsp; const char *libz_version; /* human readable string */
- &nbsp; const char **protocols;   /* list of protocols */
- <p class="level0">&nbsp; /* when 'age' is 1 or higher, the members below also exist: */
- &nbsp; const char *ares;         /* human readable string */
- &nbsp; int ares_num;             /* number */
- <p class="level0">&nbsp; /* when 'age' is 2 or higher, the member below also exists: */
- &nbsp; const char *libidn;       /* human readable string */
- <p class="level0">&nbsp; /* when 'age' is 3 or higher (7.16.1 or later), the members below also
- &nbsp;    exist  */
- &nbsp; int iconv_ver_num;       /* '_libiconv_version' if iconv support enabled */
- <p class="level0">&nbsp; const char *libssh_version; /* human readable string */
- <p class="level0">} curl_version_info_data;
- </pre>
+<p class="level0"><pre class="level0">
+typedef struct {
+&nbsp; CURLversion age;          /* see description below */
+&nbsp;
+&nbsp; /* when 'age' is 0 or higher, the members below also exist: */
+&nbsp; const char *version;      /* human readable string */
+&nbsp; unsigned int version_num; /* numeric representation */
+&nbsp; const char *host;         /* human readable string */
+&nbsp; int features;             /* bitmask, see below */
+&nbsp; char *ssl_version;        /* human readable string */
+&nbsp; long ssl_version_num;     /* not used, always zero */
+&nbsp; const char *libz_version; /* human readable string */
+&nbsp; const char * const *protocols; /* protocols */
+&nbsp;
+&nbsp; /* when 'age' is 1 or higher, the members below also exist: */
+&nbsp; const char *ares;         /* human readable string */
+&nbsp; int ares_num;             /* number */
+&nbsp;
+&nbsp; /* when 'age' is 2 or higher, the member below also exists: */
+&nbsp; const char *libidn;       /* human readable string */
+&nbsp;
+&nbsp; /* when 'age' is 3 or higher (7.16.1 or later), the members below also
+&nbsp;    exist  */
+&nbsp; int iconv_ver_num;       /* '_libiconv_version' if iconv support enabled */
+&nbsp;
+&nbsp; const char *libssh_version; /* human readable string */
+&nbsp;
+} curl_version_info_data;
+</pre>
 
 <p class="level0">
 <p class="level0"><span Class="emphasis">age</span> describes what the age of this struct is. The number depends on how new the libcurl you're using is. You are however guaranteed to get a struct that you have a matching struct for in the header, as you tell libcurl your "age" with the input argument. 
index 2f9b24f..832e238 100644 (file)
Binary files a/docs/libcurl/curl_version_info.pdf and b/docs/libcurl/curl_version_info.pdf differ
index ca77313..f46cc85 100644 (file)
@@ -17,6 +17,7 @@
 <br><a href="libcurl-share.html">libcurl-share</a>
 <br><a href="libcurl-errors.html">libcurl-errors</a>
 <br><a href="libcurl-tutorial.html">libcurl-tutorial</a>
+<br><a href="libcurl-thread.html">libcurl-thread</a>
 
 <H2>Library Functions (A-Z)</H2>
 <a href="curl_easy_cleanup.html">curl_easy_cleanup</A>
index fb1de25..20b4600 100644 (file)
@@ -4,15 +4,20 @@
 <title>libcurl man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 1539974..2e0ad80 100644 (file)
Binary files a/docs/libcurl/libcurl-easy.pdf and b/docs/libcurl/libcurl-easy.pdf differ
index 07091b5..3828996 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -74,7 +74,7 @@ After having sent the FTP password to the server, libcurl expects a proper
 reply. This error code indicates that an unexpected code was returned.
 .IP "CURLE_FTP_ACCEPT_TIMEOUT (12)"
 During an active FTP session while waiting for the server to connect, the
-\fICURLOPT_ACCEPTTIMOUT_MS(3)\fP (or the internal default) timeout expired.
+\fICURLOPT_ACCEPTTIMEOUT_MS(3)\fP (or the internal default) timeout expired.
 .IP "CURLE_FTP_WEIRD_PASV_REPLY (13)"
 libcurl failed to get a sensible result back from the server as a response to
 either a PASV or a EPSV command. The server is flawed.
index 8c9f47b..e6cb9ea 100644 (file)
@@ -4,15 +4,20 @@
 <title>libcurl-errors man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -75,7 +80,7 @@ p.roffit {
 <p class="level0"><a name="CURLEFTPWEIRDPASSREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_PASS_REPLY (11)</span> 
 <p class="level1">After having sent the FTP password to the server, libcurl expects a proper reply. This error code indicates that an unexpected code was returned. 
 <p class="level0"><a name="CURLEFTPACCEPTTIMEOUT"></a><span class="nroffip">CURLE_FTP_ACCEPT_TIMEOUT (12)</span> 
-<p class="level1">During an active FTP session while waiting for the server to connect, the <span Class="emphasis">CURLOPT_ACCEPTTIMOUT_MS(3)</span> (or the internal default) timeout expired. 
+<p class="level1">During an active FTP session while waiting for the server to connect, the <span Class="emphasis">CURLOPT_ACCEPTTIMEOUT_MS(3)</span> (or the internal default) timeout expired. 
 <p class="level0"><a name="CURLEFTPWEIRDPASVREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_PASV_REPLY (13)</span> 
 <p class="level1">libcurl failed to get a sensible result back from the server as a response to either a PASV or a EPSV command. The server is flawed. 
 <p class="level0"><a name="CURLEFTPWEIRD227FORMAT"></a><span class="nroffip">CURLE_FTP_WEIRD_227_FORMAT (14)</span> 
index 351c1b8..08d2554 100644 (file)
Binary files a/docs/libcurl/libcurl-errors.pdf and b/docs/libcurl/libcurl-errors.pdf differ
index 770d4a5..b745b72 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -51,28 +51,27 @@ To use the multi interface, you must first create a 'multi handle' with
 \fIcurl_multi_init(3)\fP. This handle is then used as input to all further
 curl_multi_* functions.
 
-With a multi handle and the multi interface you can do any amount of
-simultaneous transfers in parallel. Each single transfer is built up around an
-easy handle. You must create the easy handles you need, and setup the
-appropriate options for each easy handle, as outlined in the \fIlibcurl(3)\fP
-man page, using \fIcurl_easy_setopt(3)\fP.
+With a multi handle and the multi interface you can do several simultaneous
+transfers in parallel. Each single transfer is built up around an easy
+handle. You create all the easy handles you need, and setup the appropriate
+options for each easy handle using \fIcurl_easy_setopt(3)\fP.
 
 There are two flavours of the multi interface, the select() oriented one and
-the event based one we called multi_socket. You will benefit from reading
-through the description of both versions to full understand how they work and
+the event based one we call multi_socket. You will benefit from reading
+through the description of both versions to fully understand how they work and
 differentiate. We start out with the select() oriented version.
 
-When an easy handle is setup for a transfer, then instead of using
+When an easy handle is setup and ready for transfer, then instead of using
 \fIcurl_easy_perform(3)\fP like when using the easy interface for transfers,
 you should add the easy handle to the multi handle with
-\fIcurl_multi_add_handle(3)\fP. The multi handle is sometimes referred to as a
-\'multi stack\' because of the fact that it may hold a large amount of easy
-handles.
+\fIcurl_multi_add_handle(3)\fP. You can add more easy handles to a multi
+handle at any point, even if other transfers are already running.
 
 Should you change your mind, the easy handle is again removed from the multi
 stack using \fIcurl_multi_remove_handle(3)\fP. Once removed from the multi
 handle, you can again use other easy interface functions like
-\fIcurl_easy_perform(3)\fP on the handle or whatever you think is necessary.
+\fIcurl_easy_perform(3)\fP on the handle or whatever you think is
+necessary. You can remove handles at any point in time during transfers.
 
 Adding the easy handle to the multi handle does not start the transfer.
 Remember that one of the main ideas with this interface is to let your
@@ -84,16 +83,16 @@ current transfers in the multi stack that are ready to transfer anything. It
 may be all, it may be none. When there's nothing more to do for now, it
 returns back to the calling application.
 
-Your application can acquire knowledge from libcurl when it would like to get
-invoked to transfer data, so that you don't have to busy-loop and call that
-\fIcurl_multi_perform(3)\fP like crazy. \fIcurl_multi_fdset(3)\fP offers an
-interface using which you can extract fd_sets from libcurl to use in select()
-or poll() calls in order to get to know when the transfers in the multi stack
-might need attention. This also makes it very easy for your program to wait
-for input on your own private file descriptors at the same time or perhaps
-timeout every now and then, should you want that. \fIcurl_multi_timeout(3)\fP
-also helps you with providing a suitable timeout period for your select()
-call.
+Your application extracts info from libcurl about when it would like to get
+invoked to transfer data or do other work. The most convenient way is to use
+\fIcurl_multi_wait(3)\fP that will help you wait until the application should
+call libcurl again. The older API to accomplish the same thing is
+\fIcurl_multi_fdset(3)\fP that extracts fd_sets from libcurl to use in
+select() or poll() calls in order to get to know when the transfers in the
+multi stack might need attention. Both these APIs allow for your program to
+wait for input on your own private file descriptors at the same time
+\fIcurl_multi_timeout(3)\fP also helps you with providing a suitable timeout
+period for your select() calls.
 
 \fIcurl_multi_perform(3)\fP stores the number of still running transfers in
 one of its input arguments, and by reading that you can figure out when all
@@ -114,9 +113,9 @@ the multi stack. You need to first remove the easy handle with
 \fIcurl_easy_cleanup(3)\fP, or possibly set new options to it and add it again
 with \fIcurl_multi_add_handle(3)\fP to start another transfer.
 
-When all transfers in the multi stack are done, cleanup the multi handle with
+When all transfers in the multi stack are done, close the multi handle with
 \fIcurl_multi_cleanup(3)\fP. Be careful and please note that you \fBMUST\fP
-invoke separate \fIcurl_easy_cleanup(3)\fP calls on every single easy handle
+invoke separate \fIcurl_easy_cleanup(3)\fP calls for every single easy handle
 to clean them up properly.
 
 If you want to re-use an easy handle that was added to the multi handle for
@@ -136,7 +135,7 @@ normal multi interface. Then you also set two callbacks with the
 CURLMOPT_SOCKETFUNCTION and CURLMOPT_TIMERFUNCTION options to
 \fIcurl_multi_setopt(3)\fP. They are two callback functions that libcurl will
 call with information about what sockets to wait for, and for what activity,
-and what the curret timeout time is - if that expires libcurl should be
+and what the current timeout time is - if that expires libcurl should be
 notified.
 
 The multi_socket API is designed to inform your application about which
index a16f3e6..6aad3b8 100644 (file)
@@ -4,15 +4,20 @@
 <title>libcurl-multi man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -55,20 +60,20 @@ p.roffit {
 <p class="level0">3. Enable the application to wait for action on its own file descriptors and curl's file descriptors simultaneous easily. 
 <p class="level0">4. Enable event-based handling and scaling transfers up to and beyond thousands of parallel connections. <a name="ONE"></a><h2 class="nroffsh">ONE MULTI HANDLE MANY EASY HANDLES</h2>
 <p class="level0">To use the multi interface, you must first create a 'multi handle' with <a Class="emphasis" href="./curl_multi_init.html">curl_multi_init</a>. This handle is then used as input to all further curl_multi_* functions. 
-<p class="level0">With a multi handle and the multi interface you can do any amount of simultaneous transfers in parallel. Each single transfer is built up around an easy handle. You must create the easy handles you need, and setup the appropriate options for each easy handle, as outlined in the <a Class="emphasis" href="./libcurl.html">libcurl</a> man page, using <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>. 
-<p class="level0">There are two flavours of the multi interface, the select() oriented one and the event based one we called multi_socket. You will benefit from reading through the description of both versions to full understand how they work and differentiate. We start out with the select() oriented version. 
-<p class="level0">When an easy handle is setup for a transfer, then instead of using <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> like when using the easy interface for transfers, you should add the easy handle to the multi handle with <a Class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle</a>. The multi handle is sometimes referred to as a &acute;multi stack&acute; because of the fact that it may hold a large amount of easy handles
-<p class="level0">Should you change your mind, the easy handle is again removed from the multi stack using <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a>. Once removed from the multi handle, you can again use other easy interface functions like <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> on the handle or whatever you think is necessary. 
+<p class="level0">With a multi handle and the multi interface you can do several simultaneous transfers in parallel. Each single transfer is built up around an easy handle. You create all the easy handles you need, and setup the appropriate options for each easy handle using <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>. 
+<p class="level0">There are two flavours of the multi interface, the select() oriented one and the event based one we call multi_socket. You will benefit from reading through the description of both versions to fully understand how they work and differentiate. We start out with the select() oriented version. 
+<p class="level0">When an easy handle is setup and ready for transfer, then instead of using <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> like when using the easy interface for transfers, you should add the easy handle to the multi handle with <a Class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle</a>. You can add more easy handles to a multi handle at any point, even if other transfers are already running
+<p class="level0">Should you change your mind, the easy handle is again removed from the multi stack using <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a>. Once removed from the multi handle, you can again use other easy interface functions like <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> on the handle or whatever you think is necessary. You can remove handles at any point in time during transfers. 
 <p class="level0">Adding the easy handle to the multi handle does not start the transfer. Remember that one of the main ideas with this interface is to let your application drive. You drive the transfers by invoking <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>. libcurl will then transfer data if there is anything available to transfer. It'll use the callbacks and everything else you have setup in the individual easy handles. It'll transfer data on all current transfers in the multi stack that are ready to transfer anything. It may be all, it may be none. When there's nothing more to do for now, it returns back to the calling application. 
-<p class="level0">Your application can acquire knowledge from libcurl when it would like to get invoked to transfer data, so that you don't have to busy-loop and call that <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> like crazy. <a Class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset</a> offers an interface using which you can extract fd_sets from libcurl to use in select() or poll() calls in order to get to know when the transfers in the multi stack might need attention. This also makes it very easy for your program to wait for input on your own private file descriptors at the same time or perhaps timeout every now and then, should you want that. <a Class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout</a> also helps you with providing a suitable timeout period for your select() call
+<p class="level0">Your application extracts info from libcurl about when it would like to get invoked to transfer data or do other work. The most convenient way is to use <a Class="emphasis" href="./curl_multi_wait.html">curl_multi_wait</a> that will help you wait until the application should call libcurl again. The older API to accomplish the same thing is <a Class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset</a> that extracts fd_sets from libcurl to use in select() or poll() calls in order to get to know when the transfers in the multi stack might need attention. Both these APIs allow for your program to wait for input on your own private file descriptors at the same time <a Class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout</a> also helps you with providing a suitable timeout period for your select() calls
 <p class="level0"><a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> stores the number of still running transfers in one of its input arguments, and by reading that you can figure out when all the transfers in the multi handles are done. 'done' does not mean successful. One or more of the transfers may have failed. Tracking when this number changes, you know when one or more transfers are done. 
 <p class="level0">To get information about completed transfers, to figure out success or not and similar, <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> should be called. It can return a message about a current or previous transfer. Repeated invokes of the function get more messages until the message queue is empty. The information you receive there includes an easy handle pointer which you may use to identify which easy handle the information regards. 
 <p class="level0">When a single transfer is completed, the easy handle is still left added to the multi stack. You need to first remove the easy handle with <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a> and then close it with <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, or possibly set new options to it and add it again with <a Class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle</a> to start another transfer. 
-<p class="level0">When all transfers in the multi stack are done, cleanup the multi handle with <a Class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>. Be careful and please note that you <span Class="bold">MUST</span> invoke separate <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> calls on every single easy handle to clean them up properly. 
+<p class="level0">When all transfers in the multi stack are done, close the multi handle with <a Class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>. Be careful and please note that you <span Class="bold">MUST</span> invoke separate <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> calls for every single easy handle to clean them up properly. 
 <p class="level0">If you want to re-use an easy handle that was added to the multi handle for transfer, you must first remove it from the multi stack and then re-add it again (possibly after having altered some options at your own choice). <a name="MULTISOCKET"></a><h2 class="nroffsh">MULTI_SOCKET</h2>
 <p class="level0"><a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> function offers a way for applications to not only avoid being forced to use select(), but it also offers a much more high-performance API that will make a significant difference for applications using large numbers of simultaneous connections. 
 <p class="level0"><a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> is then used instead of <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>. 
-<p class="level0">When using this API, you add easy handles to the multi handle just as with the normal multi interface. Then you also set two callbacks with the CURLMOPT_SOCKETFUNCTION and CURLMOPT_TIMERFUNCTION options to <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>. They are two callback functions that libcurl will call with information about what sockets to wait for, and for what activity, and what the curret timeout time is - if that expires libcurl should be notified. 
+<p class="level0">When using this API, you add easy handles to the multi handle just as with the normal multi interface. Then you also set two callbacks with the CURLMOPT_SOCKETFUNCTION and CURLMOPT_TIMERFUNCTION options to <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>. They are two callback functions that libcurl will call with information about what sockets to wait for, and for what activity, and what the current timeout time is - if that expires libcurl should be notified. 
 <p class="level0">The multi_socket API is designed to inform your application about which sockets libcurl is currently using and for what activities (read and/or write) on those sockets your application is expected to wait for. 
 <p class="level0">Your application must make sure to receive all sockets informed about in the CURLMOPT_SOCKETFUNCTION callback and make sure it reacts on the given activity on them. When a socket has the given activity, you call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> specifying which socket and action there are. 
 <p class="level0">The CURLMOPT_TIMERFUNCTION callback is called to set a timeout. When that timeout expires, your application should call the <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> function saying it was due to a timeout. 
@@ -76,14 +81,14 @@ p.roffit {
 <p class="level0">When you've added your initial set of handles, you call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> with CURL_SOCKET_TIMEOUT set in the sockfd argument, and you'll get callbacks call that sets you up and you then continue to call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> accordingly when you get activity on the sockets you've been asked to wait on, or if the timeout timer expires. 
 <p class="level0">You can poll <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> to see if any transfer has completed, as it then has a message saying so. <a name="BLOCKING"></a><h2 class="nroffsh">BLOCKING</h2>
 <p class="level0">A few areas in the code are still using blocking code, even when used from the multi interface. While we certainly want and intend for these to get fixed in the future, you should be aware of the following current restrictions: 
-<p class="level0"><pre>
-<p class="level0">&nbsp;- Name resolves unless the c-ares or threaded-resolver backends are used
- &nbsp;- NSS SSL connections
- &nbsp;- HTTP proxy CONNECT operations
- &nbsp;- SOCKS proxy handshakes
- &nbsp;- file:// transfers
- &nbsp;- TELNET transfers
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;- Name resolves unless the c-ares or threaded-resolver backends are used
+&nbsp;- NSS SSL connections
+&nbsp;- HTTP proxy CONNECT operations
+&nbsp;- SOCKS proxy handshakes
+&nbsp;- file:// transfers
+&nbsp;- TELNET transfers
+</pre>
 
 <p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <a Class="manpage" href="./libcurl-easy.html">libcurl-easy</a>, <a Class="manpage" href="./libcurl.html">libcurl</a>, <p class="roffit">
index ac6bb1f..2acd7ef 100644 (file)
Binary files a/docs/libcurl/libcurl-multi.pdf and b/docs/libcurl/libcurl-multi.pdf differ
index 6aa66c8..448d8bb 100644 (file)
@@ -4,15 +4,20 @@
 <title>libcurl-share man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index f7bde54..5544639 100644 (file)
Binary files a/docs/libcurl/libcurl-share.pdf and b/docs/libcurl/libcurl-share.pdf differ
diff --git a/docs/libcurl/libcurl-symbols.3 b/docs/libcurl/libcurl-symbols.3
new file mode 100644 (file)
index 0000000..b7097e5
--- /dev/null
@@ -0,0 +1,1616 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at 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.
+.\" *
+.\" **************************************************************************
+.TH libcurl-symbols 3 "Aug 12, 2015" "libcurl 7.41.0" "libcurl symbols"
+.SH NAME
+libcurl-symbols \- libcurl symbol version information
+.SH "libcurl symbols"
+This man page details version information for public symbols provided in the
+libcurl header files. This lists the first version in which the symbol was
+introduced and for some symbols two additional information pieces:
+
+The first version in which the symbol is marked "deprecated" - meaning that
+since that version no new code should be written to use the symbol as it is
+marked for getting removed in a future.
+
+The last version that featured the specific symbol. Using the symbol in source
+code will make it no longer compile error-free after that specified version.
+
+This man page is automatically generated from the symbols-in-versions file.
+.IP CURLAUTH_ANY
+Introduced in 7.10.6
+.IP CURLAUTH_ANYSAFE
+Introduced in 7.10.6
+.IP CURLAUTH_BASIC
+Introduced in 7.10.6
+.IP CURLAUTH_DIGEST
+Introduced in 7.10.6
+.IP CURLAUTH_DIGEST_IE
+Introduced in 7.19.3
+.IP CURLAUTH_GSSNEGOTIATE
+Introduced in 7.10.6
+Deprecated since 7.38.0
+.IP CURLAUTH_NEGOTIATE
+Introduced in 7.38.0
+.IP CURLAUTH_NONE
+Introduced in 7.10.6
+.IP CURLAUTH_NTLM
+Introduced in 7.10.6
+.IP CURLAUTH_NTLM_WB
+Introduced in 7.22.0
+.IP CURLAUTH_ONLY
+Introduced in 7.21.3
+.IP CURLCLOSEPOLICY_CALLBACK
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_LEAST_RECENTLY_USED
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_LEAST_TRAFFIC
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_NONE
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_OLDEST
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_SLOWEST
+Introduced in 7.7
+.IP CURLE_ABORTED_BY_CALLBACK
+Introduced in 7.1
+.IP CURLE_AGAIN
+Introduced in 7.18.2
+.IP CURLE_ALREADY_COMPLETE
+Introduced in 7.7.2
+.IP CURLE_BAD_CALLING_ORDER
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_BAD_CONTENT_ENCODING
+Introduced in 7.10
+.IP CURLE_BAD_DOWNLOAD_RESUME
+Introduced in 7.10
+.IP CURLE_BAD_FUNCTION_ARGUMENT
+Introduced in 7.1
+.IP CURLE_BAD_PASSWORD_ENTERED
+Introduced in 7.4.2
+Deprecated since 7.17.0
+.IP CURLE_CHUNK_FAILED
+Introduced in 7.21.0
+.IP CURLE_CONV_FAILED
+Introduced in 7.15.4
+.IP CURLE_CONV_REQD
+Introduced in 7.15.4
+.IP CURLE_COULDNT_CONNECT
+Introduced in 7.1
+.IP CURLE_COULDNT_RESOLVE_HOST
+Introduced in 7.1
+.IP CURLE_COULDNT_RESOLVE_PROXY
+Introduced in 7.1
+.IP CURLE_FAILED_INIT
+Introduced in 7.1
+.IP CURLE_FILESIZE_EXCEEDED
+Introduced in 7.10.8
+.IP CURLE_FILE_COULDNT_READ_FILE
+Introduced in 7.1
+.IP CURLE_FTP_ACCEPT_FAILED
+Introduced in 7.24.0
+.IP CURLE_FTP_ACCEPT_TIMEOUT
+Introduced in 7.24.0
+.IP CURLE_FTP_ACCESS_DENIED
+Introduced in 7.1
+.IP CURLE_FTP_BAD_DOWNLOAD_RESUME
+Introduced in 7.1
+Deprecated since 7.1
+.IP CURLE_FTP_BAD_FILE_LIST
+Introduced in 7.21.0
+.IP CURLE_FTP_CANT_GET_HOST
+Introduced in 7.1
+.IP CURLE_FTP_CANT_RECONNECT
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_COULDNT_GET_SIZE
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_COULDNT_RETR_FILE
+Introduced in 7.1
+.IP CURLE_FTP_COULDNT_SET_ASCII
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_COULDNT_SET_BINARY
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_COULDNT_SET_TYPE
+Introduced in 7.17.0
+.IP CURLE_FTP_COULDNT_STOR_FILE
+Introduced in 7.1
+.IP CURLE_FTP_COULDNT_USE_REST
+Introduced in 7.1
+.IP CURLE_FTP_PARTIAL_FILE
+Introduced in 7.1
+Deprecated since 7.1
+.IP CURLE_FTP_PORT_FAILED
+Introduced in 7.1
+.IP CURLE_FTP_PRET_FAILED
+Introduced in 7.20.0
+.IP CURLE_FTP_QUOTE_ERROR
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_SSL_FAILED
+Introduced in 7.11.0
+Deprecated since 7.17.0
+.IP CURLE_FTP_USER_PASSWORD_INCORRECT
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_WEIRD_227_FORMAT
+Introduced in 7.1
+.IP CURLE_FTP_WEIRD_PASS_REPLY
+Introduced in 7.1
+.IP CURLE_FTP_WEIRD_PASV_REPLY
+Introduced in 7.1
+.IP CURLE_FTP_WEIRD_SERVER_REPLY
+Introduced in 7.1
+.IP CURLE_FTP_WEIRD_USER_REPLY
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_WRITE_ERROR
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FUNCTION_NOT_FOUND
+Introduced in 7.1
+.IP CURLE_GOT_NOTHING
+Introduced in 7.9.1
+.IP CURLE_HTTP2
+Introduced in 7.38.0
+.IP CURLE_HTTP_NOT_FOUND
+Introduced in 7.1
+.IP CURLE_HTTP_PORT_FAILED
+Introduced in 7.3
+Deprecated since 7.12.0
+.IP CURLE_HTTP_POST_ERROR
+Introduced in 7.1
+.IP CURLE_HTTP_RANGE_ERROR
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_HTTP_RETURNED_ERROR
+Introduced in 7.10.3
+.IP CURLE_INTERFACE_FAILED
+Introduced in 7.12.0
+.IP CURLE_LDAP_CANNOT_BIND
+Introduced in 7.1
+.IP CURLE_LDAP_INVALID_URL
+Introduced in 7.10.8
+.IP CURLE_LDAP_SEARCH_FAILED
+Introduced in 7.1
+.IP CURLE_LIBRARY_NOT_FOUND
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_LOGIN_DENIED
+Introduced in 7.13.1
+.IP CURLE_MALFORMAT_USER
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_NOT_BUILT_IN
+Introduced in 7.21.5
+.IP CURLE_NO_CONNECTION_AVAILABLE
+Introduced in 7.30.0
+.IP CURLE_OK
+Introduced in 7.1
+.IP CURLE_OPERATION_TIMEDOUT
+Introduced in 7.10.2
+.IP CURLE_OPERATION_TIMEOUTED
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_OUT_OF_MEMORY
+Introduced in 7.1
+.IP CURLE_PARTIAL_FILE
+Introduced in 7.1
+.IP CURLE_PEER_FAILED_VERIFICATION
+Introduced in 7.17.1
+.IP CURLE_QUOTE_ERROR
+Introduced in 7.17.0
+.IP CURLE_RANGE_ERROR
+Introduced in 7.17.0
+.IP CURLE_READ_ERROR
+Introduced in 7.1
+.IP CURLE_RECV_ERROR
+Introduced in 7.10
+.IP CURLE_REMOTE_ACCESS_DENIED
+Introduced in 7.17.0
+.IP CURLE_REMOTE_DISK_FULL
+Introduced in 7.17.0
+.IP CURLE_REMOTE_FILE_EXISTS
+Introduced in 7.17.0
+.IP CURLE_REMOTE_FILE_NOT_FOUND
+Introduced in 7.16.1
+.IP CURLE_RTSP_CSEQ_ERROR
+Introduced in 7.20.0
+.IP CURLE_RTSP_SESSION_ERROR
+Introduced in 7.20.0
+.IP CURLE_SEND_ERROR
+Introduced in 7.10
+.IP CURLE_SEND_FAIL_REWIND
+Introduced in 7.12.3
+.IP CURLE_SHARE_IN_USE
+Introduced in 7.9.6
+Deprecated since 7.17.0
+.IP CURLE_SSH
+Introduced in 7.16.1
+.IP CURLE_SSL_CACERT
+Introduced in 7.10
+.IP CURLE_SSL_CACERT_BADFILE
+Introduced in 7.16.0
+.IP CURLE_SSL_CERTPROBLEM
+Introduced in 7.10
+.IP CURLE_SSL_CIPHER
+Introduced in 7.10
+.IP CURLE_SSL_CONNECT_ERROR
+Introduced in 7.1
+.IP CURLE_SSL_CRL_BADFILE
+Introduced in 7.19.0
+.IP CURLE_SSL_ENGINE_INITFAILED
+Introduced in 7.12.3
+.IP CURLE_SSL_ENGINE_NOTFOUND
+Introduced in 7.9.3
+.IP CURLE_SSL_ENGINE_SETFAILED
+Introduced in 7.9.3
+.IP CURLE_SSL_INVALIDCERTSTATUS
+Introduced in 7.41.0
+.IP CURLE_SSL_ISSUER_ERROR
+Introduced in 7.19.0
+.IP CURLE_SSL_PEER_CERTIFICATE
+Introduced in 7.8
+Deprecated since 7.17.1
+.IP CURLE_SSL_PINNEDPUBKEYNOTMATCH
+Introduced in 7.39.0
+.IP CURLE_SSL_SHUTDOWN_FAILED
+Introduced in 7.16.1
+.IP CURLE_TELNET_OPTION_SYNTAX
+Introduced in 7.7
+.IP CURLE_TFTP_DISKFULL
+Introduced in 7.15.0
+Deprecated since 7.17.0
+.IP CURLE_TFTP_EXISTS
+Introduced in 7.15.0
+Deprecated since 7.17.0
+.IP CURLE_TFTP_ILLEGAL
+Introduced in 7.15.0
+.IP CURLE_TFTP_NOSUCHUSER
+Introduced in 7.15.0
+.IP CURLE_TFTP_NOTFOUND
+Introduced in 7.15.0
+.IP CURLE_TFTP_PERM
+Introduced in 7.15.0
+.IP CURLE_TFTP_UNKNOWNID
+Introduced in 7.15.0
+.IP CURLE_TOO_MANY_REDIRECTS
+Introduced in 7.5
+.IP CURLE_UNKNOWN_OPTION
+Introduced in 7.21.5
+.IP CURLE_UNKNOWN_TELNET_OPTION
+Introduced in 7.7
+.IP CURLE_UNSUPPORTED_PROTOCOL
+Introduced in 7.1
+.IP CURLE_UPLOAD_FAILED
+Introduced in 7.16.3
+.IP CURLE_URL_MALFORMAT
+Introduced in 7.1
+.IP CURLE_URL_MALFORMAT_USER
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_USE_SSL_FAILED
+Introduced in 7.17.0
+.IP CURLE_WRITE_ERROR
+Introduced in 7.1
+.IP CURLFILETYPE_DEVICE_BLOCK
+Introduced in 7.21.0
+.IP CURLFILETYPE_DEVICE_CHAR
+Introduced in 7.21.0
+.IP CURLFILETYPE_DIRECTORY
+Introduced in 7.21.0
+.IP CURLFILETYPE_DOOR
+Introduced in 7.21.0
+.IP CURLFILETYPE_FILE
+Introduced in 7.21.0
+.IP CURLFILETYPE_NAMEDPIPE
+Introduced in 7.21.0
+.IP CURLFILETYPE_SOCKET
+Introduced in 7.21.0
+.IP CURLFILETYPE_SYMLINK
+Introduced in 7.21.0
+.IP CURLFILETYPE_UNKNOWN
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_FILENAME
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_FILETYPE
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_GID
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_HLINKCOUNT
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_PERM
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_SIZE
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_TIME
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_UID
+Introduced in 7.21.0
+.IP CURLFORM_ARRAY
+Introduced in 7.9.1
+.IP CURLFORM_ARRAY_END
+Introduced in 7.9.1
+Deprecated since 7.9.5
+Last used in 7.9.5
+.IP CURLFORM_ARRAY_START
+Introduced in 7.9.1
+Deprecated since 7.9.5
+Last used in 7.9.5
+.IP CURLFORM_BUFFER
+Introduced in 7.9.8
+.IP CURLFORM_BUFFERLENGTH
+Introduced in 7.9.8
+.IP CURLFORM_BUFFERPTR
+Introduced in 7.9.8
+.IP CURLFORM_CONTENTHEADER
+Introduced in 7.9.3
+.IP CURLFORM_CONTENTSLENGTH
+Introduced in 7.9
+.IP CURLFORM_CONTENTTYPE
+Introduced in 7.9
+.IP CURLFORM_COPYCONTENTS
+Introduced in 7.9
+.IP CURLFORM_COPYNAME
+Introduced in 7.9
+.IP CURLFORM_END
+Introduced in 7.9
+.IP CURLFORM_FILE
+Introduced in 7.9
+.IP CURLFORM_FILECONTENT
+Introduced in 7.9.1
+.IP CURLFORM_FILENAME
+Introduced in 7.9.6
+.IP CURLFORM_NAMELENGTH
+Introduced in 7.9
+.IP CURLFORM_NOTHING
+Introduced in 7.9
+.IP CURLFORM_PTRCONTENTS
+Introduced in 7.9
+.IP CURLFORM_PTRNAME
+Introduced in 7.9
+.IP CURLFORM_STREAM
+Introduced in 7.18.2
+.IP CURLFTPAUTH_DEFAULT
+Introduced in 7.12.2
+.IP CURLFTPAUTH_SSL
+Introduced in 7.12.2
+.IP CURLFTPAUTH_TLS
+Introduced in 7.12.2
+.IP CURLFTPMETHOD_DEFAULT
+Introduced in 7.15.3
+.IP CURLFTPMETHOD_MULTICWD
+Introduced in 7.15.3
+.IP CURLFTPMETHOD_NOCWD
+Introduced in 7.15.3
+.IP CURLFTPMETHOD_SINGLECWD
+Introduced in 7.15.3
+.IP CURLFTPSSL_ALL
+Introduced in 7.11.0
+Deprecated since 7.17.0
+.IP CURLFTPSSL_CCC_ACTIVE
+Introduced in 7.16.2
+.IP CURLFTPSSL_CCC_NONE
+Introduced in 7.16.2
+.IP CURLFTPSSL_CCC_PASSIVE
+Introduced in 7.16.1
+.IP CURLFTPSSL_CONTROL
+Introduced in 7.11.0
+Deprecated since 7.17.0
+.IP CURLFTPSSL_NONE
+Introduced in 7.11.0
+Deprecated since 7.17.0
+.IP CURLFTPSSL_TRY
+Introduced in 7.11.0
+Deprecated since 7.17.0
+.IP CURLFTP_CREATE_DIR
+Introduced in 7.19.4
+.IP CURLFTP_CREATE_DIR_NONE
+Introduced in 7.19.4
+.IP CURLFTP_CREATE_DIR_RETRY
+Introduced in 7.19.4
+.IP CURLGSSAPI_DELEGATION_FLAG
+Introduced in 7.22.0
+.IP CURLGSSAPI_DELEGATION_NONE
+Introduced in 7.22.0
+.IP CURLGSSAPI_DELEGATION_POLICY_FLAG
+Introduced in 7.22.0
+.IP CURLHEADER_SEPARATE
+Introduced in 7.37.0
+.IP CURLHEADER_UNIFIED
+Introduced in 7.37.0
+.IP CURLINFO_APPCONNECT_TIME
+Introduced in 7.19.0
+.IP CURLINFO_CERTINFO
+Introduced in 7.19.1
+.IP CURLINFO_CONDITION_UNMET
+Introduced in 7.19.4
+.IP CURLINFO_CONNECT_TIME
+Introduced in 7.4.1
+.IP CURLINFO_CONTENT_LENGTH_DOWNLOAD
+Introduced in 7.6.1
+.IP CURLINFO_CONTENT_LENGTH_UPLOAD
+Introduced in 7.6.1
+.IP CURLINFO_CONTENT_TYPE
+Introduced in 7.9.4
+.IP CURLINFO_COOKIELIST
+Introduced in 7.14.1
+.IP CURLINFO_DATA_IN
+Introduced in 7.9.6
+.IP CURLINFO_DATA_OUT
+Introduced in 7.9.6
+.IP CURLINFO_DOUBLE
+Introduced in 7.4.1
+.IP CURLINFO_EFFECTIVE_URL
+Introduced in 7.4
+.IP CURLINFO_END
+Introduced in 7.9.6
+.IP CURLINFO_FILETIME
+Introduced in 7.5
+.IP CURLINFO_FTP_ENTRY_PATH
+Introduced in 7.15.4
+.IP CURLINFO_HEADER_IN
+Introduced in 7.9.6
+.IP CURLINFO_HEADER_OUT
+Introduced in 7.9.6
+.IP CURLINFO_HEADER_SIZE
+Introduced in 7.4.1
+.IP CURLINFO_HTTPAUTH_AVAIL
+Introduced in 7.10.8
+.IP CURLINFO_HTTP_CODE
+Introduced in 7.4.1
+Deprecated since 7.10.8
+.IP CURLINFO_HTTP_CONNECTCODE
+Introduced in 7.10.7
+.IP CURLINFO_LASTONE
+Introduced in 7.4.1
+.IP CURLINFO_LASTSOCKET
+Introduced in 7.15.2
+.IP CURLINFO_LOCAL_IP
+Introduced in 7.21.0
+.IP CURLINFO_LOCAL_PORT
+Introduced in 7.21.0
+.IP CURLINFO_LONG
+Introduced in 7.4.1
+.IP CURLINFO_MASK
+Introduced in 7.4.1
+.IP CURLINFO_NAMELOOKUP_TIME
+Introduced in 7.4.1
+.IP CURLINFO_NONE
+Introduced in 7.4.1
+.IP CURLINFO_NUM_CONNECTS
+Introduced in 7.12.3
+.IP CURLINFO_OS_ERRNO
+Introduced in 7.12.2
+.IP CURLINFO_PRETRANSFER_TIME
+Introduced in 7.4.1
+.IP CURLINFO_PRIMARY_IP
+Introduced in 7.19.0
+.IP CURLINFO_PRIMARY_PORT
+Introduced in 7.21.0
+.IP CURLINFO_PRIVATE
+Introduced in 7.10.3
+.IP CURLINFO_PROXYAUTH_AVAIL
+Introduced in 7.10.8
+.IP CURLINFO_REDIRECT_COUNT
+Introduced in 7.9.7
+.IP CURLINFO_REDIRECT_TIME
+Introduced in 7.9.7
+.IP CURLINFO_REDIRECT_URL
+Introduced in 7.18.2
+.IP CURLINFO_REQUEST_SIZE
+Introduced in 7.4.1
+.IP CURLINFO_RESPONSE_CODE
+Introduced in 7.10.8
+.IP CURLINFO_RTSP_CLIENT_CSEQ
+Introduced in 7.20.0
+.IP CURLINFO_RTSP_CSEQ_RECV
+Introduced in 7.20.0
+.IP CURLINFO_RTSP_SERVER_CSEQ
+Introduced in 7.20.0
+.IP CURLINFO_RTSP_SESSION_ID
+Introduced in 7.20.0
+.IP CURLINFO_SIZE_DOWNLOAD
+Introduced in 7.4.1
+.IP CURLINFO_SIZE_UPLOAD
+Introduced in 7.4.1
+.IP CURLINFO_SLIST
+Introduced in 7.12.3
+.IP CURLINFO_SPEED_DOWNLOAD
+Introduced in 7.4.1
+.IP CURLINFO_SPEED_UPLOAD
+Introduced in 7.4.1
+.IP CURLINFO_SSL_DATA_IN
+Introduced in 7.12.1
+.IP CURLINFO_SSL_DATA_OUT
+Introduced in 7.12.1
+.IP CURLINFO_SSL_ENGINES
+Introduced in 7.12.3
+.IP CURLINFO_SSL_VERIFYRESULT
+Introduced in 7.5
+.IP CURLINFO_STARTTRANSFER_TIME
+Introduced in 7.9.2
+.IP CURLINFO_STRING
+Introduced in 7.4.1
+.IP CURLINFO_TEXT
+Introduced in 7.9.6
+.IP CURLINFO_TLS_SESSION
+Introduced in 7.34.0
+.IP CURLINFO_TOTAL_TIME
+Introduced in 7.4.1
+.IP CURLINFO_TYPEMASK
+Introduced in 7.4.1
+.IP CURLIOCMD_NOP
+Introduced in 7.12.3
+.IP CURLIOCMD_RESTARTREAD
+Introduced in 7.12.3
+.IP CURLIOE_FAILRESTART
+Introduced in 7.12.3
+.IP CURLIOE_OK
+Introduced in 7.12.3
+.IP CURLIOE_UNKNOWNCMD
+Introduced in 7.12.3
+.IP CURLKHMATCH_MISMATCH
+Introduced in 7.19.6
+.IP CURLKHMATCH_MISSING
+Introduced in 7.19.6
+.IP CURLKHMATCH_OK
+Introduced in 7.19.6
+.IP CURLKHSTAT_DEFER
+Introduced in 7.19.6
+.IP CURLKHSTAT_FINE
+Introduced in 7.19.6
+.IP CURLKHSTAT_FINE_ADD_TO_FILE
+Introduced in 7.19.6
+.IP CURLKHSTAT_REJECT
+Introduced in 7.19.6
+.IP CURLKHTYPE_DSS
+Introduced in 7.19.6
+.IP CURLKHTYPE_RSA
+Introduced in 7.19.6
+.IP CURLKHTYPE_RSA1
+Introduced in 7.19.6
+.IP CURLKHTYPE_UNKNOWN
+Introduced in 7.19.6
+.IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
+Introduced in 7.30.0
+.IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
+Introduced in 7.30.0
+.IP CURLMOPT_MAXCONNECTS
+Introduced in 7.16.3
+.IP CURLMOPT_MAX_HOST_CONNECTIONS
+Introduced in 7.30.0
+.IP CURLMOPT_MAX_PIPELINE_LENGTH
+Introduced in 7.30.0
+.IP CURLMOPT_MAX_TOTAL_CONNECTIONS
+Introduced in 7.30.0
+.IP CURLMOPT_PIPELINING
+Introduced in 7.16.0
+.IP CURLMOPT_PIPELINING_SERVER_BL
+Introduced in 7.30.0
+.IP CURLMOPT_PIPELINING_SITE_BL
+Introduced in 7.30.0
+.IP CURLMOPT_PUSHDATA
+Introduced in 7.44.0
+.IP CURLMOPT_PUSHFUNCTION
+Introduced in 7.44.0
+.IP CURLMOPT_SOCKETDATA
+Introduced in 7.15.4
+.IP CURLMOPT_SOCKETFUNCTION
+Introduced in 7.15.4
+.IP CURLMOPT_TIMERDATA
+Introduced in 7.16.0
+.IP CURLMOPT_TIMERFUNCTION
+Introduced in 7.16.0
+.IP CURLMSG_DONE
+Introduced in 7.9.6
+.IP CURLMSG_NONE
+Introduced in 7.9.6
+.IP CURLM_ADDED_ALREADY
+Introduced in 7.32.1
+.IP CURLM_BAD_EASY_HANDLE
+Introduced in 7.9.6
+.IP CURLM_BAD_HANDLE
+Introduced in 7.9.6
+.IP CURLM_BAD_SOCKET
+Introduced in 7.15.4
+.IP CURLM_CALL_MULTI_PERFORM
+Introduced in 7.9.6
+.IP CURLM_CALL_MULTI_SOCKET
+Introduced in 7.15.5
+.IP CURLM_INTERNAL_ERROR
+Introduced in 7.9.6
+.IP CURLM_OK
+Introduced in 7.9.6
+.IP CURLM_OUT_OF_MEMORY
+Introduced in 7.9.6
+.IP CURLM_UNKNOWN_OPTION
+Introduced in 7.15.4
+.IP CURLOPTTYPE_FUNCTIONPOINT
+Introduced in 7.1
+.IP CURLOPTTYPE_LONG
+Introduced in 7.1
+.IP CURLOPTTYPE_OBJECTPOINT
+Introduced in 7.1
+.IP CURLOPTTYPE_OFF_T
+Introduced in 7.11.0
+.IP CURLOPT_ACCEPTTIMEOUT_MS
+Introduced in 7.24.0
+.IP CURLOPT_ACCEPT_ENCODING
+Introduced in 7.21.6
+.IP CURLOPT_ADDRESS_SCOPE
+Introduced in 7.19.0
+.IP CURLOPT_APPEND
+Introduced in 7.17.0
+.IP CURLOPT_AUTOREFERER
+Introduced in 7.1
+.IP CURLOPT_BUFFERSIZE
+Introduced in 7.10
+.IP CURLOPT_CAINFO
+Introduced in 7.4.2
+.IP CURLOPT_CAPATH
+Introduced in 7.9.8
+.IP CURLOPT_CERTINFO
+Introduced in 7.19.1
+.IP CURLOPT_CHUNK_BGN_FUNCTION
+Introduced in 7.21.0
+.IP CURLOPT_CHUNK_DATA
+Introduced in 7.21.0
+.IP CURLOPT_CHUNK_END_FUNCTION
+Introduced in 7.21.0
+.IP CURLOPT_CLOSEFUNCTION
+Introduced in 7.7
+Deprecated since 7.11.1
+Last used in 7.11.1
+.IP CURLOPT_CLOSEPOLICY
+Introduced in 7.7
+Deprecated since 7.16.1
+.IP CURLOPT_CLOSESOCKETDATA
+Introduced in 7.21.7
+.IP CURLOPT_CLOSESOCKETFUNCTION
+Introduced in 7.21.7
+.IP CURLOPT_CONNECTTIMEOUT
+Introduced in 7.7
+.IP CURLOPT_CONNECTTIMEOUT_MS
+Introduced in 7.16.2
+.IP CURLOPT_CONNECT_ONLY
+Introduced in 7.15.2
+.IP CURLOPT_CONV_FROM_NETWORK_FUNCTION
+Introduced in 7.15.4
+.IP CURLOPT_CONV_FROM_UTF8_FUNCTION
+Introduced in 7.15.4
+.IP CURLOPT_CONV_TO_NETWORK_FUNCTION
+Introduced in 7.15.4
+.IP CURLOPT_COOKIE
+Introduced in 7.1
+.IP CURLOPT_COOKIEFILE
+Introduced in 7.1
+.IP CURLOPT_COOKIEJAR
+Introduced in 7.9
+.IP CURLOPT_COOKIELIST
+Introduced in 7.14.1
+.IP CURLOPT_COOKIESESSION
+Introduced in 7.9.7
+.IP CURLOPT_COPYPOSTFIELDS
+Introduced in 7.17.1
+.IP CURLOPT_CRLF
+Introduced in 7.1
+.IP CURLOPT_CRLFILE
+Introduced in 7.19.0
+.IP CURLOPT_CUSTOMREQUEST
+Introduced in 7.1
+.IP CURLOPT_DEBUGDATA
+Introduced in 7.9.6
+.IP CURLOPT_DEBUGFUNCTION
+Introduced in 7.9.6
+.IP CURLOPT_DIRLISTONLY
+Introduced in 7.17.0
+.IP CURLOPT_DNS_CACHE_TIMEOUT
+Introduced in 7.9.3
+.IP CURLOPT_DNS_INTERFACE
+Introduced in 7.33.0
+.IP CURLOPT_DNS_LOCAL_IP4
+Introduced in 7.33.0
+.IP CURLOPT_DNS_LOCAL_IP6
+Introduced in 7.33.0
+.IP CURLOPT_DNS_SERVERS
+Introduced in 7.24.0
+.IP CURLOPT_DNS_USE_GLOBAL_CACHE
+Introduced in 7.9.3
+Deprecated since 7.11.1
+.IP CURLOPT_EGDSOCKET
+Introduced in 7.7
+.IP CURLOPT_ENCODING
+Introduced in 7.10
+.IP CURLOPT_ERRORBUFFER
+Introduced in 7.1
+.IP CURLOPT_EXPECT_100_TIMEOUT_MS
+Introduced in 7.36.0
+.IP CURLOPT_FAILONERROR
+Introduced in 7.1
+.IP CURLOPT_FILE
+Introduced in 7.1
+Deprecated since 7.9.7
+.IP CURLOPT_FILETIME
+Introduced in 7.5
+.IP CURLOPT_FNMATCH_DATA
+Introduced in 7.21.0
+.IP CURLOPT_FNMATCH_FUNCTION
+Introduced in 7.21.0
+.IP CURLOPT_FOLLOWLOCATION
+Introduced in 7.1
+.IP CURLOPT_FORBID_REUSE
+Introduced in 7.7
+.IP CURLOPT_FRESH_CONNECT
+Introduced in 7.7
+.IP CURLOPT_FTPAPPEND
+Introduced in 7.1
+Deprecated since 7.16.4
+.IP CURLOPT_FTPASCII
+Introduced in 7.1
+Deprecated since 7.11.1
+Last used in 7.11.1
+.IP CURLOPT_FTPLISTONLY
+Introduced in 7.1
+Deprecated since 7.16.4
+.IP CURLOPT_FTPPORT
+Introduced in 7.1
+.IP CURLOPT_FTPSSLAUTH
+Introduced in 7.12.2
+.IP CURLOPT_FTP_ACCOUNT
+Introduced in 7.13.0
+.IP CURLOPT_FTP_ALTERNATIVE_TO_USER
+Introduced in 7.15.5
+.IP CURLOPT_FTP_CREATE_MISSING_DIRS
+Introduced in 7.10.7
+.IP CURLOPT_FTP_FILEMETHOD
+Introduced in 7.15.1
+.IP CURLOPT_FTP_RESPONSE_TIMEOUT
+Introduced in 7.10.8
+.IP CURLOPT_FTP_SKIP_PASV_IP
+Introduced in 7.15.0
+.IP CURLOPT_FTP_SSL
+Introduced in 7.11.0
+Deprecated since 7.16.4
+.IP CURLOPT_FTP_SSL_CCC
+Introduced in 7.16.1
+.IP CURLOPT_FTP_USE_EPRT
+Introduced in 7.10.5
+.IP CURLOPT_FTP_USE_EPSV
+Introduced in 7.9.2
+.IP CURLOPT_FTP_USE_PRET
+Introduced in 7.20.0
+.IP CURLOPT_GSSAPI_DELEGATION
+Introduced in 7.22.0
+.IP CURLOPT_HEADER
+Introduced in 7.1
+.IP CURLOPT_HEADERDATA
+Introduced in 7.10
+.IP CURLOPT_HEADERFUNCTION
+Introduced in 7.7.2
+.IP CURLOPT_HEADEROPT
+Introduced in 7.37.0
+.IP CURLOPT_HTTP200ALIASES
+Introduced in 7.10.3
+.IP CURLOPT_HTTPAUTH
+Introduced in 7.10.6
+.IP CURLOPT_HTTPGET
+Introduced in 7.8.1
+.IP CURLOPT_HTTPHEADER
+Introduced in 7.1
+.IP CURLOPT_HTTPPOST
+Introduced in 7.1
+.IP CURLOPT_HTTPPROXYTUNNEL
+Introduced in 7.3
+.IP CURLOPT_HTTPREQUEST
+Introduced in 7.1
+.IP CURLOPT_HTTP_CONTENT_DECODING
+Introduced in 7.16.2
+.IP CURLOPT_HTTP_TRANSFER_DECODING
+Introduced in 7.16.2
+.IP CURLOPT_HTTP_VERSION
+Introduced in 7.9.1
+.IP CURLOPT_IGNORE_CONTENT_LENGTH
+Introduced in 7.14.1
+.IP CURLOPT_INFILE
+Introduced in 7.1
+Deprecated since 7.9.7
+.IP CURLOPT_INFILESIZE
+Introduced in 7.1
+.IP CURLOPT_INFILESIZE_LARGE
+Introduced in 7.11.0
+.IP CURLOPT_INTERFACE
+Introduced in 7.3
+.IP CURLOPT_INTERLEAVEDATA
+Introduced in 7.20.0
+.IP CURLOPT_INTERLEAVEFUNCTION
+Introduced in 7.20.0
+.IP CURLOPT_IOCTLDATA
+Introduced in 7.12.3
+.IP CURLOPT_IOCTLFUNCTION
+Introduced in 7.12.3
+.IP CURLOPT_IPRESOLVE
+Introduced in 7.10.8
+.IP CURLOPT_ISSUERCERT
+Introduced in 7.19.0
+.IP CURLOPT_KEYPASSWD
+Introduced in 7.17.0
+.IP CURLOPT_KRB4LEVEL
+Introduced in 7.3
+Deprecated since 7.17.0
+.IP CURLOPT_KRBLEVEL
+Introduced in 7.16.4
+.IP CURLOPT_LOCALPORT
+Introduced in 7.15.2
+.IP CURLOPT_LOCALPORTRANGE
+Introduced in 7.15.2
+.IP CURLOPT_LOGIN_OPTIONS
+Introduced in 7.34.0
+.IP CURLOPT_LOW_SPEED_LIMIT
+Introduced in 7.1
+.IP CURLOPT_LOW_SPEED_TIME
+Introduced in 7.1
+.IP CURLOPT_MAIL_AUTH
+Introduced in 7.25.0
+.IP CURLOPT_MAIL_FROM
+Introduced in 7.20.0
+.IP CURLOPT_MAIL_RCPT
+Introduced in 7.20.0
+.IP CURLOPT_MAXCONNECTS
+Introduced in 7.7
+.IP CURLOPT_MAXFILESIZE
+Introduced in 7.10.8
+.IP CURLOPT_MAXFILESIZE_LARGE
+Introduced in 7.11.0
+.IP CURLOPT_MAXREDIRS
+Introduced in 7.5
+.IP CURLOPT_MAX_RECV_SPEED_LARGE
+Introduced in 7.15.5
+.IP CURLOPT_MAX_SEND_SPEED_LARGE
+Introduced in 7.15.5
+.IP CURLOPT_MUTE
+Introduced in 7.1
+Deprecated since 7.8
+Last used in 7.8
+.IP CURLOPT_NETRC
+Introduced in 7.1
+.IP CURLOPT_NETRC_FILE
+Introduced in 7.11.0
+.IP CURLOPT_NEW_DIRECTORY_PERMS
+Introduced in 7.16.4
+.IP CURLOPT_NEW_FILE_PERMS
+Introduced in 7.16.4
+.IP CURLOPT_NOBODY
+Introduced in 7.1
+.IP CURLOPT_NOPROGRESS
+Introduced in 7.1
+.IP CURLOPT_NOPROXY
+Introduced in 7.19.4
+.IP CURLOPT_NOSIGNAL
+Introduced in 7.10
+.IP CURLOPT_NOTHING
+Introduced in 7.1.1
+Deprecated since 7.11.1
+Last used in 7.11.1
+.IP CURLOPT_OPENSOCKETDATA
+Introduced in 7.17.1
+.IP CURLOPT_OPENSOCKETFUNCTION
+Introduced in 7.17.1
+.IP CURLOPT_PASSWDDATA
+Introduced in 7.4.2
+Deprecated since 7.11.1
+Last used in 7.11.1
+.IP CURLOPT_PASSWDFUNCTION
+Introduced in 7.4.2
+Deprecated since 7.11.1
+Last used in 7.11.1
+.IP CURLOPT_PASSWORD
+Introduced in 7.19.1
+.IP CURLOPT_PASV_HOST
+Introduced in 7.12.1
+Deprecated since 7.16.0
+Last used in 7.16.0
+.IP CURLOPT_PATH_AS_IS
+Introduced in 7.42.0
+.IP CURLOPT_PINNEDPUBLICKEY
+Introduced in 7.39.0
+.IP CURLOPT_PIPEWAIT
+Introduced in 7.43.0
+.IP CURLOPT_PORT
+Introduced in 7.1
+.IP CURLOPT_POST
+Introduced in 7.1
+.IP CURLOPT_POST301
+Introduced in 7.17.1
+Deprecated since 7.19.1
+.IP CURLOPT_POSTFIELDS
+Introduced in 7.1
+.IP CURLOPT_POSTFIELDSIZE
+Introduced in 7.2
+.IP CURLOPT_POSTFIELDSIZE_LARGE
+Introduced in 7.11.1
+.IP CURLOPT_POSTQUOTE
+Introduced in 7.1
+.IP CURLOPT_POSTREDIR
+Introduced in 7.19.1
+.IP CURLOPT_PREQUOTE
+Introduced in 7.9.5
+.IP CURLOPT_PRIVATE
+Introduced in 7.10.3
+.IP CURLOPT_PROGRESSDATA
+Introduced in 7.1
+.IP CURLOPT_PROGRESSFUNCTION
+Introduced in 7.1
+Deprecated since 7.32.0
+.IP CURLOPT_PROTOCOLS
+Introduced in 7.19.4
+.IP CURLOPT_PROXY
+Introduced in 7.1
+.IP CURLOPT_PROXYAUTH
+Introduced in 7.10.7
+.IP CURLOPT_PROXYHEADER
+Introduced in 7.37.0
+.IP CURLOPT_PROXYPASSWORD
+Introduced in 7.19.1
+.IP CURLOPT_PROXYPORT
+Introduced in 7.1
+.IP CURLOPT_PROXYTYPE
+Introduced in 7.10
+.IP CURLOPT_PROXYUSERNAME
+Introduced in 7.19.1
+.IP CURLOPT_PROXYUSERPWD
+Introduced in 7.1
+.IP CURLOPT_PROXY_SERVICE_NAME
+Introduced in 7.43.0
+.IP CURLOPT_PROXY_TRANSFER_MODE
+Introduced in 7.18.0
+.IP CURLOPT_PUT
+Introduced in 7.1
+.IP CURLOPT_QUOTE
+Introduced in 7.1
+.IP CURLOPT_RANDOM_FILE
+Introduced in 7.7
+.IP CURLOPT_RANGE
+Introduced in 7.1
+.IP CURLOPT_READDATA
+Introduced in 7.9.7
+.IP CURLOPT_READFUNCTION
+Introduced in 7.1
+.IP CURLOPT_REDIR_PROTOCOLS
+Introduced in 7.19.4
+.IP CURLOPT_REFERER
+Introduced in 7.1
+.IP CURLOPT_RESOLVE
+Introduced in 7.21.3
+.IP CURLOPT_RESUME_FROM
+Introduced in 7.1
+.IP CURLOPT_RESUME_FROM_LARGE
+Introduced in 7.11.0
+.IP CURLOPT_RTSPHEADER
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_CLIENT_CSEQ
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_REQUEST
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_SERVER_CSEQ
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_SESSION_ID
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_STREAM_URI
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_TRANSPORT
+Introduced in 7.20.0
+.IP CURLOPT_SASL_IR
+Introduced in 7.31.0
+.IP CURLOPT_SEEKDATA
+Introduced in 7.18.0
+.IP CURLOPT_SEEKFUNCTION
+Introduced in 7.18.0
+.IP CURLOPT_SERVER_RESPONSE_TIMEOUT
+Introduced in 7.20.0
+.IP CURLOPT_SERVICE_NAME
+Introduced in 7.43.0
+.IP CURLOPT_SHARE
+Introduced in 7.10
+.IP CURLOPT_SOCKOPTDATA
+Introduced in 7.16.0
+.IP CURLOPT_SOCKOPTFUNCTION
+Introduced in 7.16.0
+.IP CURLOPT_SOCKS5_GSSAPI_NEC
+Introduced in 7.19.4
+.IP CURLOPT_SOCKS5_GSSAPI_SERVICE
+Introduced in 7.19.4
+.IP CURLOPT_SOURCE_HOST
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_PATH
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_PORT
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_POSTQUOTE
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_PREQUOTE
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_QUOTE
+Introduced in 7.13.0
+.IP CURLOPT_SOURCE_URL
+Introduced in 7.13.0
+.IP CURLOPT_SOURCE_USERPWD
+Introduced in 7.12.1
+.IP CURLOPT_SSH_AUTH_TYPES
+Introduced in 7.16.1
+.IP CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
+Introduced in 7.17.1
+.IP CURLOPT_SSH_KEYDATA
+Introduced in 7.19.6
+.IP CURLOPT_SSH_KEYFUNCTION
+Introduced in 7.19.6
+.IP CURLOPT_SSH_KNOWNHOSTS
+Introduced in 7.19.6
+.IP CURLOPT_SSH_PRIVATE_KEYFILE
+Introduced in 7.16.1
+.IP CURLOPT_SSH_PUBLIC_KEYFILE
+Introduced in 7.16.1
+.IP CURLOPT_SSLCERT
+Introduced in 7.1
+.IP CURLOPT_SSLCERTPASSWD
+Introduced in 7.1.1
+Deprecated since 7.17.0
+.IP CURLOPT_SSLCERTTYPE
+Introduced in 7.9.3
+.IP CURLOPT_SSLENGINE
+Introduced in 7.9.3
+.IP CURLOPT_SSLENGINE_DEFAULT
+Introduced in 7.9.3
+.IP CURLOPT_SSLKEY
+Introduced in 7.9.3
+.IP CURLOPT_SSLKEYPASSWD
+Introduced in 7.9.3
+Deprecated since 7.17.0
+.IP CURLOPT_SSLKEYTYPE
+Introduced in 7.9.3
+.IP CURLOPT_SSLVERSION
+Introduced in 7.1
+.IP CURLOPT_SSL_CIPHER_LIST
+Introduced in 7.9
+.IP CURLOPT_SSL_CTX_DATA
+Introduced in 7.10.6
+.IP CURLOPT_SSL_CTX_FUNCTION
+Introduced in 7.10.6
+.IP CURLOPT_SSL_ENABLE_ALPN
+Introduced in 7.36.0
+.IP CURLOPT_SSL_ENABLE_NPN
+Introduced in 7.36.0
+.IP CURLOPT_SSL_FALSESTART
+Introduced in 7.42.0
+.IP CURLOPT_SSL_OPTIONS
+Introduced in 7.25.0
+.IP CURLOPT_SSL_SESSIONID_CACHE
+Introduced in 7.16.0
+.IP CURLOPT_SSL_VERIFYHOST
+Introduced in 7.8.1
+.IP CURLOPT_SSL_VERIFYPEER
+Introduced in 7.4.2
+.IP CURLOPT_SSL_VERIFYSTATUS
+Introduced in 7.41.0
+.IP CURLOPT_STDERR
+Introduced in 7.1
+.IP CURLOPT_TCP_KEEPALIVE
+Introduced in 7.25.0
+.IP CURLOPT_TCP_KEEPIDLE
+Introduced in 7.25.0
+.IP CURLOPT_TCP_KEEPINTVL
+Introduced in 7.25.0
+.IP CURLOPT_TCP_NODELAY
+Introduced in 7.11.2
+.IP CURLOPT_TELNETOPTIONS
+Introduced in 7.7
+.IP CURLOPT_TFTP_BLKSIZE
+Introduced in 7.19.4
+.IP CURLOPT_TIMECONDITION
+Introduced in 7.1
+.IP CURLOPT_TIMEOUT
+Introduced in 7.1
+.IP CURLOPT_TIMEOUT_MS
+Introduced in 7.16.2
+.IP CURLOPT_TIMEVALUE
+Introduced in 7.1
+.IP CURLOPT_TLSAUTH_PASSWORD
+Introduced in 7.21.4
+.IP CURLOPT_TLSAUTH_TYPE
+Introduced in 7.21.4
+.IP CURLOPT_TLSAUTH_USERNAME
+Introduced in 7.21.4
+.IP CURLOPT_TRANSFERTEXT
+Introduced in 7.1.1
+.IP CURLOPT_TRANSFER_ENCODING
+Introduced in 7.21.6
+.IP CURLOPT_UNIX_SOCKET_PATH
+Introduced in 7.40.0
+.IP CURLOPT_UNRESTRICTED_AUTH
+Introduced in 7.10.4
+.IP CURLOPT_UPLOAD
+Introduced in 7.1
+.IP CURLOPT_URL
+Introduced in 7.1
+.IP CURLOPT_USERAGENT
+Introduced in 7.1
+.IP CURLOPT_USERNAME
+Introduced in 7.19.1
+.IP CURLOPT_USERPWD
+Introduced in 7.1
+.IP CURLOPT_USE_SSL
+Introduced in 7.17.0
+.IP CURLOPT_VERBOSE
+Introduced in 7.1
+.IP CURLOPT_WILDCARDMATCH
+Introduced in 7.21.0
+.IP CURLOPT_WRITEDATA
+Introduced in 7.9.7
+.IP CURLOPT_WRITEFUNCTION
+Introduced in 7.1
+.IP CURLOPT_WRITEHEADER
+Introduced in 7.1
+.IP CURLOPT_WRITEINFO
+Introduced in 7.1
+.IP CURLOPT_XFERINFODATA
+Introduced in 7.32.0
+.IP CURLOPT_XFERINFOFUNCTION
+Introduced in 7.32.0
+.IP CURLOPT_XOAUTH2_BEARER
+Introduced in 7.33.0
+.IP CURLPAUSE_ALL
+Introduced in 7.18.0
+.IP CURLPAUSE_CONT
+Introduced in 7.18.0
+.IP CURLPAUSE_RECV
+Introduced in 7.18.0
+.IP CURLPAUSE_RECV_CONT
+Introduced in 7.18.0
+.IP CURLPAUSE_SEND
+Introduced in 7.18.0
+.IP CURLPAUSE_SEND_CONT
+Introduced in 7.18.0
+.IP CURLPIPE_HTTP1
+Introduced in 7.43.0
+.IP CURLPIPE_MULTIPLEX
+Introduced in 7.43.0
+.IP CURLPIPE_NOTHING
+Introduced in 7.43.0
+.IP CURLPROTO_ALL
+Introduced in 7.19.4
+.IP CURLPROTO_DICT
+Introduced in 7.19.4
+.IP CURLPROTO_FILE
+Introduced in 7.19.4
+.IP CURLPROTO_FTP
+Introduced in 7.19.4
+.IP CURLPROTO_FTPS
+Introduced in 7.19.4
+.IP CURLPROTO_GOPHER
+Introduced in 7.21.2
+.IP CURLPROTO_HTTP
+Introduced in 7.19.4
+.IP CURLPROTO_HTTPS
+Introduced in 7.19.4
+.IP CURLPROTO_IMAP
+Introduced in 7.20.0
+.IP CURLPROTO_IMAPS
+Introduced in 7.20.0
+.IP CURLPROTO_LDAP
+Introduced in 7.19.4
+.IP CURLPROTO_LDAPS
+Introduced in 7.19.4
+.IP CURLPROTO_POP3
+Introduced in 7.20.0
+.IP CURLPROTO_POP3S
+Introduced in 7.20.0
+.IP CURLPROTO_RTMP
+Introduced in 7.21.0
+.IP CURLPROTO_RTMPE
+Introduced in 7.21.0
+.IP CURLPROTO_RTMPS
+Introduced in 7.21.0
+.IP CURLPROTO_RTMPT
+Introduced in 7.21.0
+.IP CURLPROTO_RTMPTE
+Introduced in 7.21.0
+.IP CURLPROTO_RTMPTS
+Introduced in 7.21.0
+.IP CURLPROTO_RTSP
+Introduced in 7.20.0
+.IP CURLPROTO_SCP
+Introduced in 7.19.4
+.IP CURLPROTO_SFTP
+Introduced in 7.19.4
+.IP CURLPROTO_SMB
+Introduced in 7.40.0
+.IP CURLPROTO_SMBS
+Introduced in 7.40.0
+.IP CURLPROTO_SMTP
+Introduced in 7.20.0
+.IP CURLPROTO_SMTPS
+Introduced in 7.20.0
+.IP CURLPROTO_TELNET
+Introduced in 7.19.4
+.IP CURLPROTO_TFTP
+Introduced in 7.19.4
+.IP CURLPROXY_HTTP
+Introduced in 7.10
+.IP CURLPROXY_HTTP_1_0
+Introduced in 7.19.4
+.IP CURLPROXY_SOCKS4
+Introduced in 7.10
+.IP CURLPROXY_SOCKS4A
+Introduced in 7.18.0
+.IP CURLPROXY_SOCKS5
+Introduced in 7.10
+.IP CURLPROXY_SOCKS5_HOSTNAME
+Introduced in 7.18.0
+.IP CURLSHE_BAD_OPTION
+Introduced in 7.10.3
+.IP CURLSHE_INVALID
+Introduced in 7.10.3
+.IP CURLSHE_IN_USE
+Introduced in 7.10.3
+.IP CURLSHE_NOMEM
+Introduced in 7.12.0
+.IP CURLSHE_NOT_BUILT_IN
+Introduced in 7.23.0
+.IP CURLSHE_OK
+Introduced in 7.10.3
+.IP CURLSHOPT_LOCKFUNC
+Introduced in 7.10.3
+.IP CURLSHOPT_NONE
+Introduced in 7.10.3
+.IP CURLSHOPT_SHARE
+Introduced in 7.10.3
+.IP CURLSHOPT_UNLOCKFUNC
+Introduced in 7.10.3
+.IP CURLSHOPT_UNSHARE
+Introduced in 7.10.3
+.IP CURLSHOPT_USERDATA
+Introduced in 7.10.3
+.IP CURLSOCKTYPE_ACCEPT
+Introduced in 7.28.0
+.IP CURLSOCKTYPE_IPCXN
+Introduced in 7.16.0
+.IP CURLSSH_AUTH_AGENT
+Introduced in 7.28.0
+.IP CURLSSH_AUTH_ANY
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_DEFAULT
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_HOST
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_KEYBOARD
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_NONE
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_PASSWORD
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_PUBLICKEY
+Introduced in 7.16.1
+.IP CURLSSLBACKEND_AXTLS
+Introduced in 7.38.0
+.IP CURLSSLBACKEND_CYASSL
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_DARWINSSL
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_GNUTLS
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_GSKIT
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_NONE
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_NSS
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_OPENSSL
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_POLARSSL
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_QSOSSL
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_SCHANNEL
+Introduced in 7.34.0
+.IP CURLSSLOPT_ALLOW_BEAST
+Introduced in 7.25.0
+.IP CURLSSLOPT_NO_REVOKE
+Introduced in 7.44.0
+.IP CURLUSESSL_ALL
+Introduced in 7.17.0
+.IP CURLUSESSL_CONTROL
+Introduced in 7.17.0
+.IP CURLUSESSL_NONE
+Introduced in 7.17.0
+.IP CURLUSESSL_TRY
+Introduced in 7.17.0
+.IP CURLVERSION_FIRST
+Introduced in 7.10
+.IP CURLVERSION_FOURTH
+Introduced in 7.16.1
+.IP CURLVERSION_NOW
+Introduced in 7.10
+.IP CURLVERSION_SECOND
+Introduced in 7.11.1
+.IP CURLVERSION_THIRD
+Introduced in 7.12.0
+.IP CURL_CHUNK_BGN_FUNC_FAIL
+Introduced in 7.21.0
+.IP CURL_CHUNK_BGN_FUNC_OK
+Introduced in 7.21.0
+.IP CURL_CHUNK_BGN_FUNC_SKIP
+Introduced in 7.21.0
+.IP CURL_CHUNK_END_FUNC_FAIL
+Introduced in 7.21.0
+.IP CURL_CHUNK_END_FUNC_OK
+Introduced in 7.21.0
+.IP CURL_CSELECT_ERR
+Introduced in 7.16.3
+.IP CURL_CSELECT_IN
+Introduced in 7.16.3
+.IP CURL_CSELECT_OUT
+Introduced in 7.16.3
+.IP CURL_EASY_NONE
+Introduced in 7.14.0
+.IP CURL_EASY_TIMEOUT
+Introduced in 7.14.0
+.IP CURL_ERROR_SIZE
+Introduced in 7.1
+.IP CURL_FNMATCHFUNC_FAIL
+Introduced in 7.21.0
+.IP CURL_FNMATCHFUNC_MATCH
+Introduced in 7.21.0
+.IP CURL_FNMATCHFUNC_NOMATCH
+Introduced in 7.21.0
+.IP CURL_FORMADD_DISABLED
+Introduced in 7.12.1
+.IP CURL_FORMADD_ILLEGAL_ARRAY
+Introduced in 7.9.8
+.IP CURL_FORMADD_INCOMPLETE
+Introduced in 7.9.8
+.IP CURL_FORMADD_MEMORY
+Introduced in 7.9.8
+.IP CURL_FORMADD_NULL
+Introduced in 7.9.8
+.IP CURL_FORMADD_OK
+Introduced in 7.9.8
+.IP CURL_FORMADD_OPTION_TWICE
+Introduced in 7.9.8
+.IP CURL_FORMADD_UNKNOWN_OPTION
+Introduced in 7.9.8
+.IP CURL_GLOBAL_ACK_EINTR
+Introduced in 7.30.0
+.IP CURL_GLOBAL_ALL
+Introduced in 7.8
+.IP CURL_GLOBAL_DEFAULT
+Introduced in 7.8
+.IP CURL_GLOBAL_NOTHING
+Introduced in 7.8
+.IP CURL_GLOBAL_SSL
+Introduced in 7.8
+.IP CURL_GLOBAL_WIN32
+Introduced in 7.8.1
+.IP CURL_HTTP_VERSION_1_0
+Introduced in 7.9.1
+.IP CURL_HTTP_VERSION_1_1
+Introduced in 7.9.1
+.IP CURL_HTTP_VERSION_2_0
+Introduced in 7.33.0
+.IP CURL_HTTP_VERSION_2
+Introduced in 7.43.0
+.IP CURL_HTTP_VERSION_NONE
+Introduced in 7.9.1
+.IP CURL_IPRESOLVE_V4
+Introduced in 7.10.8
+.IP CURL_IPRESOLVE_V6
+Introduced in 7.10.8
+.IP CURL_IPRESOLVE_WHATEVER
+Introduced in 7.10.8
+.IP CURL_LOCK_ACCESS_NONE
+Introduced in 7.10.3
+.IP CURL_LOCK_ACCESS_SHARED
+Introduced in 7.10.3
+.IP CURL_LOCK_ACCESS_SINGLE
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_CONNECT
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_COOKIE
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_DNS
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_NONE
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_SHARE
+Introduced in 7.10.4
+.IP CURL_LOCK_DATA_SSL_SESSION
+Introduced in 7.10.3
+.IP CURL_LOCK_TYPE_CONNECT
+Introduced in 7.10
+.IP CURL_LOCK_TYPE_COOKIE
+Introduced in 7.10
+.IP CURL_LOCK_TYPE_DNS
+Introduced in 7.10
+.IP CURL_LOCK_TYPE_NONE
+Introduced in 7.10
+.IP CURL_LOCK_TYPE_SSL_SESSION
+Introduced in 7.10
+.IP CURL_MAX_HTTP_HEADER
+Introduced in 7.19.7
+.IP CURL_MAX_WRITE_SIZE
+Introduced in 7.9.7
+.IP CURL_NETRC_IGNORED
+Introduced in 7.9.8
+.IP CURL_NETRC_OPTIONAL
+Introduced in 7.9.8
+.IP CURL_NETRC_REQUIRED
+Introduced in 7.9.8
+.IP CURL_POLL_IN
+Introduced in 7.14.0
+.IP CURL_POLL_INOUT
+Introduced in 7.14.0
+.IP CURL_POLL_NONE
+Introduced in 7.14.0
+.IP CURL_POLL_OUT
+Introduced in 7.14.0
+.IP CURL_POLL_REMOVE
+Introduced in 7.14.0
+.IP CURL_PROGRESS_BAR
+Introduced in 7.1.1
+.IP CURL_PROGRESS_STATS
+Introduced in 7.1.1
+.IP CURL_PUSH_DENY
+Introduced in 7.44.0
+.IP CURL_PUSH_OK
+Introduced in 7.44.0
+.IP CURL_READFUNC_ABORT
+Introduced in 7.12.1
+.IP CURL_READFUNC_PAUSE
+Introduced in 7.18.0
+.IP CURL_REDIR_GET_ALL
+Introduced in 7.19.1
+.IP CURL_REDIR_POST_301
+Introduced in 7.19.1
+.IP CURL_REDIR_POST_302
+Introduced in 7.19.1
+.IP CURL_REDIR_POST_303
+Introduced in 7.25.1
+.IP CURL_REDIR_POST_ALL
+Introduced in 7.19.1
+.IP CURL_RTSPREQ_ANNOUNCE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_DESCRIBE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_GET_PARAMETER
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_NONE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_OPTIONS
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_PAUSE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_PLAY
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_RECEIVE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_RECORD
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_SETUP
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_SET_PARAMETER
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_TEARDOWN
+Introduced in 7.20.0
+.IP CURL_SEEKFUNC_CANTSEEK
+Introduced in 7.19.5
+.IP CURL_SEEKFUNC_FAIL
+Introduced in 7.19.5
+.IP CURL_SEEKFUNC_OK
+Introduced in 7.19.5
+.IP CURL_SOCKET_BAD
+Introduced in 7.14.0
+.IP CURL_SOCKET_TIMEOUT
+Introduced in 7.14.0
+.IP CURL_SOCKOPT_ALREADY_CONNECTED
+Introduced in 7.21.5
+.IP CURL_SOCKOPT_ERROR
+Introduced in 7.21.5
+.IP CURL_SOCKOPT_OK
+Introduced in 7.21.5
+.IP CURL_SSLVERSION_DEFAULT
+Introduced in 7.9.2
+.IP CURL_SSLVERSION_SSL
+Introduced in 
+.IP CURL_SSLVERSION_SSL
+Introduced in 
+.IP CURL_SSLVERSION_TLS
+Introduced in 
+.IP CURL_SSLVERSION_TLS
+Introduced in 
+.IP CURL_SSLVERSION_TLS
+Introduced in 
+.IP CURL_SSLVERSION_TLS
+Introduced in 
+.IP CURL_TIMECOND_IFMODSINCE
+Introduced in 7.9.7
+.IP CURL_TIMECOND_IFUNMODSINCE
+Introduced in 7.9.7
+.IP CURL_TIMECOND_LASTMOD
+Introduced in 7.9.7
+.IP CURL_TIMECOND_NONE
+Introduced in 7.9.7
+.IP CURL_TLSAUTH_NONE
+Introduced in 7.21.4
+.IP CURL_TLSAUTH_SRP
+Introduced in 7.21.4
+.IP CURL_VERSION_ASYNCHDNS
+Introduced in 7.10.7
+.IP CURL_VERSION_CONV
+Introduced in 7.15.4
+.IP CURL_VERSION_CURLDEBUG
+Introduced in 7.19.6
+.IP CURL_VERSION_DEBUG
+Introduced in 7.10.6
+.IP CURL_VERSION_GSSAPI
+Introduced in 7.38.0
+.IP CURL_VERSION_GSSNEGOTIATE
+Introduced in 7.10.6
+Deprecated since 7.38.0
+.IP CURL_VERSION_HTTP2
+Introduced in 7.33.0
+.IP CURL_VERSION_IDN
+Introduced in 7.12.0
+.IP CURL_VERSION_IPV6
+Introduced in 7.10
+.IP CURL_VERSION_KERBEROS4
+Introduced in 7.10
+Deprecated since 7.33.0
+.IP CURL_VERSION_KERBEROS5
+Introduced in 7.40.0
+.IP CURL_VERSION_LARGEFILE
+Introduced in 7.11.1
+.IP CURL_VERSION_LIBZ
+Introduced in 7.10
+.IP CURL_VERSION_NTLM
+Introduced in 7.10.6
+.IP CURL_VERSION_NTLM_WB
+Introduced in 7.22.0
+.IP CURL_VERSION_SPNEGO
+Introduced in 7.10.8
+.IP CURL_VERSION_SSL
+Introduced in 7.10
+.IP CURL_VERSION_SSPI
+Introduced in 7.13.2
+.IP CURL_VERSION_TLSAUTH_SRP
+Introduced in 7.21.4
+.IP CURL_VERSION_UNIX_SOCKETS
+Introduced in 7.40.0
+.IP CURL_WAIT_POLLIN
+Introduced in 7.28.0
+.IP CURL_WAIT_POLLOUT
+Introduced in 7.28.0
+.IP CURL_WAIT_POLLPRI
+Introduced in 7.28.0
+.IP CURL_WRITEFUNC_PAUSE
+Introduced in 7.18.0
diff --git a/docs/libcurl/libcurl-symbols.html b/docs/libcurl/libcurl-symbols.html
new file mode 100644 (file)
index 0000000..1dba7e7
--- /dev/null
@@ -0,0 +1,1578 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>libcurl-symbols man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">libcurl-symbols - libcurl symbol version information <a name="libcurl"></a><h2 class="nroffsh">libcurl symbols</h2>
+<p class="level0">This man page details version information for public symbols provided in the libcurl header files. This lists the first version in which the symbol was introduced and for some symbols two additional information pieces: 
+<p class="level0">The first version in which the symbol is marked "deprecated" - meaning that since that version no new code should be written to use the symbol as it is marked for getting removed in a future. 
+<p class="level0">The last version that featured the specific symbol. Using the symbol in source code will make it no longer compile error-free after that specified version. 
+<p class="level0">This man page is automatically generated from the symbols-in-versions file. 
+<p class="level0"><a name="CURLAUTHANY"></a><span class="nroffip">CURLAUTH_ANY</span> 
+<p class="level1">Introduced in 7.10.6 
+<p class="level0"><a name="CURLAUTHANYSAFE"></a><span class="nroffip">CURLAUTH_ANYSAFE</span> 
+<p class="level1">Introduced in 7.10.6 
+<p class="level0"><a name="CURLAUTHBASIC"></a><span class="nroffip">CURLAUTH_BASIC</span> 
+<p class="level1">Introduced in 7.10.6 
+<p class="level0"><a name="CURLAUTHDIGEST"></a><span class="nroffip">CURLAUTH_DIGEST</span> 
+<p class="level1">Introduced in 7.10.6 
+<p class="level0"><a name="CURLAUTHDIGESTIE"></a><span class="nroffip">CURLAUTH_DIGEST_IE</span> 
+<p class="level1">Introduced in 7.19.3 
+<p class="level0"><a name="CURLAUTHGSSNEGOTIATE"></a><span class="nroffip">CURLAUTH_GSSNEGOTIATE</span> 
+<p class="level1">Introduced in 7.10.6 Deprecated since 7.38.0 
+<p class="level0"><a name="CURLAUTHNEGOTIATE"></a><span class="nroffip">CURLAUTH_NEGOTIATE</span> 
+<p class="level1">Introduced in 7.38.0 
+<p class="level0"><a name="CURLAUTHNONE"></a><span class="nroffip">CURLAUTH_NONE</span> 
+<p class="level1">Introduced in 7.10.6 
+<p class="level0"><a name="CURLAUTHNTLM"></a><span class="nroffip">CURLAUTH_NTLM</span> 
+<p class="level1">Introduced in 7.10.6 
+<p class="level0"><a name="CURLAUTHNTLMWB"></a><span class="nroffip">CURLAUTH_NTLM_WB</span> 
+<p class="level1">Introduced in 7.22.0 
+<p class="level0"><a name="CURLAUTHONLY"></a><span class="nroffip">CURLAUTH_ONLY</span> 
+<p class="level1">Introduced in 7.21.3 
+<p class="level0"><a name="CURLCLOSEPOLICYCALLBACK"></a><span class="nroffip">CURLCLOSEPOLICY_CALLBACK</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLCLOSEPOLICYLEASTRECENTLYUSED"></a><span class="nroffip">CURLCLOSEPOLICY_LEAST_RECENTLY_USED</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLCLOSEPOLICYLEASTTRAFFIC"></a><span class="nroffip">CURLCLOSEPOLICY_LEAST_TRAFFIC</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLCLOSEPOLICYNONE"></a><span class="nroffip">CURLCLOSEPOLICY_NONE</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLCLOSEPOLICYOLDEST"></a><span class="nroffip">CURLCLOSEPOLICY_OLDEST</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLCLOSEPOLICYSLOWEST"></a><span class="nroffip">CURLCLOSEPOLICY_SLOWEST</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLEABORTEDBYCALLBACK"></a><span class="nroffip">CURLE_ABORTED_BY_CALLBACK</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEAGAIN"></a><span class="nroffip">CURLE_AGAIN</span> 
+<p class="level1">Introduced in 7.18.2 
+<p class="level0"><a name="CURLEALREADYCOMPLETE"></a><span class="nroffip">CURLE_ALREADY_COMPLETE</span> 
+<p class="level1">Introduced in 7.7.2 
+<p class="level0"><a name="CURLEBADCALLINGORDER"></a><span class="nroffip">CURLE_BAD_CALLING_ORDER</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLEBADCONTENTENCODING"></a><span class="nroffip">CURLE_BAD_CONTENT_ENCODING</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLEBADDOWNLOADRESUME"></a><span class="nroffip">CURLE_BAD_DOWNLOAD_RESUME</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLEBADFUNCTIONARGUMENT"></a><span class="nroffip">CURLE_BAD_FUNCTION_ARGUMENT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEBADPASSWORDENTERED"></a><span class="nroffip">CURLE_BAD_PASSWORD_ENTERED</span> 
+<p class="level1">Introduced in 7.4.2 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLECHUNKFAILED"></a><span class="nroffip">CURLE_CHUNK_FAILED</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLECONVFAILED"></a><span class="nroffip">CURLE_CONV_FAILED</span> 
+<p class="level1">Introduced in 7.15.4 
+<p class="level0"><a name="CURLECONVREQD"></a><span class="nroffip">CURLE_CONV_REQD</span> 
+<p class="level1">Introduced in 7.15.4 
+<p class="level0"><a name="CURLECOULDNTCONNECT"></a><span class="nroffip">CURLE_COULDNT_CONNECT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLECOULDNTRESOLVEHOST"></a><span class="nroffip">CURLE_COULDNT_RESOLVE_HOST</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLECOULDNTRESOLVEPROXY"></a><span class="nroffip">CURLE_COULDNT_RESOLVE_PROXY</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEFAILEDINIT"></a><span class="nroffip">CURLE_FAILED_INIT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEFILESIZEEXCEEDED"></a><span class="nroffip">CURLE_FILESIZE_EXCEEDED</span> 
+<p class="level1">Introduced in 7.10.8 
+<p class="level0"><a name="CURLEFILECOULDNTREADFILE"></a><span class="nroffip">CURLE_FILE_COULDNT_READ_FILE</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEFTPACCEPTFAILED"></a><span class="nroffip">CURLE_FTP_ACCEPT_FAILED</span> 
+<p class="level1">Introduced in 7.24.0 
+<p class="level0"><a name="CURLEFTPACCEPTTIMEOUT"></a><span class="nroffip">CURLE_FTP_ACCEPT_TIMEOUT</span> 
+<p class="level1">Introduced in 7.24.0 
+<p class="level0"><a name="CURLEFTPACCESSDENIED"></a><span class="nroffip">CURLE_FTP_ACCESS_DENIED</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEFTPBADDOWNLOADRESUME"></a><span class="nroffip">CURLE_FTP_BAD_DOWNLOAD_RESUME</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.1 
+<p class="level0"><a name="CURLEFTPBADFILELIST"></a><span class="nroffip">CURLE_FTP_BAD_FILE_LIST</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLEFTPCANTGETHOST"></a><span class="nroffip">CURLE_FTP_CANT_GET_HOST</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEFTPCANTRECONNECT"></a><span class="nroffip">CURLE_FTP_CANT_RECONNECT</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLEFTPCOULDNTGETSIZE"></a><span class="nroffip">CURLE_FTP_COULDNT_GET_SIZE</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLEFTPCOULDNTRETRFILE"></a><span class="nroffip">CURLE_FTP_COULDNT_RETR_FILE</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEFTPCOULDNTSETASCII"></a><span class="nroffip">CURLE_FTP_COULDNT_SET_ASCII</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLEFTPCOULDNTSETBINARY"></a><span class="nroffip">CURLE_FTP_COULDNT_SET_BINARY</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLEFTPCOULDNTSETTYPE"></a><span class="nroffip">CURLE_FTP_COULDNT_SET_TYPE</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLEFTPCOULDNTSTORFILE"></a><span class="nroffip">CURLE_FTP_COULDNT_STOR_FILE</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEFTPCOULDNTUSEREST"></a><span class="nroffip">CURLE_FTP_COULDNT_USE_REST</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEFTPPARTIALFILE"></a><span class="nroffip">CURLE_FTP_PARTIAL_FILE</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.1 
+<p class="level0"><a name="CURLEFTPPORTFAILED"></a><span class="nroffip">CURLE_FTP_PORT_FAILED</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEFTPPRETFAILED"></a><span class="nroffip">CURLE_FTP_PRET_FAILED</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLEFTPQUOTEERROR"></a><span class="nroffip">CURLE_FTP_QUOTE_ERROR</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLEFTPSSLFAILED"></a><span class="nroffip">CURLE_FTP_SSL_FAILED</span> 
+<p class="level1">Introduced in 7.11.0 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLEFTPUSERPASSWORDINCORRECT"></a><span class="nroffip">CURLE_FTP_USER_PASSWORD_INCORRECT</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLEFTPWEIRD227FORMAT"></a><span class="nroffip">CURLE_FTP_WEIRD_227_FORMAT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEFTPWEIRDPASSREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_PASS_REPLY</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEFTPWEIRDPASVREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_PASV_REPLY</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEFTPWEIRDSERVERREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_SERVER_REPLY</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEFTPWEIRDUSERREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_USER_REPLY</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLEFTPWRITEERROR"></a><span class="nroffip">CURLE_FTP_WRITE_ERROR</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLEFUNCTIONNOTFOUND"></a><span class="nroffip">CURLE_FUNCTION_NOT_FOUND</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEGOTNOTHING"></a><span class="nroffip">CURLE_GOT_NOTHING</span> 
+<p class="level1">Introduced in 7.9.1 
+<p class="level0"><a name="CURLEHTTP2"></a><span class="nroffip">CURLE_HTTP2</span> 
+<p class="level1">Introduced in 7.38.0 
+<p class="level0"><a name="CURLEHTTPNOTFOUND"></a><span class="nroffip">CURLE_HTTP_NOT_FOUND</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEHTTPPORTFAILED"></a><span class="nroffip">CURLE_HTTP_PORT_FAILED</span> 
+<p class="level1">Introduced in 7.3 Deprecated since 7.12.0 
+<p class="level0"><a name="CURLEHTTPPOSTERROR"></a><span class="nroffip">CURLE_HTTP_POST_ERROR</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEHTTPRANGEERROR"></a><span class="nroffip">CURLE_HTTP_RANGE_ERROR</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLEHTTPRETURNEDERROR"></a><span class="nroffip">CURLE_HTTP_RETURNED_ERROR</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLEINTERFACEFAILED"></a><span class="nroffip">CURLE_INTERFACE_FAILED</span> 
+<p class="level1">Introduced in 7.12.0 
+<p class="level0"><a name="CURLELDAPCANNOTBIND"></a><span class="nroffip">CURLE_LDAP_CANNOT_BIND</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLELDAPINVALIDURL"></a><span class="nroffip">CURLE_LDAP_INVALID_URL</span> 
+<p class="level1">Introduced in 7.10.8 
+<p class="level0"><a name="CURLELDAPSEARCHFAILED"></a><span class="nroffip">CURLE_LDAP_SEARCH_FAILED</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLELIBRARYNOTFOUND"></a><span class="nroffip">CURLE_LIBRARY_NOT_FOUND</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLELOGINDENIED"></a><span class="nroffip">CURLE_LOGIN_DENIED</span> 
+<p class="level1">Introduced in 7.13.1 
+<p class="level0"><a name="CURLEMALFORMATUSER"></a><span class="nroffip">CURLE_MALFORMAT_USER</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLENOTBUILTIN"></a><span class="nroffip">CURLE_NOT_BUILT_IN</span> 
+<p class="level1">Introduced in 7.21.5 
+<p class="level0"><a name="CURLENOCONNECTIONAVAILABLE"></a><span class="nroffip">CURLE_NO_CONNECTION_AVAILABLE</span> 
+<p class="level1">Introduced in 7.30.0 
+<p class="level0"><a name="CURLEOK"></a><span class="nroffip">CURLE_OK</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEOPERATIONTIMEDOUT"></a><span class="nroffip">CURLE_OPERATION_TIMEDOUT</span> 
+<p class="level1">Introduced in 7.10.2 
+<p class="level0"><a name="CURLEOPERATIONTIMEOUTED"></a><span class="nroffip">CURLE_OPERATION_TIMEOUTED</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLEOUTOFMEMORY"></a><span class="nroffip">CURLE_OUT_OF_MEMORY</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEPARTIALFILE"></a><span class="nroffip">CURLE_PARTIAL_FILE</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEPEERFAILEDVERIFICATION"></a><span class="nroffip">CURLE_PEER_FAILED_VERIFICATION</span> 
+<p class="level1">Introduced in 7.17.1 
+<p class="level0"><a name="CURLEQUOTEERROR"></a><span class="nroffip">CURLE_QUOTE_ERROR</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLERANGEERROR"></a><span class="nroffip">CURLE_RANGE_ERROR</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLEREADERROR"></a><span class="nroffip">CURLE_READ_ERROR</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLERECVERROR"></a><span class="nroffip">CURLE_RECV_ERROR</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLEREMOTEACCESSDENIED"></a><span class="nroffip">CURLE_REMOTE_ACCESS_DENIED</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLEREMOTEDISKFULL"></a><span class="nroffip">CURLE_REMOTE_DISK_FULL</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLEREMOTEFILEEXISTS"></a><span class="nroffip">CURLE_REMOTE_FILE_EXISTS</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLEREMOTEFILENOTFOUND"></a><span class="nroffip">CURLE_REMOTE_FILE_NOT_FOUND</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLERTSPCSEQERROR"></a><span class="nroffip">CURLE_RTSP_CSEQ_ERROR</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLERTSPSESSIONERROR"></a><span class="nroffip">CURLE_RTSP_SESSION_ERROR</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLESENDERROR"></a><span class="nroffip">CURLE_SEND_ERROR</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLESENDFAILREWIND"></a><span class="nroffip">CURLE_SEND_FAIL_REWIND</span> 
+<p class="level1">Introduced in 7.12.3 
+<p class="level0"><a name="CURLESHAREINUSE"></a><span class="nroffip">CURLE_SHARE_IN_USE</span> 
+<p class="level1">Introduced in 7.9.6 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLESSH"></a><span class="nroffip">CURLE_SSH</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLESSLCACERT"></a><span class="nroffip">CURLE_SSL_CACERT</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLESSLCACERTBADFILE"></a><span class="nroffip">CURLE_SSL_CACERT_BADFILE</span> 
+<p class="level1">Introduced in 7.16.0 
+<p class="level0"><a name="CURLESSLCERTPROBLEM"></a><span class="nroffip">CURLE_SSL_CERTPROBLEM</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLESSLCIPHER"></a><span class="nroffip">CURLE_SSL_CIPHER</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLESSLCONNECTERROR"></a><span class="nroffip">CURLE_SSL_CONNECT_ERROR</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLESSLCRLBADFILE"></a><span class="nroffip">CURLE_SSL_CRL_BADFILE</span> 
+<p class="level1">Introduced in 7.19.0 
+<p class="level0"><a name="CURLESSLENGINEINITFAILED"></a><span class="nroffip">CURLE_SSL_ENGINE_INITFAILED</span> 
+<p class="level1">Introduced in 7.12.3 
+<p class="level0"><a name="CURLESSLENGINENOTFOUND"></a><span class="nroffip">CURLE_SSL_ENGINE_NOTFOUND</span> 
+<p class="level1">Introduced in 7.9.3 
+<p class="level0"><a name="CURLESSLENGINESETFAILED"></a><span class="nroffip">CURLE_SSL_ENGINE_SETFAILED</span> 
+<p class="level1">Introduced in 7.9.3 
+<p class="level0"><a name="CURLESSLINVALIDCERTSTATUS"></a><span class="nroffip">CURLE_SSL_INVALIDCERTSTATUS</span> 
+<p class="level1">Introduced in 7.41.0 
+<p class="level0"><a name="CURLESSLISSUERERROR"></a><span class="nroffip">CURLE_SSL_ISSUER_ERROR</span> 
+<p class="level1">Introduced in 7.19.0 
+<p class="level0"><a name="CURLESSLPEERCERTIFICATE"></a><span class="nroffip">CURLE_SSL_PEER_CERTIFICATE</span> 
+<p class="level1">Introduced in 7.8 Deprecated since 7.17.1 
+<p class="level0"><a name="CURLESSLPINNEDPUBKEYNOTMATCH"></a><span class="nroffip">CURLE_SSL_PINNEDPUBKEYNOTMATCH</span> 
+<p class="level1">Introduced in 7.39.0 
+<p class="level0"><a name="CURLESSLSHUTDOWNFAILED"></a><span class="nroffip">CURLE_SSL_SHUTDOWN_FAILED</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLETELNETOPTIONSYNTAX"></a><span class="nroffip">CURLE_TELNET_OPTION_SYNTAX</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLETFTPDISKFULL"></a><span class="nroffip">CURLE_TFTP_DISKFULL</span> 
+<p class="level1">Introduced in 7.15.0 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLETFTPEXISTS"></a><span class="nroffip">CURLE_TFTP_EXISTS</span> 
+<p class="level1">Introduced in 7.15.0 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLETFTPILLEGAL"></a><span class="nroffip">CURLE_TFTP_ILLEGAL</span> 
+<p class="level1">Introduced in 7.15.0 
+<p class="level0"><a name="CURLETFTPNOSUCHUSER"></a><span class="nroffip">CURLE_TFTP_NOSUCHUSER</span> 
+<p class="level1">Introduced in 7.15.0 
+<p class="level0"><a name="CURLETFTPNOTFOUND"></a><span class="nroffip">CURLE_TFTP_NOTFOUND</span> 
+<p class="level1">Introduced in 7.15.0 
+<p class="level0"><a name="CURLETFTPPERM"></a><span class="nroffip">CURLE_TFTP_PERM</span> 
+<p class="level1">Introduced in 7.15.0 
+<p class="level0"><a name="CURLETFTPUNKNOWNID"></a><span class="nroffip">CURLE_TFTP_UNKNOWNID</span> 
+<p class="level1">Introduced in 7.15.0 
+<p class="level0"><a name="CURLETOOMANYREDIRECTS"></a><span class="nroffip">CURLE_TOO_MANY_REDIRECTS</span> 
+<p class="level1">Introduced in 7.5 
+<p class="level0"><a name="CURLEUNKNOWNOPTION"></a><span class="nroffip">CURLE_UNKNOWN_OPTION</span> 
+<p class="level1">Introduced in 7.21.5 
+<p class="level0"><a name="CURLEUNKNOWNTELNETOPTION"></a><span class="nroffip">CURLE_UNKNOWN_TELNET_OPTION</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLEUNSUPPORTEDPROTOCOL"></a><span class="nroffip">CURLE_UNSUPPORTED_PROTOCOL</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEUPLOADFAILED"></a><span class="nroffip">CURLE_UPLOAD_FAILED</span> 
+<p class="level1">Introduced in 7.16.3 
+<p class="level0"><a name="CURLEURLMALFORMAT"></a><span class="nroffip">CURLE_URL_MALFORMAT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLEURLMALFORMATUSER"></a><span class="nroffip">CURLE_URL_MALFORMAT_USER</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLEUSESSLFAILED"></a><span class="nroffip">CURLE_USE_SSL_FAILED</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLEWRITEERROR"></a><span class="nroffip">CURLE_WRITE_ERROR</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLFILETYPEDEVICEBLOCK"></a><span class="nroffip">CURLFILETYPE_DEVICE_BLOCK</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFILETYPEDEVICECHAR"></a><span class="nroffip">CURLFILETYPE_DEVICE_CHAR</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFILETYPEDIRECTORY"></a><span class="nroffip">CURLFILETYPE_DIRECTORY</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFILETYPEDOOR"></a><span class="nroffip">CURLFILETYPE_DOOR</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFILETYPEFILE"></a><span class="nroffip">CURLFILETYPE_FILE</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFILETYPENAMEDPIPE"></a><span class="nroffip">CURLFILETYPE_NAMEDPIPE</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFILETYPESOCKET"></a><span class="nroffip">CURLFILETYPE_SOCKET</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFILETYPESYMLINK"></a><span class="nroffip">CURLFILETYPE_SYMLINK</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFILETYPEUNKNOWN"></a><span class="nroffip">CURLFILETYPE_UNKNOWN</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFINFOFLAGKNOWNFILENAME"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_FILENAME</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFINFOFLAGKNOWNFILETYPE"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_FILETYPE</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFINFOFLAGKNOWNGID"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_GID</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFINFOFLAGKNOWNHLINKCOUNT"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_HLINKCOUNT</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFINFOFLAGKNOWNPERM"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_PERM</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFINFOFLAGKNOWNSIZE"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_SIZE</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFINFOFLAGKNOWNTIME"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_TIME</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFINFOFLAGKNOWNUID"></a><span class="nroffip">CURLFINFOFLAG_KNOWN_UID</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFORMARRAY"></a><span class="nroffip">CURLFORM_ARRAY</span> 
+<p class="level1">Introduced in 7.9.1 
+<p class="level0"><a name="CURLFORMARRAYEND"></a><span class="nroffip">CURLFORM_ARRAY_END</span> 
+<p class="level1">Introduced in 7.9.1 Deprecated since 7.9.5 Last used in 7.9.5 
+<p class="level0"><a name="CURLFORMARRAYSTART"></a><span class="nroffip">CURLFORM_ARRAY_START</span> 
+<p class="level1">Introduced in 7.9.1 Deprecated since 7.9.5 Last used in 7.9.5 
+<p class="level0"><a name="CURLFORMBUFFER"></a><span class="nroffip">CURLFORM_BUFFER</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLFORMBUFFERLENGTH"></a><span class="nroffip">CURLFORM_BUFFERLENGTH</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLFORMBUFFERPTR"></a><span class="nroffip">CURLFORM_BUFFERPTR</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLFORMCONTENTHEADER"></a><span class="nroffip">CURLFORM_CONTENTHEADER</span> 
+<p class="level1">Introduced in 7.9.3 
+<p class="level0"><a name="CURLFORMCONTENTSLENGTH"></a><span class="nroffip">CURLFORM_CONTENTSLENGTH</span> 
+<p class="level1">Introduced in 7.9 
+<p class="level0"><a name="CURLFORMCONTENTTYPE"></a><span class="nroffip">CURLFORM_CONTENTTYPE</span> 
+<p class="level1">Introduced in 7.9 
+<p class="level0"><a name="CURLFORMCOPYCONTENTS"></a><span class="nroffip">CURLFORM_COPYCONTENTS</span> 
+<p class="level1">Introduced in 7.9 
+<p class="level0"><a name="CURLFORMCOPYNAME"></a><span class="nroffip">CURLFORM_COPYNAME</span> 
+<p class="level1">Introduced in 7.9 
+<p class="level0"><a name="CURLFORMEND"></a><span class="nroffip">CURLFORM_END</span> 
+<p class="level1">Introduced in 7.9 
+<p class="level0"><a name="CURLFORMFILE"></a><span class="nroffip">CURLFORM_FILE</span> 
+<p class="level1">Introduced in 7.9 
+<p class="level0"><a name="CURLFORMFILECONTENT"></a><span class="nroffip">CURLFORM_FILECONTENT</span> 
+<p class="level1">Introduced in 7.9.1 
+<p class="level0"><a name="CURLFORMFILENAME"></a><span class="nroffip">CURLFORM_FILENAME</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLFORMNAMELENGTH"></a><span class="nroffip">CURLFORM_NAMELENGTH</span> 
+<p class="level1">Introduced in 7.9 
+<p class="level0"><a name="CURLFORMNOTHING"></a><span class="nroffip">CURLFORM_NOTHING</span> 
+<p class="level1">Introduced in 7.9 
+<p class="level0"><a name="CURLFORMPTRCONTENTS"></a><span class="nroffip">CURLFORM_PTRCONTENTS</span> 
+<p class="level1">Introduced in 7.9 
+<p class="level0"><a name="CURLFORMPTRNAME"></a><span class="nroffip">CURLFORM_PTRNAME</span> 
+<p class="level1">Introduced in 7.9 
+<p class="level0"><a name="CURLFORMSTREAM"></a><span class="nroffip">CURLFORM_STREAM</span> 
+<p class="level1">Introduced in 7.18.2 
+<p class="level0"><a name="CURLFTPAUTHDEFAULT"></a><span class="nroffip">CURLFTPAUTH_DEFAULT</span> 
+<p class="level1">Introduced in 7.12.2 
+<p class="level0"><a name="CURLFTPAUTHSSL"></a><span class="nroffip">CURLFTPAUTH_SSL</span> 
+<p class="level1">Introduced in 7.12.2 
+<p class="level0"><a name="CURLFTPAUTHTLS"></a><span class="nroffip">CURLFTPAUTH_TLS</span> 
+<p class="level1">Introduced in 7.12.2 
+<p class="level0"><a name="CURLFTPMETHODDEFAULT"></a><span class="nroffip">CURLFTPMETHOD_DEFAULT</span> 
+<p class="level1">Introduced in 7.15.3 
+<p class="level0"><a name="CURLFTPMETHODMULTICWD"></a><span class="nroffip">CURLFTPMETHOD_MULTICWD</span> 
+<p class="level1">Introduced in 7.15.3 
+<p class="level0"><a name="CURLFTPMETHODNOCWD"></a><span class="nroffip">CURLFTPMETHOD_NOCWD</span> 
+<p class="level1">Introduced in 7.15.3 
+<p class="level0"><a name="CURLFTPMETHODSINGLECWD"></a><span class="nroffip">CURLFTPMETHOD_SINGLECWD</span> 
+<p class="level1">Introduced in 7.15.3 
+<p class="level0"><a name="CURLFTPSSLALL"></a><span class="nroffip">CURLFTPSSL_ALL</span> 
+<p class="level1">Introduced in 7.11.0 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLFTPSSLCCCACTIVE"></a><span class="nroffip">CURLFTPSSL_CCC_ACTIVE</span> 
+<p class="level1">Introduced in 7.16.2 
+<p class="level0"><a name="CURLFTPSSLCCCNONE"></a><span class="nroffip">CURLFTPSSL_CCC_NONE</span> 
+<p class="level1">Introduced in 7.16.2 
+<p class="level0"><a name="CURLFTPSSLCCCPASSIVE"></a><span class="nroffip">CURLFTPSSL_CCC_PASSIVE</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLFTPSSLCONTROL"></a><span class="nroffip">CURLFTPSSL_CONTROL</span> 
+<p class="level1">Introduced in 7.11.0 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLFTPSSLNONE"></a><span class="nroffip">CURLFTPSSL_NONE</span> 
+<p class="level1">Introduced in 7.11.0 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLFTPSSLTRY"></a><span class="nroffip">CURLFTPSSL_TRY</span> 
+<p class="level1">Introduced in 7.11.0 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLFTPCREATEDIR"></a><span class="nroffip">CURLFTP_CREATE_DIR</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLFTPCREATEDIRNONE"></a><span class="nroffip">CURLFTP_CREATE_DIR_NONE</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLFTPCREATEDIRRETRY"></a><span class="nroffip">CURLFTP_CREATE_DIR_RETRY</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLGSSAPIDELEGATIONFLAG"></a><span class="nroffip">CURLGSSAPI_DELEGATION_FLAG</span> 
+<p class="level1">Introduced in 7.22.0 
+<p class="level0"><a name="CURLGSSAPIDELEGATIONNONE"></a><span class="nroffip">CURLGSSAPI_DELEGATION_NONE</span> 
+<p class="level1">Introduced in 7.22.0 
+<p class="level0"><a name="CURLGSSAPIDELEGATIONPOLICYFLAG"></a><span class="nroffip">CURLGSSAPI_DELEGATION_POLICY_FLAG</span> 
+<p class="level1">Introduced in 7.22.0 
+<p class="level0"><a name="CURLHEADERSEPARATE"></a><span class="nroffip">CURLHEADER_SEPARATE</span> 
+<p class="level1">Introduced in 7.37.0 
+<p class="level0"><a name="CURLHEADERUNIFIED"></a><span class="nroffip">CURLHEADER_UNIFIED</span> 
+<p class="level1">Introduced in 7.37.0 
+<p class="level0"><a name="CURLINFOAPPCONNECTTIME"></a><span class="nroffip">CURLINFO_APPCONNECT_TIME</span> 
+<p class="level1">Introduced in 7.19.0 
+<p class="level0"><a name="CURLINFOCERTINFO"></a><span class="nroffip">CURLINFO_CERTINFO</span> 
+<p class="level1">Introduced in 7.19.1 
+<p class="level0"><a name="CURLINFOCONDITIONUNMET"></a><span class="nroffip">CURLINFO_CONDITION_UNMET</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLINFOCONNECTTIME"></a><span class="nroffip">CURLINFO_CONNECT_TIME</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFOCONTENTLENGTHDOWNLOAD"></a><span class="nroffip">CURLINFO_CONTENT_LENGTH_DOWNLOAD</span> 
+<p class="level1">Introduced in 7.6.1 
+<p class="level0"><a name="CURLINFOCONTENTLENGTHUPLOAD"></a><span class="nroffip">CURLINFO_CONTENT_LENGTH_UPLOAD</span> 
+<p class="level1">Introduced in 7.6.1 
+<p class="level0"><a name="CURLINFOCONTENTTYPE"></a><span class="nroffip">CURLINFO_CONTENT_TYPE</span> 
+<p class="level1">Introduced in 7.9.4 
+<p class="level0"><a name="CURLINFOCOOKIELIST"></a><span class="nroffip">CURLINFO_COOKIELIST</span> 
+<p class="level1">Introduced in 7.14.1 
+<p class="level0"><a name="CURLINFODATAIN"></a><span class="nroffip">CURLINFO_DATA_IN</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLINFODATAOUT"></a><span class="nroffip">CURLINFO_DATA_OUT</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLINFODOUBLE"></a><span class="nroffip">CURLINFO_DOUBLE</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFOEFFECTIVEURL"></a><span class="nroffip">CURLINFO_EFFECTIVE_URL</span> 
+<p class="level1">Introduced in 7.4 
+<p class="level0"><a name="CURLINFOEND"></a><span class="nroffip">CURLINFO_END</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLINFOFILETIME"></a><span class="nroffip">CURLINFO_FILETIME</span> 
+<p class="level1">Introduced in 7.5 
+<p class="level0"><a name="CURLINFOFTPENTRYPATH"></a><span class="nroffip">CURLINFO_FTP_ENTRY_PATH</span> 
+<p class="level1">Introduced in 7.15.4 
+<p class="level0"><a name="CURLINFOHEADERIN"></a><span class="nroffip">CURLINFO_HEADER_IN</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLINFOHEADEROUT"></a><span class="nroffip">CURLINFO_HEADER_OUT</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLINFOHEADERSIZE"></a><span class="nroffip">CURLINFO_HEADER_SIZE</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFOHTTPAUTHAVAIL"></a><span class="nroffip">CURLINFO_HTTPAUTH_AVAIL</span> 
+<p class="level1">Introduced in 7.10.8 
+<p class="level0"><a name="CURLINFOHTTPCODE"></a><span class="nroffip">CURLINFO_HTTP_CODE</span> 
+<p class="level1">Introduced in 7.4.1 Deprecated since 7.10.8 
+<p class="level0"><a name="CURLINFOHTTPCONNECTCODE"></a><span class="nroffip">CURLINFO_HTTP_CONNECTCODE</span> 
+<p class="level1">Introduced in 7.10.7 
+<p class="level0"><a name="CURLINFOLASTONE"></a><span class="nroffip">CURLINFO_LASTONE</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFOLASTSOCKET"></a><span class="nroffip">CURLINFO_LASTSOCKET</span> 
+<p class="level1">Introduced in 7.15.2 
+<p class="level0"><a name="CURLINFOLOCALIP"></a><span class="nroffip">CURLINFO_LOCAL_IP</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLINFOLOCALPORT"></a><span class="nroffip">CURLINFO_LOCAL_PORT</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLINFOLONG"></a><span class="nroffip">CURLINFO_LONG</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFOMASK"></a><span class="nroffip">CURLINFO_MASK</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFONAMELOOKUPTIME"></a><span class="nroffip">CURLINFO_NAMELOOKUP_TIME</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFONONE"></a><span class="nroffip">CURLINFO_NONE</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFONUMCONNECTS"></a><span class="nroffip">CURLINFO_NUM_CONNECTS</span> 
+<p class="level1">Introduced in 7.12.3 
+<p class="level0"><a name="CURLINFOOSERRNO"></a><span class="nroffip">CURLINFO_OS_ERRNO</span> 
+<p class="level1">Introduced in 7.12.2 
+<p class="level0"><a name="CURLINFOPRETRANSFERTIME"></a><span class="nroffip">CURLINFO_PRETRANSFER_TIME</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFOPRIMARYIP"></a><span class="nroffip">CURLINFO_PRIMARY_IP</span> 
+<p class="level1">Introduced in 7.19.0 
+<p class="level0"><a name="CURLINFOPRIMARYPORT"></a><span class="nroffip">CURLINFO_PRIMARY_PORT</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLINFOPRIVATE"></a><span class="nroffip">CURLINFO_PRIVATE</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLINFOPROXYAUTHAVAIL"></a><span class="nroffip">CURLINFO_PROXYAUTH_AVAIL</span> 
+<p class="level1">Introduced in 7.10.8 
+<p class="level0"><a name="CURLINFOREDIRECTCOUNT"></a><span class="nroffip">CURLINFO_REDIRECT_COUNT</span> 
+<p class="level1">Introduced in 7.9.7 
+<p class="level0"><a name="CURLINFOREDIRECTTIME"></a><span class="nroffip">CURLINFO_REDIRECT_TIME</span> 
+<p class="level1">Introduced in 7.9.7 
+<p class="level0"><a name="CURLINFOREDIRECTURL"></a><span class="nroffip">CURLINFO_REDIRECT_URL</span> 
+<p class="level1">Introduced in 7.18.2 
+<p class="level0"><a name="CURLINFOREQUESTSIZE"></a><span class="nroffip">CURLINFO_REQUEST_SIZE</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFORESPONSECODE"></a><span class="nroffip">CURLINFO_RESPONSE_CODE</span> 
+<p class="level1">Introduced in 7.10.8 
+<p class="level0"><a name="CURLINFORTSPCLIENTCSEQ"></a><span class="nroffip">CURLINFO_RTSP_CLIENT_CSEQ</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLINFORTSPCSEQRECV"></a><span class="nroffip">CURLINFO_RTSP_CSEQ_RECV</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLINFORTSPSERVERCSEQ"></a><span class="nroffip">CURLINFO_RTSP_SERVER_CSEQ</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLINFORTSPSESSIONID"></a><span class="nroffip">CURLINFO_RTSP_SESSION_ID</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLINFOSIZEDOWNLOAD"></a><span class="nroffip">CURLINFO_SIZE_DOWNLOAD</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFOSIZEUPLOAD"></a><span class="nroffip">CURLINFO_SIZE_UPLOAD</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFOSLIST"></a><span class="nroffip">CURLINFO_SLIST</span> 
+<p class="level1">Introduced in 7.12.3 
+<p class="level0"><a name="CURLINFOSPEEDDOWNLOAD"></a><span class="nroffip">CURLINFO_SPEED_DOWNLOAD</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFOSPEEDUPLOAD"></a><span class="nroffip">CURLINFO_SPEED_UPLOAD</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFOSSLDATAIN"></a><span class="nroffip">CURLINFO_SSL_DATA_IN</span> 
+<p class="level1">Introduced in 7.12.1 
+<p class="level0"><a name="CURLINFOSSLDATAOUT"></a><span class="nroffip">CURLINFO_SSL_DATA_OUT</span> 
+<p class="level1">Introduced in 7.12.1 
+<p class="level0"><a name="CURLINFOSSLENGINES"></a><span class="nroffip">CURLINFO_SSL_ENGINES</span> 
+<p class="level1">Introduced in 7.12.3 
+<p class="level0"><a name="CURLINFOSSLVERIFYRESULT"></a><span class="nroffip">CURLINFO_SSL_VERIFYRESULT</span> 
+<p class="level1">Introduced in 7.5 
+<p class="level0"><a name="CURLINFOSTARTTRANSFERTIME"></a><span class="nroffip">CURLINFO_STARTTRANSFER_TIME</span> 
+<p class="level1">Introduced in 7.9.2 
+<p class="level0"><a name="CURLINFOSTRING"></a><span class="nroffip">CURLINFO_STRING</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFOTEXT"></a><span class="nroffip">CURLINFO_TEXT</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLINFOTLSSESSION"></a><span class="nroffip">CURLINFO_TLS_SESSION</span> 
+<p class="level1">Introduced in 7.34.0 
+<p class="level0"><a name="CURLINFOTOTALTIME"></a><span class="nroffip">CURLINFO_TOTAL_TIME</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLINFOTYPEMASK"></a><span class="nroffip">CURLINFO_TYPEMASK</span> 
+<p class="level1">Introduced in 7.4.1 
+<p class="level0"><a name="CURLIOCMDNOP"></a><span class="nroffip">CURLIOCMD_NOP</span> 
+<p class="level1">Introduced in 7.12.3 
+<p class="level0"><a name="CURLIOCMDRESTARTREAD"></a><span class="nroffip">CURLIOCMD_RESTARTREAD</span> 
+<p class="level1">Introduced in 7.12.3 
+<p class="level0"><a name="CURLIOEFAILRESTART"></a><span class="nroffip">CURLIOE_FAILRESTART</span> 
+<p class="level1">Introduced in 7.12.3 
+<p class="level0"><a name="CURLIOEOK"></a><span class="nroffip">CURLIOE_OK</span> 
+<p class="level1">Introduced in 7.12.3 
+<p class="level0"><a name="CURLIOEUNKNOWNCMD"></a><span class="nroffip">CURLIOE_UNKNOWNCMD</span> 
+<p class="level1">Introduced in 7.12.3 
+<p class="level0"><a name="CURLKHMATCHMISMATCH"></a><span class="nroffip">CURLKHMATCH_MISMATCH</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLKHMATCHMISSING"></a><span class="nroffip">CURLKHMATCH_MISSING</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLKHMATCHOK"></a><span class="nroffip">CURLKHMATCH_OK</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLKHSTATDEFER"></a><span class="nroffip">CURLKHSTAT_DEFER</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLKHSTATFINE"></a><span class="nroffip">CURLKHSTAT_FINE</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLKHSTATFINEADDTOFILE"></a><span class="nroffip">CURLKHSTAT_FINE_ADD_TO_FILE</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLKHSTATREJECT"></a><span class="nroffip">CURLKHSTAT_REJECT</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLKHTYPEDSS"></a><span class="nroffip">CURLKHTYPE_DSS</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLKHTYPERSA"></a><span class="nroffip">CURLKHTYPE_RSA</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLKHTYPERSA1"></a><span class="nroffip">CURLKHTYPE_RSA1</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLKHTYPEUNKNOWN"></a><span class="nroffip">CURLKHTYPE_UNKNOWN</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLMOPTCHUNKLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</span> 
+<p class="level1">Introduced in 7.30.0 
+<p class="level0"><a name="CURLMOPTCONTENTLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</span> 
+<p class="level1">Introduced in 7.30.0 
+<p class="level0"><a name="CURLMOPTMAXCONNECTS"></a><span class="nroffip">CURLMOPT_MAXCONNECTS</span> 
+<p class="level1">Introduced in 7.16.3 
+<p class="level0"><a name="CURLMOPTMAXHOSTCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_HOST_CONNECTIONS</span> 
+<p class="level1">Introduced in 7.30.0 
+<p class="level0"><a name="CURLMOPTMAXPIPELINELENGTH"></a><span class="nroffip">CURLMOPT_MAX_PIPELINE_LENGTH</span> 
+<p class="level1">Introduced in 7.30.0 
+<p class="level0"><a name="CURLMOPTMAXTOTALCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_TOTAL_CONNECTIONS</span> 
+<p class="level1">Introduced in 7.30.0 
+<p class="level0"><a name="CURLMOPTPIPELINING"></a><span class="nroffip">CURLMOPT_PIPELINING</span> 
+<p class="level1">Introduced in 7.16.0 
+<p class="level0"><a name="CURLMOPTPIPELININGSERVERBL"></a><span class="nroffip">CURLMOPT_PIPELINING_SERVER_BL</span> 
+<p class="level1">Introduced in 7.30.0 
+<p class="level0"><a name="CURLMOPTPIPELININGSITEBL"></a><span class="nroffip">CURLMOPT_PIPELINING_SITE_BL</span> 
+<p class="level1">Introduced in 7.30.0 
+<p class="level0"><a name="CURLMOPTPUSHDATA"></a><span class="nroffip">CURLMOPT_PUSHDATA</span> 
+<p class="level1">Introduced in 7.44.0 
+<p class="level0"><a name="CURLMOPTPUSHFUNCTION"></a><span class="nroffip">CURLMOPT_PUSHFUNCTION</span> 
+<p class="level1">Introduced in 7.44.0 
+<p class="level0"><a name="CURLMOPTSOCKETDATA"></a><span class="nroffip">CURLMOPT_SOCKETDATA</span> 
+<p class="level1">Introduced in 7.15.4 
+<p class="level0"><a name="CURLMOPTSOCKETFUNCTION"></a><span class="nroffip">CURLMOPT_SOCKETFUNCTION</span> 
+<p class="level1">Introduced in 7.15.4 
+<p class="level0"><a name="CURLMOPTTIMERDATA"></a><span class="nroffip">CURLMOPT_TIMERDATA</span> 
+<p class="level1">Introduced in 7.16.0 
+<p class="level0"><a name="CURLMOPTTIMERFUNCTION"></a><span class="nroffip">CURLMOPT_TIMERFUNCTION</span> 
+<p class="level1">Introduced in 7.16.0 
+<p class="level0"><a name="CURLMSGDONE"></a><span class="nroffip">CURLMSG_DONE</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLMSGNONE"></a><span class="nroffip">CURLMSG_NONE</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLMADDEDALREADY"></a><span class="nroffip">CURLM_ADDED_ALREADY</span> 
+<p class="level1">Introduced in 7.32.1 
+<p class="level0"><a name="CURLMBADEASYHANDLE"></a><span class="nroffip">CURLM_BAD_EASY_HANDLE</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLMBADHANDLE"></a><span class="nroffip">CURLM_BAD_HANDLE</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLMBADSOCKET"></a><span class="nroffip">CURLM_BAD_SOCKET</span> 
+<p class="level1">Introduced in 7.15.4 
+<p class="level0"><a name="CURLMCALLMULTIPERFORM"></a><span class="nroffip">CURLM_CALL_MULTI_PERFORM</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLMCALLMULTISOCKET"></a><span class="nroffip">CURLM_CALL_MULTI_SOCKET</span> 
+<p class="level1">Introduced in 7.15.5 
+<p class="level0"><a name="CURLMINTERNALERROR"></a><span class="nroffip">CURLM_INTERNAL_ERROR</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLMOK"></a><span class="nroffip">CURLM_OK</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLMOUTOFMEMORY"></a><span class="nroffip">CURLM_OUT_OF_MEMORY</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLMUNKNOWNOPTION"></a><span class="nroffip">CURLM_UNKNOWN_OPTION</span> 
+<p class="level1">Introduced in 7.15.4 
+<p class="level0"><a name="CURLOPTTYPEFUNCTIONPOINT"></a><span class="nroffip">CURLOPTTYPE_FUNCTIONPOINT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTTYPELONG"></a><span class="nroffip">CURLOPTTYPE_LONG</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTTYPEOBJECTPOINT"></a><span class="nroffip">CURLOPTTYPE_OBJECTPOINT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTTYPEOFFT"></a><span class="nroffip">CURLOPTTYPE_OFF_T</span> 
+<p class="level1">Introduced in 7.11.0 
+<p class="level0"><a name="CURLOPTACCEPTTIMEOUTMS"></a><span class="nroffip">CURLOPT_ACCEPTTIMEOUT_MS</span> 
+<p class="level1">Introduced in 7.24.0 
+<p class="level0"><a name="CURLOPTACCEPTENCODING"></a><span class="nroffip">CURLOPT_ACCEPT_ENCODING</span> 
+<p class="level1">Introduced in 7.21.6 
+<p class="level0"><a name="CURLOPTADDRESSSCOPE"></a><span class="nroffip">CURLOPT_ADDRESS_SCOPE</span> 
+<p class="level1">Introduced in 7.19.0 
+<p class="level0"><a name="CURLOPTAPPEND"></a><span class="nroffip">CURLOPT_APPEND</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLOPTAUTOREFERER"></a><span class="nroffip">CURLOPT_AUTOREFERER</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTBUFFERSIZE"></a><span class="nroffip">CURLOPT_BUFFERSIZE</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLOPTCAINFO"></a><span class="nroffip">CURLOPT_CAINFO</span> 
+<p class="level1">Introduced in 7.4.2 
+<p class="level0"><a name="CURLOPTCAPATH"></a><span class="nroffip">CURLOPT_CAPATH</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLOPTCERTINFO"></a><span class="nroffip">CURLOPT_CERTINFO</span> 
+<p class="level1">Introduced in 7.19.1 
+<p class="level0"><a name="CURLOPTCHUNKBGNFUNCTION"></a><span class="nroffip">CURLOPT_CHUNK_BGN_FUNCTION</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLOPTCHUNKDATA"></a><span class="nroffip">CURLOPT_CHUNK_DATA</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLOPTCHUNKENDFUNCTION"></a><span class="nroffip">CURLOPT_CHUNK_END_FUNCTION</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLOPTCLOSEFUNCTION"></a><span class="nroffip">CURLOPT_CLOSEFUNCTION</span> 
+<p class="level1">Introduced in 7.7 Deprecated since 7.11.1 Last used in 7.11.1 
+<p class="level0"><a name="CURLOPTCLOSEPOLICY"></a><span class="nroffip">CURLOPT_CLOSEPOLICY</span> 
+<p class="level1">Introduced in 7.7 Deprecated since 7.16.1 
+<p class="level0"><a name="CURLOPTCLOSESOCKETDATA"></a><span class="nroffip">CURLOPT_CLOSESOCKETDATA</span> 
+<p class="level1">Introduced in 7.21.7 
+<p class="level0"><a name="CURLOPTCLOSESOCKETFUNCTION"></a><span class="nroffip">CURLOPT_CLOSESOCKETFUNCTION</span> 
+<p class="level1">Introduced in 7.21.7 
+<p class="level0"><a name="CURLOPTCONNECTTIMEOUT"></a><span class="nroffip">CURLOPT_CONNECTTIMEOUT</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLOPTCONNECTTIMEOUTMS"></a><span class="nroffip">CURLOPT_CONNECTTIMEOUT_MS</span> 
+<p class="level1">Introduced in 7.16.2 
+<p class="level0"><a name="CURLOPTCONNECTONLY"></a><span class="nroffip">CURLOPT_CONNECT_ONLY</span> 
+<p class="level1">Introduced in 7.15.2 
+<p class="level0"><a name="CURLOPTCONVFROMNETWORKFUNCTION"></a><span class="nroffip">CURLOPT_CONV_FROM_NETWORK_FUNCTION</span> 
+<p class="level1">Introduced in 7.15.4 
+<p class="level0"><a name="CURLOPTCONVFROMUTF8FUNCTION"></a><span class="nroffip">CURLOPT_CONV_FROM_UTF8_FUNCTION</span> 
+<p class="level1">Introduced in 7.15.4 
+<p class="level0"><a name="CURLOPTCONVTONETWORKFUNCTION"></a><span class="nroffip">CURLOPT_CONV_TO_NETWORK_FUNCTION</span> 
+<p class="level1">Introduced in 7.15.4 
+<p class="level0"><a name="CURLOPTCOOKIE"></a><span class="nroffip">CURLOPT_COOKIE</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTCOOKIEFILE"></a><span class="nroffip">CURLOPT_COOKIEFILE</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTCOOKIEJAR"></a><span class="nroffip">CURLOPT_COOKIEJAR</span> 
+<p class="level1">Introduced in 7.9 
+<p class="level0"><a name="CURLOPTCOOKIELIST"></a><span class="nroffip">CURLOPT_COOKIELIST</span> 
+<p class="level1">Introduced in 7.14.1 
+<p class="level0"><a name="CURLOPTCOOKIESESSION"></a><span class="nroffip">CURLOPT_COOKIESESSION</span> 
+<p class="level1">Introduced in 7.9.7 
+<p class="level0"><a name="CURLOPTCOPYPOSTFIELDS"></a><span class="nroffip">CURLOPT_COPYPOSTFIELDS</span> 
+<p class="level1">Introduced in 7.17.1 
+<p class="level0"><a name="CURLOPTCRLF"></a><span class="nroffip">CURLOPT_CRLF</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTCRLFILE"></a><span class="nroffip">CURLOPT_CRLFILE</span> 
+<p class="level1">Introduced in 7.19.0 
+<p class="level0"><a name="CURLOPTCUSTOMREQUEST"></a><span class="nroffip">CURLOPT_CUSTOMREQUEST</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTDEBUGDATA"></a><span class="nroffip">CURLOPT_DEBUGDATA</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLOPTDEBUGFUNCTION"></a><span class="nroffip">CURLOPT_DEBUGFUNCTION</span> 
+<p class="level1">Introduced in 7.9.6 
+<p class="level0"><a name="CURLOPTDIRLISTONLY"></a><span class="nroffip">CURLOPT_DIRLISTONLY</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLOPTDNSCACHETIMEOUT"></a><span class="nroffip">CURLOPT_DNS_CACHE_TIMEOUT</span> 
+<p class="level1">Introduced in 7.9.3 
+<p class="level0"><a name="CURLOPTDNSINTERFACE"></a><span class="nroffip">CURLOPT_DNS_INTERFACE</span> 
+<p class="level1">Introduced in 7.33.0 
+<p class="level0"><a name="CURLOPTDNSLOCALIP4"></a><span class="nroffip">CURLOPT_DNS_LOCAL_IP4</span> 
+<p class="level1">Introduced in 7.33.0 
+<p class="level0"><a name="CURLOPTDNSLOCALIP6"></a><span class="nroffip">CURLOPT_DNS_LOCAL_IP6</span> 
+<p class="level1">Introduced in 7.33.0 
+<p class="level0"><a name="CURLOPTDNSSERVERS"></a><span class="nroffip">CURLOPT_DNS_SERVERS</span> 
+<p class="level1">Introduced in 7.24.0 
+<p class="level0"><a name="CURLOPTDNSUSEGLOBALCACHE"></a><span class="nroffip">CURLOPT_DNS_USE_GLOBAL_CACHE</span> 
+<p class="level1">Introduced in 7.9.3 Deprecated since 7.11.1 
+<p class="level0"><a name="CURLOPTEGDSOCKET"></a><span class="nroffip">CURLOPT_EGDSOCKET</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLOPTENCODING"></a><span class="nroffip">CURLOPT_ENCODING</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLOPTERRORBUFFER"></a><span class="nroffip">CURLOPT_ERRORBUFFER</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTEXPECT100TIMEOUTMS"></a><span class="nroffip">CURLOPT_EXPECT_100_TIMEOUT_MS</span> 
+<p class="level1">Introduced in 7.36.0 
+<p class="level0"><a name="CURLOPTFAILONERROR"></a><span class="nroffip">CURLOPT_FAILONERROR</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTFILE"></a><span class="nroffip">CURLOPT_FILE</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.9.7 
+<p class="level0"><a name="CURLOPTFILETIME"></a><span class="nroffip">CURLOPT_FILETIME</span> 
+<p class="level1">Introduced in 7.5 
+<p class="level0"><a name="CURLOPTFNMATCHDATA"></a><span class="nroffip">CURLOPT_FNMATCH_DATA</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLOPTFNMATCHFUNCTION"></a><span class="nroffip">CURLOPT_FNMATCH_FUNCTION</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLOPTFOLLOWLOCATION"></a><span class="nroffip">CURLOPT_FOLLOWLOCATION</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTFORBIDREUSE"></a><span class="nroffip">CURLOPT_FORBID_REUSE</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLOPTFRESHCONNECT"></a><span class="nroffip">CURLOPT_FRESH_CONNECT</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLOPTFTPAPPEND"></a><span class="nroffip">CURLOPT_FTPAPPEND</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.16.4 
+<p class="level0"><a name="CURLOPTFTPASCII"></a><span class="nroffip">CURLOPT_FTPASCII</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.11.1 Last used in 7.11.1 
+<p class="level0"><a name="CURLOPTFTPLISTONLY"></a><span class="nroffip">CURLOPT_FTPLISTONLY</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.16.4 
+<p class="level0"><a name="CURLOPTFTPPORT"></a><span class="nroffip">CURLOPT_FTPPORT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTFTPSSLAUTH"></a><span class="nroffip">CURLOPT_FTPSSLAUTH</span> 
+<p class="level1">Introduced in 7.12.2 
+<p class="level0"><a name="CURLOPTFTPACCOUNT"></a><span class="nroffip">CURLOPT_FTP_ACCOUNT</span> 
+<p class="level1">Introduced in 7.13.0 
+<p class="level0"><a name="CURLOPTFTPALTERNATIVETOUSER"></a><span class="nroffip">CURLOPT_FTP_ALTERNATIVE_TO_USER</span> 
+<p class="level1">Introduced in 7.15.5 
+<p class="level0"><a name="CURLOPTFTPCREATEMISSINGDIRS"></a><span class="nroffip">CURLOPT_FTP_CREATE_MISSING_DIRS</span> 
+<p class="level1">Introduced in 7.10.7 
+<p class="level0"><a name="CURLOPTFTPFILEMETHOD"></a><span class="nroffip">CURLOPT_FTP_FILEMETHOD</span> 
+<p class="level1">Introduced in 7.15.1 
+<p class="level0"><a name="CURLOPTFTPRESPONSETIMEOUT"></a><span class="nroffip">CURLOPT_FTP_RESPONSE_TIMEOUT</span> 
+<p class="level1">Introduced in 7.10.8 
+<p class="level0"><a name="CURLOPTFTPSKIPPASVIP"></a><span class="nroffip">CURLOPT_FTP_SKIP_PASV_IP</span> 
+<p class="level1">Introduced in 7.15.0 
+<p class="level0"><a name="CURLOPTFTPSSL"></a><span class="nroffip">CURLOPT_FTP_SSL</span> 
+<p class="level1">Introduced in 7.11.0 Deprecated since 7.16.4 
+<p class="level0"><a name="CURLOPTFTPSSLCCC"></a><span class="nroffip">CURLOPT_FTP_SSL_CCC</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLOPTFTPUSEEPRT"></a><span class="nroffip">CURLOPT_FTP_USE_EPRT</span> 
+<p class="level1">Introduced in 7.10.5 
+<p class="level0"><a name="CURLOPTFTPUSEEPSV"></a><span class="nroffip">CURLOPT_FTP_USE_EPSV</span> 
+<p class="level1">Introduced in 7.9.2 
+<p class="level0"><a name="CURLOPTFTPUSEPRET"></a><span class="nroffip">CURLOPT_FTP_USE_PRET</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLOPTGSSAPIDELEGATION"></a><span class="nroffip">CURLOPT_GSSAPI_DELEGATION</span> 
+<p class="level1">Introduced in 7.22.0 
+<p class="level0"><a name="CURLOPTHEADER"></a><span class="nroffip">CURLOPT_HEADER</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTHEADERDATA"></a><span class="nroffip">CURLOPT_HEADERDATA</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLOPTHEADERFUNCTION"></a><span class="nroffip">CURLOPT_HEADERFUNCTION</span> 
+<p class="level1">Introduced in 7.7.2 
+<p class="level0"><a name="CURLOPTHEADEROPT"></a><span class="nroffip">CURLOPT_HEADEROPT</span> 
+<p class="level1">Introduced in 7.37.0 
+<p class="level0"><a name="CURLOPTHTTP200ALIASES"></a><span class="nroffip">CURLOPT_HTTP200ALIASES</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLOPTHTTPAUTH"></a><span class="nroffip">CURLOPT_HTTPAUTH</span> 
+<p class="level1">Introduced in 7.10.6 
+<p class="level0"><a name="CURLOPTHTTPGET"></a><span class="nroffip">CURLOPT_HTTPGET</span> 
+<p class="level1">Introduced in 7.8.1 
+<p class="level0"><a name="CURLOPTHTTPHEADER"></a><span class="nroffip">CURLOPT_HTTPHEADER</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTHTTPPOST"></a><span class="nroffip">CURLOPT_HTTPPOST</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTHTTPPROXYTUNNEL"></a><span class="nroffip">CURLOPT_HTTPPROXYTUNNEL</span> 
+<p class="level1">Introduced in 7.3 
+<p class="level0"><a name="CURLOPTHTTPREQUEST"></a><span class="nroffip">CURLOPT_HTTPREQUEST</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTHTTPCONTENTDECODING"></a><span class="nroffip">CURLOPT_HTTP_CONTENT_DECODING</span> 
+<p class="level1">Introduced in 7.16.2 
+<p class="level0"><a name="CURLOPTHTTPTRANSFERDECODING"></a><span class="nroffip">CURLOPT_HTTP_TRANSFER_DECODING</span> 
+<p class="level1">Introduced in 7.16.2 
+<p class="level0"><a name="CURLOPTHTTPVERSION"></a><span class="nroffip">CURLOPT_HTTP_VERSION</span> 
+<p class="level1">Introduced in 7.9.1 
+<p class="level0"><a name="CURLOPTIGNORECONTENTLENGTH"></a><span class="nroffip">CURLOPT_IGNORE_CONTENT_LENGTH</span> 
+<p class="level1">Introduced in 7.14.1 
+<p class="level0"><a name="CURLOPTINFILE"></a><span class="nroffip">CURLOPT_INFILE</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.9.7 
+<p class="level0"><a name="CURLOPTINFILESIZE"></a><span class="nroffip">CURLOPT_INFILESIZE</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTINFILESIZELARGE"></a><span class="nroffip">CURLOPT_INFILESIZE_LARGE</span> 
+<p class="level1">Introduced in 7.11.0 
+<p class="level0"><a name="CURLOPTINTERFACE"></a><span class="nroffip">CURLOPT_INTERFACE</span> 
+<p class="level1">Introduced in 7.3 
+<p class="level0"><a name="CURLOPTINTERLEAVEDATA"></a><span class="nroffip">CURLOPT_INTERLEAVEDATA</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLOPTINTERLEAVEFUNCTION"></a><span class="nroffip">CURLOPT_INTERLEAVEFUNCTION</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLOPTIOCTLDATA"></a><span class="nroffip">CURLOPT_IOCTLDATA</span> 
+<p class="level1">Introduced in 7.12.3 
+<p class="level0"><a name="CURLOPTIOCTLFUNCTION"></a><span class="nroffip">CURLOPT_IOCTLFUNCTION</span> 
+<p class="level1">Introduced in 7.12.3 
+<p class="level0"><a name="CURLOPTIPRESOLVE"></a><span class="nroffip">CURLOPT_IPRESOLVE</span> 
+<p class="level1">Introduced in 7.10.8 
+<p class="level0"><a name="CURLOPTISSUERCERT"></a><span class="nroffip">CURLOPT_ISSUERCERT</span> 
+<p class="level1">Introduced in 7.19.0 
+<p class="level0"><a name="CURLOPTKEYPASSWD"></a><span class="nroffip">CURLOPT_KEYPASSWD</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLOPTKRB4LEVEL"></a><span class="nroffip">CURLOPT_KRB4LEVEL</span> 
+<p class="level1">Introduced in 7.3 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLOPTKRBLEVEL"></a><span class="nroffip">CURLOPT_KRBLEVEL</span> 
+<p class="level1">Introduced in 7.16.4 
+<p class="level0"><a name="CURLOPTLOCALPORT"></a><span class="nroffip">CURLOPT_LOCALPORT</span> 
+<p class="level1">Introduced in 7.15.2 
+<p class="level0"><a name="CURLOPTLOCALPORTRANGE"></a><span class="nroffip">CURLOPT_LOCALPORTRANGE</span> 
+<p class="level1">Introduced in 7.15.2 
+<p class="level0"><a name="CURLOPTLOGINOPTIONS"></a><span class="nroffip">CURLOPT_LOGIN_OPTIONS</span> 
+<p class="level1">Introduced in 7.34.0 
+<p class="level0"><a name="CURLOPTLOWSPEEDLIMIT"></a><span class="nroffip">CURLOPT_LOW_SPEED_LIMIT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTLOWSPEEDTIME"></a><span class="nroffip">CURLOPT_LOW_SPEED_TIME</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTMAILAUTH"></a><span class="nroffip">CURLOPT_MAIL_AUTH</span> 
+<p class="level1">Introduced in 7.25.0 
+<p class="level0"><a name="CURLOPTMAILFROM"></a><span class="nroffip">CURLOPT_MAIL_FROM</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLOPTMAILRCPT"></a><span class="nroffip">CURLOPT_MAIL_RCPT</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLOPTMAXCONNECTS"></a><span class="nroffip">CURLOPT_MAXCONNECTS</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLOPTMAXFILESIZE"></a><span class="nroffip">CURLOPT_MAXFILESIZE</span> 
+<p class="level1">Introduced in 7.10.8 
+<p class="level0"><a name="CURLOPTMAXFILESIZELARGE"></a><span class="nroffip">CURLOPT_MAXFILESIZE_LARGE</span> 
+<p class="level1">Introduced in 7.11.0 
+<p class="level0"><a name="CURLOPTMAXREDIRS"></a><span class="nroffip">CURLOPT_MAXREDIRS</span> 
+<p class="level1">Introduced in 7.5 
+<p class="level0"><a name="CURLOPTMAXRECVSPEEDLARGE"></a><span class="nroffip">CURLOPT_MAX_RECV_SPEED_LARGE</span> 
+<p class="level1">Introduced in 7.15.5 
+<p class="level0"><a name="CURLOPTMAXSENDSPEEDLARGE"></a><span class="nroffip">CURLOPT_MAX_SEND_SPEED_LARGE</span> 
+<p class="level1">Introduced in 7.15.5 
+<p class="level0"><a name="CURLOPTMUTE"></a><span class="nroffip">CURLOPT_MUTE</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.8 Last used in 7.8 
+<p class="level0"><a name="CURLOPTNETRC"></a><span class="nroffip">CURLOPT_NETRC</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTNETRCFILE"></a><span class="nroffip">CURLOPT_NETRC_FILE</span> 
+<p class="level1">Introduced in 7.11.0 
+<p class="level0"><a name="CURLOPTNEWDIRECTORYPERMS"></a><span class="nroffip">CURLOPT_NEW_DIRECTORY_PERMS</span> 
+<p class="level1">Introduced in 7.16.4 
+<p class="level0"><a name="CURLOPTNEWFILEPERMS"></a><span class="nroffip">CURLOPT_NEW_FILE_PERMS</span> 
+<p class="level1">Introduced in 7.16.4 
+<p class="level0"><a name="CURLOPTNOBODY"></a><span class="nroffip">CURLOPT_NOBODY</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTNOPROGRESS"></a><span class="nroffip">CURLOPT_NOPROGRESS</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTNOPROXY"></a><span class="nroffip">CURLOPT_NOPROXY</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLOPTNOSIGNAL"></a><span class="nroffip">CURLOPT_NOSIGNAL</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLOPTNOTHING"></a><span class="nroffip">CURLOPT_NOTHING</span> 
+<p class="level1">Introduced in 7.1.1 Deprecated since 7.11.1 Last used in 7.11.1 
+<p class="level0"><a name="CURLOPTOPENSOCKETDATA"></a><span class="nroffip">CURLOPT_OPENSOCKETDATA</span> 
+<p class="level1">Introduced in 7.17.1 
+<p class="level0"><a name="CURLOPTOPENSOCKETFUNCTION"></a><span class="nroffip">CURLOPT_OPENSOCKETFUNCTION</span> 
+<p class="level1">Introduced in 7.17.1 
+<p class="level0"><a name="CURLOPTPASSWDDATA"></a><span class="nroffip">CURLOPT_PASSWDDATA</span> 
+<p class="level1">Introduced in 7.4.2 Deprecated since 7.11.1 Last used in 7.11.1 
+<p class="level0"><a name="CURLOPTPASSWDFUNCTION"></a><span class="nroffip">CURLOPT_PASSWDFUNCTION</span> 
+<p class="level1">Introduced in 7.4.2 Deprecated since 7.11.1 Last used in 7.11.1 
+<p class="level0"><a name="CURLOPTPASSWORD"></a><span class="nroffip">CURLOPT_PASSWORD</span> 
+<p class="level1">Introduced in 7.19.1 
+<p class="level0"><a name="CURLOPTPASVHOST"></a><span class="nroffip">CURLOPT_PASV_HOST</span> 
+<p class="level1">Introduced in 7.12.1 Deprecated since 7.16.0 Last used in 7.16.0 
+<p class="level0"><a name="CURLOPTPATHASIS"></a><span class="nroffip">CURLOPT_PATH_AS_IS</span> 
+<p class="level1">Introduced in 7.42.0 
+<p class="level0"><a name="CURLOPTPINNEDPUBLICKEY"></a><span class="nroffip">CURLOPT_PINNEDPUBLICKEY</span> 
+<p class="level1">Introduced in 7.39.0 
+<p class="level0"><a name="CURLOPTPIPEWAIT"></a><span class="nroffip">CURLOPT_PIPEWAIT</span> 
+<p class="level1">Introduced in 7.43.0 
+<p class="level0"><a name="CURLOPTPORT"></a><span class="nroffip">CURLOPT_PORT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTPOST"></a><span class="nroffip">CURLOPT_POST</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTPOST301"></a><span class="nroffip">CURLOPT_POST301</span> 
+<p class="level1">Introduced in 7.17.1 Deprecated since 7.19.1 
+<p class="level0"><a name="CURLOPTPOSTFIELDS"></a><span class="nroffip">CURLOPT_POSTFIELDS</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTPOSTFIELDSIZE"></a><span class="nroffip">CURLOPT_POSTFIELDSIZE</span> 
+<p class="level1">Introduced in 7.2 
+<p class="level0"><a name="CURLOPTPOSTFIELDSIZELARGE"></a><span class="nroffip">CURLOPT_POSTFIELDSIZE_LARGE</span> 
+<p class="level1">Introduced in 7.11.1 
+<p class="level0"><a name="CURLOPTPOSTQUOTE"></a><span class="nroffip">CURLOPT_POSTQUOTE</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTPOSTREDIR"></a><span class="nroffip">CURLOPT_POSTREDIR</span> 
+<p class="level1">Introduced in 7.19.1 
+<p class="level0"><a name="CURLOPTPREQUOTE"></a><span class="nroffip">CURLOPT_PREQUOTE</span> 
+<p class="level1">Introduced in 7.9.5 
+<p class="level0"><a name="CURLOPTPRIVATE"></a><span class="nroffip">CURLOPT_PRIVATE</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLOPTPROGRESSDATA"></a><span class="nroffip">CURLOPT_PROGRESSDATA</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTPROGRESSFUNCTION"></a><span class="nroffip">CURLOPT_PROGRESSFUNCTION</span> 
+<p class="level1">Introduced in 7.1 Deprecated since 7.32.0 
+<p class="level0"><a name="CURLOPTPROTOCOLS"></a><span class="nroffip">CURLOPT_PROTOCOLS</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLOPTPROXY"></a><span class="nroffip">CURLOPT_PROXY</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTPROXYAUTH"></a><span class="nroffip">CURLOPT_PROXYAUTH</span> 
+<p class="level1">Introduced in 7.10.7 
+<p class="level0"><a name="CURLOPTPROXYHEADER"></a><span class="nroffip">CURLOPT_PROXYHEADER</span> 
+<p class="level1">Introduced in 7.37.0 
+<p class="level0"><a name="CURLOPTPROXYPASSWORD"></a><span class="nroffip">CURLOPT_PROXYPASSWORD</span> 
+<p class="level1">Introduced in 7.19.1 
+<p class="level0"><a name="CURLOPTPROXYPORT"></a><span class="nroffip">CURLOPT_PROXYPORT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTPROXYTYPE"></a><span class="nroffip">CURLOPT_PROXYTYPE</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLOPTPROXYUSERNAME"></a><span class="nroffip">CURLOPT_PROXYUSERNAME</span> 
+<p class="level1">Introduced in 7.19.1 
+<p class="level0"><a name="CURLOPTPROXYUSERPWD"></a><span class="nroffip">CURLOPT_PROXYUSERPWD</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTPROXYSERVICENAME"></a><span class="nroffip">CURLOPT_PROXY_SERVICE_NAME</span> 
+<p class="level1">Introduced in 7.43.0 
+<p class="level0"><a name="CURLOPTPROXYTRANSFERMODE"></a><span class="nroffip">CURLOPT_PROXY_TRANSFER_MODE</span> 
+<p class="level1">Introduced in 7.18.0 
+<p class="level0"><a name="CURLOPTPUT"></a><span class="nroffip">CURLOPT_PUT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTQUOTE"></a><span class="nroffip">CURLOPT_QUOTE</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTRANDOMFILE"></a><span class="nroffip">CURLOPT_RANDOM_FILE</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLOPTRANGE"></a><span class="nroffip">CURLOPT_RANGE</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTREADDATA"></a><span class="nroffip">CURLOPT_READDATA</span> 
+<p class="level1">Introduced in 7.9.7 
+<p class="level0"><a name="CURLOPTREADFUNCTION"></a><span class="nroffip">CURLOPT_READFUNCTION</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTREDIRPROTOCOLS"></a><span class="nroffip">CURLOPT_REDIR_PROTOCOLS</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLOPTREFERER"></a><span class="nroffip">CURLOPT_REFERER</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTRESOLVE"></a><span class="nroffip">CURLOPT_RESOLVE</span> 
+<p class="level1">Introduced in 7.21.3 
+<p class="level0"><a name="CURLOPTRESUMEFROM"></a><span class="nroffip">CURLOPT_RESUME_FROM</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTRESUMEFROMLARGE"></a><span class="nroffip">CURLOPT_RESUME_FROM_LARGE</span> 
+<p class="level1">Introduced in 7.11.0 
+<p class="level0"><a name="CURLOPTRTSPHEADER"></a><span class="nroffip">CURLOPT_RTSPHEADER</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLOPTRTSPCLIENTCSEQ"></a><span class="nroffip">CURLOPT_RTSP_CLIENT_CSEQ</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLOPTRTSPREQUEST"></a><span class="nroffip">CURLOPT_RTSP_REQUEST</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLOPTRTSPSERVERCSEQ"></a><span class="nroffip">CURLOPT_RTSP_SERVER_CSEQ</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLOPTRTSPSESSIONID"></a><span class="nroffip">CURLOPT_RTSP_SESSION_ID</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLOPTRTSPSTREAMURI"></a><span class="nroffip">CURLOPT_RTSP_STREAM_URI</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLOPTRTSPTRANSPORT"></a><span class="nroffip">CURLOPT_RTSP_TRANSPORT</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLOPTSASLIR"></a><span class="nroffip">CURLOPT_SASL_IR</span> 
+<p class="level1">Introduced in 7.31.0 
+<p class="level0"><a name="CURLOPTSEEKDATA"></a><span class="nroffip">CURLOPT_SEEKDATA</span> 
+<p class="level1">Introduced in 7.18.0 
+<p class="level0"><a name="CURLOPTSEEKFUNCTION"></a><span class="nroffip">CURLOPT_SEEKFUNCTION</span> 
+<p class="level1">Introduced in 7.18.0 
+<p class="level0"><a name="CURLOPTSERVERRESPONSETIMEOUT"></a><span class="nroffip">CURLOPT_SERVER_RESPONSE_TIMEOUT</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLOPTSERVICENAME"></a><span class="nroffip">CURLOPT_SERVICE_NAME</span> 
+<p class="level1">Introduced in 7.43.0 
+<p class="level0"><a name="CURLOPTSHARE"></a><span class="nroffip">CURLOPT_SHARE</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLOPTSOCKOPTDATA"></a><span class="nroffip">CURLOPT_SOCKOPTDATA</span> 
+<p class="level1">Introduced in 7.16.0 
+<p class="level0"><a name="CURLOPTSOCKOPTFUNCTION"></a><span class="nroffip">CURLOPT_SOCKOPTFUNCTION</span> 
+<p class="level1">Introduced in 7.16.0 
+<p class="level0"><a name="CURLOPTSOCKS5GSSAPINEC"></a><span class="nroffip">CURLOPT_SOCKS5_GSSAPI_NEC</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLOPTSOCKS5GSSAPISERVICE"></a><span class="nroffip">CURLOPT_SOCKS5_GSSAPI_SERVICE</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLOPTSOURCEHOST"></a><span class="nroffip">CURLOPT_SOURCE_HOST</span> 
+<p class="level1">Introduced in 7.12.1 
+<p class="level0"><a name="CURLOPTSOURCEPATH"></a><span class="nroffip">CURLOPT_SOURCE_PATH</span> 
+<p class="level1">Introduced in 7.12.1 
+<p class="level0"><a name="CURLOPTSOURCEPORT"></a><span class="nroffip">CURLOPT_SOURCE_PORT</span> 
+<p class="level1">Introduced in 7.12.1 
+<p class="level0"><a name="CURLOPTSOURCEPOSTQUOTE"></a><span class="nroffip">CURLOPT_SOURCE_POSTQUOTE</span> 
+<p class="level1">Introduced in 7.12.1 
+<p class="level0"><a name="CURLOPTSOURCEPREQUOTE"></a><span class="nroffip">CURLOPT_SOURCE_PREQUOTE</span> 
+<p class="level1">Introduced in 7.12.1 
+<p class="level0"><a name="CURLOPTSOURCEQUOTE"></a><span class="nroffip">CURLOPT_SOURCE_QUOTE</span> 
+<p class="level1">Introduced in 7.13.0 
+<p class="level0"><a name="CURLOPTSOURCEURL"></a><span class="nroffip">CURLOPT_SOURCE_URL</span> 
+<p class="level1">Introduced in 7.13.0 
+<p class="level0"><a name="CURLOPTSOURCEUSERPWD"></a><span class="nroffip">CURLOPT_SOURCE_USERPWD</span> 
+<p class="level1">Introduced in 7.12.1 
+<p class="level0"><a name="CURLOPTSSHAUTHTYPES"></a><span class="nroffip">CURLOPT_SSH_AUTH_TYPES</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLOPTSSHHOSTPUBLICKEYMD5"></a><span class="nroffip">CURLOPT_SSH_HOST_PUBLIC_KEY_MD5</span> 
+<p class="level1">Introduced in 7.17.1 
+<p class="level0"><a name="CURLOPTSSHKEYDATA"></a><span class="nroffip">CURLOPT_SSH_KEYDATA</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLOPTSSHKEYFUNCTION"></a><span class="nroffip">CURLOPT_SSH_KEYFUNCTION</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLOPTSSHKNOWNHOSTS"></a><span class="nroffip">CURLOPT_SSH_KNOWNHOSTS</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLOPTSSHPRIVATEKEYFILE"></a><span class="nroffip">CURLOPT_SSH_PRIVATE_KEYFILE</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLOPTSSHPUBLICKEYFILE"></a><span class="nroffip">CURLOPT_SSH_PUBLIC_KEYFILE</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLOPTSSLCERT"></a><span class="nroffip">CURLOPT_SSLCERT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTSSLCERTPASSWD"></a><span class="nroffip">CURLOPT_SSLCERTPASSWD</span> 
+<p class="level1">Introduced in 7.1.1 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLOPTSSLCERTTYPE"></a><span class="nroffip">CURLOPT_SSLCERTTYPE</span> 
+<p class="level1">Introduced in 7.9.3 
+<p class="level0"><a name="CURLOPTSSLENGINE"></a><span class="nroffip">CURLOPT_SSLENGINE</span> 
+<p class="level1">Introduced in 7.9.3 
+<p class="level0"><a name="CURLOPTSSLENGINEDEFAULT"></a><span class="nroffip">CURLOPT_SSLENGINE_DEFAULT</span> 
+<p class="level1">Introduced in 7.9.3 
+<p class="level0"><a name="CURLOPTSSLKEY"></a><span class="nroffip">CURLOPT_SSLKEY</span> 
+<p class="level1">Introduced in 7.9.3 
+<p class="level0"><a name="CURLOPTSSLKEYPASSWD"></a><span class="nroffip">CURLOPT_SSLKEYPASSWD</span> 
+<p class="level1">Introduced in 7.9.3 Deprecated since 7.17.0 
+<p class="level0"><a name="CURLOPTSSLKEYTYPE"></a><span class="nroffip">CURLOPT_SSLKEYTYPE</span> 
+<p class="level1">Introduced in 7.9.3 
+<p class="level0"><a name="CURLOPTSSLVERSION"></a><span class="nroffip">CURLOPT_SSLVERSION</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTSSLCIPHERLIST"></a><span class="nroffip">CURLOPT_SSL_CIPHER_LIST</span> 
+<p class="level1">Introduced in 7.9 
+<p class="level0"><a name="CURLOPTSSLCTXDATA"></a><span class="nroffip">CURLOPT_SSL_CTX_DATA</span> 
+<p class="level1">Introduced in 7.10.6 
+<p class="level0"><a name="CURLOPTSSLCTXFUNCTION"></a><span class="nroffip">CURLOPT_SSL_CTX_FUNCTION</span> 
+<p class="level1">Introduced in 7.10.6 
+<p class="level0"><a name="CURLOPTSSLENABLEALPN"></a><span class="nroffip">CURLOPT_SSL_ENABLE_ALPN</span> 
+<p class="level1">Introduced in 7.36.0 
+<p class="level0"><a name="CURLOPTSSLENABLENPN"></a><span class="nroffip">CURLOPT_SSL_ENABLE_NPN</span> 
+<p class="level1">Introduced in 7.36.0 
+<p class="level0"><a name="CURLOPTSSLFALSESTART"></a><span class="nroffip">CURLOPT_SSL_FALSESTART</span> 
+<p class="level1">Introduced in 7.42.0 
+<p class="level0"><a name="CURLOPTSSLOPTIONS"></a><span class="nroffip">CURLOPT_SSL_OPTIONS</span> 
+<p class="level1">Introduced in 7.25.0 
+<p class="level0"><a name="CURLOPTSSLSESSIONIDCACHE"></a><span class="nroffip">CURLOPT_SSL_SESSIONID_CACHE</span> 
+<p class="level1">Introduced in 7.16.0 
+<p class="level0"><a name="CURLOPTSSLVERIFYHOST"></a><span class="nroffip">CURLOPT_SSL_VERIFYHOST</span> 
+<p class="level1">Introduced in 7.8.1 
+<p class="level0"><a name="CURLOPTSSLVERIFYPEER"></a><span class="nroffip">CURLOPT_SSL_VERIFYPEER</span> 
+<p class="level1">Introduced in 7.4.2 
+<p class="level0"><a name="CURLOPTSSLVERIFYSTATUS"></a><span class="nroffip">CURLOPT_SSL_VERIFYSTATUS</span> 
+<p class="level1">Introduced in 7.41.0 
+<p class="level0"><a name="CURLOPTSTDERR"></a><span class="nroffip">CURLOPT_STDERR</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTTCPKEEPALIVE"></a><span class="nroffip">CURLOPT_TCP_KEEPALIVE</span> 
+<p class="level1">Introduced in 7.25.0 
+<p class="level0"><a name="CURLOPTTCPKEEPIDLE"></a><span class="nroffip">CURLOPT_TCP_KEEPIDLE</span> 
+<p class="level1">Introduced in 7.25.0 
+<p class="level0"><a name="CURLOPTTCPKEEPINTVL"></a><span class="nroffip">CURLOPT_TCP_KEEPINTVL</span> 
+<p class="level1">Introduced in 7.25.0 
+<p class="level0"><a name="CURLOPTTCPNODELAY"></a><span class="nroffip">CURLOPT_TCP_NODELAY</span> 
+<p class="level1">Introduced in 7.11.2 
+<p class="level0"><a name="CURLOPTTELNETOPTIONS"></a><span class="nroffip">CURLOPT_TELNETOPTIONS</span> 
+<p class="level1">Introduced in 7.7 
+<p class="level0"><a name="CURLOPTTFTPBLKSIZE"></a><span class="nroffip">CURLOPT_TFTP_BLKSIZE</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLOPTTIMECONDITION"></a><span class="nroffip">CURLOPT_TIMECONDITION</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTTIMEOUT"></a><span class="nroffip">CURLOPT_TIMEOUT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTTIMEOUTMS"></a><span class="nroffip">CURLOPT_TIMEOUT_MS</span> 
+<p class="level1">Introduced in 7.16.2 
+<p class="level0"><a name="CURLOPTTIMEVALUE"></a><span class="nroffip">CURLOPT_TIMEVALUE</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTTLSAUTHPASSWORD"></a><span class="nroffip">CURLOPT_TLSAUTH_PASSWORD</span> 
+<p class="level1">Introduced in 7.21.4 
+<p class="level0"><a name="CURLOPTTLSAUTHTYPE"></a><span class="nroffip">CURLOPT_TLSAUTH_TYPE</span> 
+<p class="level1">Introduced in 7.21.4 
+<p class="level0"><a name="CURLOPTTLSAUTHUSERNAME"></a><span class="nroffip">CURLOPT_TLSAUTH_USERNAME</span> 
+<p class="level1">Introduced in 7.21.4 
+<p class="level0"><a name="CURLOPTTRANSFERTEXT"></a><span class="nroffip">CURLOPT_TRANSFERTEXT</span> 
+<p class="level1">Introduced in 7.1.1 
+<p class="level0"><a name="CURLOPTTRANSFERENCODING"></a><span class="nroffip">CURLOPT_TRANSFER_ENCODING</span> 
+<p class="level1">Introduced in 7.21.6 
+<p class="level0"><a name="CURLOPTUNIXSOCKETPATH"></a><span class="nroffip">CURLOPT_UNIX_SOCKET_PATH</span> 
+<p class="level1">Introduced in 7.40.0 
+<p class="level0"><a name="CURLOPTUNRESTRICTEDAUTH"></a><span class="nroffip">CURLOPT_UNRESTRICTED_AUTH</span> 
+<p class="level1">Introduced in 7.10.4 
+<p class="level0"><a name="CURLOPTUPLOAD"></a><span class="nroffip">CURLOPT_UPLOAD</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTURL"></a><span class="nroffip">CURLOPT_URL</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTUSERAGENT"></a><span class="nroffip">CURLOPT_USERAGENT</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTUSERNAME"></a><span class="nroffip">CURLOPT_USERNAME</span> 
+<p class="level1">Introduced in 7.19.1 
+<p class="level0"><a name="CURLOPTUSERPWD"></a><span class="nroffip">CURLOPT_USERPWD</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTUSESSL"></a><span class="nroffip">CURLOPT_USE_SSL</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLOPTVERBOSE"></a><span class="nroffip">CURLOPT_VERBOSE</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTWILDCARDMATCH"></a><span class="nroffip">CURLOPT_WILDCARDMATCH</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLOPTWRITEDATA"></a><span class="nroffip">CURLOPT_WRITEDATA</span> 
+<p class="level1">Introduced in 7.9.7 
+<p class="level0"><a name="CURLOPTWRITEFUNCTION"></a><span class="nroffip">CURLOPT_WRITEFUNCTION</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTWRITEHEADER"></a><span class="nroffip">CURLOPT_WRITEHEADER</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTWRITEINFO"></a><span class="nroffip">CURLOPT_WRITEINFO</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLOPTXFERINFODATA"></a><span class="nroffip">CURLOPT_XFERINFODATA</span> 
+<p class="level1">Introduced in 7.32.0 
+<p class="level0"><a name="CURLOPTXFERINFOFUNCTION"></a><span class="nroffip">CURLOPT_XFERINFOFUNCTION</span> 
+<p class="level1">Introduced in 7.32.0 
+<p class="level0"><a name="CURLOPTXOAUTH2BEARER"></a><span class="nroffip">CURLOPT_XOAUTH2_BEARER</span> 
+<p class="level1">Introduced in 7.33.0 
+<p class="level0"><a name="CURLPAUSEALL"></a><span class="nroffip">CURLPAUSE_ALL</span> 
+<p class="level1">Introduced in 7.18.0 
+<p class="level0"><a name="CURLPAUSECONT"></a><span class="nroffip">CURLPAUSE_CONT</span> 
+<p class="level1">Introduced in 7.18.0 
+<p class="level0"><a name="CURLPAUSERECV"></a><span class="nroffip">CURLPAUSE_RECV</span> 
+<p class="level1">Introduced in 7.18.0 
+<p class="level0"><a name="CURLPAUSERECVCONT"></a><span class="nroffip">CURLPAUSE_RECV_CONT</span> 
+<p class="level1">Introduced in 7.18.0 
+<p class="level0"><a name="CURLPAUSESEND"></a><span class="nroffip">CURLPAUSE_SEND</span> 
+<p class="level1">Introduced in 7.18.0 
+<p class="level0"><a name="CURLPAUSESENDCONT"></a><span class="nroffip">CURLPAUSE_SEND_CONT</span> 
+<p class="level1">Introduced in 7.18.0 
+<p class="level0"><a name="CURLPIPEHTTP1"></a><span class="nroffip">CURLPIPE_HTTP1</span> 
+<p class="level1">Introduced in 7.43.0 
+<p class="level0"><a name="CURLPIPEMULTIPLEX"></a><span class="nroffip">CURLPIPE_MULTIPLEX</span> 
+<p class="level1">Introduced in 7.43.0 
+<p class="level0"><a name="CURLPIPENOTHING"></a><span class="nroffip">CURLPIPE_NOTHING</span> 
+<p class="level1">Introduced in 7.43.0 
+<p class="level0"><a name="CURLPROTOALL"></a><span class="nroffip">CURLPROTO_ALL</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROTODICT"></a><span class="nroffip">CURLPROTO_DICT</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROTOFILE"></a><span class="nroffip">CURLPROTO_FILE</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROTOFTP"></a><span class="nroffip">CURLPROTO_FTP</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROTOFTPS"></a><span class="nroffip">CURLPROTO_FTPS</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROTOGOPHER"></a><span class="nroffip">CURLPROTO_GOPHER</span> 
+<p class="level1">Introduced in 7.21.2 
+<p class="level0"><a name="CURLPROTOHTTP"></a><span class="nroffip">CURLPROTO_HTTP</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROTOHTTPS"></a><span class="nroffip">CURLPROTO_HTTPS</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROTOIMAP"></a><span class="nroffip">CURLPROTO_IMAP</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLPROTOIMAPS"></a><span class="nroffip">CURLPROTO_IMAPS</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLPROTOLDAP"></a><span class="nroffip">CURLPROTO_LDAP</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROTOLDAPS"></a><span class="nroffip">CURLPROTO_LDAPS</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROTOPOP3"></a><span class="nroffip">CURLPROTO_POP3</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLPROTOPOP3S"></a><span class="nroffip">CURLPROTO_POP3S</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLPROTORTMP"></a><span class="nroffip">CURLPROTO_RTMP</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLPROTORTMPE"></a><span class="nroffip">CURLPROTO_RTMPE</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLPROTORTMPS"></a><span class="nroffip">CURLPROTO_RTMPS</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLPROTORTMPT"></a><span class="nroffip">CURLPROTO_RTMPT</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLPROTORTMPTE"></a><span class="nroffip">CURLPROTO_RTMPTE</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLPROTORTMPTS"></a><span class="nroffip">CURLPROTO_RTMPTS</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLPROTORTSP"></a><span class="nroffip">CURLPROTO_RTSP</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLPROTOSCP"></a><span class="nroffip">CURLPROTO_SCP</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROTOSFTP"></a><span class="nroffip">CURLPROTO_SFTP</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROTOSMB"></a><span class="nroffip">CURLPROTO_SMB</span> 
+<p class="level1">Introduced in 7.40.0 
+<p class="level0"><a name="CURLPROTOSMBS"></a><span class="nroffip">CURLPROTO_SMBS</span> 
+<p class="level1">Introduced in 7.40.0 
+<p class="level0"><a name="CURLPROTOSMTP"></a><span class="nroffip">CURLPROTO_SMTP</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLPROTOSMTPS"></a><span class="nroffip">CURLPROTO_SMTPS</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLPROTOTELNET"></a><span class="nroffip">CURLPROTO_TELNET</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROTOTFTP"></a><span class="nroffip">CURLPROTO_TFTP</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROXYHTTP"></a><span class="nroffip">CURLPROXY_HTTP</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLPROXYHTTP10"></a><span class="nroffip">CURLPROXY_HTTP_1_0</span> 
+<p class="level1">Introduced in 7.19.4 
+<p class="level0"><a name="CURLPROXYSOCKS4"></a><span class="nroffip">CURLPROXY_SOCKS4</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLPROXYSOCKS4A"></a><span class="nroffip">CURLPROXY_SOCKS4A</span> 
+<p class="level1">Introduced in 7.18.0 
+<p class="level0"><a name="CURLPROXYSOCKS5"></a><span class="nroffip">CURLPROXY_SOCKS5</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLPROXYSOCKS5HOSTNAME"></a><span class="nroffip">CURLPROXY_SOCKS5_HOSTNAME</span> 
+<p class="level1">Introduced in 7.18.0 
+<p class="level0"><a name="CURLSHEBADOPTION"></a><span class="nroffip">CURLSHE_BAD_OPTION</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLSHEINVALID"></a><span class="nroffip">CURLSHE_INVALID</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLSHEINUSE"></a><span class="nroffip">CURLSHE_IN_USE</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLSHENOMEM"></a><span class="nroffip">CURLSHE_NOMEM</span> 
+<p class="level1">Introduced in 7.12.0 
+<p class="level0"><a name="CURLSHENOTBUILTIN"></a><span class="nroffip">CURLSHE_NOT_BUILT_IN</span> 
+<p class="level1">Introduced in 7.23.0 
+<p class="level0"><a name="CURLSHEOK"></a><span class="nroffip">CURLSHE_OK</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLSHOPTLOCKFUNC"></a><span class="nroffip">CURLSHOPT_LOCKFUNC</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLSHOPTNONE"></a><span class="nroffip">CURLSHOPT_NONE</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLSHOPTSHARE"></a><span class="nroffip">CURLSHOPT_SHARE</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLSHOPTUNLOCKFUNC"></a><span class="nroffip">CURLSHOPT_UNLOCKFUNC</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLSHOPTUNSHARE"></a><span class="nroffip">CURLSHOPT_UNSHARE</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLSHOPTUSERDATA"></a><span class="nroffip">CURLSHOPT_USERDATA</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLSOCKTYPEACCEPT"></a><span class="nroffip">CURLSOCKTYPE_ACCEPT</span> 
+<p class="level1">Introduced in 7.28.0 
+<p class="level0"><a name="CURLSOCKTYPEIPCXN"></a><span class="nroffip">CURLSOCKTYPE_IPCXN</span> 
+<p class="level1">Introduced in 7.16.0 
+<p class="level0"><a name="CURLSSHAUTHAGENT"></a><span class="nroffip">CURLSSH_AUTH_AGENT</span> 
+<p class="level1">Introduced in 7.28.0 
+<p class="level0"><a name="CURLSSHAUTHANY"></a><span class="nroffip">CURLSSH_AUTH_ANY</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLSSHAUTHDEFAULT"></a><span class="nroffip">CURLSSH_AUTH_DEFAULT</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLSSHAUTHHOST"></a><span class="nroffip">CURLSSH_AUTH_HOST</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLSSHAUTHKEYBOARD"></a><span class="nroffip">CURLSSH_AUTH_KEYBOARD</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLSSHAUTHNONE"></a><span class="nroffip">CURLSSH_AUTH_NONE</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLSSHAUTHPASSWORD"></a><span class="nroffip">CURLSSH_AUTH_PASSWORD</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLSSHAUTHPUBLICKEY"></a><span class="nroffip">CURLSSH_AUTH_PUBLICKEY</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLSSLBACKENDAXTLS"></a><span class="nroffip">CURLSSLBACKEND_AXTLS</span> 
+<p class="level1">Introduced in 7.38.0 
+<p class="level0"><a name="CURLSSLBACKENDCYASSL"></a><span class="nroffip">CURLSSLBACKEND_CYASSL</span> 
+<p class="level1">Introduced in 7.34.0 
+<p class="level0"><a name="CURLSSLBACKENDDARWINSSL"></a><span class="nroffip">CURLSSLBACKEND_DARWINSSL</span> 
+<p class="level1">Introduced in 7.34.0 
+<p class="level0"><a name="CURLSSLBACKENDGNUTLS"></a><span class="nroffip">CURLSSLBACKEND_GNUTLS</span> 
+<p class="level1">Introduced in 7.34.0 
+<p class="level0"><a name="CURLSSLBACKENDGSKIT"></a><span class="nroffip">CURLSSLBACKEND_GSKIT</span> 
+<p class="level1">Introduced in 7.34.0 
+<p class="level0"><a name="CURLSSLBACKENDNONE"></a><span class="nroffip">CURLSSLBACKEND_NONE</span> 
+<p class="level1">Introduced in 7.34.0 
+<p class="level0"><a name="CURLSSLBACKENDNSS"></a><span class="nroffip">CURLSSLBACKEND_NSS</span> 
+<p class="level1">Introduced in 7.34.0 
+<p class="level0"><a name="CURLSSLBACKENDOPENSSL"></a><span class="nroffip">CURLSSLBACKEND_OPENSSL</span> 
+<p class="level1">Introduced in 7.34.0 
+<p class="level0"><a name="CURLSSLBACKENDPOLARSSL"></a><span class="nroffip">CURLSSLBACKEND_POLARSSL</span> 
+<p class="level1">Introduced in 7.34.0 
+<p class="level0"><a name="CURLSSLBACKENDQSOSSL"></a><span class="nroffip">CURLSSLBACKEND_QSOSSL</span> 
+<p class="level1">Introduced in 7.34.0 
+<p class="level0"><a name="CURLSSLBACKENDSCHANNEL"></a><span class="nroffip">CURLSSLBACKEND_SCHANNEL</span> 
+<p class="level1">Introduced in 7.34.0 
+<p class="level0"><a name="CURLSSLOPTALLOWBEAST"></a><span class="nroffip">CURLSSLOPT_ALLOW_BEAST</span> 
+<p class="level1">Introduced in 7.25.0 
+<p class="level0"><a name="CURLSSLOPTNOREVOKE"></a><span class="nroffip">CURLSSLOPT_NO_REVOKE</span> 
+<p class="level1">Introduced in 7.44.0 
+<p class="level0"><a name="CURLUSESSLALL"></a><span class="nroffip">CURLUSESSL_ALL</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLUSESSLCONTROL"></a><span class="nroffip">CURLUSESSL_CONTROL</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLUSESSLNONE"></a><span class="nroffip">CURLUSESSL_NONE</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLUSESSLTRY"></a><span class="nroffip">CURLUSESSL_TRY</span> 
+<p class="level1">Introduced in 7.17.0 
+<p class="level0"><a name="CURLVERSIONFIRST"></a><span class="nroffip">CURLVERSION_FIRST</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLVERSIONFOURTH"></a><span class="nroffip">CURLVERSION_FOURTH</span> 
+<p class="level1">Introduced in 7.16.1 
+<p class="level0"><a name="CURLVERSIONNOW"></a><span class="nroffip">CURLVERSION_NOW</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLVERSIONSECOND"></a><span class="nroffip">CURLVERSION_SECOND</span> 
+<p class="level1">Introduced in 7.11.1 
+<p class="level0"><a name="CURLVERSIONTHIRD"></a><span class="nroffip">CURLVERSION_THIRD</span> 
+<p class="level1">Introduced in 7.12.0 
+<p class="level0"><a name="CURLCHUNKBGNFUNCFAIL"></a><span class="nroffip">CURL_CHUNK_BGN_FUNC_FAIL</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLCHUNKBGNFUNCOK"></a><span class="nroffip">CURL_CHUNK_BGN_FUNC_OK</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLCHUNKBGNFUNCSKIP"></a><span class="nroffip">CURL_CHUNK_BGN_FUNC_SKIP</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLCHUNKENDFUNCFAIL"></a><span class="nroffip">CURL_CHUNK_END_FUNC_FAIL</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLCHUNKENDFUNCOK"></a><span class="nroffip">CURL_CHUNK_END_FUNC_OK</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLCSELECTERR"></a><span class="nroffip">CURL_CSELECT_ERR</span> 
+<p class="level1">Introduced in 7.16.3 
+<p class="level0"><a name="CURLCSELECTIN"></a><span class="nroffip">CURL_CSELECT_IN</span> 
+<p class="level1">Introduced in 7.16.3 
+<p class="level0"><a name="CURLCSELECTOUT"></a><span class="nroffip">CURL_CSELECT_OUT</span> 
+<p class="level1">Introduced in 7.16.3 
+<p class="level0"><a name="CURLEASYNONE"></a><span class="nroffip">CURL_EASY_NONE</span> 
+<p class="level1">Introduced in 7.14.0 
+<p class="level0"><a name="CURLEASYTIMEOUT"></a><span class="nroffip">CURL_EASY_TIMEOUT</span> 
+<p class="level1">Introduced in 7.14.0 
+<p class="level0"><a name="CURLERRORSIZE"></a><span class="nroffip">CURL_ERROR_SIZE</span> 
+<p class="level1">Introduced in 7.1 
+<p class="level0"><a name="CURLFNMATCHFUNCFAIL"></a><span class="nroffip">CURL_FNMATCHFUNC_FAIL</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFNMATCHFUNCMATCH"></a><span class="nroffip">CURL_FNMATCHFUNC_MATCH</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFNMATCHFUNCNOMATCH"></a><span class="nroffip">CURL_FNMATCHFUNC_NOMATCH</span> 
+<p class="level1">Introduced in 7.21.0 
+<p class="level0"><a name="CURLFORMADDDISABLED"></a><span class="nroffip">CURL_FORMADD_DISABLED</span> 
+<p class="level1">Introduced in 7.12.1 
+<p class="level0"><a name="CURLFORMADDILLEGALARRAY"></a><span class="nroffip">CURL_FORMADD_ILLEGAL_ARRAY</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLFORMADDINCOMPLETE"></a><span class="nroffip">CURL_FORMADD_INCOMPLETE</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLFORMADDMEMORY"></a><span class="nroffip">CURL_FORMADD_MEMORY</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLFORMADDNULL"></a><span class="nroffip">CURL_FORMADD_NULL</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLFORMADDOK"></a><span class="nroffip">CURL_FORMADD_OK</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLFORMADDOPTIONTWICE"></a><span class="nroffip">CURL_FORMADD_OPTION_TWICE</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLFORMADDUNKNOWNOPTION"></a><span class="nroffip">CURL_FORMADD_UNKNOWN_OPTION</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLGLOBALACKEINTR"></a><span class="nroffip">CURL_GLOBAL_ACK_EINTR</span> 
+<p class="level1">Introduced in 7.30.0 
+<p class="level0"><a name="CURLGLOBALALL"></a><span class="nroffip">CURL_GLOBAL_ALL</span> 
+<p class="level1">Introduced in 7.8 
+<p class="level0"><a name="CURLGLOBALDEFAULT"></a><span class="nroffip">CURL_GLOBAL_DEFAULT</span> 
+<p class="level1">Introduced in 7.8 
+<p class="level0"><a name="CURLGLOBALNOTHING"></a><span class="nroffip">CURL_GLOBAL_NOTHING</span> 
+<p class="level1">Introduced in 7.8 
+<p class="level0"><a name="CURLGLOBALSSL"></a><span class="nroffip">CURL_GLOBAL_SSL</span> 
+<p class="level1">Introduced in 7.8 
+<p class="level0"><a name="CURLGLOBALWIN32"></a><span class="nroffip">CURL_GLOBAL_WIN32</span> 
+<p class="level1">Introduced in 7.8.1 
+<p class="level0"><a name="CURLHTTPVERSION10"></a><span class="nroffip">CURL_HTTP_VERSION_1_0</span> 
+<p class="level1">Introduced in 7.9.1 
+<p class="level0"><a name="CURLHTTPVERSION11"></a><span class="nroffip">CURL_HTTP_VERSION_1_1</span> 
+<p class="level1">Introduced in 7.9.1 
+<p class="level0"><a name="CURLHTTPVERSION20"></a><span class="nroffip">CURL_HTTP_VERSION_2_0</span> 
+<p class="level1">Introduced in 7.33.0 
+<p class="level0"><a name="CURLHTTPVERSION2"></a><span class="nroffip">CURL_HTTP_VERSION_2</span> 
+<p class="level1">Introduced in 7.43.0 
+<p class="level0"><a name="CURLHTTPVERSIONNONE"></a><span class="nroffip">CURL_HTTP_VERSION_NONE</span> 
+<p class="level1">Introduced in 7.9.1 
+<p class="level0"><a name="CURLIPRESOLVEV4"></a><span class="nroffip">CURL_IPRESOLVE_V4</span> 
+<p class="level1">Introduced in 7.10.8 
+<p class="level0"><a name="CURLIPRESOLVEV6"></a><span class="nroffip">CURL_IPRESOLVE_V6</span> 
+<p class="level1">Introduced in 7.10.8 
+<p class="level0"><a name="CURLIPRESOLVEWHATEVER"></a><span class="nroffip">CURL_IPRESOLVE_WHATEVER</span> 
+<p class="level1">Introduced in 7.10.8 
+<p class="level0"><a name="CURLLOCKACCESSNONE"></a><span class="nroffip">CURL_LOCK_ACCESS_NONE</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLLOCKACCESSSHARED"></a><span class="nroffip">CURL_LOCK_ACCESS_SHARED</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLLOCKACCESSSINGLE"></a><span class="nroffip">CURL_LOCK_ACCESS_SINGLE</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLLOCKDATACONNECT"></a><span class="nroffip">CURL_LOCK_DATA_CONNECT</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLLOCKDATACOOKIE"></a><span class="nroffip">CURL_LOCK_DATA_COOKIE</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLLOCKDATADNS"></a><span class="nroffip">CURL_LOCK_DATA_DNS</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLLOCKDATANONE"></a><span class="nroffip">CURL_LOCK_DATA_NONE</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLLOCKDATASHARE"></a><span class="nroffip">CURL_LOCK_DATA_SHARE</span> 
+<p class="level1">Introduced in 7.10.4 
+<p class="level0"><a name="CURLLOCKDATASSLSESSION"></a><span class="nroffip">CURL_LOCK_DATA_SSL_SESSION</span> 
+<p class="level1">Introduced in 7.10.3 
+<p class="level0"><a name="CURLLOCKTYPECONNECT"></a><span class="nroffip">CURL_LOCK_TYPE_CONNECT</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLLOCKTYPECOOKIE"></a><span class="nroffip">CURL_LOCK_TYPE_COOKIE</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLLOCKTYPEDNS"></a><span class="nroffip">CURL_LOCK_TYPE_DNS</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLLOCKTYPENONE"></a><span class="nroffip">CURL_LOCK_TYPE_NONE</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLLOCKTYPESSLSESSION"></a><span class="nroffip">CURL_LOCK_TYPE_SSL_SESSION</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLMAXHTTPHEADER"></a><span class="nroffip">CURL_MAX_HTTP_HEADER</span> 
+<p class="level1">Introduced in 7.19.7 
+<p class="level0"><a name="CURLMAXWRITESIZE"></a><span class="nroffip">CURL_MAX_WRITE_SIZE</span> 
+<p class="level1">Introduced in 7.9.7 
+<p class="level0"><a name="CURLNETRCIGNORED"></a><span class="nroffip">CURL_NETRC_IGNORED</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLNETRCOPTIONAL"></a><span class="nroffip">CURL_NETRC_OPTIONAL</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLNETRCREQUIRED"></a><span class="nroffip">CURL_NETRC_REQUIRED</span> 
+<p class="level1">Introduced in 7.9.8 
+<p class="level0"><a name="CURLPOLLIN"></a><span class="nroffip">CURL_POLL_IN</span> 
+<p class="level1">Introduced in 7.14.0 
+<p class="level0"><a name="CURLPOLLINOUT"></a><span class="nroffip">CURL_POLL_INOUT</span> 
+<p class="level1">Introduced in 7.14.0 
+<p class="level0"><a name="CURLPOLLNONE"></a><span class="nroffip">CURL_POLL_NONE</span> 
+<p class="level1">Introduced in 7.14.0 
+<p class="level0"><a name="CURLPOLLOUT"></a><span class="nroffip">CURL_POLL_OUT</span> 
+<p class="level1">Introduced in 7.14.0 
+<p class="level0"><a name="CURLPOLLREMOVE"></a><span class="nroffip">CURL_POLL_REMOVE</span> 
+<p class="level1">Introduced in 7.14.0 
+<p class="level0"><a name="CURLPROGRESSBAR"></a><span class="nroffip">CURL_PROGRESS_BAR</span> 
+<p class="level1">Introduced in 7.1.1 
+<p class="level0"><a name="CURLPROGRESSSTATS"></a><span class="nroffip">CURL_PROGRESS_STATS</span> 
+<p class="level1">Introduced in 7.1.1 
+<p class="level0"><a name="CURLPUSHDENY"></a><span class="nroffip">CURL_PUSH_DENY</span> 
+<p class="level1">Introduced in 7.44.0 
+<p class="level0"><a name="CURLPUSHOK"></a><span class="nroffip">CURL_PUSH_OK</span> 
+<p class="level1">Introduced in 7.44.0 
+<p class="level0"><a name="CURLREADFUNCABORT"></a><span class="nroffip">CURL_READFUNC_ABORT</span> 
+<p class="level1">Introduced in 7.12.1 
+<p class="level0"><a name="CURLREADFUNCPAUSE"></a><span class="nroffip">CURL_READFUNC_PAUSE</span> 
+<p class="level1">Introduced in 7.18.0 
+<p class="level0"><a name="CURLREDIRGETALL"></a><span class="nroffip">CURL_REDIR_GET_ALL</span> 
+<p class="level1">Introduced in 7.19.1 
+<p class="level0"><a name="CURLREDIRPOST301"></a><span class="nroffip">CURL_REDIR_POST_301</span> 
+<p class="level1">Introduced in 7.19.1 
+<p class="level0"><a name="CURLREDIRPOST302"></a><span class="nroffip">CURL_REDIR_POST_302</span> 
+<p class="level1">Introduced in 7.19.1 
+<p class="level0"><a name="CURLREDIRPOST303"></a><span class="nroffip">CURL_REDIR_POST_303</span> 
+<p class="level1">Introduced in 7.25.1 
+<p class="level0"><a name="CURLREDIRPOSTALL"></a><span class="nroffip">CURL_REDIR_POST_ALL</span> 
+<p class="level1">Introduced in 7.19.1 
+<p class="level0"><a name="CURLRTSPREQANNOUNCE"></a><span class="nroffip">CURL_RTSPREQ_ANNOUNCE</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLRTSPREQDESCRIBE"></a><span class="nroffip">CURL_RTSPREQ_DESCRIBE</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLRTSPREQGETPARAMETER"></a><span class="nroffip">CURL_RTSPREQ_GET_PARAMETER</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLRTSPREQNONE"></a><span class="nroffip">CURL_RTSPREQ_NONE</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLRTSPREQOPTIONS"></a><span class="nroffip">CURL_RTSPREQ_OPTIONS</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLRTSPREQPAUSE"></a><span class="nroffip">CURL_RTSPREQ_PAUSE</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLRTSPREQPLAY"></a><span class="nroffip">CURL_RTSPREQ_PLAY</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLRTSPREQRECEIVE"></a><span class="nroffip">CURL_RTSPREQ_RECEIVE</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLRTSPREQRECORD"></a><span class="nroffip">CURL_RTSPREQ_RECORD</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLRTSPREQSETUP"></a><span class="nroffip">CURL_RTSPREQ_SETUP</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLRTSPREQSETPARAMETER"></a><span class="nroffip">CURL_RTSPREQ_SET_PARAMETER</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLRTSPREQTEARDOWN"></a><span class="nroffip">CURL_RTSPREQ_TEARDOWN</span> 
+<p class="level1">Introduced in 7.20.0 
+<p class="level0"><a name="CURLSEEKFUNCCANTSEEK"></a><span class="nroffip">CURL_SEEKFUNC_CANTSEEK</span> 
+<p class="level1">Introduced in 7.19.5 
+<p class="level0"><a name="CURLSEEKFUNCFAIL"></a><span class="nroffip">CURL_SEEKFUNC_FAIL</span> 
+<p class="level1">Introduced in 7.19.5 
+<p class="level0"><a name="CURLSEEKFUNCOK"></a><span class="nroffip">CURL_SEEKFUNC_OK</span> 
+<p class="level1">Introduced in 7.19.5 
+<p class="level0"><a name="CURLSOCKETBAD"></a><span class="nroffip">CURL_SOCKET_BAD</span> 
+<p class="level1">Introduced in 7.14.0 
+<p class="level0"><a name="CURLSOCKETTIMEOUT"></a><span class="nroffip">CURL_SOCKET_TIMEOUT</span> 
+<p class="level1">Introduced in 7.14.0 
+<p class="level0"><a name="CURLSOCKOPTALREADYCONNECTED"></a><span class="nroffip">CURL_SOCKOPT_ALREADY_CONNECTED</span> 
+<p class="level1">Introduced in 7.21.5 
+<p class="level0"><a name="CURLSOCKOPTERROR"></a><span class="nroffip">CURL_SOCKOPT_ERROR</span> 
+<p class="level1">Introduced in 7.21.5 
+<p class="level0"><a name="CURLSOCKOPTOK"></a><span class="nroffip">CURL_SOCKOPT_OK</span> 
+<p class="level1">Introduced in 7.21.5 
+<p class="level0"><a name="CURLSSLVERSIONDEFAULT"></a><span class="nroffip">CURL_SSLVERSION_DEFAULT</span> 
+<p class="level1">Introduced in 7.9.2 
+<p class="level0"><a name="CURLSSLVERSIONSSL"></a><span class="nroffip">CURL_SSLVERSION_SSL</span> 
+<p class="level1">Introduced in  
+<p class="level0"><a name="CURLSSLVERSIONSSL"></a><span class="nroffip">CURL_SSLVERSION_SSL</span> 
+<p class="level1">Introduced in  
+<p class="level0"><a name="CURLSSLVERSIONTLS"></a><span class="nroffip">CURL_SSLVERSION_TLS</span> 
+<p class="level1">Introduced in  
+<p class="level0"><a name="CURLSSLVERSIONTLS"></a><span class="nroffip">CURL_SSLVERSION_TLS</span> 
+<p class="level1">Introduced in  
+<p class="level0"><a name="CURLSSLVERSIONTLS"></a><span class="nroffip">CURL_SSLVERSION_TLS</span> 
+<p class="level1">Introduced in  
+<p class="level0"><a name="CURLSSLVERSIONTLS"></a><span class="nroffip">CURL_SSLVERSION_TLS</span> 
+<p class="level1">Introduced in  
+<p class="level0"><a name="CURLTIMECONDIFMODSINCE"></a><span class="nroffip">CURL_TIMECOND_IFMODSINCE</span> 
+<p class="level1">Introduced in 7.9.7 
+<p class="level0"><a name="CURLTIMECONDIFUNMODSINCE"></a><span class="nroffip">CURL_TIMECOND_IFUNMODSINCE</span> 
+<p class="level1">Introduced in 7.9.7 
+<p class="level0"><a name="CURLTIMECONDLASTMOD"></a><span class="nroffip">CURL_TIMECOND_LASTMOD</span> 
+<p class="level1">Introduced in 7.9.7 
+<p class="level0"><a name="CURLTIMECONDNONE"></a><span class="nroffip">CURL_TIMECOND_NONE</span> 
+<p class="level1">Introduced in 7.9.7 
+<p class="level0"><a name="CURLTLSAUTHNONE"></a><span class="nroffip">CURL_TLSAUTH_NONE</span> 
+<p class="level1">Introduced in 7.21.4 
+<p class="level0"><a name="CURLTLSAUTHSRP"></a><span class="nroffip">CURL_TLSAUTH_SRP</span> 
+<p class="level1">Introduced in 7.21.4 
+<p class="level0"><a name="CURLVERSIONASYNCHDNS"></a><span class="nroffip">CURL_VERSION_ASYNCHDNS</span> 
+<p class="level1">Introduced in 7.10.7 
+<p class="level0"><a name="CURLVERSIONCONV"></a><span class="nroffip">CURL_VERSION_CONV</span> 
+<p class="level1">Introduced in 7.15.4 
+<p class="level0"><a name="CURLVERSIONCURLDEBUG"></a><span class="nroffip">CURL_VERSION_CURLDEBUG</span> 
+<p class="level1">Introduced in 7.19.6 
+<p class="level0"><a name="CURLVERSIONDEBUG"></a><span class="nroffip">CURL_VERSION_DEBUG</span> 
+<p class="level1">Introduced in 7.10.6 
+<p class="level0"><a name="CURLVERSIONGSSAPI"></a><span class="nroffip">CURL_VERSION_GSSAPI</span> 
+<p class="level1">Introduced in 7.38.0 
+<p class="level0"><a name="CURLVERSIONGSSNEGOTIATE"></a><span class="nroffip">CURL_VERSION_GSSNEGOTIATE</span> 
+<p class="level1">Introduced in 7.10.6 Deprecated since 7.38.0 
+<p class="level0"><a name="CURLVERSIONHTTP2"></a><span class="nroffip">CURL_VERSION_HTTP2</span> 
+<p class="level1">Introduced in 7.33.0 
+<p class="level0"><a name="CURLVERSIONIDN"></a><span class="nroffip">CURL_VERSION_IDN</span> 
+<p class="level1">Introduced in 7.12.0 
+<p class="level0"><a name="CURLVERSIONIPV6"></a><span class="nroffip">CURL_VERSION_IPV6</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLVERSIONKERBEROS4"></a><span class="nroffip">CURL_VERSION_KERBEROS4</span> 
+<p class="level1">Introduced in 7.10 Deprecated since 7.33.0 
+<p class="level0"><a name="CURLVERSIONKERBEROS5"></a><span class="nroffip">CURL_VERSION_KERBEROS5</span> 
+<p class="level1">Introduced in 7.40.0 
+<p class="level0"><a name="CURLVERSIONLARGEFILE"></a><span class="nroffip">CURL_VERSION_LARGEFILE</span> 
+<p class="level1">Introduced in 7.11.1 
+<p class="level0"><a name="CURLVERSIONLIBZ"></a><span class="nroffip">CURL_VERSION_LIBZ</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLVERSIONNTLM"></a><span class="nroffip">CURL_VERSION_NTLM</span> 
+<p class="level1">Introduced in 7.10.6 
+<p class="level0"><a name="CURLVERSIONNTLMWB"></a><span class="nroffip">CURL_VERSION_NTLM_WB</span> 
+<p class="level1">Introduced in 7.22.0 
+<p class="level0"><a name="CURLVERSIONSPNEGO"></a><span class="nroffip">CURL_VERSION_SPNEGO</span> 
+<p class="level1">Introduced in 7.10.8 
+<p class="level0"><a name="CURLVERSIONSSL"></a><span class="nroffip">CURL_VERSION_SSL</span> 
+<p class="level1">Introduced in 7.10 
+<p class="level0"><a name="CURLVERSIONSSPI"></a><span class="nroffip">CURL_VERSION_SSPI</span> 
+<p class="level1">Introduced in 7.13.2 
+<p class="level0"><a name="CURLVERSIONTLSAUTHSRP"></a><span class="nroffip">CURL_VERSION_TLSAUTH_SRP</span> 
+<p class="level1">Introduced in 7.21.4 
+<p class="level0"><a name="CURLVERSIONUNIXSOCKETS"></a><span class="nroffip">CURL_VERSION_UNIX_SOCKETS</span> 
+<p class="level1">Introduced in 7.40.0 
+<p class="level0"><a name="CURLWAITPOLLIN"></a><span class="nroffip">CURL_WAIT_POLLIN</span> 
+<p class="level1">Introduced in 7.28.0 
+<p class="level0"><a name="CURLWAITPOLLOUT"></a><span class="nroffip">CURL_WAIT_POLLOUT</span> 
+<p class="level1">Introduced in 7.28.0 
+<p class="level0"><a name="CURLWAITPOLLPRI"></a><span class="nroffip">CURL_WAIT_POLLPRI</span> 
+<p class="level1">Introduced in 7.28.0 
+<p class="level0"><a name="CURLWRITEFUNCPAUSE"></a><span class="nroffip">CURL_WRITEFUNC_PAUSE</span> 
+<p class="level1">Introduced in 7.18.0 <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/libcurl-symbols.pdf b/docs/libcurl/libcurl-symbols.pdf
new file mode 100644 (file)
index 0000000..c353e1f
Binary files /dev/null and b/docs/libcurl/libcurl-symbols.pdf differ
diff --git a/docs/libcurl/libcurl-thread.3 b/docs/libcurl/libcurl-thread.3
new file mode 100644 (file)
index 0000000..fd5b0e4
--- /dev/null
@@ -0,0 +1,95 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at 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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH libcurl-thread 3 "13 Jul 2015" "libcurl" "libcurl thread safety"
+.SH NAME
+libcurl-thread \- libcurl thread safety
+.SH "Multi-threading with libcurl"
+libcurl is thread safe but has no internal thread synchronization. You may have
+to provide your own locking should you meet any of the thread safety exceptions
+below.
+
+\fBHandles.\fP You must \fBnever\fP share the same handle in multiple threads.
+You can pass the handles around among threads, but you must never use a single
+handle from more than one thread at any given time.
+
+\fBShared objects.\fP You can share certain data between multiple handles by
+using the share interface but you must provide your own locking and set
+\fIcurl_share_setopt(3)\fP CURLSHOPT_LOCKFUNC and CURLSHOPT_UNLOCKFUNC.
+.SH TLS
+If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are
+then of course using the underlying SSL library multi-threaded and those libs
+might have their own requirements on this issue.  You may need to provide one
+or two functions to allow it to function properly:
+.IP OpenSSL
+http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
+
+http://curl.haxx.se/libcurl/c/opensslthreadlock.html
+.IP GnuTLS
+http://gnutls.org/manual/html_node/Thread-safety.html
+.IP NSS
+thread-safe already without anything required.
+.IP PolarSSL
+Required actions unknown.
+.IP yassl
+Required actions unknown.
+.IP axTLS
+Required actions unknown.
+.IP Secure-Transport
+The engine is used by libcurl in a way that is fully thread-safe.
+.IP WinSSL
+The engine is used by libcurl in a way that is fully thread-safe.
+.IP wolfSSL
+The engine is used by libcurl in a way that is fully thread-safe.
+.SH "Other areas of caution"
+.IP Signals
+Signals are used for timing out name resolves (during DNS lookup) - when built
+without using either the c-ares or threaded resolver backends. When using
+multiple threads you should set the \fICURLOPT_NOSIGNAL(3)\fP option to 1L for
+all handles. Everything will or might work fine except that timeouts are not
+honored during the DNS lookup - which you can work around by building libcurl
+with c-ares support. c-ares is a library that provides asynchronous name
+resolves. On some platforms, libcurl simply will not function properly
+multi-threaded unless this option is set.
+.IP "Name resolving"
+\fBgethostby* functions and other system calls.\fP These functions, provided
+by your operating system, must be thread safe. It is very important that
+libcurl can find and use thread safe versions of these and other system calls,
+as otherwise it can't function fully thread safe. Some operating systems are
+known to have faulty thread implementations. We have previously received
+problem reports on *BSD (at least in the past, they may be working fine these
+days).  Some operating systems that are known to have solid and working thread
+support are Linux, Solaris and Windows.
+.IP "curl_global_* functions"
+These functions are not thread safe. If you are using libcurl with multiple
+threads it is especially important that before use you call
+\fIcurl_global_init(3)\fP or \fIcurl_global_init_mem(3)\fP to explicitly
+initialize the library and its dependents, rather than rely on the "lazy"
+fail-safe initialization that takes place the first time
+\fIcurl_easy_init(3)\fP is called. For an in-depth explanation refer to
+\fIlibcurl(3)\fP section \fBGLOBAL CONSTANTS\fP.
+.IP "Memory functions"
+These functions, provided either by your operating system or your own
+replacements, must be thread safe. You can use \fIcurl_global_init_mem(3)\fP
+to set your own replacement memory functions.
+.IP Non-safe functions
+\fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP is not thread-safe.
diff --git a/docs/libcurl/libcurl-thread.html b/docs/libcurl/libcurl-thread.html
new file mode 100644 (file)
index 0000000..9690bab
--- /dev/null
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>libcurl-thread man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">libcurl-thread - libcurl thread safety <a name="Multi-threading"></a><h2 class="nroffsh">Multi-threading with libcurl</h2>
+<p class="level0">libcurl is thread safe but has no internal thread synchronization. You may have to provide your own locking should you meet any of the thread safety exceptions below. 
+<p class="level0"><span Class="bold">Handles.</span> You must <span Class="bold">never</span> share the same handle in multiple threads. You can pass the handles around among threads, but you must never use a single handle from more than one thread at any given time. 
+<p class="level0"><span Class="bold">Shared objects.</span> You can share certain data between multiple handles by using the share interface but you must provide your own locking and set <a Class="emphasis" href="./curl_share_setopt.html">curl_share_setopt</a> CURLSHOPT_LOCKFUNC and CURLSHOPT_UNLOCKFUNC. <a name="TLS"></a><h2 class="nroffsh">TLS</h2>
+<p class="level0">If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are then of course using the underlying SSL library multi-threaded and those libs might have their own requirements on this issue.  You may need to provide one or two functions to allow it to function properly: 
+<p class="level0"><a name="OpenSSL"></a><span class="nroffip">OpenSSL</span> 
+<p class="level1"><a href="http://www.openssl.org/docs/crypto/threads.html">http://www.openssl.org/docs/crypto/threads.html</a>&#35;DESCRIPTION 
+<p class="level1"><a href="http://curl.haxx.se/libcurl/c/opensslthreadlock.html">http://curl.haxx.se/libcurl/c/opensslthreadlock.html</a> 
+<p class="level0"><a name="GnuTLS"></a><span class="nroffip">GnuTLS</span> 
+<p class="level1"><a href="http://gnutls.org/manual/html_node/Thread-safety.html">http://gnutls.org/manual/html_node/Thread-safety.html</a> 
+<p class="level0"><a name="NSS"></a><span class="nroffip">NSS</span> 
+<p class="level1">thread-safe already without anything required. 
+<p class="level0"><a name="PolarSSL"></a><span class="nroffip">PolarSSL</span> 
+<p class="level1">Required actions unknown. 
+<p class="level0"><a name="yassl"></a><span class="nroffip">yassl</span> 
+<p class="level1">Required actions unknown. 
+<p class="level0"><a name="axTLS"></a><span class="nroffip">axTLS</span> 
+<p class="level1">Required actions unknown. 
+<p class="level0"><a name="Secure-Transport"></a><span class="nroffip">Secure-Transport</span> 
+<p class="level1">The engine is used by libcurl in a way that is fully thread-safe. 
+<p class="level0"><a name="WinSSL"></a><span class="nroffip">WinSSL</span> 
+<p class="level1">The engine is used by libcurl in a way that is fully thread-safe. 
+<p class="level0"><a name="wolfSSL"></a><span class="nroffip">wolfSSL</span> 
+<p class="level1">The engine is used by libcurl in a way that is fully thread-safe. <a name="Other"></a><h2 class="nroffsh">Other areas of caution</h2>
+<p class="level0">
+<p class="level0"><a name="Signals"></a><span class="nroffip">Signals</span> 
+<p class="level1">Signals are used for timing out name resolves (during DNS lookup) - when built without using either the c-ares or threaded resolver backends. When using multiple threads you should set the <span Class="emphasis">CURLOPT_NOSIGNAL(3)</span> option to 1L for all handles. Everything will or might work fine except that timeouts are not honored during the DNS lookup - which you can work around by building libcurl with c-ares support. c-ares is a library that provides asynchronous name resolves. On some platforms, libcurl simply will not function properly multi-threaded unless this option is set. 
+<p class="level0"><a name="Name"></a><span class="nroffip">Name resolving</span> 
+<p class="level1"><span Class="bold">gethostby* functions and other system calls.</span> These functions, provided by your operating system, must be thread safe. It is very important that libcurl can find and use thread safe versions of these and other system calls, as otherwise it can't function fully thread safe. Some operating systems are known to have faulty thread implementations. We have previously received problem reports on *BSD (at least in the past, they may be working fine these days).  Some operating systems that are known to have solid and working thread support are Linux, Solaris and Windows. 
+<p class="level0"><a name="curlglobal"></a><span class="nroffip">curl_global_* functions</span> 
+<p class="level1">These functions are not thread safe. If you are using libcurl with multiple threads it is especially important that before use you call <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> or <a Class="emphasis" href="./curl_global_init_mem.html">curl_global_init_mem</a> to explicitly initialize the library and its dependents, rather than rely on the "lazy" fail-safe initialization that takes place the first time <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> is called. For an in-depth explanation refer to <a Class="emphasis" href="./libcurl.html">libcurl</a> section <span Class="bold">GLOBAL CONSTANTS</span>. 
+<p class="level0"><a name="Memory"></a><span class="nroffip">Memory functions</span> 
+<p class="level1">These functions, provided either by your operating system or your own replacements, must be thread safe. You can use <a Class="emphasis" href="./curl_global_init_mem.html">curl_global_init_mem</a> to set your own replacement memory functions. 
+<p class="level0"><a name="Non-safe"></a><span class="nroffip">Non-safe functions</span> 
+<p class="level1"><span Class="emphasis">CURLOPT_DNS_USE_GLOBAL_CACHE(3)</span> is not thread-safe. <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/libcurl-thread.pdf b/docs/libcurl/libcurl-thread.pdf
new file mode 100644 (file)
index 0000000..8656f21
Binary files /dev/null and b/docs/libcurl/libcurl-thread.pdf differ
index 11b0190..558652c 100644 (file)
@@ -256,58 +256,8 @@ complication for you. Given simply the URL to a file, libcurl will take care
 of all the details needed to get the file moved from one machine to another.
 
 .SH "Multi-threading Issues"
-The first basic rule is that you must \fBnever\fP simultaneously share a
-libcurl handle (be it easy or multi or whatever) between multiple
-threads. Only use one handle in one thread at any time. You can pass the
-handles around among threads, but you must never use a single handle from more
-than one thread at any given time.
-
-libcurl is completely thread safe, except for two issues: signals and SSL/TLS
-handlers. Signals are used for timing out name resolves (during DNS lookup) -
-when built without using either the c-ares or threaded resolver backends.
-
-If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are
-then of course using the underlying SSL library multi-threaded and those libs
-might have their own requirements on this issue. Basically, you need to
-provide one or two functions to allow it to function properly. For all
-details, see this:
-
-OpenSSL
-
- http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
-
-GnuTLS
-
- http://gnutls.org/manual/html_node/Thread-safety.html
-
-NSS
-
- is claimed to be thread-safe already without anything required.
-
-PolarSSL
-
- Required actions unknown.
-
-yassl
-
- Required actions unknown.
-
-axTLS
-
- Required actions unknown.
-
-Secure Transport
-
- The engine is fully thread-safe, and no additional steps are required.
-
-When using multiple threads you should set the \fICURLOPT_NOSIGNAL(3)\fP
-option to 1 for all handles. Everything will or might work fine except that
-timeouts are not honored during the DNS lookup - which you can work around by
-building libcurl with c-ares support. c-ares is a library that provides
-asynchronous name resolves. On some platforms, libcurl simply will not
-function properly multi-threaded unless this option is set.
-
-Also, note that \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP is not thread-safe.
+libcurl is thread safe but there are a few exceptions. Refer to
+\fIlibcurl-thread(3)\fP for more information.
 
 .SH "When It Doesn't Work"
 There will always be times when the transfer fails for some reason. You might
@@ -1005,7 +955,7 @@ or understand incoming cookies and they will just be ignored. However, when
 the parser is enabled the cookies will be understood and the cookies will be
 kept in memory and used properly in subsequent requests when the same handle
 is used. Many times this is enough, and you may not have to save the cookies
-to disk at all. Note that the file you specify to \ICURLOPT_COOKIEFILE(3)\fP
+to disk at all. Note that the file you specify to \fICURLOPT_COOKIEFILE(3)\fP
 doesn't have to exist to enable the parser, so a common way to just enable the
 parser and not read any cookies is to use the name of a file you know doesn't
 exist.
index 43bfc24..70e34aa 100644 (file)
@@ -4,15 +4,20 @@
 <title>libcurl-tutorial man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -96,9 +101,9 @@ p.roffit {
 <p class="level0">If you at any point would like to blank all previously set options for a single easy handle, you can call <a Class="emphasis" href="./curl_easy_reset.html">curl_easy_reset</a> and you can also make a clone of an easy handle (with all its set options) using <a Class="emphasis" href="./curl_easy_duphandle.html">curl_easy_duphandle</a>. 
 <p class="level0">Many of the options you set in libcurl are "strings", pointers to data terminated with a zero byte. When you set strings with <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>, libcurl makes its own copy so that they don't need to be kept around in your application after being set[4]. 
 <p class="level0">One of the most basic properties to set in the handle is the URL. You set your preferred URL to transfer with <span Class="emphasis">CURLOPT_URL(3)</span> in a manner similar to: 
-<p class="level0"><pre>
-<p class="level0">&nbsp;curl_easy_setopt(handle, CURLOPT_URL, "<a href="http://domain.com/">http://domain.com/</a>");
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;curl_easy_setopt(handle, CURLOPT_URL, "<a href="http://domain.com/">http://domain.com/</a>");
+</pre>
 
 <p class="level0">
 <p class="level0">Let's assume for a while that you want to receive data as the URL identifies a remote resource you want to get here. Since you write a sort of application that needs this transfer, I assume that you would like to get the data passed to you directly instead of simply getting it passed to stdout. So, you write your own function that matches this prototype: 
@@ -119,25 +124,7 @@ p.roffit {
 <p class="level0">If you then want to transfer another file, the handle is ready to be used again. Mind you, it is even preferred that you re-use an existing handle if you intend to make another transfer. libcurl will then attempt to re-use the previous connection. 
 <p class="level0">For some protocols, downloading a file can involve a complicated process of logging in, setting the transfer mode, changing the current directory and finally transferring the file data. libcurl takes care of all that complication for you. Given simply the URL to a file, libcurl will take care of all the details needed to get the file moved from one machine to another. 
 <p class="level0"><a name="Multi-threading"></a><h2 class="nroffsh">Multi-threading Issues</h2>
-<p class="level0">The first basic rule is that you must <span Class="bold">never</span> simultaneously share a libcurl handle (be it easy or multi or whatever) between multiple threads. Only use one handle in one thread at any time. You can pass the handles around among threads, but you must never use a single handle from more than one thread at any given time. 
-<p class="level0">libcurl is completely thread safe, except for two issues: signals and SSL/TLS handlers. Signals are used for timing out name resolves (during DNS lookup) - when built without using either the c-ares or threaded resolver backends. 
-<p class="level0">If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are then of course using the underlying SSL library multi-threaded and those libs might have their own requirements on this issue. Basically, you need to provide one or two functions to allow it to function properly. For all details, see this: 
-<p class="level0">OpenSSL 
-<p class="level0">&nbsp;<a href="http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION">http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION</a> 
-<p class="level0">GnuTLS 
-<p class="level0">&nbsp;<a href="http://gnutls.org/manual/html_node/Thread-safety.html">http://gnutls.org/manual/html_node/Thread-safety.html</a> 
-<p class="level0">NSS 
-<p class="level0">&nbsp;is claimed to be thread-safe already without anything required. 
-<p class="level0">PolarSSL 
-<p class="level0">&nbsp;Required actions unknown. 
-<p class="level0">yassl 
-<p class="level0">&nbsp;Required actions unknown. 
-<p class="level0">axTLS 
-<p class="level0">&nbsp;Required actions unknown. 
-<p class="level0">Secure Transport 
-<p class="level0">&nbsp;The engine is fully thread-safe, and no additional steps are required. 
-<p class="level0">When using multiple threads you should set the <span Class="emphasis">CURLOPT_NOSIGNAL(3)</span> option to 1 for all handles. Everything will or might work fine except that timeouts are not honored during the DNS lookup - which you can work around by building libcurl with c-ares support. c-ares is a library that provides asynchronous name resolves. On some platforms, libcurl simply will not function properly multi-threaded unless this option is set. 
-<p class="level0">Also, note that <span Class="emphasis">CURLOPT_DNS_USE_GLOBAL_CACHE(3)</span> is not thread-safe. 
+<p class="level0">libcurl is thread safe but there are a few exceptions. Refer to <a Class="emphasis" href="./libcurl-thread.html">libcurl-thread</a> for more information. 
 <p class="level0"><a name="When"></a><h2 class="nroffsh">When It Doesn't Work</h2>
 <p class="level0">There will always be times when the transfer fails for some reason. You might have set the wrong libcurl option or misunderstood what the libcurl option actually does, or the remote server might return non-standard replies that confuse the library which then confuses your program. 
 <p class="level0">There's one golden rule when these things occur: set the <span Class="emphasis">CURLOPT_VERBOSE(3)</span> option to 1. It'll cause the library to spew out the entire protocol details it sends, some internal info and some received protocol data as well (especially when using FTP). If you're using HTTP, adding the headers in the received output to study is also a clever way to get a better understanding why the server behaves the way it does. Include headers in the normal body output with <span Class="emphasis">CURLOPT_HEADER(3)</span> set 1. 
@@ -155,10 +142,10 @@ p.roffit {
 <p class="level0">Tell libcurl that we want to upload: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_UPLOAD, 1L); 
 <p class="level0">A few protocols won't behave properly when uploads are done without any prior knowledge of the expected file size. So, set the upload file size using the <span Class="emphasis">CURLOPT_INFILESIZE_LARGE(3)</span> for all known file sizes like this[1]: 
-<p class="level0"><pre>
-<p class="level0">&nbsp;/* in this example, file_size must be an curl_off_t variable */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_INFILESIZE_LARGE, file_size);
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;/* in this example, file_size must be an curl_off_t variable */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_INFILESIZE_LARGE, file_size);
+</pre>
 
 <p class="level0">
 <p class="level0">When you call <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> this time, it'll perform all the necessary operations and when it has invoked the upload it'll call your supplied callback to get the data to upload. The program should return as much data as possible in every invoke, as that is likely to make the upload perform as fast as possible. The callback should return the number of bytes it wrote in the buffer. Returning 0 will signal the end of the upload. 
@@ -174,11 +161,11 @@ p.roffit {
 <p class="level0">There's a long time Unix "standard" way of storing FTP user names and passwords, namely in the $HOME/.netrc file. The file should be made private so that only the user may read it (see also the "Security Considerations" chapter), as it might contain the password in plain text. libcurl has the ability to use this file to figure out what set of user name and password to use for a particular host. As an extension to the normal functionality, libcurl also supports this file for non-FTP protocols such as HTTP. To make curl use this file, use the <span Class="emphasis">CURLOPT_NETRC(3)</span> option: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_NETRC, 1L); 
 <p class="level0">And a very basic example of how such a .netrc file may look like: 
-<p class="level0"><pre>
-<p class="level0">&nbsp;machine myhost.mydomain.com
- &nbsp;login userlogin
- &nbsp;password secretword
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;machine myhost.mydomain.com
+&nbsp;login userlogin
+&nbsp;password secretword
+</pre>
 
 <p class="level0">
 <p class="level0">All these examples have been cases where the password has been optional, or at least you could leave it out and have libcurl attempt to do its job without it. There are times when the password isn't optional, like when you're using an SSL private key for secure transfers. 
@@ -197,65 +184,77 @@ p.roffit {
 <p class="level0"><a name="HTTP"></a><h2 class="nroffsh">HTTP POSTing</h2>
 <p class="level0">We get many questions regarding how to issue HTTP POSTs with libcurl the proper way. This chapter will thus include examples using both different versions of HTTP POST that libcurl supports. 
 <p class="level0">The first version is the simple POST, the most common version, that most HTML pages using the &lt;form&gt; tag uses. We provide a pointer to the data and tell libcurl to post it all to the remote site: 
-<p class="level0"><pre>
-<p class="level0">&nbsp;   char *data="name=daniel&project=curl";
- &nbsp;   curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, data);
- &nbsp;   curl_easy_setopt(easyhandle, CURLOPT_URL, "<a href="http://posthere.com/">http://posthere.com/</a>");
- <p class="level0">&nbsp;   curl_easy_perform(easyhandle); /* post away! */
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;   char *data="name=daniel&project=curl";
+&nbsp;   curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, data);
+&nbsp;   curl_easy_setopt(easyhandle, CURLOPT_URL, "<a href="http://posthere.com/">http://posthere.com/</a>");
+&nbsp;
+&nbsp;   curl_easy_perform(easyhandle); /* post away! */
+</pre>
 
 <p class="level0">
 <p class="level0">Simple enough, huh? Since you set the POST options with the <span Class="emphasis">CURLOPT_POSTFIELDS(3)</span>, this automatically switches the handle to use POST in the upcoming request. 
 <p class="level0">Ok, so what if you want to post binary data that also requires you to set the Content-Type: header of the post? Well, binary posts prevent libcurl from being able to do strlen() on the data to figure out the size, so therefore we must tell libcurl the size of the post data. Setting headers in libcurl requests are done in a generic way, by building a list of our own headers and then passing that list to libcurl. 
-<p class="level0"><pre>
-<p class="level0">&nbsp;struct curl_slist *headers=NULL;
- &nbsp;headers = curl_slist_append(headers, "Content-Type: text/xml");
- <p class="level0">&nbsp;/* post binary data */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, binaryptr);
- <p class="level0">&nbsp;/* set the size of the postfields data */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDSIZE, 23L);
- <p class="level0">&nbsp;/* pass our list of custom made headers */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
- <p class="level0">&nbsp;curl_easy_perform(easyhandle); /* post away! */
- <p class="level0">&nbsp;curl_slist_free_all(headers); /* free the header list */
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;struct curl_slist *headers=NULL;
+&nbsp;headers = curl_slist_append(headers, "Content-Type: text/xml");
+&nbsp;
+&nbsp;/* post binary data */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, binaryptr);
+&nbsp;
+&nbsp;/* set the size of the postfields data */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDSIZE, 23L);
+&nbsp;
+&nbsp;/* pass our list of custom made headers */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
+&nbsp;
+&nbsp;curl_easy_perform(easyhandle); /* post away! */
+&nbsp;
+&nbsp;curl_slist_free_all(headers); /* free the header list */
+</pre>
 
 <p class="level0">
 <p class="level0">While the simple examples above cover the majority of all cases where HTTP POST operations are required, they don't do multi-part formposts. Multi-part formposts were introduced as a better way to post (possibly large) binary data and were first documented in the <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a> (updated in RFC2388). They're called multi-part because they're built by a chain of parts, each part being a single unit of data. Each part has its own name and contents. You can in fact create and post a multi-part formpost with the regular libcurl POST support described above, but that would require that you build a formpost yourself and provide to libcurl. To make that easier, libcurl provides <a Class="emphasis" href="./curl_formadd.html">curl_formadd</a>. Using this function, you add parts to the form. When you're done adding parts, you post the whole form. 
 <p class="level0">The following example sets two simple text parts with plain textual contents, and then a file with binary contents and uploads the whole thing. 
-<p class="level0"><pre>
-<p class="level0">&nbsp;struct curl_httppost *post=NULL;
- &nbsp;struct curl_httppost *last=NULL;
- &nbsp;curl_formadd(&post, &last,
- &nbsp;             CURLFORM_COPYNAME, "name",
- &nbsp;             CURLFORM_COPYCONTENTS, "daniel", CURLFORM_END);
- &nbsp;curl_formadd(&post, &last,
- &nbsp;             CURLFORM_COPYNAME, "project",
- &nbsp;             CURLFORM_COPYCONTENTS, "curl", CURLFORM_END);
- &nbsp;curl_formadd(&post, &last,
- &nbsp;             CURLFORM_COPYNAME, "logotype-image",
- &nbsp;             CURLFORM_FILECONTENT, "curl.png", CURLFORM_END);
- <p class="level0">&nbsp;/* Set the form info */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPPOST, post);
- <p class="level0">&nbsp;curl_easy_perform(easyhandle); /* post away! */
- <p class="level0">&nbsp;/* free the post data again */
- &nbsp;curl_formfree(post);
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;struct curl_httppost *post=NULL;
+&nbsp;struct curl_httppost *last=NULL;
+&nbsp;curl_formadd(&post, &last,
+&nbsp;             CURLFORM_COPYNAME, "name",
+&nbsp;             CURLFORM_COPYCONTENTS, "daniel", CURLFORM_END);
+&nbsp;curl_formadd(&post, &last,
+&nbsp;             CURLFORM_COPYNAME, "project",
+&nbsp;             CURLFORM_COPYCONTENTS, "curl", CURLFORM_END);
+&nbsp;curl_formadd(&post, &last,
+&nbsp;             CURLFORM_COPYNAME, "logotype-image",
+&nbsp;             CURLFORM_FILECONTENT, "curl.png", CURLFORM_END);
+&nbsp;
+&nbsp;/* Set the form info */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPPOST, post);
+&nbsp;
+&nbsp;curl_easy_perform(easyhandle); /* post away! */
+&nbsp;
+&nbsp;/* free the post data again */
+&nbsp;curl_formfree(post);
+</pre>
 
 <p class="level0">
 <p class="level0">Multipart formposts are chains of parts using MIME-style separators and headers. It means that each one of these separate parts get a few headers set that describe the individual content-type, size etc. To enable your application to handicraft this formpost even more, libcurl allows you to supply your own set of custom headers to such an individual form part. You can of course supply headers to as many parts as you like, but this little example will show how you set headers to one specific part when you add that to the post handle: 
-<p class="level0"><pre>
-<p class="level0">&nbsp;struct curl_slist *headers=NULL;
- &nbsp;headers = curl_slist_append(headers, "Content-Type: text/xml");
- <p class="level0">&nbsp;curl_formadd(&post, &last,
- &nbsp;             CURLFORM_COPYNAME, "logotype-image",
- &nbsp;             CURLFORM_FILECONTENT, "curl.xml",
- &nbsp;             CURLFORM_CONTENTHEADER, headers,
- &nbsp;             CURLFORM_END);
- <p class="level0">&nbsp;curl_easy_perform(easyhandle); /* post away! */
- <p class="level0">&nbsp;curl_formfree(post); /* free post */
- &nbsp;curl_slist_free_all(headers); /* free custom header list */
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;struct curl_slist *headers=NULL;
+&nbsp;headers = curl_slist_append(headers, "Content-Type: text/xml");
+&nbsp;
+&nbsp;curl_formadd(&post, &last,
+&nbsp;             CURLFORM_COPYNAME, "logotype-image",
+&nbsp;             CURLFORM_FILECONTENT, "curl.xml",
+&nbsp;             CURLFORM_CONTENTHEADER, headers,
+&nbsp;             CURLFORM_END);
+&nbsp;
+&nbsp;curl_easy_perform(easyhandle); /* post away! */
+&nbsp;
+&nbsp;curl_formfree(post); /* free post */
+&nbsp;curl_slist_free_all(headers); /* free custom header list */
+</pre>
 
 <p class="level0">
 <p class="level0">Since all options on an easyhandle are "sticky", they remain the same until changed even if you do call <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>, you may need to tell curl to go back to a plain GET request if you intend to do one as your next request. You force an easyhandle to go back to GET by using the <span Class="emphasis">CURLOPT_HTTPGET(3)</span> option: 
@@ -267,13 +266,13 @@ p.roffit {
 <p class="level0">Switch on the progress meter by, oddly enough, setting <span Class="emphasis">CURLOPT_NOPROGRESS(3)</span> to zero. This option is set to 1 by default. 
 <p class="level0">For most applications however, the built-in progress meter is useless and what instead is interesting is the ability to specify a progress callback. The function pointer you pass to libcurl will then be called on irregular intervals with information about the current transfer. 
 <p class="level0">Set the progress callback by using <span Class="emphasis">CURLOPT_PROGRESSFUNCTION(3)</span>. And pass a pointer to a function that matches this prototype: 
-<p class="level0"><pre>
-<p class="level0">&nbsp;int progress_callback(void *clientp,
- &nbsp;                      double dltotal,
- &nbsp;                      double dlnow,
- &nbsp;                      double ultotal,
- &nbsp;                      double ulnow);
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;int progress_callback(void *clientp,
+&nbsp;                      double dltotal,
+&nbsp;                      double dlnow,
+&nbsp;                      double ultotal,
+&nbsp;                      double ulnow);
+</pre>
 
 <p class="level0">
 <p class="level0">If any of the input arguments is unknown, a 0 will be passed. The first argument, the 'clientp' is the pointer you pass to libcurl with <span Class="emphasis">CURLOPT_PROGRESSDATA(3)</span>. libcurl won't touch it. 
@@ -282,15 +281,15 @@ p.roffit {
 <p class="level0">There's basically only one thing to keep in mind when using C++ instead of C when interfacing libcurl: 
 <p class="level0">The callbacks CANNOT be non-static class member functions 
 <p class="level0">Example C++ code: 
-<p class="level0"><pre>
-<p class="level0">class AClass {
- &nbsp;   static size_t write_data(void *ptr, size_t size, size_t nmemb,
- &nbsp;                            void *ourpointer)
- &nbsp;   {
- &nbsp;     /* do what you want with the data */
- &nbsp;   }
- &nbsp;}
- </pre>
+<p class="level0"><pre class="level0">
+class AClass {
+&nbsp;   static size_t write_data(void *ptr, size_t size, size_t nmemb,
+&nbsp;                            void *ourpointer)
+&nbsp;   {
+&nbsp;     /* do what you want with the data */
+&nbsp;   }
+&nbsp;}
+</pre>
 
 <p class="level0">
 <p class="level0"><a name="Proxies"></a><h2 class="nroffsh">Proxies</h2>
@@ -373,22 +372,26 @@ p.roffit {
 <p class="level1">
 <p class="level0"><a name="Modify"></a><span class="nroffip">Modify Headers</span> 
 <p class="level1">HTTP-like protocols pass a series of headers to the server when doing the request, and you're free to pass any amount of extra headers that you think fit. Adding headers is this easy: 
-<p class="level1"><pre>
-<p class="level1">&nbsp;struct curl_slist *headers=NULL; /* init to NULL is important */
- <p class="level1">&nbsp;headers = curl_slist_append(headers, "Hey-server-hey: how are you?");
- &nbsp;headers = curl_slist_append(headers, "X-silly-content: yes");
- <p class="level1">&nbsp;/* pass our list of custom made headers */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
- <p class="level1">&nbsp;curl_easy_perform(easyhandle); /* transfer http */
- <p class="level1">&nbsp;curl_slist_free_all(headers); /* free the header list */
- </pre>
+<p class="level1"><pre class="level1">
+&nbsp;struct curl_slist *headers=NULL; /* init to NULL is important */
+&nbsp;
+&nbsp;headers = curl_slist_append(headers, "Hey-server-hey: how are you?");
+&nbsp;headers = curl_slist_append(headers, "X-silly-content: yes");
+&nbsp;
+&nbsp;/* pass our list of custom made headers */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
+&nbsp;
+&nbsp;curl_easy_perform(easyhandle); /* transfer http */
+&nbsp;
+&nbsp;curl_slist_free_all(headers); /* free the header list */
+</pre>
 
 <p class="level1">
 <p class="level1">... and if you think some of the internally generated headers, such as Accept: or Host: don't contain the data you want them to contain, you can replace them by simply setting them too: 
-<p class="level1"><pre>
-<p class="level1">&nbsp;headers = curl_slist_append(headers, "Accept: Agent-007");
- &nbsp;headers = curl_slist_append(headers, "Host: munged.host.line");
- </pre>
+<p class="level1"><pre class="level1">
+&nbsp;headers = curl_slist_append(headers, "Accept: Agent-007");
+&nbsp;headers = curl_slist_append(headers, "Host: munged.host.line");
+</pre>
 
 <p class="level1">
 <p class="level1">
@@ -411,13 +414,16 @@ p.roffit {
 <p class="level1">Not all protocols are HTTP-like, and thus the above may not help you when you want to make, for example, your FTP transfers to behave differently. 
 <p class="level1">Sending custom commands to a FTP server means that you need to send the commands exactly as the FTP server expects them (<a href="http://www.ietf.org/rfc/rfc959.txt">RFC 959</a> is a good guide here), and you can only use commands that work on the control-connection alone. All kinds of commands that require data interchange and thus need a data-connection must be left to libcurl's own judgement. Also be aware that libcurl will do its very best to change directory to the target directory before doing any transfer, so if you change directory (with CWD or similar) you might confuse libcurl and then it might not attempt to transfer the file in the correct remote directory. 
 <p class="level1">A little example that deletes a given file before an operation: 
-<p class="level1"><pre>
-<p class="level1">&nbsp;headers = curl_slist_append(headers, "DELE file-to-remove");
- <p class="level1">&nbsp;/* pass the list of custom commands to the handle */
- &nbsp;curl_easy_setopt(easyhandle, CURLOPT_QUOTE, headers);
- <p class="level1">&nbsp;curl_easy_perform(easyhandle); /* transfer ftp data! */
- <p class="level1">&nbsp;curl_slist_free_all(headers); /* free the header list */
- </pre>
+<p class="level1"><pre class="level1">
+&nbsp;headers = curl_slist_append(headers, "DELE file-to-remove");
+&nbsp;
+&nbsp;/* pass the list of custom commands to the handle */
+&nbsp;curl_easy_setopt(easyhandle, CURLOPT_QUOTE, headers);
+&nbsp;
+&nbsp;curl_easy_perform(easyhandle); /* transfer ftp data! */
+&nbsp;
+&nbsp;curl_slist_free_all(headers); /* free the header list */
+</pre>
 
 <p class="level1">
 <p class="level1">If you would instead want this operation (or chain of operations) to happen _after_ the data transfer took place the option to <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> would instead be called <span Class="emphasis">CURLOPT_POSTQUOTE(3)</span> and used the exact same way. 
@@ -435,7 +441,7 @@ p.roffit {
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_COOKIE, "name1=var1; name2=var2;"); 
 <p class="level0">In many cases, that is not enough. You might want to dynamically save whatever cookies the remote server passes to you, and make sure those cookies are then used accordingly on later requests. 
 <p class="level0">One way to do this, is to save all headers you receive in a plain file and when you make a request, you tell libcurl to read the previous headers to figure out which cookies to use. Set the header file to read cookies from with <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span>. 
-<p class="level0">The <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span> option also automatically enables the cookie parser in libcurl. Until the cookie parser is enabled, libcurl will not parse or understand incoming cookies and they will just be ignored. However, when the parser is enabled the cookies will be understood and the cookies will be kept in memory and used properly in subsequent requests when the same handle is used. Many times this is enough, and you may not have to save the cookies to disk at all. Note that the file you specify to ICURLOPT_COOKIEFILE(3)</span> doesn't have to exist to enable the parser, so a common way to just enable the parser and not read any cookies is to use the name of a file you know doesn't exist. 
+<p class="level0">The <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span> option also automatically enables the cookie parser in libcurl. Until the cookie parser is enabled, libcurl will not parse or understand incoming cookies and they will just be ignored. However, when the parser is enabled the cookies will be understood and the cookies will be kept in memory and used properly in subsequent requests when the same handle is used. Many times this is enough, and you may not have to save the cookies to disk at all. Note that the file you specify to <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span> doesn't have to exist to enable the parser, so a common way to just enable the parser and not read any cookies is to use the name of a file you know doesn't exist. 
 <p class="level0">If you would rather use existing cookies that you've previously received with your Netscape or Mozilla browsers, you can make libcurl use that cookie file as input. The <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span> is used for that too, as libcurl will automatically find out what kind of file it is and act accordingly. 
 <p class="level0">Perhaps the most advanced cookie operation libcurl offers, is saving the entire internal cookie state back into a Netscape/Mozilla formatted cookie file. We call that the cookie-jar. When you set a file name with <span Class="emphasis">CURLOPT_COOKIEJAR(3)</span>, that file name will be created and all received cookies will be stored in it when <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> is called. This enables cookies to get passed on properly between multiple handles without any information getting lost. 
 <p class="level0"><a name="FTP"></a><h2 class="nroffsh">FTP Peculiarities We Need</h2>
index 564b139..f93ccab 100644 (file)
Binary files a/docs/libcurl/libcurl-tutorial.pdf and b/docs/libcurl/libcurl-tutorial.pdf differ
index 39bcccd..05034c9 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -97,8 +97,8 @@ Unix-like operating system that ship libcurl as part of their distributions
 often don't provide the curl-config tool, but simply install the library and
 headers in the common path for this purpose.
 
-Many Linux and similar sytems use pkg-config to provide build and link options
-about libraries and libcurl supports that as well.
+Many Linux and similar systems use pkg-config to provide build and link
+options about libraries and libcurl supports that as well.
 .SH "LIBCURL SYMBOL NAMES"
 All public functions in the libcurl interface are prefixed with 'curl_' (with
 a lowercase c). You can find other functions in the library source code, but
@@ -111,13 +111,8 @@ libcurl works
 .B exactly
 the same, on any of the platforms it compiles and builds on.
 .SH "THREADS"
-Never ever call curl-functions simultaneously using the same handle from
-several threads. libcurl is thread-safe and can be used in any number of
-threads, but you must use separate curl handles if you want to use libcurl in
-more than one thread simultaneously.
-
-The global environment functions are not thread-safe.  See \fBGLOBAL
-CONSTANTS\fP below for details.
+libcurl is thread safe but there are a few exceptions. Refer to
+\fIlibcurl-thread(3)\fP for more information.
 
 .SH "PERSISTENT CONNECTIONS"
 Persistent connections means that libcurl can re-use the same connection for
index c836e8a..6c4f902 100644 (file)
@@ -4,15 +4,20 @@
 <title>libcurl man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -77,12 +82,11 @@ p.roffit {
 <p class="level0">curl-config is added to make it easier for applications to link with libcurl and developers to learn about libcurl and how to use it. 
 <p class="level0">Run 'curl-config --libs' to get the (additional) linker options you need to link with the particular version of libcurl you've installed. See the <span Class="emphasis">curl-config(1)</span> man page for further details. 
 <p class="level0">Unix-like operating system that ship libcurl as part of their distributions often don't provide the curl-config tool, but simply install the library and headers in the common path for this purpose. 
-<p class="level0">Many Linux and similar sytems use pkg-config to provide build and link options about libraries and libcurl supports that as well. <a name="LIBCURL"></a><h2 class="nroffsh">LIBCURL SYMBOL NAMES</h2>
+<p class="level0">Many Linux and similar systems use pkg-config to provide build and link options about libraries and libcurl supports that as well. <a name="LIBCURL"></a><h2 class="nroffsh">LIBCURL SYMBOL NAMES</h2>
 <p class="level0">All public functions in the libcurl interface are prefixed with 'curl_' (with a lowercase c). You can find other functions in the library source code, but other prefixes indicate that the functions are private and may change without further notice in the next release. 
 <p class="level0">Only use documented functions and functionality! <a name="PORTABILITY"></a><h2 class="nroffsh">PORTABILITY</h2>
 <p class="level0">libcurl works <span Class="bold">exactly</span> the same, on any of the platforms it compiles and builds on. <a name="THREADS"></a><h2 class="nroffsh">THREADS</h2>
-<p class="level0">Never ever call curl-functions simultaneously using the same handle from several threads. libcurl is thread-safe and can be used in any number of threads, but you must use separate curl handles if you want to use libcurl in more than one thread simultaneously. 
-<p class="level0">The global environment functions are not thread-safe.  See <span class="bold">GLOBAL CONSTANTS</span> below for details. 
+<p class="level0">libcurl is thread safe but there are a few exceptions. Refer to <a Class="emphasis" href="./libcurl-thread.html">libcurl-thread</a> for more information. 
 <p class="level0"><a name="PERSISTENT"></a><h2 class="nroffsh">PERSISTENT CONNECTIONS</h2>
 <p class="level0">Persistent connections means that libcurl can re-use the same connection for several transfers, if the conditions are right. 
 <p class="level0">libcurl will <span Class="bold">always</span> attempt to use persistent connections. Whenever you use <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> or <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> etc, libcurl will attempt to use an existing connection to do the transfer, and if none exists it'll open a new one that will be subject for re-use on a possible following call to <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> or <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>. 
index 3875098..46c7710 100644 (file)
Binary files a/docs/libcurl/libcurl.pdf and b/docs/libcurl/libcurl.pdf differ
diff --git a/docs/libcurl/mksymbolsmanpage.pl b/docs/libcurl/mksymbolsmanpage.pl
new file mode 100644 (file)
index 0000000..1bca4d0
--- /dev/null
@@ -0,0 +1,93 @@
+#!/usr/bin/perl
+# ***************************************************************************
+# *                                  _   _ ____  _
+# *  Project                     ___| | | |  _ \| |
+# *                             / __| | | | |_) | |
+# *                            | (__| |_| |  _ <| |___
+# *                             \___|\___/|_| \_\_____|
+# *
+# * Copyright (C) 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+# *
+# * This software is licensed as described in the file COPYING, which
+# * you should have received as part of this distribution. The terms
+# * are also available at 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.
+# *
+# ***************************************************************************
+
+my $version="7.41.0";
+
+use POSIX qw(strftime);
+my $date = strftime "%b %e, %Y", localtime;
+my $year = strftime "%Y", localtime;
+
+print <<HEADER
+.\\" **************************************************************************
+.\\" *                                  _   _ ____  _
+.\\" *  Project                     ___| | | |  _ \\| |
+.\\" *                             / __| | | | |_) | |
+.\\" *                            | (__| |_| |  _ <| |___
+.\\" *                             \\___|\\___/|_| \\_\\_____|
+.\\" *
+.\\" * Copyright (C) 1998 - $year, Daniel Stenberg, <daniel\@haxx.se>, et al.
+.\\" *
+.\\" * This software is licensed as described in the file COPYING, which
+.\\" * you should have received as part of this distribution. The terms
+.\\" * are also available at 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.
+.\\" *
+.\\" **************************************************************************
+.TH libcurl-symbols 3 "$date" "libcurl $version" "libcurl symbols"
+.SH NAME
+libcurl-symbols \\- libcurl symbol version information
+.SH "libcurl symbols"
+This man page details version information for public symbols provided in the
+libcurl header files. This lists the first version in which the symbol was
+introduced and for some symbols two additional information pieces:
+
+The first version in which the symbol is marked "deprecated" - meaning that
+since that version no new code should be written to use the symbol as it is
+marked for getting removed in a future.
+
+The last version that featured the specific symbol. Using the symbol in source
+code will make it no longer compile error-free after that specified version.
+
+This man page is automatically generated from the symbols-in-versions file.
+HEADER
+    ;
+
+while(<STDIN>) {
+    if($_ =~ /^(CURL[A-Z0-9_.]*) *(.*)/) {
+        my ($symbol, $rest)=($1,$2);
+        my ($intro, $dep, $rem);
+        if($rest =~ s/^([0-9.]*) *//) {
+           $intro = $1;
+        }
+        if($rest =~ s/^([0-9.]*) *//) {
+           $dep = $1;
+        }
+        if($rest =~ s/^([0-9.]*) *//) {
+           $rem = $1;
+        }
+        print ".IP $symbol\nIntroduced in $intro\n";
+        if($dep) {
+          print "Deprecated since $dep\n";
+        }
+        if($rem) {
+          print "Last used in $dep\n";
+        }
+    }
+
+}
index 7650c00..c7accdc 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE - chunk length threshold for pipelining <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long with a <span Class="bold">size</span> in bytes. If a pipelined connection is currently processing a chunked (Transfer-encoding: chunked) request with a current chunk length larger than <a Class="emphasis" href="./CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</a>, that pipeline will not be considered for additional requests, even if it is shorter than <a Class="emphasis" href="./CURLMOPT_MAX_PIPELINE_LENGTH.html">CURLMOPT_MAX_PIPELINE_LENGTH</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">The default value is 0, which means that the penalization is inactive. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 8584f68..a722e09 100644 (file)
Binary files a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf and b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf differ
index b488190..e5edaaf 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE - size threshold for pipelining penalty <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long with a <span Class="bold">size</span> in bytes. If a pipelined connection is currently processing a request with a Content-Length larger than this <a Class="emphasis" href="./CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</a>, that pipeline will then not be considered for additional requests, even if it is shorter than <a Class="emphasis" href="./CURLMOPT_MAX_PIPELINE_LENGTH.html">CURLMOPT_MAX_PIPELINE_LENGTH</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">The default value is 0, which means that the size penalization is inactive. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 3740c06..9d4bf16 100644 (file)
Binary files a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf and b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf differ
index aa7bfba..cf82800 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLMOPT_MAXCONNECTS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLMOPT_MAXCONNECTS - set size of connection cache <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAXCONNECTS, long max); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long indicating the <span Class="bold">max</span>. The set number will be used as the maximum amount of simultaneously open connections that libcurl may keep in its connection cache after completed use. By default libcurl will enlarge the size for each added easy handle to make it fit 4 times the number of added easy handles. 
 <p class="level0">By setting this option, you can prevent the cache size from growing beyond the limit set by you. 
index 75fab1e..e68667b 100644 (file)
Binary files a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.pdf and b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.pdf differ
index 7789347..7522d43 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -29,8 +29,9 @@ CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host
 CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS, long max);
 .SH DESCRIPTION
 Pass a long to indicate \fBmax\fP. The set number will be used as the maximum
-amount of simultaneously open connections to a single host. For each new
-session to a host, libcurl will open a new connection up to the limit set by
+amount of simultaneously open connections to a single host (a host being the
+same as a host name + port number pair). For each new session to a host,
+libcurl will open a new connection up to the limit set by
 \fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP. When the limit is reached, the
 sessions will be pending until a connection becomes available. If
 \fICURLMOPT_PIPELINING(3)\fP is enabled, libcurl will try to pipeline if the
@@ -40,6 +41,9 @@ The default \fBmax\fP value is 0, unlimited.  However, for backwards
 compatibility, setting it to 0 when \fICURLMOPT_PIPELINING(3)\fP is 1 will not
 be treated as unlimited. Instead it will open only 1 connection and try to
 pipeline on it.
+
+This set limit is also used for proxy connections, and then the proxy is
+considered to be the host for which this limit counts.
 .SH DEFAULT
 0
 .SH PROTOCOLS
index ddcb77e..5c6d85c 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLMOPT_MAX_HOST_CONNECTIONS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,10 +52,11 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLMOPT_MAX_HOST_CONNECTIONS - set max number of connections to a single host <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS, long max); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Pass a long to indicate <span Class="bold">max</span>. The set number will be used as the maximum amount of simultaneously open connections to a single host. For each new session to a host, libcurl will open a new connection up to the limit set by <a Class="emphasis" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>. When the limit is reached, the sessions will be pending until a connection becomes available. If <a Class="emphasis" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a> is enabled, libcurl will try to pipeline if the host is capable of it. 
-<p class="level0">The default <span Class="bold">max</span> value is 0, unlimited.  However, for backwards compatibility, setting it to 0 when <a Class="emphasis" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a> is 1 will not be treated as unlimited. Instead it will open only 1 connection and try to pipeline on it. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Pass a long to indicate <span Class="bold">max</span>. The set number will be used as the maximum amount of simultaneously open connections to a single host (a host being the same as a host name + port number pair). For each new session to a host, libcurl will open a new connection up to the limit set by <a Class="emphasis" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>. When the limit is reached, the sessions will be pending until a connection becomes available. If <a Class="emphasis" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a> is enabled, libcurl will try to pipeline if the host is capable of it. 
+<p class="level0">The default <span Class="bold">max</span> value is 0, unlimited.  However, for backwards compatibility, setting it to 0 when <a Class="emphasis" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a> is 1 will not be treated as unlimited. Instead it will open only 1 connection and try to pipeline on it. 
+<p class="level0">This set limit is also used for proxy connections, and then the proxy is considered to be the host for which this limit counts. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
index 1b1dbd3..1a5f3fb 100644 (file)
Binary files a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.pdf and b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.pdf differ
index f543112..d2fb91d 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLMOPT_MAX_PIPELINE_LENGTH man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLMOPT_MAX_PIPELINE_LENGTH - maximum number of requests in a pipeline <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH, long max); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. The set <span Class="bold">max</span> number will be used as the maximum amount of outstanding requests in a pipelined connection. Only used if pipelining is enabled. 
 <p class="level0">When this limit is reached, libcurl will use another connection to the same host (see <a Class="emphasis" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>), or queue the request until one of the pipelines to the host is ready to accept a request.  Thus, the total number of requests in-flight is <a Class="emphasis" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a> * <a Class="emphasis" href="./CURLMOPT_MAX_PIPELINE_LENGTH.html">CURLMOPT_MAX_PIPELINE_LENGTH</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 08373e2..f945954 100644 (file)
@@ -67,12 +67,12 @@ endobj
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:13+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:13+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:893dfcfe-78d5-11f0-0000-e44c0fe5a109' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:893dfcfe-78d5-11f0-0000-e44c0fe5a109' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:36+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:36+02:00</xmp:CreateDate>
 <xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109'/>
-<rdf:Description rdf:about='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:893dfcfe-78d5-11f0-0000-e44c0fe5a109' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:893dfcfe-78d5-11f0-0000-e44c0fe5a109'/>
+<rdf:Description rdf:about='uuid:893dfcfe-78d5-11f0-0000-e44c0fe5a109' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
@@ -81,9 +81,9 @@ endobj
 endstream
 endobj
 2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091813+01'00')
-/ModDate(D:20150108091813+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081136+02'00')
+/ModDate(D:20150812081136+02'00')
 /Creator(groff version 1.22.3)>>endobj
 xref
 0 15
@@ -104,7 +104,7 @@ xref
 0000001892 00000 n 
 trailer
 << /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<4EDD1116ACCC9D1C522F25B0E47AB18F><4EDD1116ACCC9D1C522F25B0E47AB18F>]
+/ID [<250AB0EF71AFA2B0149496D7C068D77D><250AB0EF71AFA2B0149496D7C068D77D>]
 >>
 startxref
 3469
index 317a962..32955ac 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLMOPT_MAX_TOTAL_CONNECTIONS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLMOPT_MAX_TOTAL_CONNECTIONS - max simultaneously open connections <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, long amount); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long for the <span Class="bold">amount</span>. The set number will be used as the maximum number of simultaneously open connections in total using this multi handle. For each new session, libcurl will open a new connection up to the limit set by <a Class="emphasis" href="./CURLMOPT_MAX_TOTAL_CONNECTIONS.html">CURLMOPT_MAX_TOTAL_CONNECTIONS</a>. When the limit is reached, the sessions will be pending until there are available connections. If <a Class="emphasis" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a> is enabled, libcurl will try to pipeline if the host is capable of it. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">The default value is 0, which means that there is no limit. It is then simply controlled by the number of easy handles added. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 56dfdf4..0d516dc 100644 (file)
Binary files a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf and b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf differ
index c1df1d5..c795c48 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -26,17 +26,28 @@ CURLMOPT_PIPELINING \- enable/disable HTTP pipelining
 .SH SYNOPSIS
 #include <curl/curl.h>
 
-CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, bool onoff);
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, long bits);
 .SH DESCRIPTION
-Set the \fBonoff\fP parameter to 1 to make libcurl use HTTP pipelining for
-HTTP transfers done using this multi handle, as far as possible. This means
-that if you add a second request that can use an already existing connection,
-the second request will be \&"piped" on the same connection rather than being
-executed in parallel.
+Set the \fBbits\fP parameter to 1 to make libcurl use HTTP pipelining for
+HTTP/1.1 transfers done using this multi handle, as far as possible. This
+means that if you add a second request that can use an already existing
+connection, the second request will be \&"piped" on the same connection rather
+than being executed in parallel.
 
 When using pipelining, there are also several other related options that are
 interesting to tweak and adjust to alter how libcurl spreads out requests on
 different connections or not etc.
+
+Starting in 7.43.0, the \fBbits\fP parameter's bit 1 also has a meaning and
+libcurl is now offering symbol names for the bits:
+.IP CURLPIPE_NOTHING (0)
+Default, which means doing no attempts at pipelining or multiplexing.
+.IP CURLPIPE_HTTP1 (1)
+If this bit is set, libcurl will try to pipeline HTTP/1.1 requests on
+connections that are already established and in use to hosts.
+.IP CURLPIPE_MULTIPLEX (2)
+If this bit is set, libcurl will try to multiplex the new transfer over an
+existing connection if possible. This requires HTTP/2.
 .SH DEFAULT
 0 (off)
 .SH PROTOCOLS
@@ -44,7 +55,7 @@ HTTP(S)
 .SH EXAMPLE
 TODO
 .SH AVAILABILITY
-Added in 7.16.0
+Added in 7.16.0. Multiplex support bit added in 7.43.0.
 .SH RETURN VALUE
 Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index c56205c..20682a7 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLMOPT_PIPELINING man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,14 +52,21 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLMOPT_PIPELINING - enable/disable HTTP pipelining <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
-<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, bool onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Set the <span Class="bold">onoff</span> parameter to 1 to make libcurl use HTTP pipelining for HTTP transfers done using this multi handle, as far as possible. This means that if you add a second request that can use an already existing connection, the second request will be "piped" on the same connection rather than being executed in parallel. 
-<p class="level0">When using pipelining, there are also several other related options that are interesting to tweak and adjust to alter how libcurl spreads out requests on different connections or not etc. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
+<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, long bits); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set the <span Class="bold">bits</span> parameter to 1 to make libcurl use HTTP pipelining for HTTP/1.1 transfers done using this multi handle, as far as possible. This means that if you add a second request that can use an already existing connection, the second request will be "piped" on the same connection rather than being executed in parallel. 
+<p class="level0">When using pipelining, there are also several other related options that are interesting to tweak and adjust to alter how libcurl spreads out requests on different connections or not etc. 
+<p class="level0">Starting in 7.43.0, the <span Class="bold">bits</span> parameter's bit 1 also has a meaning and libcurl is now offering symbol names for the bits: 
+<p class="level0"><a name="CURLPIPENOTHING"></a><span class="nroffip">CURLPIPE_NOTHING (0)</span> 
+<p class="level1">Default, which means doing no attempts at pipelining or multiplexing. 
+<p class="level0"><a name="CURLPIPEHTTP1"></a><span class="nroffip">CURLPIPE_HTTP1 (1)</span> 
+<p class="level1">If this bit is set, libcurl will try to pipeline HTTP/1.1 requests on connections that are already established and in use to hosts. 
+<p class="level0"><a name="CURLPIPEMULTIPLEX"></a><span class="nroffip">CURLPIPE_MULTIPLEX (2)</span> 
+<p class="level1">If this bit is set, libcurl will try to multiplex the new transfer over an existing connection if possible. This requires HTTP/2. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 (off) <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Added in 7.16.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Added in 7.16.0. Multiplex support bit added in 7.43.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLMOPT_MAX_PIPELINE_LENGTH.html">CURLMOPT_MAX_PIPELINE_LENGTH</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_PIPELINING_SITE_BL.html">CURLMOPT_PIPELINING_SITE_BL</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_MAXCONNECTS.html">CURLMOPT_MAXCONNECTS</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>, <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
index 2166f2d..9f93dbc 100644 (file)
Binary files a/docs/libcurl/opts/CURLMOPT_PIPELINING.pdf and b/docs/libcurl/opts/CURLMOPT_PIPELINING.pdf differ
index ae39312..e3ea4b1 100644 (file)
@@ -50,7 +50,7 @@ The default value is NULL, which means that there is no blacklist.
     NULL
   };
 
-  curl_multi_setopt(m, CURLMOPT_PIPELINE_SERVER_BL, server_blacklist);
+  curl_multi_setopt(m, CURLMOPT_PIPELINING_SERVER_BL, server_blacklist);
 .fi
 .SH AVAILABILITY
 Added in 7.30.0
index 2193b7d..50c3a89 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLMOPT_PIPELINING_SERVER_BL man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,22 +52,23 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLMOPT_PIPELINING_SERVER_BL - pipelining server blacklist <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SERVER_BL, char **servers); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a <span Class="bold">servers</span> array of char *, ending with a NULL entry. This is a list of server types prefixes (in the Server: HTTP header) that are blacklisted from pipelining, i.e server types that are known to not support HTTP pipelining. The array is copied by libcurl. 
 <p class="level0">Note that the comparison matches if the Server: header begins with the string in the blacklist, i.e "Server: Ninja 1.2.3" and "Server: Ninja 1.4.0" can  both be blacklisted by having "Ninja" in the backlist. 
 <p class="level0">Pass a NULL pointer to clear the blacklist. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">The default value is NULL, which means that there is no blacklist. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0"><a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">&nbsp; server_blacklist[] =
- &nbsp; {
- &nbsp;   "Microsoft-IIS/6.0",
- &nbsp;   "nginx/0.8.54",
- &nbsp;   NULL
- &nbsp; };
- <p class="level0">&nbsp; curl_multi_setopt(m, CURLMOPT_PIPELINE_SERVER_BL, server_blacklist);
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp; server_blacklist[] =
+&nbsp; {
+&nbsp;   "Microsoft-IIS/6.0",
+&nbsp;   "nginx/0.8.54",
+&nbsp;   NULL
+&nbsp; };
+&nbsp;
+&nbsp; curl_multi_setopt(m, CURLMOPT_PIPELINING_SERVER_BL, server_blacklist);
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.30.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index d12a2e0..a793178 100644 (file)
Binary files a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.pdf and b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.pdf differ
index 6356d02..cf6e6e7 100644 (file)
@@ -46,7 +46,7 @@ HTTP(S)
     NULL
   };
 
-  curl_multi_setopt(m, CURLMOPT_PIPELINE_SITE_BL, site_blacklist);
+  curl_multi_setopt(m, CURLMOPT_PIPELINING_SITE_BL, site_blacklist);
 .fi
 .SH AVAILABILITY
 Added in 7.30.0
index ab579d1..1161a81 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLMOPT_PIPELINING_SITE_BL man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,21 +52,22 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLMOPT_PIPELINING_SITE_BL - pipelining host blacklist <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SITE_BL, char **hosts); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a <span Class="bold">hosts</span> array of char *, ending with a NULL entry. This is a list of sites that are blacklisted from pipelining, i.e sites that are known to not support HTTP pipelining. The array is copied by libcurl. 
 <p class="level0">Pass a NULL pointer to clear the blacklist. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">The default value is NULL, which means that there is no blacklist. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">&nbsp; site_blacklist[] =
- &nbsp; {
- &nbsp;   "www.haxx.se",
- &nbsp;   "www.example.com:1234",
- &nbsp;   NULL
- &nbsp; };
- <p class="level0">&nbsp; curl_multi_setopt(m, CURLMOPT_PIPELINE_SITE_BL, site_blacklist);
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp; site_blacklist[] =
+&nbsp; {
+&nbsp;   "www.haxx.se",
+&nbsp;   "www.example.com:1234",
+&nbsp;   NULL
+&nbsp; };
+&nbsp;
+&nbsp; curl_multi_setopt(m, CURLMOPT_PIPELINING_SITE_BL, site_blacklist);
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.30.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index fc712c0..d20ed4f 100644 (file)
Binary files a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.pdf and b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHDATA.3 b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
new file mode 100644 (file)
index 0000000..135e632
--- /dev/null
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at 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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_PUSHDATA 3 "1 Jun 2015" "libcurl 7.44.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_PUSHDATA \- pointer to pass to push callback
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHDATA, void *pointer);
+.fi
+.SH DESCRIPTION
+Set \fIpointer\fP to pass as the last argument to the
+\fICURLMOPT_PUSHFUNCTION(3)\fP callback. The pointer will not be touched or
+used by libcurl itself, only passed on to the callback function.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.44.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_PUSHFUNCTION "(3), " CURLMOPT_PIPELINING "(3), "
+.BR CURLOPT_PIPEWAIT "(3), "
+.BR RFC 7540
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHDATA.html b/docs/libcurl/opts/CURLMOPT_PUSHDATA.html
new file mode 100644 (file)
index 0000000..0ea49f2
--- /dev/null
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_PUSHDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_PUSHDATA - pointer to pass to push callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHDATA, void *pointer);
+</pre>
+
+<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set <span Class="emphasis">pointer</span> to pass as the last argument to the <a Class="emphasis" href="./CURLMOPT_PUSHFUNCTION.html">CURLMOPT_PUSHFUNCTION</a> callback. The pointer will not be touched or used by libcurl itself, only passed on to the callback function. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.44.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_PUSHFUNCTION.html">CURLMOPT_PUSHFUNCTION</a>, <a Class="manpage" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_PIPEWAIT.html">CURLOPT_PIPEWAIT</a>, <span Class="manpage"> </span> <span Class="manpage"><a href="http://www.ietf.org/rfc/rfc7540.txt">RFC 7540</a></span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHDATA.pdf b/docs/libcurl/opts/CURLMOPT_PUSHDATA.pdf
new file mode 100644 (file)
index 0000000..200136b
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_PUSHDATA.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
new file mode 100644 (file)
index 0000000..fb5e4e4
--- /dev/null
@@ -0,0 +1,132 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at 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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_PUSHFUNCTION 3 "1 Jun 2015" "libcurl 7.44.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+char *curl_pushheader_bynum(push_headers, int num);
+char *curl_pushheader_byname(push_headers, const char *name);
+
+int curl_push_callback(CURL *parent,
+                       CURL *easy,
+                       size_t num_headers,
+                       struct curl_pushheaders *headers,
+                       void *userp);
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHFUNCTION,
+                            curl_push_callback func);
+.fi
+.SH DESCRIPTION
+This callback gets called when a new HTTP/2 stream is being pushed by the
+server (using the PUSH_PROMISE frame). If no push callback is set, all offered
+pushes will be denied automatically.
+.SH CALLBACK DESCRIPTION
+The callback gets its arguments like this:
+
+\fIparent\fP is the handle of the stream on which this push arrives. The new
+handle has been duphandle()d from the parent, meaning that it has gotten all
+its options inherited. It is then up to the application to alter any options
+if desired.
+
+\fIeasy\fP is a newly created handle that represents this upcoming transfer.
+
+\fInum_headers\fP is the number of name+value pairs that was received and can
+be accessed
+
+\fIheaders\fP is a handle used to access push headers using the accessor
+functions described below. This only accesses and provides the PUSH_PROMISE
+headers, the normal response headers will be provided in the header callback
+as usual.
+
+\fIuserp\fP is the pointer set with \fICURLMOPT_PUSHDATA(3)\fP
+
+If the callback returns CURL_PUSH_OK, the 'easy' handle will be added to the
+multi handle, the callback must not do that by itself.
+
+The callback can access PUSH_PROMISE headers with two accessor
+functions. These functions can only be used from within this callback and they
+can only access the PUSH_PROMISE headers. The normal response headers will be
+pased to the header callback for pushed streams just as for normal streams.
+.IP curl_pushheader_bynum
+Returns the header at index 'num' (or NULL). The returned pointer points to a
+"name:value" string that will be freed when this callback returns.
+.IP curl_pushheader_byname
+Returns the value for the given header name (or NULL). This is a shortcut so
+that the application doesn't have to loop through all headers to find the one
+it is interested in. The data pointed will be freed when this callback
+returns.
+.SH CALLBACK RETURN VALUE
+.IP "CURL_PUSH_OK (0)"
+The application has accepted the stream and it can now start receiving data,
+the ownership of the CURL handle has been taken over by the application.
+.IP "CURL_PUSH_DENY (1)"
+The callback denies the stream and no data for this will reach the
+application, the easy handle will be destroyed by libcurl.
+.IP *
+All other return codes are reserved for future use.
+.SH DEFAULT
+NULL, no callback
+.SH PROTOCOLS
+HTTP(S) (HTTP/2 only)
+.SH EXAMPLE
+.nf
+/* only allow pushes for file names starting with "push-" */
+int push_callback(CURL *parent,
+                  CURL *easy,
+                  size_t num_headers,
+                  struct curl_pushheaders *headers,
+                  void *userp)
+{
+  char *headp;
+  int *transfers = (int *)userp;
+  FILE *out;
+  headp = curl_pushheader_byname(headers, ":path");
+  if(headp && !strncmp(headp, "/push-", 6)) {
+    fprintf(stderr, "The PATH is %s\n", headp);
+
+    /* save the push here */
+    out = fopen("pushed-stream", "wb");
+
+    /* write to this file */
+    curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
+
+    (*transfers)++; /* one more */
+
+    return CURL_PUSH_OK;
+  }
+  return CURL_PUSH_DENY;
+}
+
+curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_callback);
+curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter);
+.fi
+.SH AVAILABILITY
+Added in 7.44.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_PUSHDATA "(3), " CURLMOPT_PIPELINING "(3), " CURLOPT_PIPEWAIT "(3), "
+.BR RFC 7540
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.html b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.html
new file mode 100644 (file)
index 0000000..17680a0
--- /dev/null
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_PUSHFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_PUSHFUNCTION - callback that approves or denies server pushes <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+char *curl_pushheader_bynum(push_headers, int num);
+char *curl_pushheader_byname(push_headers, const char *name);
+&nbsp;
+int curl_push_callback(CURL *parent,
+&nbsp;                      CURL *easy,
+&nbsp;                      size_t num_headers,
+&nbsp;                      struct curl_pushheaders *headers,
+&nbsp;                      void *userp);
+&nbsp;
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHFUNCTION,
+&nbsp;                           curl_push_callback func);
+</pre>
+
+<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">This callback gets called when a new HTTP/2 stream is being pushed by the server (using the PUSH_PROMISE frame). If no push callback is set, all offered pushes will be denied automatically. <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK DESCRIPTION</h2>
+<p class="level0">The callback gets its arguments like this: 
+<p class="level0"><span Class="emphasis">parent</span> is the handle of the stream on which this push arrives. The new handle has been duphandle()d from the parent, meaning that it has gotten all its options inherited. It is then up to the application to alter any options if desired. 
+<p class="level0"><span Class="emphasis">easy</span> is a newly created handle that represents this upcoming transfer. 
+<p class="level0"><span Class="emphasis">num_headers</span> is the number of name+value pairs that was received and can be accessed 
+<p class="level0"><span Class="emphasis">headers</span> is a handle used to access push headers using the accessor functions described below. This only accesses and provides the PUSH_PROMISE headers, the normal response headers will be provided in the header callback as usual. 
+<p class="level0"><span Class="emphasis">userp</span> is the pointer set with <a Class="emphasis" href="./CURLMOPT_PUSHDATA.html">CURLMOPT_PUSHDATA</a> 
+<p class="level0">If the callback returns CURL_PUSH_OK, the 'easy' handle will be added to the multi handle, the callback must not do that by itself. 
+<p class="level0">The callback can access PUSH_PROMISE headers with two accessor functions. These functions can only be used from within this callback and they can only access the PUSH_PROMISE headers. The normal response headers will be pased to the header callback for pushed streams just as for normal streams. 
+<p class="level0"><a name="curlpushheaderbynum"></a><span class="nroffip">curl_pushheader_bynum</span> 
+<p class="level1">Returns the header at index 'num' (or NULL). The returned pointer points to a "name:value" string that will be freed when this callback returns. 
+<p class="level0"><a name="curlpushheaderbyname"></a><span class="nroffip">curl_pushheader_byname</span> 
+<p class="level1">Returns the value for the given header name (or NULL). This is a shortcut so that the application doesn't have to loop through all headers to find the one it is interested in. The data pointed will be freed when this callback returns. <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK RETURN VALUE</h2>
+<p class="level0">
+<p class="level0"><a name="CURLPUSHOK"></a><span class="nroffip">CURL_PUSH_OK (0)</span> 
+<p class="level1">The application has accepted the stream and it can now start receiving data, the ownership of the CURL handle has been taken over by the application. 
+<p class="level0"><a name="CURLPUSHDENY"></a><span class="nroffip">CURL_PUSH_DENY (1)</span> 
+<p class="level1">The callback denies the stream and no data for this will reach the application, the easy handle will be destroyed by libcurl. 
+<p class="level0"><a name=""></a><span class="nroffip">*</span> 
+<p class="level1">All other return codes are reserved for future use. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL, no callback <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) (HTTP/2 only) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+/* only allow pushes for file names starting with "push-" */
+int push_callback(CURL *parent,
+&nbsp;                 CURL *easy,
+&nbsp;                 size_t num_headers,
+&nbsp;                 struct curl_pushheaders *headers,
+&nbsp;                 void *userp)
+{
+&nbsp; char *headp;
+&nbsp; int *transfers = (int *)userp;
+&nbsp; FILE *out;
+&nbsp; headp = curl_pushheader_byname(headers, ":path");
+&nbsp; if(headp && !strncmp(headp, "/push-", 6)) {
+&nbsp;   fprintf(stderr, "The PATH is %sn", headp);
+&nbsp;
+&nbsp;   /* save the push here */
+&nbsp;   out = fopen("pushed-stream", "wb");
+&nbsp;
+&nbsp;   /* write to this file */
+&nbsp;   curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
+&nbsp;
+&nbsp;   (*transfers)++; /* one more */
+&nbsp;
+&nbsp;   return CURL_PUSH_OK;
+&nbsp; }
+&nbsp; return CURL_PUSH_DENY;
+}
+&nbsp;
+curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_callback);
+curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter);
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.44.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_PUSHDATA.html">CURLMOPT_PUSHDATA</a>, <a Class="manpage" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a>, <a Class="manpage" href="./CURLOPT_PIPEWAIT.html">CURLOPT_PIPEWAIT</a>, <a class="manpage" href="#"> </a> <span Class="manpage"><a href="http://www.ietf.org/rfc/rfc7540.txt">RFC 7540</a></span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.pdf b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.pdf
new file mode 100644 (file)
index 0000000..d6431ed
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.pdf differ
index dd2da96..5cea2c1 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLMOPT_SOCKETDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,10 +52,11 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLMOPT_SOCKETDATA - custom pointer passed to the socket callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETDATA, void *pointer);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETDATA, void *pointer);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">A data <span Class="emphasis">pointer</span> to pass to the socket callback set with the <a Class="emphasis" href="./CURLMOPT_SOCKETFUNCTION.html">CURLMOPT_SOCKETFUNCTION</a> option. 
 <p class="level0">This pointer will not be touched by libcurl but will only be passed in to the socket callbacks's <span Class="bold">userp</span> argument. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 4beb93f..ac0a8a7 100644 (file)
Binary files a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.pdf and b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.pdf differ
index 1106738..ecb519a 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLMOPT_SOCKETFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,15 +52,17 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLMOPT_SOCKETFUNCTION - callback informed about what to wait for <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">int socket_callback(CURL *easy,      /* easy handle */
- &nbsp;                   curl_socket_t s, /* socket */
- &nbsp;                   int what,        /* see above */
- &nbsp;                   void *userp,     /* private callback pointer */
- &nbsp;                   void *socketp);  /* private socket pointer */
- <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETFUNCTION, socket_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+int socket_callback(CURL *easy,      /* easy handle */
+&nbsp;                   curl_socket_t s, /* socket */
+&nbsp;                   int what,        /* see above */
+&nbsp;                   void *userp,     /* private callback pointer */
+&nbsp;                   void *socketp);  /* private socket pointer */
+&nbsp;
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETFUNCTION, socket_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0">When the <span Class="emphasis">curl_multi_socket_action(3)</span> function runs, it informs the application about updates in the socket (file descriptor) status by doing none, one, or multiple calls to the <span Class="bold">socket_callback</span>. The callback gets status updates with changes since the previous time the callback was called. If the given callback pointer is NULL, no callback will be called. Set the callback's <span Class="bold">userp</span> argument with <a Class="emphasis" href="./CURLMOPT_SOCKETDATA.html">CURLMOPT_SOCKETDATA</a>.  See <span Class="emphasis">curl_multi_socket_action(3)</span> for more details on how the callback is used and should work. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index ba60f53..3445301 100644 (file)
Binary files a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.pdf and b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.pdf differ
index 020e5b0..a42c18b 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLMOPT_TIMERDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,10 +52,11 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLMOPT_TIMERDATA - custom pointer to pass to timer callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERDATA, void *pointer);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERDATA, void *pointer);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">A data <span Class="bold">pointer</span> to pass to the timer callback set with the <a Class="emphasis" href="./CURLMOPT_TIMERFUNCTION.html">CURLMOPT_TIMERFUNCTION</a> option. 
 <p class="level0">This pointer will not be touched by libcurl but will only be passed in to the timer callbacks's <span Class="bold">userp</span> argument. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index a93b74d..34eb8a9 100644 (file)
Binary files a/docs/libcurl/opts/CURLMOPT_TIMERDATA.pdf and b/docs/libcurl/opts/CURLMOPT_TIMERDATA.pdf differ
index 809c3ef..f509b45 100644 (file)
@@ -36,14 +36,21 @@ CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERFUNCTION, timer_callbac
 Pass a pointer to your callback function, which should match the prototype
 shown above.
 
-This callback function will be called when the timeout value changes. The
-\fBtimeout_ms\fP value is at what latest time the application should call one
-of the \&"performing" functions of the multi interface
-(\fIcurl_multi_socket_action(3)\fP and \fIcurl_multi_perform(3)\fP) - to allow
-libcurl to keep timeouts and retries etc to work. A \fBtimeout_ms\fP value of
--1 means that there is no timeout at all, and 0 means that the timeout is
-already expired. libcurl attempts to limit calling this only when the fixed
-future timeout time actually changes.
+Certain features, such as timeouts and retries, require you to call libcurl
+even when there is no activity on the file descriptors.
+
+Your callback function \fBtimer_callback\fP should install a non-repeating
+timer with an interval of \fBtimeout_ms\fP. Each time that timer fires, call
+either \fIcurl_multi_socket_action(3)\fP or \fIcurl_multi_perform(3)\fP,
+depending on which interface you use.
+
+A \fBtimeout_ms\fP value of -1 means you should delete your timer.
+
+A \fBtimeout_ms\fP value of 0 means you should call
+\fIcurl_multi_socket_action(3)\fP or \fIcurl_multi_perform(3)\fP (once) as soon
+as possible.
+
+\fBtimer_callback\fP will only be called when the \fBtimeout_ms\fP changes.
 
 The \fBuserp\fP pointer is set with \fICURLMOPT_TIMERDATA(3)\fP.
 
@@ -54,7 +61,38 @@ NULL
 .SH PROTOCOLS
 All
 .SH EXAMPLE
-TODO
+.nf
+static gboolean timeout_cb(gpointer user_data) {
+    if (user_data) {
+        g_free(user_data);
+        curl_multi_setopt(curl_handle, CURLMOPT_TIMERDATA, NULL);
+    }
+    int running;
+    curl_multi_socket_action(multi, CURL_SOCKET_TIMEOUT, 0, &running);
+    return G_SOURCE_REMOVE;
+}
+
+static int timerfunc(CURLM *multi, long timeout_ms, void *userp) {
+    guint *id = userp;
+
+    if (id)
+        g_source_remove(*id);
+
+    // -1 means we should just delete our timer.
+    if (timeout_ms == -1) {
+        g_free(id);
+        id = NULL;
+    } else {
+        if (!id)
+            id = g_new(guint, 1);
+        *id = g_timeout_add(timeout_ms, timeout_cb, id);
+    }
+    curl_multi_setopt(multi, CURLMOPT_TIMERDATA, id);
+    return 0;
+}
+
+curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, timerfunc);
+.fi
 .SH AVAILABILITY
 Added in 7.16.0
 .SH RETURN VALUE
index 800bb8f..0195567 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLMOPT_TIMERFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,21 +52,60 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLMOPT_TIMERFUNCTION - set callback to receive timeout values <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">int timer_callback(CURLM *multi,    /* multi handle */
- &nbsp;                  long timeout_ms, /* see above */
- &nbsp;                  void *userp);    /* private callback pointer */
- <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERFUNCTION, timer_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+int timer_callback(CURLM *multi,    /* multi handle */
+&nbsp;                  long timeout_ms, /* see above */
+&nbsp;                  void *userp);    /* private callback pointer */
+&nbsp;
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERFUNCTION, timer_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
-<p class="level0">This callback function will be called when the timeout value changes. The <span Class="bold">timeout_ms</span> value is at what latest time the application should call one of the "performing" functions of the multi interface (<span Class="emphasis">curl_multi_socket_action(3)</span> and <span Class="emphasis">curl_multi_perform(3)</span>) - to allow libcurl to keep timeouts and retries etc to work. A <span Class="bold">timeout_ms</span> value of -1 means that there is no timeout at all, and 0 means that the timeout is already expired. libcurl attempts to limit calling this only when the fixed future timeout time actually changes. 
+<p class="level0">Certain features, such as timeouts and retries, require you to call libcurl even when there is no activity on the file descriptors. 
+<p class="level0">Your callback function <span Class="bold">timer_callback</span> should install a non-repeating timer with an interval of <span Class="bold">timeout_ms</span>. Each time that timer fires, call either <span Class="emphasis">curl_multi_socket_action(3)</span> or <span Class="emphasis">curl_multi_perform(3)</span>, depending on which interface you use. 
+<p class="level0">A <span Class="bold">timeout_ms</span> value of -1 means you should delete your timer. 
+<p class="level0">A <span Class="bold">timeout_ms</span> value of 0 means you should call <span Class="emphasis">curl_multi_socket_action(3)</span> or <span Class="emphasis">curl_multi_perform(3)</span> (once) as soon as possible. 
+<p class="level0"><span Class="bold">timer_callback</span> will only be called when the <span Class="bold">timeout_ms</span> changes. 
 <p class="level0">The <span Class="bold">userp</span> pointer is set with <a Class="emphasis" href="./CURLMOPT_TIMERDATA.html">CURLMOPT_TIMERDATA</a>. 
 <p class="level0">The timer callback should return 0 on success, and -1 on error. This callback can be used instead of, or in addition to, <span Class="emphasis">curl_multi_timeout(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+static gboolean timeout_cb(gpointer user_data) {
+&nbsp;   if (user_data) {
+&nbsp;       g_free(user_data);
+&nbsp;       curl_multi_setopt(curl_handle, CURLMOPT_TIMERDATA, NULL);
+&nbsp;   }
+&nbsp;   int running;
+&nbsp;   curl_multi_socket_action(multi, CURL_SOCKET_TIMEOUT, 0, &running);
+&nbsp;   return G_SOURCE_REMOVE;
+}
+&nbsp;
+static int timerfunc(CURLM *multi, long timeout_ms, void *userp) {
+&nbsp;   guint *id = userp;
+&nbsp;
+&nbsp;   if (id)
+&nbsp;       g_source_remove(*id);
+&nbsp;
+&nbsp;   // -1 means we should just delete our timer.
+&nbsp;   if (timeout_ms == -1) {
+&nbsp;       g_free(id);
+&nbsp;       id = NULL;
+&nbsp;   } else {
+&nbsp;       if (!id)
+&nbsp;           id = g_new(guint, 1);
+&nbsp;       *id = g_timeout_add(timeout_ms, timeout_cb, id);
+&nbsp;   }
+&nbsp;   curl_multi_setopt(multi, CURLMOPT_TIMERDATA, id);
+&nbsp;   return 0;
+}
+&nbsp;
+curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, timerfunc);
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.16.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLMOPT_TIMERDATA.html">CURLMOPT_TIMERDATA</a>, <a Class="manpage" href="./CURLMOPT_SOCKETFUNCTION.html">CURLMOPT_SOCKETFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
index 3db1c3e..9a8ba6e 100644 (file)
Binary files a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.pdf and b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.pdf differ
index 3b84a4d..e6e547e 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_ACCEPTTIMEOUT_MS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_ACCEPTTIMEOUT_MS - timeout waiting for FTP server to connect back <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long telling libcurl the maximum number of milliseconds to wait for a server to connect back to libcurl when an active FTP connection is used. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">If no timeout is set, the internal default of 60000 (one minute) will be used. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 4a5af84..5bc835e 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.pdf and b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.pdf differ
index 0f4aab4..76f7c9c 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_ACCEPT_ENCODING man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_ACCEPT_ENCODING - enables automatic decompression of HTTP downloads <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * argument specifying what encoding you'd like. 
 <p class="level0">Sets the contents of the Accept-Encoding: header sent in a HTTP request, and enables decoding of a response when a Content-Encoding: header is received. Three encodings are supported: <span Class="emphasis">identity</span>, which does nothing, <span Class="emphasis">deflate</span> which requests the server to compress its response using the zlib algorithm, and <span Class="emphasis">gzip</span> which requests the gzip algorithm. 
index 33acf13..659bd68 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.pdf and b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.pdf differ
index d79833c..25017db 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_ADDRESS_SCOPE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_ADDRESS_SCOPE - set scope for local IPv6 addresses <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ADDRESS_SCOPE, long scope); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long specifying the scope_id value to use when connecting to IPv6 link-local or site-local addresses. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 883842c..f1f0e34 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.pdf and b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.pdf differ
index 32cef5a..9b0b8b5 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_APPEND man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_APPEND - enable appending to the remote file <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">A parameter set to 1 tells the library to append to the remote file instead of overwrite it. This is only useful when uploading to an FTP site. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 698e1f4..c1ea28e 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_APPEND.pdf and b/docs/libcurl/opts/CURLOPT_APPEND.pdf differ
index f7cf20c..55dad54 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_AUTOREFERER man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_AUTOREFERER - automatically update the referer header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a parameter set to 1 to enable this. When enabled, libcurl will automatically set the Referer: header field in HTTP requests where it follows a Location: redirect. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 5cf16c0..dfcb134 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_AUTOREFERER.pdf and b/docs/libcurl/opts/CURLOPT_AUTOREFERER.pdf differ
index 265f841..4275b55 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_BUFFERSIZE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_BUFFERSIZE - set preferred receive buffer size <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_BUFFERSIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long specifying your preferred <span Class="emphasis">size</span> (in bytes) for the receive buffer in libcurl.  The main point of this would be that the write callback gets called more often and with smaller chunks. This is just treated as a request, not an order. You cannot be guaranteed to actually get the given size. 
 <p class="level0">This size is by default set as big as possible (<span Class="emphasis">CURL_MAX_WRITE_SIZE</span>), so it only makes sense to use this option if you want it smaller. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index b63d18f..9530250 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.pdf and b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.pdf differ
index cb7f47b..85c9ba3 100644 (file)
@@ -47,7 +47,8 @@ All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
 .SH EXAMPLE
 TODO
 .SH AVAILABILITY
-If built TLS enabled
+For SSL engines that don't support certificate files the CURLOPT_CAINFO option
+is ignored. Refer to http://curl.haxx.se/docs/ssl-compared.html
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
 CURLE_OUT_OF_MEMORY if there was insufficient heap space.
index 528da91..67ef6dc 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CAINFO man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,16 +52,16 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CAINFO - path to Certificate Authority (CA) bundle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAINFO, char *path); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * to a zero terminated string naming a file holding one or more certificates to verify the peer with. 
 <p class="level0">If <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> is zero and you avoid verifying the server's certificate, <a Class="emphasis" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a> need not even indicate an accessible file. 
 <p class="level0">This option is by default set to the system path where libcurl's cacert bundle is assumed to be stored, as established at build time. 
-<p class="level0">If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module (libnsspem.so) needs to be available for this option to work properly. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">If curl is built against the NSS SSL library, the NSS PEM PKCS&#35;11 module (libnsspem.so) needs to be available for this option to work properly. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">Built-in system specific <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">If built TLS enabled <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">For SSL engines that don't support certificate files the CURLOPT_CAINFO option is ignored. Refer to <a href="http://curl.haxx.se/docs/ssl-compared.html">http://curl.haxx.se/docs/ssl-compared.html</a> <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_CAPATH.html">CURLOPT_CAPATH</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <a Class="manpage" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a>, <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
index 572a5d4..e4dc058 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CAINFO.pdf and b/docs/libcurl/opts/CURLOPT_CAINFO.pdf differ
index 642953d..6695f9f 100644 (file)
@@ -43,9 +43,8 @@ All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
 .SH EXAMPLE
 TODO
 .SH AVAILABILITY
-This option is OpenSSL-specific and does nothing if libcurl is built to use
-GnuTLS. NSS-powered libcurl provides the option only for backward
-compatibility.
+This option is supported by the OpenSSL, GnuTLS and PolarSSL backends. The NSS
+backend provides the option only for backward compatibility.
 .SH RETURN VALUE
 Returns CURLE_OK if TLS enabled, and CURLE_UNKNOWN_OPTION if not, or
 CURLE_OUT_OF_MEMORY if there was insufficient heap space.
index a9cdb27..6f1c403 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CAPATH man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,14 +52,14 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CAPATH - specify directory holding CA certificates <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * to a zero terminated string naming a directory holding multiple CA certificates to verify the peer with. If libcurl is built against OpenSSL, the certificate directory must be prepared using the openssl c_rehash utility. This makes sense only when used in combination with the <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> option. 
 <p class="level0">The <a Class="emphasis" href="./CURLOPT_CAPATH.html">CURLOPT_CAPATH</a> function apparently does not work in Windows due to some limitation in openssl. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">This option is OpenSSL-specific and does nothing if libcurl is built to use GnuTLS. NSS-powered libcurl provides the option only for backward compatibility. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">This option is supported by the OpenSSL, GnuTLS and PolarSSL backends. The NSS backend provides the option only for backward compatibility. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if TLS enabled, and CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
index 5dbdc97..46be0cb 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CAPATH.pdf and b/docs/libcurl/opts/CURLOPT_CAPATH.pdf differ
index 8c01711..a508b86 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -29,11 +29,10 @@ CURLOPT_CERTINFO \- request SSL certificate information
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo);
 .SH DESCRIPTION
 Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With
-this enabled, libcurl (if built with OpenSSL, NSS or GSKit) will
-extract lots of information and data about the certificates in the certificate
-chain used in the SSL connection. This data may then be retrieved after a
-transfer using \fIcurl_easy_getinfo(3)\fP and its option
-\fICURLINFO_CERTINFO\fP.
+this enabled, libcurl will extract lots of information and data about the
+certificates in the certificate chain used in the SSL connection. This data may
+then be retrieved after a transfer using \fIcurl_easy_getinfo(3)\fP and its
+option \fICURLINFO_CERTINFO\fP.
 .SH DEFAULT
 0
 .SH PROTOCOLS
@@ -41,7 +40,7 @@ All TLS-based
 .SH EXAMPLE
 TODO
 .SH AVAILABILITY
-Added in 7.19.1
+This option is supported by the OpenSSL, GnuTLS, NSS and GSKit backends.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index ae19dd6..0b210d2 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CERTINFO man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,13 +52,13 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CERTINFO - request SSL certificate information <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With this enabled, libcurl (if built with OpenSSL, NSS or GSKit) will extract lots of information and data about the certificates in the certificate chain used in the SSL connection. This data may then be retrieved after a transfer using <span Class="emphasis">curl_easy_getinfo(3)</span> and its option <span Class="emphasis">CURLINFO_CERTINFO</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With this enabled, libcurl will extract lots of information and data about the certificates in the certificate chain used in the SSL connection. This data may then be retrieved after a transfer using <span Class="emphasis">curl_easy_getinfo(3)</span> and its option <span Class="emphasis">CURLINFO_CERTINFO</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All TLS-based <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Added in 7.19.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">This option is supported by the OpenSSL, GnuTLS, NSS and GSKit backends. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a>, <a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
index 9e7273e..e8cf96e 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CERTINFO.pdf and b/docs/libcurl/opts/CURLOPT_CERTINFO.pdf differ
index 2721d5b..85f5657 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CHUNK_BGN_FUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,13 +52,15 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CHUNK_BGN_FUNCTION - callback before a transfer with FTP wildcardmatch <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">long chunk_bgn_callback(const void *transfer_info, void *ptr,
- &nbsp;                       int remains);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_BGN_FUNCTION,
- &nbsp;                         chunk_bgn_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+long chunk_bgn_callback(const void *transfer_info, void *ptr,
+&nbsp;                       int remains);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_BGN_FUNCTION,
+&nbsp;                         chunk_bgn_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0">This callback function gets called by libcurl before a part of the stream is going to be transferred (if the transfer supports chunks). 
index 9a97a66..6af9734 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.pdf differ
index abdbc3a..4d0ff3d 100644 (file)
@@ -29,8 +29,8 @@ CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer);
 .SH DESCRIPTION
 Pass a \fIpointer\fP that will be untouched by libcurl and passed as the ptr
-argument to the \fICURL_CHUNK_BGN_FUNTION(3)\fP and
-\fICURL_CHUNK_END_FUNTION(3)\fP.
+argument to the \fICURL_CHUNK_BGN_FUNCTION(3)\fP and
+\fICURL_CHUNK_END_FUNCTION(3)\fP.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
index 701d1a4..e27c65b 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CHUNK_DATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,9 +52,9 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CHUNK_DATA - custom pointer to the FTP chunk callbacks <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the ptr argument to the <span Class="emphasis">CURL_CHUNK_BGN_FUNTION(3)</span> and <span Class="emphasis">CURL_CHUNK_END_FUNTION(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the ptr argument to the <span Class="emphasis">CURL_CHUNK_BGN_FUNCTION(3)</span> and <span Class="emphasis">CURL_CHUNK_END_FUNCTION(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
index 11e8735..8313611 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.pdf and b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.pdf differ
index 6322c73..7d06946 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CHUNK_END_FUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,14 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CHUNK_END_FUNCTION - callback after a transfer with FTP wildcardmatch <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">long chunk_end_callback(void *ptr);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_END_FUNCTION,
- &nbsp;                         chunk_end_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+long chunk_end_callback(void *ptr);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_END_FUNCTION,
+&nbsp;                         chunk_end_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0">This function gets called by libcurl as soon as a part of the stream has been transferred (or skipped). 
index f9dfde6..3da58c8 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.pdf differ
index 44fa4ff..e47f8c8 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CLOSESOCKETDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CLOSESOCKETDATA - pointer passed to the socket close callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the closesocket callback set with <a Class="emphasis" href="./CURLOPT_CLOSESOCKETFUNCTION.html">CURLOPT_CLOSESOCKETFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">The default value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 7d78bda..99b7f90 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.pdf and b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.pdf differ
index 1b004a1..4124d0b 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CLOSESOCKETFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CLOSESOCKETFUNCTION - callback to socket close replacement function <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">int closesocket_callback(void *clientp, curl_socket_t item); 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETFUNCTION, closesocket_callback); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
index 19edee5..4aae7c5 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.pdf differ
index 5005b59..7f28e63 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -41,7 +41,17 @@ In unix-like systems, this might cause signals to be used unless
 .SH PROTOCOLS
 All
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* complete connection within 10 seconds */
+  curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10L);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 Always
 .SH RETURN VALUE
index 97ca35b..6afc396 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CONNECTTIMEOUT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,13 +52,25 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CONNECTTIMEOUT - timeout for the connect phase <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. It should contain the maximum time in seconds that you allow the connection phase to the server to take.  This only limits the connection phase, it has no impact once it has connected. Set to zero to switch to the default built-in connection timeout - 300 seconds. See also the <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a> option. 
 <p class="level0">In unix-like systems, this might cause signals to be used unless <a Class="emphasis" href="./CURLOPT_NOSIGNAL.html">CURLOPT_NOSIGNAL</a> is set. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">300 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* complete connection within 10 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
index cdf8c4f..3359205 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.pdf and b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.pdf differ
index dd5ef58..d81118e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -41,7 +41,17 @@ In unix-like systems, this might cause signals to be used unless
 .SH PROTOCOLS
 All
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* complete connection within 10000 milliseconds */
+  curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10000L);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 Always
 .SH RETURN VALUE
index 91b2c9a..15580ff 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CONNECTTIMEOUT_MS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,13 +52,25 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CONNECTTIMEOUT_MS - timeout for the connect phase <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT_MS, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. It should contain the maximum time in milliseconds that you allow the connection phase to the server to take.  This only limits the connection phase, it has no impact once it has connected. Set to zero to switch to the default built-in connection timeout - 300 seconds. See also the <a Class="emphasis" href="./CURLOPT_TIMEOUT_MS.html">CURLOPT_TIMEOUT_MS</a> option. 
 <p class="level0">In unix-like systems, this might cause signals to be used unless <a Class="emphasis" href="./CURLOPT_NOSIGNAL.html">CURLOPT_NOSIGNAL</a> is set. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">300000 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* complete connection within 10000 milliseconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10000L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
index 0a001f5..03d23ea 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.pdf and b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.pdf differ
index a0fda31..3e07fc2 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CONNECT_ONLY man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CONNECT_ONLY - stop when connected to target server <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_ONLY, long only); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">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, and then return. 
 <p class="level0">The option can be used to simply test a connection to a server, but is more useful when used with the <span Class="emphasis">CURLINFO_LASTSOCKET</span> option to <span Class="emphasis">curl_easy_getinfo(3)</span> as the library can set up the connection and then the application can obtain the most recently used socket for special data transfers. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 969689b..39371fe 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.pdf and b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.pdf differ
index dea2c03..3c78f54 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CONV_FROM_NETWORK_FUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,14 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CONV_FROM_NETWORK_FUNCTION - convert data from network to host encoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode conv_callback(char *ptr, size_t length);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_NETWORK_FUNCTION,
- &nbsp;                         conv_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode conv_callback(char *ptr, size_t length);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_NETWORK_FUNCTION,
+&nbsp;                         conv_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0">Applies to non-ASCII platforms. <span Class="emphasis">curl_version_info(3)</span> will return the CURL_VERSION_CONV feature bit set if this option is provided. 
@@ -60,10 +67,10 @@ p.roffit {
 <p class="level0"><span Class="bold">CURLOPT_CONV_FROM_NETWORK_FUNCTION</span> converts to host encoding from the network encoding.  It is used when commands or ASCII data are received over the network. 
 <p class="level0">If you set a callback pointer to NULL, or don't set it at all, the built-in libcurl iconv functions will be used.  If HAVE_ICONV was not defined when libcurl was built, and no callback has been established, conversion will return the CURLE_CONV_REQD error code. 
 <p class="level0">If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined. For example: 
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_HOST "IBM-1047" 
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_OF_HOST "IBM-1047" 
 <p class="level0">The iconv code in libcurl will default the network and UTF8 codeset names as follows: 
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1" 
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8" 
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1" 
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8" 
 <p class="level0">You will need to override these definitions if they are different on your system. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">FTP, SMTP, IMAP, POP3 <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
index 2b9d62c..2b92ff4 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf differ
index 2ed2c13..5b63763 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CONV_FROM_UTF8_FUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,14 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CONV_FROM_UTF8_FUNCTION - convert data from UTF8 to host encoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode conv_callback(char *ptr, size_t length);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_UTF8_FUNCTION,
- &nbsp;                         conv_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode conv_callback(char *ptr, size_t length);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_UTF8_FUNCTION,
+&nbsp;                         conv_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0">Applies to non-ASCII platforms. <span Class="emphasis">curl_version_info(3)</span> will return the CURL_VERSION_CONV feature bit set if this option is provided. 
@@ -60,10 +67,10 @@ p.roffit {
 <p class="level0"><span Class="bold">CURLOPT_CONV_FROM_UTF8_FUNCTION</span> converts to host encoding from UTF8 encoding. It is required only for SSL processing. 
 <p class="level0">If you set a callback pointer to NULL, or don't set it at all, the built-in libcurl iconv functions will be used.  If HAVE_ICONV was not defined when libcurl was built, and no callback has been established, conversion will return the CURLE_CONV_REQD error code. 
 <p class="level0">If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined. For example: 
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_HOST "IBM-1047" 
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_OF_HOST "IBM-1047" 
 <p class="level0">The iconv code in libcurl will default the network and UTF8 codeset names as follows: 
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1" 
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8" 
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1" 
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8" 
 <p class="level0">You will need to override these definitions if they are different on your system. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">TLS-based protocols. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
index dfa30c3..e9930fd 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf differ
index 40f8c2d..de15174 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CONV_TO_NETWORK_FUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,14 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CONV_TO_NETWORK_FUNCTION - convert data to network from host encoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode conv_callback(char *ptr, size_t length);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_TO_NETWORK_FUNCTION,
- &nbsp;                         conv_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode conv_callback(char *ptr, size_t length);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_TO_NETWORK_FUNCTION,
+&nbsp;                         conv_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0">Applies to non-ASCII platforms. <span Class="emphasis">curl_version_info(3)</span> will return the CURL_VERSION_CONV feature bit set if this option is provided. 
@@ -60,10 +67,10 @@ p.roffit {
 <p class="level0"><span Class="bold">CURLOPT_CONV_TO_NETWORK_FUNCTION</span> converts from host encoding to the network encoding.  It is used when commands or ASCII data are sent over the network. 
 <p class="level0">If you set a callback pointer to NULL, or don't set it at all, the built-in libcurl iconv functions will be used.  If HAVE_ICONV was not defined when libcurl was built, and no callback has been established, conversion will return the CURLE_CONV_REQD error code. 
 <p class="level0">If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined. For example: 
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_HOST "IBM-1047" 
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_OF_HOST "IBM-1047" 
 <p class="level0">The iconv code in libcurl will default the network and UTF8 codeset names as follows: 
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1" 
-<p class="level0">&nbsp;#define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8" 
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1" 
+<p class="level0">&nbsp;&#35;define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8" 
 <p class="level0">You will need to override these definitions if they are different on your system. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">FTP, SMTP, IMAP, POP3 <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
index 18cf2d5..b07a2cc 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf differ
index 379296a..a390135 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -40,6 +40,15 @@ This option sets the cookie header explicitly in the outgoing request(s). If
 multiple requests are done due to authentication, followed redirections or
 similar, they will all get this cookie passed on.
 
+The cookies set by this option are separate from the internal cookie storage
+held by the cookie engine and will not be modified by it. If you enable the
+cookie engine and either you've imported a cookie of the same name (e.g. 'foo')
+or the server has set one, it will have no effect on the cookies you set here.
+A request to the server will send both the 'foo' held by the cookie engine and
+the 'foo' held by this option. To set a cookie that is instead held by the
+cookie engine and can be modified by the server use
+\fICURLOPT_COOKIELIST(3)\fP.
+
 Using this option multiple times will only make the latest string override the
 previous ones.
 
@@ -51,7 +60,16 @@ NULL, no cookies
 .SH PROTOCOLS
 HTTP
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  curl_easy_setopt(curl, CURLOPT_COOKIE, "tool=curl; fun=yes;");
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 If HTTP is enabled
 .SH RETURN VALUE
index df42e64..c91529f 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_COOKIE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,16 +52,28 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_COOKIE - set contents of HTTP Cookie header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIE, char *cookie); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used to set a cookie in the HTTP request. The format of the string should be NAME=CONTENTS, where NAME is the cookie name and CONTENTS is what the cookie should contain. 
 <p class="level0">If you need to set multiple cookies, set them all using a single option concatenated like this: "name1=content1; name2=content2;" etc. 
 <p class="level0">This option sets the cookie header explicitly in the outgoing request(s). If multiple requests are done due to authentication, followed redirections or similar, they will all get this cookie passed on. 
+<p class="level0">The cookies set by this option are separate from the internal cookie storage held by the cookie engine and will not be modified by it. If you enable the cookie engine and either you've imported a cookie of the same name (e.g. 'foo') or the server has set one, it will have no effect on the cookies you set here. A request to the server will send both the 'foo' held by the cookie engine and the 'foo' held by this option. To set a cookie that is instead held by the cookie engine and can be modified by the server use <a Class="emphasis" href="./CURLOPT_COOKIELIST.html">CURLOPT_COOKIELIST</a>. 
 <p class="level0">Using this option multiple times will only make the latest string override the previous ones. 
 <p class="level0">This option will not enable the cookie engine. Use <a Class="emphasis" href="./CURLOPT_COOKIEFILE.html">CURLOPT_COOKIEFILE</a> or <a Class="emphasis" href="./CURLOPT_COOKIEJAR.html">CURLOPT_COOKIEJAR</a> to enable parsing and sending cookies automatically. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL, no cookies <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_COOKIE, "tool=curl; fun=yes;");
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">If HTTP is enabled <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if HTTP is enabled, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_COOKIEFILE.html">CURLOPT_COOKIEFILE</a>, <a Class="manpage" href="./CURLOPT_COOKIEJAR.html">CURLOPT_COOKIEJAR</a>, <a Class="manpage" href="./CURLOPT_COOKIELIST.html">CURLOPT_COOKIELIST</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <span Class="manpage"> </span> <p class="roffit">
index 3a7edbc..6e51674 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_COOKIE.pdf and b/docs/libcurl/opts/CURLOPT_COOKIE.pdf differ
index 10539bc..5123a4b 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_COOKIEFILE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_COOKIEFILE - file name to read cookies from <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string as parameter. It should point to the file name of your file holding cookie data to read. The cookie data can be in either the old Netscape / Mozilla cookie data format or just regular HTTP-style headers dumped to a file. 
 <p class="level0">It also enables the cookie engine, making libcurl parse and send cookies on subsequent requests with this handle. 
index 9e0064c..50ff7cd 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_COOKIEFILE.pdf and b/docs/libcurl/opts/CURLOPT_COOKIEFILE.pdf differ
index a4f45bf..0a8b210 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_COOKIEJAR man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_COOKIEJAR - file name to store cookies to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEJAR, char *filename); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a <span Class="emphasis">filename</span> as char *, zero terminated. This will make libcurl write all internally known cookies to the specified file when <span Class="emphasis">curl_easy_cleanup(3)</span> is called. If no cookies are known, no file will be created. Specify "-" as filename to instead have the cookies written to stdout. Using this option also enables cookies for this session, so if you for example follow a location it will make matching cookies get sent accordingly. 
 <p class="level0">Note that libcurl doesn't read any cookies from the cookie jar. If you want to read cookies from a file, use <a Class="emphasis" href="./CURLOPT_COOKIEFILE.html">CURLOPT_COOKIEFILE</a>. 
index c0626bd..731cff5 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_COOKIEJAR.pdf and b/docs/libcurl/opts/CURLOPT_COOKIEJAR.pdf differ
index 815def1..937c79d 100644 (file)
@@ -36,6 +36,16 @@ Such a cookie can be either a single line in Netscape / Mozilla format or just
 regular HTTP-style header (Set-Cookie: ...) format. This will also enable the
 cookie engine. This adds that single cookie to the internal cookie store.
 
+If you use the Set-Cookie format and don't specify a domain then the cookie
+is sent for any domain and will not be modified. If a server sets a cookie of
+the same name (or maybe you've imported one) then both will be sent on a future
+transfer to that server, likely not what you intended. Either set a domain in
+Set-Cookie (doing that will include sub domains) or use the Netscape format as
+shown in EXAMPLE.
+
+Starting in 7.43.0 the aforementioned any-domain cookies will not appear in the
+lists exported by \fICURLINFO_COOKIELIST(3)\fP and \fICURLOPT_COOKIEJAR(3)\fP.
+
 Additionally, there are commands available that perform actions if you pass in
 these exact strings:
 .IP ALL
@@ -55,7 +65,46 @@ NULL
 .SH PROTOCOLS
 HTTP
 .SH EXAMPLE
-TODO
+.nf
+/* This example shows an inline import of a cookie in Netscape format.
+You can set the cookie as HttpOnly to prevent XSS attacks by prepending
+#HttpOnly_ to the hostname. That may be useful if the cookie will later
+be imported by a browser.
+*/
+
+#define SEP  "\\t"  /* Tab separates the fields */
+
+char *my_cookie =
+  "example.com"    /* Hostname */
+  SEP "FALSE"      /* Include subdomains */
+  SEP "/"          /* Path */
+  SEP "FALSE"      /* Secure */
+  SEP "0"          /* Expiry in epoch time format. 0 == Session */
+  SEP "foo"        /* Name */
+  SEP "bar";       /* Value */
+
+/* my_cookie is imported immediately via CURLOPT_COOKIELIST.
+*/
+curl_easy_setopt(curl, CURLOPT_COOKIELIST, my_cookie);
+
+/* The list of cookies in cookies.txt will not be imported until right
+before a transfer is performed. Cookies in the list that have the same
+hostname, path and name as in my_cookie are skipped. That is because
+libcurl has already imported my_cookie and it's considered a "live"
+cookie. A live cookie won't be replaced by one read from a file.
+*/
+curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt");  /* import */
+
+/* Cookies are exported after curl_easy_cleanup is called. The server
+may have added, deleted or modified cookies by then. The cookies that
+were skipped on import are not exported.
+*/
+curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt");  /* export */
+
+res = curl_easy_perform(curl);  /* cookies imported from cookies.txt */
+
+curl_easy_cleanup(curl);  /* cookies exported to cookies.txt */
+.fi
 .SH AVAILABILITY
 ALL was added in 7.14.1
 
index 382eb60..0f06a6f 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_COOKIELIST man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,14 +52,17 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_COOKIELIST - add to or manipulate cookies held in memory <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIELIST,
- &nbsp;                         char *cookie);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIELIST,
+&nbsp;                         char *cookie);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * to a <span Class="emphasis">cookie</span> string. 
 <p class="level0">Such a cookie can be either a single line in Netscape / Mozilla format or just regular HTTP-style header (Set-Cookie: ...) format. This will also enable the cookie engine. This adds that single cookie to the internal cookie store. 
+<p class="level0">If you use the Set-Cookie format and don't specify a domain then the cookie is sent for any domain and will not be modified. If a server sets a cookie of the same name (or maybe you've imported one) then both will be sent on a future transfer to that server, likely not what you intended. Either set a domain in Set-Cookie (doing that will include sub domains) or use the Netscape format as shown in EXAMPLE. 
+<p class="level0">Starting in 7.43.0 the aforementioned any-domain cookies will not appear in the lists exported by <span Class="emphasis">CURLINFO_COOKIELIST(3)</span> and <a Class="emphasis" href="./CURLOPT_COOKIEJAR.html">CURLOPT_COOKIEJAR</a>. 
 <p class="level0">Additionally, there are commands available that perform actions if you pass in these exact strings: 
 <p class="level0"><a name="ALL"></a><span class="nroffip">ALL</span> 
 <p class="level1">erases all cookies held in memory 
@@ -70,7 +78,48 @@ p.roffit {
 <p class="level1"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+/* This example shows an inline import of a cookie in Netscape format.
+You can set the cookie as HttpOnly to prevent XSS attacks by prepending
+&#35;HttpOnly_ to the hostname. That may be useful if the cookie will later
+be imported by a browser.
+*/
+&nbsp;
+&#35;define SEP  "\t"  /* Tab separates the fields */
+&nbsp;
+char *my_cookie =
+&nbsp; "example.com"    /* Hostname */
+&nbsp; SEP "FALSE"      /* Include subdomains */
+&nbsp; SEP "/"          /* Path */
+&nbsp; SEP "FALSE"      /* Secure */
+&nbsp; SEP "0"          /* Expiry in epoch time format. 0 == Session */
+&nbsp; SEP "foo"        /* Name */
+&nbsp; SEP "bar";       /* Value */
+&nbsp;
+/* my_cookie is imported immediately via CURLOPT_COOKIELIST.
+*/
+curl_easy_setopt(curl, CURLOPT_COOKIELIST, my_cookie);
+&nbsp;
+/* The list of cookies in cookies.txt will not be imported until right
+before a transfer is performed. Cookies in the list that have the same
+hostname, path and name as in my_cookie are skipped. That is because
+libcurl has already imported my_cookie and it's considered a "live"
+cookie. A live cookie won't be replaced by one read from a file.
+*/
+curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt");  /* import */
+&nbsp;
+/* Cookies are exported after curl_easy_cleanup is called. The server
+may have added, deleted or modified cookies by then. The cookies that
+were skipped on import are not exported.
+*/
+curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt");  /* export */
+&nbsp;
+res = curl_easy_perform(curl);  /* cookies imported from cookies.txt */
+&nbsp;
+curl_easy_cleanup(curl);  /* cookies exported to cookies.txt */
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">ALL was added in 7.14.1 
 <p class="level0">SESS was added in 7.15.4 
 <p class="level0">FLUSH was added in 7.17.1 
index 896acd6..1a7b3e1 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_COOKIELIST.pdf and b/docs/libcurl/opts/CURLOPT_COOKIELIST.pdf differ
index 4231e9d..04fa0e8 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_COOKIESESSION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_COOKIESESSION - start a new cookie session <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIESESSION, long init); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long set to 1 to mark this as a new cookie "session". It will force libcurl to ignore all cookies it is about to load that are "session cookies" from the previous session. By default, libcurl always stores and loads all cookies, independent if they are session cookies or not. Session cookies are cookies without expiry date and they are meant to be alive and existing for this "session" only. 
 <p class="level0">A "session" is usually defined in browser land for as long as you have your browser up, more or less. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 92a3c9f..bbe9738 100644 (file)
@@ -63,12 +63,12 @@ endobj
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:643f96ca-cf2b-11ef-0000-734885418920' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:643f96ca-cf2b-11ef-0000-734885418920' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:17:53+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:17:53+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:7b88777e-78d5-11f0-0000-734885418920' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:7b88777e-78d5-11f0-0000-734885418920' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:13+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:13+02:00</xmp:CreateDate>
 <xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:643f96ca-cf2b-11ef-0000-734885418920' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:643f96ca-cf2b-11ef-0000-734885418920'/>
-<rdf:Description rdf:about='uuid:643f96ca-cf2b-11ef-0000-734885418920' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:7b88777e-78d5-11f0-0000-734885418920' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:7b88777e-78d5-11f0-0000-734885418920'/>
+<rdf:Description rdf:about='uuid:7b88777e-78d5-11f0-0000-734885418920' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
@@ -77,9 +77,9 @@ endobj
 endstream
 endobj
 2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091753+01'00')
-/ModDate(D:20150108091753+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081113+02'00')
+/ModDate(D:20150812081113+02'00')
 /Creator(groff version 1.22.3)>>endobj
 xref
 0 14
@@ -99,7 +99,7 @@ xref
 0000001853 00000 n 
 trailer
 << /Size 14 /Root 1 0 R /Info 2 0 R
-/ID [<92DA738D7286633AF0F76D4DE60DE35D><92DA738D7286633AF0F76D4DE60DE35D>]
+/ID [<3FB8C8E04869B30090B9FE0589AF0565><3FB8C8E04869B30090B9FE0589AF0565>]
 >>
 startxref
 3430
index f2b7a0a..7aa2456 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_COPYPOSTFIELDS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,24 +52,27 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_COPYPOSTFIELDS - have libcurl copy data to POST <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char *data); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, which should be the full <span Class="emphasis">data</span> to post in a HTTP POST operation. It behaves as the <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> option, but the original data is instead copied by the library, allowing the application to overwrite the original data after setting this option. 
 <p class="level0">Because data are copied, care must be taken when using this option in conjunction with <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a> or <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE_LARGE.html">CURLOPT_POSTFIELDSIZE_LARGE</a>: If the size has not been set prior to <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a>, the data is assumed to be a zero terminated string; else the stored size informs the library about the byte count to copy. In any case, the size must not be changed after <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a>, unless another <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> or <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a> option is issued. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; char local_buffer[1024]="data to send";
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* size of the data to copy from the buffer and send in the request */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
- <p class="level0">&nbsp; /* send data from the local stack */
- &nbsp; curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, local_buffer);
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; char local_buffer[1024]="data to send";
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* size of the data to copy from the buffer and send in the request */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
+&nbsp;
+&nbsp; /* send data from the local stack */
+&nbsp; curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, local_buffer);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.17.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index f376e17..15a6837 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.pdf and b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.pdf differ
index c3f7e9b..001490b 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CRLF man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CRLF - enable/disable CRLF conversion <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLF, long conv); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">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). 
 <p class="level0">This is a legacy option of questionable use. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 767bc09..ab3ca88 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CRLF.pdf and b/docs/libcurl/opts/CURLOPT_CRLF.pdf differ
index a92de84..b738815 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CRLFILE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CRLFILE - specify a Certificate Revocation List file <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLFILE, char *file); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * to a zero terminated string naming a <span Class="emphasis">file</span> with the concatenation of CRL (in PEM format) to use in the certificate validation that occurs during the SSL exchange. 
 <p class="level0">When curl is built to use NSS or GnuTLS, there is no way to influence the use of CRL passed to help in the verification process. When libcurl is built with OpenSSL support, X509_V_FLAG_CRL_CHECK and X509_V_FLAG_CRL_CHECK_ALL are both set, requiring CRL check against all the elements of the certificate chain if a CRL file is passed. 
index 6ecefbc..5249c5b 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CRLFILE.pdf and b/docs/libcurl/opts/CURLOPT_CRLFILE.pdf differ
index c6e5124..0301410 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_CUSTOMREQUEST man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_CUSTOMREQUEST - custom string for request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CUSTOMREQUEST, char *request); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string as parameter. 
 <p class="level0">When you change the request method by setting <a Class="bold" href="./CURLOPT_CUSTOMREQUEST.html">CURLOPT_CUSTOMREQUEST</a> to something, you don't actually change how libcurl behaves or acts in regards to the particular request method, it will only change the actual string sent in the request. 
index f93faa3..d350307 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.pdf and b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.pdf differ
index d5a09e7..2f79735 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_DEBUGDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_DEBUGDATA - custom pointer for debug callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a <span Class="emphasis">pointer</span> to whatever you want passed in to your <a Class="emphasis" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a> in the last void * argument. This pointer is not used by libcurl, it is only passed to the callback. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 80247b7..a3720c7 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_DEBUGDATA.pdf and b/docs/libcurl/opts/CURLOPT_DEBUGDATA.pdf differ
index ab3950b..2b5b633 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_DEBUGFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,26 +52,29 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_DEBUGFUNCTION - debug callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">typedef enum {
- &nbsp; CURLINFO_TEXT = 0,
- &nbsp; CURLINFO_HEADER_IN,    /* 1 */
- &nbsp; CURLINFO_HEADER_OUT,   /* 2 */
- &nbsp; CURLINFO_DATA_IN,      /* 3 */
- &nbsp; CURLINFO_DATA_OUT,     /* 4 */
- &nbsp; CURLINFO_SSL_DATA_IN,  /* 5 */
- &nbsp; CURLINFO_SSL_DATA_OUT, /* 6 */
- &nbsp; CURLINFO_END
- } curl_infotype;
- <p class="level0">int debug_callback(CURL *handle,
- &nbsp;                  curl_infotype type,
- &nbsp;                  char *data,
- &nbsp;                  size_t size,
- &nbsp;                  void *userptr);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGFUNCTION,
- &nbsp;                         debug_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+typedef enum {
+&nbsp; CURLINFO_TEXT = 0,
+&nbsp; CURLINFO_HEADER_IN,    /* 1 */
+&nbsp; CURLINFO_HEADER_OUT,   /* 2 */
+&nbsp; CURLINFO_DATA_IN,      /* 3 */
+&nbsp; CURLINFO_DATA_OUT,     /* 4 */
+&nbsp; CURLINFO_SSL_DATA_IN,  /* 5 */
+&nbsp; CURLINFO_SSL_DATA_OUT, /* 6 */
+&nbsp; CURLINFO_END
+} curl_infotype;
+&nbsp;
+int debug_callback(CURL *handle,
+&nbsp;                  curl_infotype type,
+&nbsp;                  char *data,
+&nbsp;                  size_t size,
+&nbsp;                  void *userptr);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGFUNCTION,
+&nbsp;                         debug_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0"><a Class="emphasis" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a> replaces the standard debug function used when <a Class="emphasis" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a> is in effect. This callback receives debug information, as specified in the <span Class="emphasis">type</span> argument. This function must return 0. The <span Class="emphasis">data</span> pointed to by the char * passed to this function WILL NOT be zero terminated, but will be exactly of the <span Class="emphasis">size</span> as told by the <span Class="emphasis">size</span> argument. 
@@ -88,88 +96,103 @@ p.roffit {
 <p class="level1">The data is SSL/TLS (binary) data received from the peer. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">static
- void dump(const char *text,
- &nbsp;         FILE *stream, unsigned char *ptr, size_t size)
- {
- &nbsp; size_t i;
- &nbsp; size_t c;
- &nbsp; unsigned int width=0x10;
- <p class="level0">&nbsp; fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)n",
- &nbsp;         text, (long)size, (long)size);
- <p class="level0">&nbsp; for(i=0; i&lt;size; i+= width) {
- &nbsp;   fprintf(stream, "%4.4lx: ", (long)i);
- <p class="level0">&nbsp;   /* show hex to the left */
- &nbsp;   for(c = 0; c &lt; width; c++) {
- &nbsp;     if(i+c &lt; size)
- &nbsp;       fprintf(stream, "%02x ", ptr[i+c]);
- &nbsp;     else
- &nbsp;       fputs("   ", stream);
- &nbsp;   }
- <p class="level0">&nbsp;   /* show data on the right */
- &nbsp;   for(c = 0; (c &lt; width) && (i+c &lt; size); c++)
- &nbsp;     fputc(ptr[i+c]&gt;=0x20) && (ptr[i+c]&lt;0x80)?ptr[i+c]:'.', stream);
- <p class="level0">&nbsp;   fputc('n', stream); /* newline */
- &nbsp; }
- }
- <p class="level0">static
- int my_trace(CURL *handle, curl_infotype type,
- &nbsp;            char *data, size_t size,
- &nbsp;            void *userp)
- {
- &nbsp; const char *text;
- &nbsp; (void)handle; /* prevent compiler warning */
- <p class="level0">&nbsp; switch (type) {
- &nbsp; case CURLINFO_TEXT:
- &nbsp;   fprintf(stderr, "== Info: %s", data);
- &nbsp; default: /* in case a new one is introduced to shock us */
- &nbsp;   return 0;
- <p class="level0">&nbsp; case CURLINFO_HEADER_OUT:
- &nbsp;   text = "=&gt; Send header";
- &nbsp;   break;
- &nbsp; case CURLINFO_DATA_OUT:
- &nbsp;   text = "=&gt; Send data";
- &nbsp;   break;
- &nbsp; case CURLINFO_SSL_DATA_OUT:
- &nbsp;   text = "=&gt; Send SSL data";
- &nbsp;   break;
- &nbsp; case CURLINFO_HEADER_IN:
- &nbsp;   text = "&lt;= Recv header";
- &nbsp;   break;
- &nbsp; case CURLINFO_DATA_IN:
- &nbsp;   text = "&lt;= Recv data";
- &nbsp;   break;
- &nbsp; case CURLINFO_SSL_DATA_IN:
- &nbsp;   text = "&lt;= Recv SSL data";
- &nbsp;   break;
- &nbsp; }
- <p class="level0">&nbsp; dump(text, stderr, (unsigned char *)data, size);
- &nbsp; return 0;
- }
- <p class="level0">int main(void)
- {
- &nbsp; CURL *curl;
- &nbsp; CURLcode res;
- <p class="level0">&nbsp; curl = curl_easy_init();
- &nbsp; if(curl) {
- &nbsp;   curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, my_trace);
- <p class="level0">&nbsp;   /* the DEBUGFUNCTION has no effect until we enable VERBOSE */
- &nbsp;   curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
- <p class="level0">&nbsp;   /* example.com is redirected, so we tell libcurl to follow redirection */
- &nbsp;   curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
- <p class="level0">&nbsp;   curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com/">http://example.com/</a>");
- &nbsp;   res = curl_easy_perform(curl);
- &nbsp;   /* Check for errors */
- &nbsp;   if(res != CURLE_OK)
- &nbsp;     fprintf(stderr, "curl_easy_perform() failed: %sn",
- &nbsp;             curl_easy_strerror(res));
- <p class="level0">&nbsp;   /* always cleanup */
- &nbsp;   curl_easy_cleanup(curl);
- &nbsp; }
- &nbsp; return 0;
- }
- </pre>
+<p class="level0"><pre class="level0">
+static
+void dump(const char *text,
+&nbsp;         FILE *stream, unsigned char *ptr, size_t size)
+{
+&nbsp; size_t i;
+&nbsp; size_t c;
+&nbsp; unsigned int width=0x10;
+&nbsp;
+&nbsp; fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)n",
+&nbsp;         text, (long)size, (long)size);
+&nbsp;
+&nbsp; for(i=0; i&lt;size; i+= width) {
+&nbsp;   fprintf(stream, "%4.4lx: ", (long)i);
+&nbsp;
+&nbsp;   /* show hex to the left */
+&nbsp;   for(c = 0; c &lt; width; c++) {
+&nbsp;     if(i+c &lt; size)
+&nbsp;       fprintf(stream, "%02x ", ptr[i+c]);
+&nbsp;     else
+&nbsp;       fputs("   ", stream);
+&nbsp;   }
+&nbsp;
+&nbsp;   /* show data on the right */
+&nbsp;   for(c = 0; (c &lt; width) && (i+c &lt; size); c++)
+&nbsp;     fputc(ptr[i+c]&gt;=0x20) && (ptr[i+c]&lt;0x80)?ptr[i+c]:'.', stream);
+&nbsp;
+&nbsp;   fputc('n', stream); /* newline */
+&nbsp; }
+}
+&nbsp;
+static
+int my_trace(CURL *handle, curl_infotype type,
+&nbsp;            char *data, size_t size,
+&nbsp;            void *userp)
+{
+&nbsp; const char *text;
+&nbsp; (void)handle; /* prevent compiler warning */
+&nbsp;
+&nbsp; switch (type) {
+&nbsp; case CURLINFO_TEXT:
+&nbsp;   fprintf(stderr, "== Info: %s", data);
+&nbsp; default: /* in case a new one is introduced to shock us */
+&nbsp;   return 0;
+&nbsp;
+&nbsp; case CURLINFO_HEADER_OUT:
+&nbsp;   text = "=&gt; Send header";
+&nbsp;   break;
+&nbsp; case CURLINFO_DATA_OUT:
+&nbsp;   text = "=&gt; Send data";
+&nbsp;   break;
+&nbsp; case CURLINFO_SSL_DATA_OUT:
+&nbsp;   text = "=&gt; Send SSL data";
+&nbsp;   break;
+&nbsp; case CURLINFO_HEADER_IN:
+&nbsp;   text = "&lt;= Recv header";
+&nbsp;   break;
+&nbsp; case CURLINFO_DATA_IN:
+&nbsp;   text = "&lt;= Recv data";
+&nbsp;   break;
+&nbsp; case CURLINFO_SSL_DATA_IN:
+&nbsp;   text = "&lt;= Recv SSL data";
+&nbsp;   break;
+&nbsp; }
+&nbsp;
+&nbsp; dump(text, stderr, (unsigned char *)data, size);
+&nbsp; return 0;
+}
+&nbsp;
+int main(void)
+{
+&nbsp; CURL *curl;
+&nbsp; CURLcode res;
+&nbsp;
+&nbsp; curl = curl_easy_init();
+&nbsp; if(curl) {
+&nbsp;   curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, my_trace);
+&nbsp;
+&nbsp;   /* the DEBUGFUNCTION has no effect until we enable VERBOSE */
+&nbsp;   curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+&nbsp;
+&nbsp;   /* example.com is redirected, so we tell libcurl to follow redirection */
+&nbsp;   curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+&nbsp;
+&nbsp;   curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com/">http://example.com/</a>");
+&nbsp;   res = curl_easy_perform(curl);
+&nbsp;   /* Check for errors */
+&nbsp;   if(res != CURLE_OK)
+&nbsp;     fprintf(stderr, "curl_easy_perform() failed: %sn",
+&nbsp;             curl_easy_strerror(res));
+&nbsp;
+&nbsp;   /* always cleanup */
+&nbsp;   curl_easy_cleanup(curl);
+&nbsp; }
+&nbsp; return 0;
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index a9dae92..bb8e6cd 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.pdf differ
index 63d094c..68d7f6e 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_DIRLISTONLY man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_DIRLISTONLY - ask for names only in a directory listing <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">For FTP and SFTP based URLs a parameter set to 1 tells the library to list the names of files in a directory, rather than performing a full directory listing that would normally include file sizes, dates etc. 
 <p class="level0">For POP3 a parameter of 1 tells the library to list the email message or messages on the POP3 server. This can be used to change the default behaviour of libcurl, when combined with a URL that contains a message ID, to perform a "scan listing" which can then be used to determine the size of an email. 
index 3da3d2f..325275f 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.pdf and b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.pdf differ
index 1076303..9fe9a12 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_DNS_CACHE_TIMEOUT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_DNS_CACHE_TIMEOUT - set life-time for DNS cache entries <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long, this sets the timeout in seconds. Name resolves will be kept in memory and used for this number of seconds. Set to zero to completely disable caching, or set to -1 to make the cached entries remain forever. By default, libcurl caches this info for 60 seconds. 
 <p class="level0">The name resolve functions of various libc implementations don't re-read name server information unless explicitly told so (for example, by calling <span Class="emphasis">res_init(3)</span>). This may cause libcurl to keep using the older server even if DHCP has updated the server info, and this may look like a DNS cache issue to the casual libcurl-app user. 
index bceefc3..cb609ec 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.pdf and b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.pdf differ
index 11dac38..b22f2d6 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_DNS_INTERFACE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_DNS_INTERFACE - set interface to speak DNS over <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_INTERFACE, char *ifname); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter. Set the name of the network interface that the DNS resolver should bind to. This must be an interface name (not an address). Set this option to NULL to use the default setting (don't bind to a specific interface). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 3b07969..04c414a 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.pdf and b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.pdf differ
index efd1a57..5d7f4fc 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_DNS_LOCAL_IP4 man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_DNS_LOCAL_IP4 - IPv4 address to bind DNS resolves to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Set the local IPv4 <span Class="emphasis">address</span> that the resolver should bind to. The argument should be of type char * and contain a single numerical IPv4 address as a string.  Set this option to NULL to use the default setting (don't bind to a specific IP address). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 49fc03d..78f9c77 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.pdf and b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.pdf differ
index 67d3af9..ec72fdb 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_DNS_LOCAL_IP6 man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_DNS_LOCAL_IP6 - IPv6 address to bind DNS resolves to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP6, char *address); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Set the local IPv6 <span Class="emphasis">address</span> that the resolver should bind to. The argument should be of type char * and contain a single IPv6 address as a string.  Set this option to NULL to use the default setting (don't bind to a specific IP address). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 0aba0cf..e21197c 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.pdf and b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.pdf differ
index ba803d0..c272171 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_DNS_SERVERS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_DNS_SERVERS - set preferred DNS servers <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_SERVERS, char *servers); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * that is the list of DNS servers to be used instead of the system default.  The format of the dns servers option is: 
 <p class="level0">host[:port][,host[:port]]... 
index a15db8d..fb3f635 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.pdf and b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.pdf differ
index 8fb0da9..1461d3c 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_DNS_USE_GLOBAL_CACHE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_DNS_USE_GLOBAL_CACHE - enable/disable global DNS cache <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_USE_GLOBAL_CACHE, &nbsp;                         long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. If the <span Class="emphasis">enable</span> value is 1, it tells curl to use a global DNS cache that will survive between easy handle creations and deletions. This is not thread-safe and this will use a global variable. 
 <p class="level0"><span Class="bold">WARNING:</span> this option is considered obsolete. Stop using it. Switch over to using the share interface instead! See <a Class="emphasis" href="./CURLOPT_SHARE.html">CURLOPT_SHARE</a> and <span Class="emphasis">curl_share_init(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index e9f19ac..d14d546 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.pdf and b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.pdf differ
index 18a11ee..285934b 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_EGDSOCKET man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_EGDSOCKET - set EGD socket path <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * to the zero terminated path name to the Entropy Gathering Daemon socket. It will be used to seed the random engine for SSL. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 31c65b9..550d8be 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_EGDSOCKET.pdf and b/docs/libcurl/opts/CURLOPT_EGDSOCKET.pdf differ
index 577202c..2d4dc23 100644 (file)
@@ -51,15 +51,33 @@ All
 .nf
 curl = curl_easy_init();
 if(curl) {
-  char error[CURL_ERROR_SIZE]
+  CURLcode res;
+  char errbuf[CURL_ERROR_SIZE];
 
   curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
 
   /* provide a buffer to store errors in */
-  curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
+  curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
 
-  /* Perform the request */
-  curl_easy_perform(curl);
+  /* set the error buffer as empty before performing a request */
+  errbuf[0] = 0;
+
+  /* perform the request */
+  res = curl_easy_perform(curl);
+
+  /* if the request did not complete correctly, show the error
+  information. if no detailed error information was written to errbuf
+  show the more generic information from curl_easy_strerror instead.
+  */
+  if(res != CURLE_OK) {
+    size_t len = strlen(errbuf);
+    fprintf(stderr, "\\nlibcurl: (%d) ", res);
+    if(len)
+      fprintf(stderr, "%s%s", errbuf,
+              ((errbuf[len - 1] != '\\n') ? "\\n" : ""));
+    else
+      fprintf(stderr, "%s\\n", curl_easy_strerror(res));
+  }
 }
 .fi
 .SH AVAILABILITY
index 40d29b1..519891a 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_ERRORBUFFER man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_ERRORBUFFER - set error buffer for error messages <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * to a buffer that the libcurl may store human readable error messages in on failures or problems. This may be more helpful than just the return code from <span Class="emphasis">curl_easy_perform(3)</span> and related functions. The buffer <span Class="bold">must be at least CURL_ERROR_SIZE bytes big</span>. 
 <p class="level0">You must keep the associated buffer available until libcurl no longer needs it. Failing to do so will cause very odd behavior or even crashes. libcurl will need it until you call <span Class="emphasis">curl_easy_cleanup(3)</span> or you set the same option again to use a different pointer. 
@@ -55,17 +60,38 @@ p.roffit {
 <p class="level0">If the library does not return an error, the buffer may not have been touched. Do not rely on the contents in those cases. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; char error[CURL_ERROR_SIZE]
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* provide a buffer to store errors in */
- &nbsp; curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+curl = curl_easy_init();
+if(curl) {
+&nbsp; CURLcode res;
+&nbsp; char errbuf[CURL_ERROR_SIZE];
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* provide a buffer to store errors in */
+&nbsp; curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
+&nbsp;
+&nbsp; /* set the error buffer as empty before performing a request */
+&nbsp; errbuf[0] = 0;
+&nbsp;
+&nbsp; /* perform the request */
+&nbsp; res = curl_easy_perform(curl);
+&nbsp;
+&nbsp; /* if the request did not complete correctly, show the error
+&nbsp; information. if no detailed error information was written to errbuf
+&nbsp; show the more generic information from curl_easy_strerror instead.
+&nbsp; */
+&nbsp; if(res != CURLE_OK) {
+&nbsp;   size_t len = strlen(errbuf);
+&nbsp;   fprintf(stderr, "\nlibcurl: (%d) ", res);
+&nbsp;   if(len)
+&nbsp;     fprintf(stderr, "%s%s", errbuf,
+&nbsp;             ((errbuf[len - 1] != '\n') ? "\n" : ""));
+&nbsp;   else
+&nbsp;     fprintf(stderr, "%s\n", curl_easy_strerror(res));
+&nbsp; }
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 5a0ddd4..6cb2552 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.pdf and b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.pdf differ
index b5cf9c6..1a91850 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_EXPECT_100_TIMEOUT_MS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_EXPECT_100_TIMEOUT_MS - timeout for Expect: 100-continue response <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EXPECT_100_TIMEOUT_MS,
- &nbsp;                         long milliseconds);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EXPECT_100_TIMEOUT_MS,
+&nbsp;                         long milliseconds);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long to tell libcurl the number of <span Class="emphasis">milliseconds</span> to wait for a server response with the HTTP status 100 (Continue), 417 (Expectation Failed) or similar after sending a HTTP request containing an Expect: 100-continue header. If this times out before a response is received, the request body is sent anyway. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">1000 milliseconds <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 4184fe5..7fb2ef4 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.pdf and b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.pdf differ
index a8267fd..39aeb38 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -39,6 +39,9 @@ response codes will slip through, especially when authentication is involved
 You might get some amounts of headers transferred before this situation is
 detected, like when a "100-continue" is received as a response to a POST/PUT
 and a 401 or 407 is received immediately afterwards.
+
+When this option is used and an error is detected, it will cause the
+connection to get closed.
 .SH DEFAULT
 0, do not fail on error
 .SH PROTOCOLS
index 931f763..824dd04 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FAILONERROR man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FAILONERROR - request failure on HTTP response &gt;= 400 <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FAILONERROR, long fail); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">A long parameter set to 1 tells the library to fail the request if the HTTP code returned is equal to or larger than 400. The default action would be to return the page normally, ignoring that code. 
 <p class="level0">This method is not fail-safe and there are occasions where non-successful response codes will slip through, especially when authentication is involved (response codes 401 and 407). 
-<p class="level0">You might get some amounts of headers transferred before this situation is detected, like when a "100-continue" is received as a response to a POST/PUT and a 401 or 407 is received immediately afterwards. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">You might get some amounts of headers transferred before this situation is detected, like when a "100-continue" is received as a response to a POST/PUT and a 401 or 407 is received immediately afterwards. 
+<p class="level0">When this option is used and an error is detected, it will cause the connection to get closed. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0, do not fail on error <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
index d4044af..db2e3af 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FAILONERROR.pdf and b/docs/libcurl/opts/CURLOPT_FAILONERROR.pdf differ
index 904d68d..0590928 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FILETIME man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FILETIME - get the modification time of the remote resource <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. If it is 1, libcurl will attempt to get the modification time of the remote document in this operation. This requires that the remote server sends the time or replies to a time querying command. The <span Class="emphasis">curl_easy_getinfo(3)</span> function with the <span Class="emphasis">CURLINFO_FILETIME</span> argument can be used after a transfer to extract the received time (if any). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 33728be..90abaa6 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FILETIME.pdf and b/docs/libcurl/opts/CURLOPT_FILETIME.pdf differ
index 6745382..b8d2dd7 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FNMATCH_DATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FNMATCH_DATA - custom pointer to fnmatch callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_DATA,
- &nbsp;                         void *pointer);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_DATA,
+&nbsp;                         void *pointer);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer that will be untouched by libcurl and passed as the ptr argument to the <span Class="emphasis">CURL_FNMATCH_FUNCTION(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 297371c..414ae77 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.pdf and b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.pdf differ
index 34e595d..75e0f4e 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FNMATCH_FUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,14 +52,16 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FNMATCH_FUNCTION - wildcard matching function callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">int fnmatch_callback(void *ptr,
- &nbsp;                    const char *pattern,
- &nbsp;                    const char *string);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_FUNCTION,
- &nbsp;                         fnmatch_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+int fnmatch_callback(void *ptr,
+&nbsp;                    const char *pattern,
+&nbsp;                    const char *string);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_FUNCTION,
+&nbsp;                         fnmatch_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0">This callback s used for wildcard matching. 
index 5386b57..2e66bcd 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.pdf differ
index 36c40c9..06869f7 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FOLLOWLOCATION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FOLLOWLOCATION - follow HTTP 3xx redirects <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">A parameter set to 1 tells the library to follow any Location: header that the server sends as part of a HTTP header in a 3xx response. 
 <p class="level0">This means that libcurl will re-send the same request on the new location and follow new Location: headers all the way until no more such headers are returned. <a Class="emphasis" href="./CURLOPT_MAXREDIRS.html">CURLOPT_MAXREDIRS</a> can be used to limit the number of redirects libcurl will follow. 
@@ -55,15 +60,17 @@ p.roffit {
 <p class="level0">For users who think the existing location following is too naive, too simple or just lacks features, it is very easy to instead implement your own redirect follow logic with the use of <span Class="emphasis">curl_easy_getinfo(3)</span>'s <span Class="emphasis">CURLINFO_REDIRECT_URL</span> option instead of using <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* example.com is redirected, so we tell libcurl to follow redirection */
- &nbsp; curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* example.com is redirected, so we tell libcurl to follow redirection */
+&nbsp; curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 8c986ea..aede0ae 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.pdf and b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.pdf differ
index 6a968ea..0a1ba6a 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FORBID_REUSE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FORBID_REUSE - make connection get closed at once after use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FORBID_REUSE, long close); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. Set <span Class="emphasis">close</span> to 1 to make libcurl explicitly close the connection when done with the transfer. Normally, libcurl keeps all connections alive when done with one transfer in case a succeeding one follows that can re-use them.  This option should be used with caution and only if you understand what it does as it can seriously impact performance. 
 <p class="level0">Set to 0 to have libcurl keep the connection open for possible later re-use (default behavior). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 7c534b6..15e2c1f 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.pdf and b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.pdf differ
index 062da52..aed306c 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FRESH_CONNECT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FRESH_CONNECT - force a new connection to be used <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FRESH_CONNECT, long fresh); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. Set to 1 to make the next transfer use a new (fresh) connection by force instead of trying to re-use an existing one.  This option should be used with caution and only if you understand what it does as it may seriously impact performance. 
 <p class="level0">Related functionality is <a Class="emphasis" href="./CURLOPT_FORBID_REUSE.html">CURLOPT_FORBID_REUSE</a> which makes sure the connection is closed after use so that it won't be re-used. 
index 326ec75..c9ca9bb 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.pdf and b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.pdf differ
index 2ef4187..e80812d 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FTPPORT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,18 +52,18 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FTPPORT - make FTP transfer active <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPPORT, char *spec); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string as parameter. It specifies that the FTP transfer will be made actively and the given string will be used to get the IP address to use for the FTP PORT instruction. 
 <p class="level0">The PORT instruction tells the remote server to connect to our specified IP address. The string may be a plain IP address, a host name, a network interface name (under Unix) or just a '-' symbol to let the library use your system's default IP address. Default FTP operations are passive, and thus won't use PORT. 
 <p class="level0">The address can be followed by a ':' to specify a port, optionally followed by a '-' to specify a port range.  If the port specified is 0, the operating system will pick a free port.  If a range is provided and all ports in the range are not available, libcurl will report CURLE_FTP_PORT_FAILED for the handle.  Invalid port/range settings are ignored.  IPv6 addresses followed by a port or portrange have to be in brackets.  IPv6 addresses without port/range specifier can be in brackets. 
 <p class="level0">Examples with specified ports: 
-<p class="level0"><pre>
-<p class="level0">&nbsp; eth0:0
- &nbsp; 192.168.1.2:32000-33000
- &nbsp; curl.se:32123
- &nbsp; [::1]:1234-4567
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp; eth0:0
+&nbsp; 192.168.1.2:32000-33000
+&nbsp; curl.se:32123
+&nbsp; [::1]:1234-4567
+</pre>
 
 <p class="level0">
 <p class="level0">You disable PORT again and go back to using the passive version by setting this option to NULL. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 4bd409a..5b2c6d6 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FTPPORT.pdf and b/docs/libcurl/opts/CURLOPT_FTPPORT.pdf differ
index 5e688a5..47ca9c7 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FTPSSLAUTH man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FTPSSLAUTH - set order in which to attempt TLS vs SSL when using FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPSSLAUTH, long order); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">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. This is only interesting if <a Class="emphasis" href="./CURLOPT_USE_SSL.html">CURLOPT_USE_SSL</a> is also set. 
 <p class="level0">Possible <span Class="emphasis">order</span> values: 
index 710d984..0cbd8e8 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.pdf and b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.pdf differ
index 20db542..74f5831 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FTP_ACCOUNT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FTP_ACCOUNT - set account info for FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ACCOUNT, char *account); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string (or NULL to disable). When an FTP server asks for "account data" after user name and password has been provided, this data is sent off using the ACCT command. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index def965a..999c797 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.pdf and b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.pdf differ
index f681034..c3e65cf 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FTP_ALTERNATIVE_TO_USER man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FTP_ALTERNATIVE_TO_USER - command to use instead of USER with FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ALTERNATIVE_TO_USER,
- &nbsp;                         char *cmd);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ALTERNATIVE_TO_USER,
+&nbsp;                         char *cmd);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, pointing to a string which will be used to authenticate if the usual FTP "USER user" and "PASS password" negotiation fails. This is currently only known to be required when connecting to Tumbleweed's Secure Transport FTPS server using client certificates for authentication. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 56fcd49..08b9e61 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf and b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf differ
index 04f8c61..1c2fff7 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FTP_CREATE_MISSING_DIRS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,16 +52,18 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FTP_CREATE_MISSING_DIRS - create missing dirs for FTP and SFTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">typedef enum {
- &nbsp; CURLFTP_CREATE_DIR_NONE,
- &nbsp; CURLFTP_CREATE_DIR,
- &nbsp; CURLFTP_CREATE_DIR_RETRY
- } curl_ftpcreatedir;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_CREATE_MISSING_DIRS,
- &nbsp;                         long create);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+typedef enum {
+&nbsp; CURLFTP_CREATE_DIR_NONE,
+&nbsp; CURLFTP_CREATE_DIR,
+&nbsp; CURLFTP_CREATE_DIR_RETRY
+} curl_ftpcreatedir;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_CREATE_MISSING_DIRS,
+&nbsp;                         long create);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long telling libcurl to <span Class="emphasis">create</span> the dir. If the value is <span Class="emphasis">CURLFTP_CREATE_DIR</span> (1), libcurl will attempt to create any remote directory that it fails to "move" into. 
 <p class="level0">For FTP requests, that means a CWD command fails. CWD being the command that changes working directory. 
index adb73af..1cc32ec 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.pdf and b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.pdf differ
index 1ffba47..521aa0c 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FTP_FILEMETHOD man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FTP_FILEMETHOD - select directory traversing method for FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_FILEMETHOD,
- &nbsp;                         long method);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_FILEMETHOD,
+&nbsp;                         long method);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long telling libcurl which <span Class="emphasis">method</span> to use to reach a file on a FTP(S) server. 
 <p class="level0">This option exists because some server implementations aren't compliant to what the standards say should work. 
index 1b0e2e4..df82791 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.pdf and b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.pdf differ
index 98a833c..436d619 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FTP_RESPONSE_TIMEOUT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FTP_RESPONSE_TIMEOUT - time allowed to wait for FTP response <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long.  Causes libcurl to set a <span Class="emphasis">timeout</span> period (in seconds) on the amount of time that the server is allowed to take in order to send a response message for a command before the session is considered dead.  While libcurl is waiting for a response, this value overrides <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>. It is recommended that if used in conjunction with <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, you set <a Class="emphasis" href="./CURLOPT_FTP_RESPONSE_TIMEOUT.html">CURLOPT_FTP_RESPONSE_TIMEOUT</a> to a value smaller than <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">None <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index f52ae68..b455585 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.pdf and b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.pdf differ
index 35b781e..d46b7a5 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FTP_SKIP_PASV_IP man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FTP_SKIP_PASV_IP - ignore the IP address in the PASV response <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SKIP_PASV_IP, long skip); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. If <span Class="emphasis">skip</span> is 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. 
 <p class="level0">This option thus allows libcurl to work around broken server installations that due to NATs, firewalls or incompetence report the wrong IP address back. 
index b9ae302..4c1e21d 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.pdf and b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.pdf differ
index 051cdcc..923ecfc 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FTP_SSL_CCC man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FTP_SSL_CCC - switch off SSL again with FTP after auth <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SSL_CCC, &nbsp;                         long how); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">If enabled, this option makes libcurl use CCC (Clear Command Channel). It shuts down the SSL/TLS layer after authenticating. The rest of the control channel communication will be unencrypted. This allows NAT routers to follow the FTP transaction. Pass a long using one of the values below 
 <p class="level0"><a name="CURLFTPSSLCCCNONE"></a><span class="nroffip">CURLFTPSSL_CCC_NONE</span> 
index fc5a13b..af60869 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.pdf and b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.pdf differ
index bc48556..b6008d3 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FTP_USE_EPRT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FTP_USE_EPRT - enable/disable use of EPRT with FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPRT, long enabled); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. If the value is 1, it tells curl to use the EPRT command when doing active FTP downloads (which is enabled by <a Class="emphasis" href="./CURLOPT_FTPPORT.html">CURLOPT_FTPPORT</a>). Using EPRT means that it will first attempt to use EPRT before using PORT, but if you pass zero to this option, it will not try using EPRT, only plain PORT. 
 <p class="level0">If the server is an IPv6 host, this option will have no effect as EPRT is necessary then. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 7b8530a..1de278f 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.pdf and b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.pdf differ
index 3ebd105..2dbec7d 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FTP_USE_EPSV man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FTP_USE_EPSV - enable/disable use of EPSV <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPSV, long epsv); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass <span Class="emphasis">epsv</span> as a long. If the value is 1, it tells curl to use the EPSV command when doing passive FTP downloads (which it does by default). Using EPSV means that it will first attempt to use EPSV before using PASV, but if you pass zero to this option, it will not try using EPSV, only plain PASV. 
 <p class="level0">If the server is an IPv6 host, this option will have no effect as of 7.12.3. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 2da1671..a64fc00 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.pdf and b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.pdf differ
index f2cfc71..1724d11 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_FTP_USE_PRET man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_FTP_USE_PRET - enable the PRET command <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_PRET, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. If the value is 1, it tells curl to send a PRET command before PASV (and EPSV). Certain FTP servers, mainly drftpd, require this non-standard command for directory listings as well as up and downloads in PASV mode. Has no effect when using the active FTP transfers mode. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index c48929a..94af930 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.pdf and b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.pdf differ
index f9beaf9..bafd0ca 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_GSSAPI_DELEGATION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_GSSAPI_DELEGATION - set allowed GSS-API delegation <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_GSSAPI_DELEGATION, long level); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Set the long parameter <span Class="emphasis">level</span> to CURLGSSAPI_DELEGATION_FLAG to allow unconditional GSSAPI credential delegation.  The delegation is disabled by default since 7.21.7.  Set the parameter to CURLGSSAPI_DELEGATION_POLICY_FLAG to delegate only if the OK-AS-DELEGATE flag is set in the service ticket in case this feature is supported by the GSS-API implementation and the definition of GSS_C_DELEG_POLICY_FLAG was available at compile-time. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">CURLGSSAPI_DELEGATION_NONE <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index d7c67be..df618a0 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.pdf and b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.pdf differ
index 130575a..f5a4be8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -38,9 +38,26 @@ about the protocol in use.
 
 It is often better to use \fICURLOPT_HEADERFUNCTION(3)\fP to get the header
 data separately.
+
+While named confusingly similar, \fICURLOPT_HTTPHEADER(3)\fP is used to set
+custom HTTP headers!
 .SH DEFAULT
 0
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH RETURN VALUE
 Returns CURLE_OK.
 .SH "SEE ALSO"
 .BR CURLOPT_HEADERFUNCTION "(3), "
+.BR CURLOPT_HTTPHEADER "(3), "
index 7cbb9d3..23f0204 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_HEADER man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,13 +52,27 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_HEADER - pass headers to the data stream <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADER, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass in <span Class="emphasis">onoff</span> set to 1 to tell the library to include the header in the body output for requests with this <span Class="emphasis">handle</span>. This option is relevant for protocols that actually have headers or other meta-data (like HTTP and FTP). 
 <p class="level0">When asking to get the header info passed to the same callback as the body, it is not possible to accurately separate them again without detailed knowledge about the protocol in use. 
-<p class="level0">It is often better to use <a Class="emphasis" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a> to get the header data separately. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
-<p class="level0">0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">It is often better to use <a Class="emphasis" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a> to get the header data separately. 
+<p class="level0">While named confusingly similar, <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> is used to set custom HTTP headers! <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index b4168cf..db9d3c2 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_HEADER.pdf and b/docs/libcurl/opts/CURLOPT_HEADER.pdf differ
index 122cad9..64f5439 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_HEADERDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_HEADERDATA - pointer to pass to header callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a <span Class="emphasis">pointer</span> to be used to write the header part of the received data to. 
 <p class="level0">If <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a> or <a Class="emphasis" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a> is used, <span Class="emphasis">pointer</span> will be passed in to the respective callback. 
index 1c28b8c..dc52f52 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_HEADERDATA.pdf and b/docs/libcurl/opts/CURLOPT_HEADERDATA.pdf differ
index b6100f2..f8ed0ab 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -39,14 +39,14 @@ shown above.
 This function gets called by libcurl as soon as it has received header
 data. The header callback will be called once for each header and only
 complete header lines are passed on to the callback. Parsing headers is very
-easy using this. The size of the data pointed to by \fIptr\fP is \fIsize\fP
+easy using this. The size of the data pointed to by \fIbuffer\fP is \fIsize\fP
 multiplied with \fInmemb\fP. Do not assume that the header line is zero
 terminated! The pointer named \fIuserdata\fP is the one you set with the
 \fICURLOPT_HEADERDATA(3)\fP option. This callback function must return the
 number of bytes actually taken care of. If that amount differs from the amount
 passed in to your function, it'll signal an error to the library. This will
 cause the transfer to get aborted and the libcurl function in progress will
-return \fICURL_WRITE_ERROR\fP.
+return \fICURLE_WRITE_ERROR\fP.
 
 A complete HTTP header that is passed to this function can be up to
 \fICURL_MAX_HTTP_HEADER\fP (100K) bytes.
@@ -80,7 +80,24 @@ Nothing.
 Used for all protocols with headers or meta-data concept: HTTP, FTP, POP3,
 IMAP, SMTP and more.
 .SH EXAMPLE
-TODO
+.nf
+static size_t header_callback(char *buffer, size_t size,
+                              size_t nitems, void *userdata)
+{
+  /* received header is nitems * size long in 'buffer' NOT ZERO TERMINATED */
+  /* 'userdata' is set with CURLOPT_WRITEDATA */
+  return nitems * size;
+}
+
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 Always
 .SH RETURN VALUE
index 8d112ce..182c1ae 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_HEADERFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,11 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_HEADERFUNCTION - callback that receives header data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">size_t header_callback(char *buffer, &nbsp;                      size_t size, &nbsp;                      size_t nitems, &nbsp;                      void *userdata); 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERFUNCTION, header_callback); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
-<p class="level0">This function gets called by libcurl as soon as it has received header data. The header callback will be called once for each header and only complete header lines are passed on to the callback. Parsing headers is very easy using this. The size of the data pointed to by <span Class="emphasis">ptr</span> is <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span>. Do not assume that the header line is zero terminated! The pointer named <span Class="emphasis">userdata</span> is the one you set with the <a Class="emphasis" href="./CURLOPT_HEADERDATA.html">CURLOPT_HEADERDATA</a> option. This callback function must return the number of bytes actually taken care of. If that amount differs from the amount passed in to your function, it'll signal an error to the library. This will cause the transfer to get aborted and the libcurl function in progress will return <span Class="emphasis">CURL_WRITE_ERROR</span>. 
+<p class="level0">This function gets called by libcurl as soon as it has received header data. The header callback will be called once for each header and only complete header lines are passed on to the callback. Parsing headers is very easy using this. The size of the data pointed to by <span Class="emphasis">buffer</span> is <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span>. Do not assume that the header line is zero terminated! The pointer named <span Class="emphasis">userdata</span> is the one you set with the <a Class="emphasis" href="./CURLOPT_HEADERDATA.html">CURLOPT_HEADERDATA</a> option. This callback function must return the number of bytes actually taken care of. If that amount differs from the amount passed in to your function, it'll signal an error to the library. This will cause the transfer to get aborted and the libcurl function in progress will return <span Class="emphasis">CURLE_WRITE_ERROR</span>. 
 <p class="level0">A complete HTTP header that is passed to this function can be up to <span Class="emphasis">CURL_MAX_HTTP_HEADER</span> (100K) bytes. 
 <p class="level0">If this option is not set, or if it is set to NULL, but <a Class="emphasis" href="./CURLOPT_HEADERDATA.html">CURLOPT_HEADERDATA</a> is set to anything but NULL, the function used to accept response data will be used instead. That is, it will be the function specified with <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, or if it is not specified or NULL - the default, stream-writing function. 
 <p class="level0">It's important to note that the callback will be invoked for the headers of all responses received after initiating a request and not just the final response. This includes all responses which occur during authentication negotiation. If you need to operate on only the headers from the final response, you will need to collect headers in the callback yourself and use HTTP status lines, for example, to delimit response boundaries. 
@@ -59,7 +64,26 @@ p.roffit {
 <p class="level0">For non-HTTP protocols like FTP, POP3, IMAP and SMTP this function will get called with the server responses to the commands that libcurl sends. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">Nothing. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">Used for all protocols with headers or meta-data concept: HTTP, FTP, POP3, IMAP, SMTP and more. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+static size_t header_callback(char *buffer, size_t size,
+&nbsp;                             size_t nitems, void *userdata)
+{
+&nbsp; /* received header is nitems * size long in 'buffer' NOT ZERO TERMINATED */
+&nbsp; /* 'userdata' is set with CURLOPT_WRITEDATA */
+&nbsp; return nitems * size;
+}
+&nbsp;
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_HEADERDATA.html">CURLOPT_HEADERDATA</a>, <a Class="manpage" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
index acf174a..491eec8 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.pdf differ
index be96d7d..7776b92 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -31,10 +31,10 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADEROPT, long bitmask);
 Pass a long that is a bitmask of options of how to deal with headers. The two
 mutually exclusive options are:
 
-\fBCURLHEADER_UNIFIED\fP - keep working as before. This means
-\fICURLOPT_HTTPHEADER(3)\fP headers will be used in requests both to servers
-and proxies. With this option enabled, \fICURLOPT_PROXYHEADER(3)\fP will not
-have any effect.
+\fBCURLHEADER_UNIFIED\fP - the headers specified in
+\fICURLOPT_HTTPHEADER(3)\fP will be used in requests both to servers and
+proxies. With this option enabled, \fICURLOPT_PROXYHEADER(3)\fP will not have
+any effect.
 
 \fBCURLHEADER_SEPARATE\fP - makes \fICURLOPT_HTTPHEADER(3)\fP headers only get
 sent to a server and not to a proxy. Proxy headers must be set with
@@ -44,7 +44,7 @@ headers. When doing CONNECT, libcurl will send \fICURLOPT_PROXYHEADER(3)\fP
 headers only to the proxy and then \fICURLOPT_HTTPHEADER(3)\fP headers only to
 the server.
 .SH DEFAULT
-CURLHEADER_UNIFIED
+CURLHEADER_SEPARATE (changed in 7.42.1, ased CURLHEADER_UNIFIED before then)
 .SH PROTOCOLS
 HTTP
 .SH EXAMPLE
index dbcd319..181aefe 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_HEADEROPT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_HEADEROPT - set how to send HTTP headers <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADEROPT, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long that is a bitmask of options of how to deal with headers. The two mutually exclusive options are: 
-<p class="level0"><span Class="bold">CURLHEADER_UNIFIED</span> - keep working as before. This means <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> headers will be used in requests both to servers and proxies. With this option enabled, <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a> will not have any effect. 
+<p class="level0"><span Class="bold">CURLHEADER_UNIFIED</span> - the headers specified in <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> will be used in requests both to servers and proxies. With this option enabled, <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a> will not have any effect. 
 <p class="level0"><span Class="bold">CURLHEADER_SEPARATE</span> - makes <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> headers only get sent to a server and not to a proxy. Proxy headers must be set with <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a> to get used. Note that if a non-CONNECT request is sent to a proxy, libcurl will send both server headers and proxy headers. When doing CONNECT, libcurl will send <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a> headers only to the proxy and then <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> headers only to the server. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
-<p class="level0">CURLHEADER_UNIFIED <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">CURLHEADER_SEPARATE (changed in 7.42.1, ased CURLHEADER_UNIFIED before then) <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.37.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 686bd20..0308057 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_HEADEROPT.pdf and b/docs/libcurl/opts/CURLOPT_HEADEROPT.pdf differ
index 1454ed1..b87db46 100644 (file)
@@ -32,9 +32,11 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP200ALIASES,
 .SH DESCRIPTION
 Pass a pointer to a linked list of \fIaliases\fP to be treated as valid HTTP
 200 responses.  Some servers respond with a custom header response line.  For
-example, IceCast servers respond with "ICY 200 OK".  By including this string
-in your list of aliases, the response will be treated as a valid HTTP header
-line such as "HTTP/1.0 200 OK".
+example, SHOUTcast servers respond with "ICY 200 OK". Also some very old
+Icecast 1.3.x servers will respond like that for certain user agent headers or
+in absence of such. By including this string in your list of aliases,
+the response will be treated as a valid HTTP header line such as
+"HTTP/1.0 200 OK".
 
 The linked list should be a fully valid list of struct curl_slist structs, and
 be properly filled in.  Use \fIcurl_slist_append(3)\fP to create the list and
index 72c6a9d..693be85 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_HTTP200ALIASES man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,13 +52,14 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_HTTP200ALIASES - specify alternative matches for HTTP 200 OK <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP200ALIASES,
- &nbsp;                         struct curl_slist *aliases);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP200ALIASES,
+&nbsp;                         struct curl_slist *aliases);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Pass a pointer to a linked list of <span Class="emphasis">aliases</span> to be treated as valid HTTP 200 responses.  Some servers respond with a custom header response line.  For example, IceCast servers respond with "ICY 200 OK".  By including this string in your list of aliases, the response will be treated as a valid HTTP header line such as "HTTP/1.0 200 OK". 
+<p class="level0">Pass a pointer to a linked list of <span Class="emphasis">aliases</span> to be treated as valid HTTP 200 responses.  Some servers respond with a custom header response line.  For example, SHOUTcast servers respond with "ICY 200 OK". Also some very old Icecast 1.3.x servers will respond like that for certain user agent headers or in absence of such. By including this string in your list of aliases, the response will be treated as a valid HTTP header line such as "HTTP/1.0 200 OK". 
 <p class="level0">The linked list should be a fully valid list of struct curl_slist structs, and be properly filled in.  Use <span Class="emphasis">curl_slist_append(3)</span> to create the list and <span Class="emphasis">curl_slist_free_all(3)</span> to clean up an entire list. 
 <p class="level0">The alias itself is not parsed for any version strings. The protocol is assumed to match HTTP 1.0 when an alias match. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 714de64..bc68e99 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.pdf and b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.pdf differ
index c184acb..c0d0665 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_HTTPAUTH man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,10 +52,11 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_HTTPAUTH - set HTTP server authentication methods to try <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPAUTH, long bitmask);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPAUTH, long bitmask);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter, which is set to a bitmask, to tell libcurl which authentication method(s) you want it to use speaking to the remote server. 
 <p class="level0">The available bits are listed below. If more than one bit is set, libcurl will first query the site to see which 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 <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> option or with the <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> and the <a Class="emphasis" href="./CURLOPT_PASSWORD.html">CURLOPT_PASSWORD</a> options. 
index 34aa232..a830302 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_HTTPAUTH.pdf and b/docs/libcurl/opts/CURLOPT_HTTPAUTH.pdf differ
index cd70851..d826527 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_HTTPGET man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,22 +52,24 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_HTTPGET - ask for a HTTP GET request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPGET, long useget); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. If <span Class="emphasis">useget</span> is 1, this forces the HTTP request to get back to using GET. Usable if a POST, HEAD, PUT, etc has been used previously using the same curl <span Class="emphasis">handle</span>. 
 <p class="level0">When setting <a Class="emphasis" href="./CURLOPT_HTTPGET.html">CURLOPT_HTTPGET</a> to 1, it will automatically set <a Class="emphasis" href="./CURLOPT_NOBODY.html">CURLOPT_NOBODY</a> to 0 and <a Class="emphasis" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a> to 0. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* use a GET to fetch this */ 
- &nbsp; curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
- <p class="level0">&nbsp; /* Perform the request */ 
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* use a GET to fetch this */ 
+&nbsp; curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
+&nbsp;
+&nbsp; /* Perform the request */ 
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 2bb9c9e..110a5d1 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_HTTPGET.pdf and b/docs/libcurl/opts/CURLOPT_HTTPGET.pdf differ
index 10fcf08..cd50431 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -63,21 +63,48 @@ Pass a NULL to this option to reset back to no custom headers.
 
 The most commonly replaced headers have "shortcuts" in the options
 \fICURLOPT_COOKIE(3)\fP, \fICURLOPT_USERAGENT(3)\fP and
-\fICURLOPT_REFERER(3)\fP.
+\fICURLOPT_REFERER(3)\fP. We recommend using those.
 
 There's an alternative option that sets or replaces headers only for requests
 that are sent with CONNECT to a proxy: \fICURLOPT_PROXYHEADER(3)\fP. Use
 \fICURLOPT_HEADEROPT(3)\fP to control the behavior.
+.SH SECURITY CONCERNS
+By default, this option makes libcurl send the given headers in all HTTP
+requests done by this handle. You should therefore use this option with
+caution if you for example connect to the remote site using a proxy and a
+CONNECT request, you should to consider if that proxy is supposed to also get
+the headers. They may be private or otherwise sensitive to leak.
+
+Use \fICURLOPT_HEADEROPT(3)\fP to make the headers only get sent to where you
+intend them to get sent.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
 HTTP
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+
+struct curl_slist *list = NULL;
+
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  list = curl_slist_append(list, "Shoesize: 10");
+  list = curl_slist_append(list, "Accept:");
+
+  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
+
+  curl_easy_perform(curl);
+
+  curl_slist_free_all(list); /* free the list again */
+}
+.fi
+
 .SH AVAILABILITY
 As long as HTTP is enabled
 .SH RETURN VALUE
 Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
 .BR CURLOPT_CUSTOMREQUEST "(3), " CURLOPT_HEADEROPT "(3), "
-.BR CURLOPT_PROXYHEADER "(3)"
+.BR CURLOPT_PROXYHEADER "(3), " CURLOPT_HEADER "(3)"
index 308887a..3cbb716 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_HTTPHEADER man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_HTTPHEADER - set custom HTTP headers <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPHEADER, struct curl_slist *headers); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a linked list of HTTP headers to pass to the server and/or proxy in your HTTP request. The same list can be used for both host and proxy requests! 
 <p class="level0">The linked list should be a fully valid list of <span Class="bold">struct curl_slist</span> structs properly filled in. Use <span Class="emphasis">curl_slist_append(3)</span> to create the list and <span Class="emphasis">curl_slist_free_all(3)</span> to clean up an entire list. If you add a header that is otherwise generated and used by libcurl internally, your added one will be used instead. If you add a header with no content as in 'Accept:' (no data on the right side of the colon), the internally used header will get disabled. With this option you can add new headers, replace internal headers and remove internal headers. To add a header with no content (nothing to the right side of the colon), use the form 'MyHeader;' (note the ending semicolon). 
@@ -55,13 +60,35 @@ p.roffit {
 <p class="level0">The first line in a request (containing the method, usually a GET or POST) is not a header and cannot be replaced using this option. Only the lines following the request-line are headers. Adding this method line in this list of headers will only cause your request to send an invalid header. Use <a Class="emphasis" href="./CURLOPT_CUSTOMREQUEST.html">CURLOPT_CUSTOMREQUEST</a> to change the method. 
 <p class="level0">When this option is passed to <span Class="emphasis">curl_easy_setopt(3)</span>, libcurl will not copy the entire list so you <span Class="bold">must</span> keep it around until you no longer use this <span Class="emphasis">handle</span> for a transfer before you call <span Class="emphasis">curl_slist_free_all(3)</span> on the list. 
 <p class="level0">Pass a NULL to this option to reset back to no custom headers. 
-<p class="level0">The most commonly replaced headers have "shortcuts" in the options <a Class="emphasis" href="./CURLOPT_COOKIE.html">CURLOPT_COOKIE</a>, <a Class="emphasis" href="./CURLOPT_USERAGENT.html">CURLOPT_USERAGENT</a> and <a Class="emphasis" href="./CURLOPT_REFERER.html">CURLOPT_REFERER</a>. 
-<p class="level0">There's an alternative option that sets or replaces headers only for requests that are sent with CONNECT to a proxy: <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a>. Use <a Class="emphasis" href="./CURLOPT_HEADEROPT.html">CURLOPT_HEADEROPT</a> to control the behavior. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The most commonly replaced headers have "shortcuts" in the options <a Class="emphasis" href="./CURLOPT_COOKIE.html">CURLOPT_COOKIE</a>, <a Class="emphasis" href="./CURLOPT_USERAGENT.html">CURLOPT_USERAGENT</a> and <a Class="emphasis" href="./CURLOPT_REFERER.html">CURLOPT_REFERER</a>. We recommend using those. 
+<p class="level0">There's an alternative option that sets or replaces headers only for requests that are sent with CONNECT to a proxy: <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a>. Use <a Class="emphasis" href="./CURLOPT_HEADEROPT.html">CURLOPT_HEADEROPT</a> to control the behavior. <a name="SECURITY"></a><h2 class="nroffsh">SECURITY CONCERNS</h2>
+<p class="level0">By default, this option makes libcurl send the given headers in all HTTP requests done by this handle. You should therefore use this option with caution if you for example connect to the remote site using a proxy and a CONNECT request, you should to consider if that proxy is supposed to also get the headers. They may be private or otherwise sensitive to leak. 
+<p class="level0">Use <a Class="emphasis" href="./CURLOPT_HEADEROPT.html">CURLOPT_HEADEROPT</a> to make the headers only get sent to where you intend them to get sent. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+&nbsp;
+struct curl_slist *list = NULL;
+&nbsp;
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; list = curl_slist_append(list, "Shoesize: 10");
+&nbsp; list = curl_slist_append(list, "Accept:");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+&nbsp;
+&nbsp; curl_slist_free_all(list); /* free the list again */
+}
+</pre>
+
+<p class="level0">
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">As long as HTTP is enabled <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./CURLOPT_CUSTOMREQUEST.html">CURLOPT_CUSTOMREQUEST</a>, <a Class="manpage" href="./CURLOPT_HEADEROPT.html">CURLOPT_HEADEROPT</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a>, <p class="roffit">
+<p class="level0"><a Class="manpage" href="./CURLOPT_CUSTOMREQUEST.html">CURLOPT_CUSTOMREQUEST</a>, <a Class="manpage" href="./CURLOPT_HEADEROPT.html">CURLOPT_HEADEROPT</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a>, <a Class="manpage" href="./CURLOPT_HEADER.html">CURLOPT_HEADER</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 4e471f2..6c48bfa 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_HTTPHEADER.pdf and b/docs/libcurl/opts/CURLOPT_HTTPHEADER.pdf differ
index 226621d..41ada86 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_HTTPPOST man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,38 +52,41 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_HTTPPOST - specify the multipart formpost content <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPOST,
- &nbsp;                         struct curl_httppost *formpost);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPOST,
+&nbsp;                         struct curl_httppost *formpost);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Tells libcurl you want a multipart/formdata HTTP POST to be made and you instruct what data to pass on to the server in the <span Class="emphasis">formpost</span> argument. Pass a pointer to a linked list of curl_httppost structs as parameter.  The easiest way to create such a list, is to use <span Class="emphasis">curl_formadd(3)</span> as documented. The data in this list must remain intact until you close this curl handle again with <span Class="emphasis">curl_easy_cleanup(3)</span>. 
 <p class="level0">Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. 
 <p class="level0">When setting <a Class="emphasis" href="./CURLOPT_HTTPPOST.html">CURLOPT_HTTPPOST</a>, it will automatically set <a Class="emphasis" href="./CURLOPT_NOBODY.html">CURLOPT_NOBODY</a> to 0. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">/* Fill in the file upload field. This makes libcurl load data from
- &nbsp;  the given file name when curl_easy_perform() is called. */
- curl_formadd(&formpost,
- &nbsp;            &lastptr,
- &nbsp;            CURLFORM_COPYNAME, "sendfile",
- &nbsp;            CURLFORM_FILE, "postit2.c",
- &nbsp;            CURLFORM_END);
- <p class="level0">/* Fill in the filename field */
- curl_formadd(&formpost,
- &nbsp;            &lastptr,
- &nbsp;            CURLFORM_COPYNAME, "filename",
- &nbsp;            CURLFORM_COPYCONTENTS, "postit2.c",
- &nbsp;            CURLFORM_END);
- <p class="level0">/* Fill in the submit field too, even if this is rarely needed */
- curl_formadd(&formpost,
- &nbsp;            &lastptr,
- &nbsp;            CURLFORM_COPYNAME, "submit",
- &nbsp;            CURLFORM_COPYCONTENTS, "send",
- &nbsp;            CURLFORM_END);
- </pre>
+<p class="level0"><pre class="level0">
+/* Fill in the file upload field. This makes libcurl load data from
+&nbsp;  the given file name when curl_easy_perform() is called. */
+curl_formadd(&formpost,
+&nbsp;            &lastptr,
+&nbsp;            CURLFORM_COPYNAME, "sendfile",
+&nbsp;            CURLFORM_FILE, "postit2.c",
+&nbsp;            CURLFORM_END);
+&nbsp;
+/* Fill in the filename field */
+curl_formadd(&formpost,
+&nbsp;            &lastptr,
+&nbsp;            CURLFORM_COPYNAME, "filename",
+&nbsp;            CURLFORM_COPYCONTENTS, "postit2.c",
+&nbsp;            CURLFORM_END);
+&nbsp;
+/* Fill in the submit field too, even if this is rarely needed */
+curl_formadd(&formpost,
+&nbsp;            &lastptr,
+&nbsp;            CURLFORM_COPYNAME, "submit",
+&nbsp;            CURLFORM_COPYCONTENTS, "send",
+&nbsp;            CURLFORM_END);
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">As long as HTTP is enabled <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 3889f02..4f23a25 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_HTTPPOST.pdf and b/docs/libcurl/opts/CURLOPT_HTTPPOST.pdf differ
index 3cbf50e..f861afb 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -37,6 +37,9 @@ Tunneling essentially means that a CONNECT is sent to the proxy, asking it to
 connect to a remote host on a specific port number and then the traffic is
 just passed through the proxy. Proxies tend to whitelist specific port numbers
 it allows CONNECT requests to and often only port 80 and 443 are allowed.
+
+When using this, it only makes sense to use \fICURLOPT_PROXYTYPE(3)\fP set to
+a HTTP proxy.
 .SH DEFAULT
 0
 .SH PROTOCOLS
@@ -48,4 +51,4 @@ Always
 .SH RETURN VALUE
 Returns CURLE_OK
 .SH "SEE ALSO"
-.BR CURLOPT_PROXY "(3), "
+.BR CURLOPT_PROXY "(3), " CURLOPT_PROXYTYPE "(3), " CURLOPT_PROXYPORT "(3), "
index 6f1688e..4ddfade 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_HTTPPROXYTUNNEL man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,15 +52,16 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_HTTPPROXYTUNNEL - tunnel through HTTP proxy <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPROXYTUNNEL, long tunnel); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Set the parameter to 1 to make libcurl tunnel all operations through the HTTP proxy. There is a big difference between using a proxy and to tunnel through it. If you don't know what this means, you probably don't want this tunneling option. 
-<p class="level0">Tunneling essentially means that a CONNECT is sent to the proxy, asking it to connect to a remote host on a specific port number and then the traffic is just passed through the proxy. Proxies tend to whitelist specific port numbers it allows CONNECT requests to and often only port 80 and 443 are allowed. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Tunneling essentially means that a CONNECT is sent to the proxy, asking it to connect to a remote host on a specific port number and then the traffic is just passed through the proxy. Proxies tend to whitelist specific port numbers it allows CONNECT requests to and often only port 80 and 443 are allowed. 
+<p class="level0">When using this, it only makes sense to use <a Class="emphasis" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a> set to a HTTP proxy. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All network protocols <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <span Class="manpage"> </span> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <a Class="manpage" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a>, <a Class="manpage" href="./CURLOPT_PROXYPORT.html">CURLOPT_PROXYPORT</a>, <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index babdf52..e99689f 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.pdf and b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.pdf differ
index cacd17e..d6193c2 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_HTTP_CONTENT_DECODING man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_HTTP_CONTENT_DECODING - enable/disable HTTP content decoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_CONTENT_DECODING,
- &nbsp;                         long enabled);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_CONTENT_DECODING,
+&nbsp;                         long enabled);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long to tell libcurl how to act on content decoding. If set to zero, content decoding will be disabled. If set to 1 it is enabled. Libcurl has no default content decoding but requires you to use <a Class="emphasis" href="./CURLOPT_ACCEPT_ENCODING.html">CURLOPT_ACCEPT_ENCODING</a> for that. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 36983d8..a489403 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.pdf and b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.pdf differ
index ddf9eea..be05c43 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_HTTP_TRANSFER_DECODING man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_HTTP_TRANSFER_DECODING - enable/disable HTTP transfer decoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_TRANSFER_DECODING,
- &nbsp;                        long enabled);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_TRANSFER_DECODING,
+&nbsp;                        long enabled);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long to tell libcurl how to act on transfer decoding. If set to zero, transfer decoding will be disabled, if set to 1 it is enabled (default). libcurl does chunked transfer decoding by default unless this option is set to zero. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 151796c..c6bc68b 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.pdf and b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.pdf differ
index ed5ea82..c85d144 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -41,8 +41,8 @@ Enforce HTTP 1.0 requests.
 .IP CURL_HTTP_VERSION_1_1
 Enforce HTTP 1.1 requests.
 .IP CURL_HTTP_VERSION_2_0
-Attempt HTTP 2.0 requests. libcurl will fall back to HTTP 1.x if HTTP 2.0
-can't be negotiated with the server.
+Attempt HTTP 2 requests. libcurl will fall back to HTTP 1.x if HTTP 2 can't be
+negotiated with the server. (Added in 7.33.0)
 .SH DEFAULT
 CURL_HTTP_VERSION_NONE
 .SH PROTOCOLS
index 7169870..05c4b4c 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_HTTP_VERSION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_HTTP_VERSION - specify HTTP protocol version to use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass <span Class="emphasis">version</span> a long, set to one of the values described below. They force libcurl to use the specific HTTP versions. This is not sensible to do unless you have a good reason. You have to set this option if you want to use libcurl's HTTP/2 support. 
 <p class="level0">
@@ -58,7 +63,7 @@ p.roffit {
 <p class="level0"><a name="CURLHTTPVERSION11"></a><span class="nroffip">CURL_HTTP_VERSION_1_1</span> 
 <p class="level1">Enforce HTTP 1.1 requests. 
 <p class="level0"><a name="CURLHTTPVERSION20"></a><span class="nroffip">CURL_HTTP_VERSION_2_0</span> 
-<p class="level1">Attempt HTTP 2.0 requests. libcurl will fall back to HTTP 1.x if HTTP 2.0 can't be negotiated with the server. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level1">Attempt HTTP 2 requests. libcurl will fall back to HTTP 1.x if HTTP 2 can't be negotiated with the server. (Added in 7.33.0) <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">CURL_HTTP_VERSION_NONE <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
index 7351f4d..27215d7 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.pdf and b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.pdf differ
index 11bff65..51fd6b0 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -42,7 +42,17 @@ Only use this option if strictly necessary.
 .SH PROTOCOLS
 HTTP
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* we know the server is silly, ignore content-length */
+  curl_easy_setopt(curl, CURLOPT_IGNORE_CONTENT_LENGTH, 1L);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 Added in 7.14.1
 .SH RETURN VALUE
index 7616ae5..c7c5229 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_IGNORE_CONTENT_LENGTH man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,17 +52,30 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_IGNORE_CONTENT_LENGTH - ignore Content-Length in HTTP response <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IGNORE_CONTENT_LENGTH,
- &nbsp;                         long ignore);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IGNORE_CONTENT_LENGTH,
+&nbsp;                         long ignore);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">If <span Class="emphasis">ignore</span> is set to 1, ignore the Content-Length header in the HTTP response. This is useful for Apache 1.x (and similar servers) which will report incorrect content length for files over 2 gigabytes. If this option is used, curl will not be able to accurately report progress, and will simply stop the download when the server ends the connection. 
 <p class="level0">Only use this option if strictly necessary. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* we know the server is silly, ignore content-length */
+&nbsp; curl_easy_setopt(curl, CURLOPT_IGNORE_CONTENT_LENGTH, 1L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.14.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_HTTP_VERSION.html">CURLOPT_HTTP_VERSION</a>, <a Class="manpage" href="./CURLOPT_MAXFILESIZE_LARGE.html">CURLOPT_MAXFILESIZE_LARGE</a>, <span Class="manpage"> </span> <p class="roffit">
index 90a31bc..083d373 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.pdf and b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.pdf differ
index 129414c..fd49e21 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -49,7 +49,20 @@ Unset
 .SH PROTOCOLS
 Many
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  long uploadsize = FILE_SIZE;
+
+  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/destination.tar.gz");
+
+  curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
+  curl_easy_setopt(curl, CURLOPT_INFILESIZE, uploadsize);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 SMTP support added in 7.23.0
 .SH RETURN VALUE
index ae0e217..48accfe 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_INFILESIZE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_INFILESIZE - set size of the input file to send off <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE, long filesize); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">When uploading a file to a remote site, <span Class="emphasis">filesize</span> should be used to tell libcurl what the expected size of the input file is. This value must be passed as a long. See also <a Class="emphasis" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a> for sending files larger than 2GB. 
 <p class="level0">For uploading using SCP, this option or <a Class="emphasis" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a> is mandatory. 
@@ -56,7 +61,22 @@ p.roffit {
 <p class="level0">This option does not limit how much data libcurl will actually send, as that is controlled entirely by what the read callback returns, but telling one value and sending a different amount may lead to errors. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">Unset <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">Many <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; long uploadsize = FILE_SIZE;
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/destination.tar.gz">ftp://example.com/destination.tar.gz</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE, uploadsize);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">SMTP support added in 7.23.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a>, <a Class="manpage" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>, <span Class="manpage"> </span> <p class="roffit">
index 39e4d28..cc2f218 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_INFILESIZE.pdf and b/docs/libcurl/opts/CURLOPT_INFILESIZE.pdf differ
index 0aa5224..114676d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -50,7 +50,20 @@ Unset
 .SH PROTOCOLS
 Many
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_off_t uploadsize = FILE_SIZE;
+
+  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/destination.tar.gz");
+
+  curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
+  curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, uploadsize);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 SMTP support added in 7.23.0
 .SH RETURN VALUE
index c16aed1..0ad59d0 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_INFILESIZE_LARGE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_INFILESIZE_LARGE - set size of the input file to send off <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE_LARGE,
- &nbsp;                         curl_off_t filesize);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE_LARGE,
+&nbsp;                         curl_off_t filesize);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">When uploading a file to a remote site, <span Class="emphasis">filesize</span> should be used to tell libcurl what the expected size of the input file is. This value must be passed as a <span Class="bold">curl_off_t</span>.  
 <p class="level0">For uploading using SCP, this option or <a Class="emphasis" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a> is mandatory. 
@@ -60,7 +66,22 @@ p.roffit {
 <p class="level0">This option does not limit how much data libcurl will actually send, as that is controlled entirely by what the read callback returns, but telling one value and sending a different amount may lead to errors. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">Unset <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">Many <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_off_t uploadsize = FILE_SIZE;
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/destination.tar.gz">ftp://example.com/destination.tar.gz</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, uploadsize);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">SMTP support added in 7.23.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a>, <a Class="manpage" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>, <span Class="manpage"> </span> <p class="roffit">
index 769696a..bcb5dea 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.pdf and b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.pdf differ
index 4806797..94faf8b 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_INTERFACE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_INTERFACE - source interface for outgoing traffic <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERFACE, char *interface); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter. This sets the <span Class="emphasis">interface</span> name to use as outgoing network interface. The name can be an interface name, an IP address, or a host name. 
 <p class="level0">If the parameter starts with "if!" then it is treated as only as interface name and no attempt will ever be named to do treat it as an IP address or to do name resolution on it.  If the parameter starts with "host!" it is treated as either an IP address or a hostname.  Hostnames are resolved synchronously.  Using the if! format is highly recommended when using the multi interfaces to avoid allowing the code to block.  If "if!" is specified but the parameter does not match an existing interface, CURLE_INTERFACE_FAILED is returned from the libcurl function used to perform the transfer. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 564e7b2..b2f5d99 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_INTERFACE.pdf and b/docs/libcurl/opts/CURLOPT_INTERFACE.pdf differ
index bc98928..068615c 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_INTERLEAVEDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_INTERLEAVEDATA - custom pointer to RTSP interleave callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This is the userdata <span Class="emphasis">pointer</span> that will be passed to <a Class="emphasis" href="./CURLOPT_INTERLEAVEFUNCTION.html">CURLOPT_INTERLEAVEFUNCTION</a> when interleaved RTP data is received. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index b51132c..f2e1b9a 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.pdf and b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.pdf differ
index d6d82a1..c3bdbfb 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_INTERLEAVEFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,13 +52,15 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_INTERLEAVEFUNCTION - callback function for RTSP interleaved data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">size_t interleave_callback(void *ptr, size_t size, size_t nmemb,
- &nbsp;                          void *userdata);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEFUNCTION,
- &nbsp;                         interleave_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+size_t interleave_callback(void *ptr, size_t size, size_t nmemb,
+&nbsp;                          void *userdata);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEFUNCTION,
+&nbsp;                         interleave_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0">This callback function gets called by libcurl as soon as it has received interleaved RTP data. This function gets called for each $ block and therefore contains exactly one upper-layer protocol unit (e.g.  one RTP packet). Curl writes the interleaved header as well as the included data for each call. The first byte is always an ASCII dollar sign. The dollar sign is followed by a one byte channel identifier and then a 2 byte integer length in network byte order. See <span Class="emphasis"><a href="http://www.ietf.org/rfc/rfc2326.txt">RFC 2326</a> Section 10.12</span> for more information on how RTP interleaving behaves. If unset or set to NULL, curl will use the default write function. 
index 08f7c69..3aab759 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.pdf differ
index 7b4b296..212d263 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_IOCTLDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_IOCTLDATA - custom pointer passed to I/O callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass the <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the 3rd argument in the ioctl callback set with <a Class="emphasis" href="./CURLOPT_IOCTLFUNCTION.html">CURLOPT_IOCTLFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">By default, the value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index a6bb33b..6c66566 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_IOCTLDATA.pdf and b/docs/libcurl/opts/CURLOPT_IOCTLDATA.pdf differ
index 4280b9f..361ddfa 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_IOCTLFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,22 +52,26 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_IOCTLFUNCTION - callback for I/O operations <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">typedef enum {
- &nbsp; CURLIOE_OK,            /* I/O operation successful */
- &nbsp; CURLIOE_UNKNOWNCMD,    /* command was unknown to callback */
- &nbsp; CURLIOE_FAILRESTART,   /* failed to restart the read */
- &nbsp; CURLIOE_LAST           /* never use */
- } curlioerr;
- <p class="level0">typedef enum  {
- &nbsp; CURLIOCMD_NOP,         /* no operation */
- &nbsp; CURLIOCMD_RESTARTREAD, /* restart the read stream from start */
- &nbsp; CURLIOCMD_LAST         /* never use */
- } curliocmd;
- <p class="level0">curlioerr ioctl_callback(CURL *handle, int cmd, void *clientp);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLFUNCTION, ioctl_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+typedef enum {
+&nbsp; CURLIOE_OK,            /* I/O operation successful */
+&nbsp; CURLIOE_UNKNOWNCMD,    /* command was unknown to callback */
+&nbsp; CURLIOE_FAILRESTART,   /* failed to restart the read */
+&nbsp; CURLIOE_LAST           /* never use */
+} curlioerr;
+&nbsp;
+typedef enum  {
+&nbsp; CURLIOCMD_NOP,         /* no operation */
+&nbsp; CURLIOCMD_RESTARTREAD, /* restart the read stream from start */
+&nbsp; CURLIOCMD_LAST         /* never use */
+} curliocmd;
+&nbsp;
+curlioerr ioctl_callback(CURL *handle, int cmd, void *clientp);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLFUNCTION, ioctl_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0">This callback function gets called by libcurl when something special I/O-related needs to be done that the library can't do by itself. For now, rewinding the read data stream is the only action it can request. The rewinding of the read data stream may be necessary when doing a HTTP PUT or POST with a multi-pass authentication method. 
index bf304e1..5049dc7 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.pdf differ
index 283873c..e908e35 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_IPRESOLVE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_IPRESOLVE - specify which IP protocol version to use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IPRESOLVE, long resolve); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Allows an application to select what kind of IP addresses to use when resolving host names. This is only interesting when using host names that resolve addresses using more than one version of IP. The allowed values are: 
 <p class="level0"><a name="CURLIPRESOLVEWHATEVER"></a><span class="nroffip">CURL_IPRESOLVE_WHATEVER</span> 
index 79c6dd3..839fa89 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_IPRESOLVE.pdf and b/docs/libcurl/opts/CURLOPT_IPRESOLVE.pdf differ
index d1bef9f..0577496 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_ISSUERCERT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_ISSUERCERT - issuer SSL certificate filename <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT, char *file); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * to a zero terminated string naming a <span Class="emphasis">file</span> holding a CA certificate in PEM format. If the option is set, an additional check against the peer certificate is performed to verify the issuer is indeed the one associated with the certificate provided by the option. This additional check is useful in multi-level PKI where one needs to enforce that the peer certificate is from a specific branch of the tree. 
 <p class="level0">This option makes sense only when used in combination with the <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> option. Otherwise, the result of the check is not considered as failure. 
index a04ea53..5ce4b7a 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_ISSUERCERT.pdf and b/docs/libcurl/opts/CURLOPT_ISSUERCERT.pdf differ
index 9c02291..81e9535 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_KEYPASSWD man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_KEYPASSWD - set passphrase to private key <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEYPASSWD, char *pwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used as the password required to use the <a Class="emphasis" href="./CURLOPT_SSLKEY.html">CURLOPT_SSLKEY</a> or <a Class="emphasis" href="./CURLOPT_SSH_PRIVATE_KEYFILE.html">CURLOPT_SSH_PRIVATE_KEYFILE</a> private key.  You never needed a pass phrase to load a certificate but you need one to load your private key. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index db9de05..b583ca4 100644 (file)
@@ -68,12 +68,12 @@ endobj
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:17:59+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:17:59+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:804d2b7e-78d5-11f0-0000-ba6faefc18a2' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:804d2b7e-78d5-11f0-0000-ba6faefc18a2' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:21+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:21+02:00</xmp:CreateDate>
 <xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2'/>
-<rdf:Description rdf:about='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:804d2b7e-78d5-11f0-0000-ba6faefc18a2' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:804d2b7e-78d5-11f0-0000-ba6faefc18a2'/>
+<rdf:Description rdf:about='uuid:804d2b7e-78d5-11f0-0000-ba6faefc18a2' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
@@ -82,9 +82,9 @@ endobj
 endstream
 endobj
 2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091759+01'00')
-/ModDate(D:20150108091759+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081121+02'00')
+/ModDate(D:20150812081121+02'00')
 /Creator(groff version 1.22.3)>>endobj
 xref
 0 15
@@ -105,7 +105,7 @@ xref
 0000002124 00000 n 
 trailer
 << /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<9C282454DD73ABCBA4EAB892D19536F1><9C282454DD73ABCBA4EAB892D19536F1>]
+/ID [<18792872C3CF70730F5D6279F9982EE4><18792872C3CF70730F5D6279F9982EE4>]
 >>
 startxref
 3701
index 4e503fd..21e7239 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_KRBLEVEL man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_KRBLEVEL - set FTP kerberos security level <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KRBLEVEL, char *level); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter. Set the kerberos security level for FTP; this also enables kerberos awareness.  This is a string that should match one of the following: 'clear', 'safe', 'confidential' or 'private'.  If the string is set but doesn't match one of these, 'private' will be used. Set the string to NULL to disable kerberos support for FTP. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 9a583b5..b5d6e4a 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_KRBLEVEL.pdf and b/docs/libcurl/opts/CURLOPT_KRBLEVEL.pdf differ
index ff86fd5..be30894 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_LOCALPORT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_LOCALPORT - set local port number to use for socket <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORT, long port); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. This sets the local port number of the socket used for the connection. This can be used in combination with <a Class="emphasis" href="./CURLOPT_INTERFACE.html">CURLOPT_INTERFACE</a> and you are recommended to use <a Class="emphasis" href="./CURLOPT_LOCALPORTRANGE.html">CURLOPT_LOCALPORTRANGE</a> as well when this option is set. Valid port numbers are 1 - 65535. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0, disabled - use whatever the system thinks is fine <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 68e8564..c0902cb 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_LOCALPORT.pdf and b/docs/libcurl/opts/CURLOPT_LOCALPORT.pdf differ
index 1e6181e..c5069d4 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_LOCALPORTRANGE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_LOCALPORTRANGE - number of additional local ports to try <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORTRANGE, &nbsp;                         long range); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. The <span Class="emphasis">range</span> argument is the number of attempts libcurl will make to find a working local port number. It starts with the given <a Class="emphasis" href="./CURLOPT_LOCALPORT.html">CURLOPT_LOCALPORT</a> and adds one to the number for each retry. Setting this option to 1 or below will make libcurl do only one try for the exact port number. Port numbers by nature are scarce resources that will be busy at times so setting this value to something too low might cause unnecessary connection setup failures. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index cf5a7a6..7a4f09c 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.pdf and b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.pdf differ
index ac84955..b54df96 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_LOGIN_OPTIONS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_LOGIN_OPTIONS - set login options <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOGIN_OPTIONS, char *options); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated <span Class="emphasis">options</span> string to use for the transfer. 
 <p class="level0">For more information about the login options please see <a href="http://www.ietf.org/rfc/rfc2384.txt">RFC 2384</a>, RFC5092 and IETF draft draft-earhart-url-smtp-00.txt 
index 7c15e64..5f36138 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.pdf and b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.pdf differ
index a10f6e6..bdef6e4 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_LOW_SPEED_LIMIT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_LOW_SPEED_LIMIT - set low speed limit in bytes per second <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_LIMIT, long speedlimit); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter. It contains the average transfer speed in bytes per second that the transfer should be below during <a Class="emphasis" href="./CURLOPT_LOW_SPEED_TIME.html">CURLOPT_LOW_SPEED_TIME</a> seconds for libcurl to consider it to be too slow and abort. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index b7aaaf5..7533c2f 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.pdf and b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.pdf differ
index 0d097df..8e70e06 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_LOW_SPEED_TIME man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_LOW_SPEED_TIME - set low speed limit time period <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_TIME, long speedtime); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter. It contains the time in number seconds that the transfer speed should be below the <a Class="emphasis" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a> for the library to consider it too slow and abort. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 41f2f37..301bdb9 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.pdf and b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.pdf differ
index 3209031..3bb8269 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_MAIL_AUTH man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_MAIL_AUTH - SMTP authentication address <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_AUTH, char *auth); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string as parameter. This will be used to specify the authentication address (identity) of a submitted message that is being relayed to another server. 
 <p class="level0">This optional parameter allows co-operating agents in a trusted environment to communicate the authentication of individual messages and should only be used by the application program, using libcurl, if the application is itself a mail server acting in such an environment. If the application is operating as such and the AUTH address is not known or is invalid, then an empty string should be used for this parameter. 
index 5afbd97..a75fb80 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.pdf and b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.pdf differ
index f34a2fc..b230652 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_MAIL_FROM man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_MAIL_FROM - SMTP sender address <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_FROM, char *from); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string as parameter. This should be used to specify the sender's email address when sending SMTP mail with libcurl. 
 <p class="level0">An originator email address should be specified with angled brackets (&lt;&gt;) around it, which if not specified will be added automatically. 
index 0d24fce..45ed4ec 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_MAIL_FROM.pdf and b/docs/libcurl/opts/CURLOPT_MAIL_FROM.pdf differ
index a37fcd5..13fe8f8 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_MAIL_RCPT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_MAIL_RCPT - list of SMTP mail recipients <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_RCPT,
- &nbsp;                         struct curl_slist *rcpts);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_RCPT,
+&nbsp;                         struct curl_slist *rcpts);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a linked list of recipients to pass to the server in your SMTP mail request. The linked list should be a fully valid list of <span class="bold">struct curl_slist</span> structs properly filled in. Use <span Class="emphasis">curl_slist_append(3)</span> to create the list and <span Class="emphasis">curl_slist_free_all(3)</span> to clean up an entire list. 
 <p class="level0">When performing a mail transfer, each recipient should be specified within a pair of angled brackets (&lt;&gt;), however, should you not use an angled bracket as the first character libcurl will assume you provided a single email address and enclose that address within brackets for you. 
index bc2e86f..9fdabb2 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.pdf and b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.pdf differ
index 3edcfba..e26de80 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_MAXCONNECTS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_MAXCONNECTS - maximum connection cache size <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXCONNECTS, long amount); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. The set <span Class="emphasis">amount</span> will be the maximum number of simultaneously open persistent connections that libcurl may cache in the pool associated with this handle. The default is 5, and there isn't much point in changing this value unless you are perfectly aware of how this works and changes libcurl's behaviour. This concerns connections using any of the protocols that support persistent connections. 
 <p class="level0">When reaching the maximum limit, curl closes the oldest one in the cache to prevent increasing the number of open connections. 
index 1cc92db..636725b 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.pdf and b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.pdf differ
index 306cc59..0ee4cae 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_MAXFILESIZE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_MAXFILESIZE - maximum file size allowed to download <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter. This allows you to specify the maximum <span Class="emphasis">size</span> (in bytes) of a file to download. If the file requested is found larger than this value, the transfer will not start and <span Class="emphasis">CURLE_FILESIZE_EXCEEDED</span> will be returned. 
 <p class="level0">The file size is not always known prior to download, and for such files this option has no effect even if the file transfer ends up being larger than this given limit. This concerns both FTP and HTTP transfers. 
index b434b96..e46c522 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.pdf and b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.pdf differ
index fb97d1e..f05bb58 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_MAXFILESIZE_LARGE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_MAXFILESIZE_LARGE - maximum file size allowed to download <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE_LARGE,
- &nbsp;                         curl_off_t size);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE_LARGE,
+&nbsp;                         curl_off_t size);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a curl_off_t as parameter. This allows you to specify the maximum <span Class="emphasis">size</span> (in bytes) of a file to download. If the file requested is found larger than this value, the transfer will not start and <span Class="emphasis">CURLE_FILESIZE_EXCEEDED</span> will be returned. 
 <p class="level0">The file size is not always known prior to download, and for such files this option has no effect even if the file transfer ends up being larger than this given limit. This concerns both FTP and HTTP transfers. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 3ab4721..6db1cbe 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.pdf and b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.pdf differ
index 5fe7247..fbeb6c4 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_MAXREDIRS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,25 +52,28 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_MAXREDIRS - maximum number of redirects allowed <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXREDIRS, long amount); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. The set number will be the redirection limit <span Class="emphasis">amount</span>. If that many redirections have been followed, the next redirect will cause an error (<span Class="emphasis">CURLE_TOO_MANY_REDIRECTS</span>). This option only makes sense if the <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a> is used at the same time. 
 <p class="level0">Setting the limit to 0 will make libcurl refuse any redirect. 
 <p class="level0">Set it to -1 for an infinite number of redirects. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">-1, unlimited <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com/">http://example.com/</a>");
- <p class="level0">&nbsp; /* enable redirect following */
- &nbsp; curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
- <p class="level0">&nbsp; /* allow three redirects */
- &nbsp; curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 3L);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com/">http://example.com/</a>");
+&nbsp;
+&nbsp; /* enable redirect following */
+&nbsp; curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+&nbsp;
+&nbsp; /* allow three redirects */
+&nbsp; curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 3L);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index a00bda4..c7a5b86 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_MAXREDIRS.pdf and b/docs/libcurl/opts/CURLOPT_MAXREDIRS.pdf differ
index aa54256..f230b22 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_MAX_RECV_SPEED_LARGE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_MAX_RECV_SPEED_LARGE - rate limit data download speed <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAX_RECV_SPEED_LARGE,
- &nbsp;                         curl_off_t speed);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAX_RECV_SPEED_LARGE,
+&nbsp;                         curl_off_t speed);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a curl_off_t as parameter.  If a download exceeds this <span Class="emphasis">speed</span> (counted in bytes per second) on cumulative average during the transfer, the transfer will pause to keep the average rate less than or equal to the parameter value. Defaults to unlimited speed. 
 <p class="level0">This option doesn't affect transfer speeds done with FILE:// URLs. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index ffd933a..485f096 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.pdf and b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.pdf differ
index ed9c19a..295d5d5 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_MAX_SEND_SPEED_LARGE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_MAX_SEND_SPEED_LARGE - rate limit data upload speed <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAX_SEND_SPEED_LARGE,
- &nbsp;                         curl_off_t maxspeed);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAX_SEND_SPEED_LARGE,
+&nbsp;                         curl_off_t maxspeed);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a curl_off_t as parameter with the <span Class="emphasis">maxspeed</span>.  If an upload exceeds this speed (counted in bytes per second) on cumulative average during the transfer, the transfer will pause to keep the average rate less than or equal to the parameter value.  Defaults to unlimited speed. 
 <p class="level0">This option doesn't affect transfer speeds done with FILE:// URLs. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 9b43918..7959ad8 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.pdf and b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.pdf differ
index 777f4ff..3a99468 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_NETRC man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_NETRC - request that .netrc is used <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC, long level); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This parameter controls the preference <span Class="emphasis">level</span> of libcurl between using user names and passwords from your <span Class="emphasis">~/.netrc</span> file, relative to user names and passwords in the URL supplied with <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a>. 
 <p class="level0">libcurl uses a user name (and supplied or prompted password) supplied with <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> or <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> in preference to any of the options controlled by this parameter. 
index 05b8eea..076fc49 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_NETRC.pdf and b/docs/libcurl/opts/CURLOPT_NETRC.pdf differ
index 8b05da0..f336560 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_NETRC_FILE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_NETRC_FILE - file name to read .netrc info from <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC_FILE, char *file); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, pointing to a zero terminated string containing the full path name to the <span Class="emphasis">file</span> you want libcurl to use as .netrc file. If this option is omitted, and <a Class="emphasis" href="./CURLOPT_NETRC.html">CURLOPT_NETRC</a> is set, libcurl will attempt to find a .netrc file in the current user's home directory. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index e14615d..285d49e 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_NETRC_FILE.pdf and b/docs/libcurl/opts/CURLOPT_NETRC_FILE.pdf differ
index 401b885..2dfced7 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_NEW_DIRECTORY_PERMS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_NEW_DIRECTORY_PERMS - permissions for remotely created directories <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NEW_DIRECTORY_PERMS,
- &nbsp;                         long mode);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NEW_DIRECTORY_PERMS,
+&nbsp;                         long mode);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as a parameter, containing the value of the permissions that will be assigned to newly created directories on the remote server.  The default value is <span Class="emphasis">0755</span>, but any valid value can be used.  The only protocols that can use this are <span Class="emphasis">sftp://</span>, <span Class="emphasis">scp://</span>, and <span Class="emphasis">file://</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0755 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 75aa45f..77b59ec 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.pdf and b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.pdf differ
index da31f73..e95b42e 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_NEW_FILE_PERMS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_NEW_FILE_PERMS - permissions for remotely created files <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NEW_FILE_PERMS,
- &nbsp;                         long mode);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NEW_FILE_PERMS,
+&nbsp;                         long mode);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as a parameter, containing the value of the permissions that will be assigned to newly created files on the remote server.  The default value is <span Class="emphasis">0644</span>, but any valid value can be used.  The only protocols that can use this are <span Class="emphasis">sftp://</span>, <span Class="emphasis">scp://</span>, and <span Class="emphasis">file://</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0644 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 4be0871..fa8e3fb 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.pdf and b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.pdf differ
index abca439..3ca4418 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_NOBODY man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,22 +52,24 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_NOBODY - do the download request without getting the body <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOBODY, long opt); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">A long parameter set to 1 tells libcurl to not include the body-part in the output when doing what would otherwise be a download. For HTTP(S), this makes libcurl do a HEAD request. For most other protocols it means just not asking to transfer the body data. 
 <p class="level0">Enabling this option means asking for a download but without a body. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0, the body is transferred <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* get us the resource without a body! */ 
- &nbsp; curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
- <p class="level0">&nbsp; /* Perform the request */ 
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* get us the resource without a body! */ 
+&nbsp; curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
+&nbsp;
+&nbsp; /* Perform the request */ 
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index d58164a..0dc741a 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_NOBODY.pdf and b/docs/libcurl/opts/CURLOPT_NOBODY.pdf differ
index 79bde0e..72b427c 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_NOPROGRESS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_NOPROGRESS - switch off the progress meter <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROGRESS, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">If <span Class="emphasis">onoff</span> is to 1, it tells the library to shut off the progress meter completely for requests done with this <span Class="emphasis">handle</span>. It will also prevent the <a Class="emphasis" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a> from getting called. 
 <p class="level0">Future versions of libcurl are likely to not have any built-in progress meter at all. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 2d832a1..b0bd0de 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_NOPROGRESS.pdf and b/docs/libcurl/opts/CURLOPT_NOPROGRESS.pdf differ
index f8b9794..e30cc48 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_NOPROXY man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_NOPROXY - disable proxy use for specific hosts <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROXY, char *noproxy); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string. The string consists of a comma separated list of host names that do not require a proxy to get reached, even if one is specified.  The only wildcard available is a single * character, which matches all hosts, and effectively disables the proxy. Each name in this list is matched as either a domain which contains the hostname, or the hostname itself. For example, example.com would match example.com, example.com:80, and www.example.com, but not www.notanexample.com or example.com.othertld. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 5301afc..77d1934 100644 (file)
@@ -68,12 +68,12 @@ endobj
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:02+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:02+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:817e587e-78d5-11f0-0000-65c5a25808db' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:817e587e-78d5-11f0-0000-65c5a25808db' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:23+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:23+02:00</xmp:CreateDate>
 <xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db'/>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:817e587e-78d5-11f0-0000-65c5a25808db' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:817e587e-78d5-11f0-0000-65c5a25808db'/>
+<rdf:Description rdf:about='uuid:817e587e-78d5-11f0-0000-65c5a25808db' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
@@ -82,9 +82,9 @@ endobj
 endstream
 endobj
 2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091802+01'00')
-/ModDate(D:20150108091802+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081123+02'00')
+/ModDate(D:20150812081123+02'00')
 /Creator(groff version 1.22.3)>>endobj
 xref
 0 14
@@ -104,7 +104,7 @@ xref
 0000002157 00000 n 
 trailer
 << /Size 14 /Root 1 0 R /Info 2 0 R
-/ID [<2D83AF6D6784F99F64821E4ED344D788><2D83AF6D6784F99F64821E4ED344D788>]
+/ID [(\005\234s\355\360]:{8$N72\264d:)(\005\234s\355\360]:{8$N72\264d:)]
 >>
 startxref
 3734
index 287fbb3..8453ca5 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_NOSIGNAL man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_NOSIGNAL - skip all signal handling <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOSIGNAL, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">If <span Class="emphasis">onoff</span> 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 here to allow multi-threaded unix applications to still set/use all timeout options etc, without risking getting signals. 
 <p class="level0">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 the c-ares or threaded resolver backends to enable asynchronous DNS lookups, to enable timeouts for name resolves without the use of signals. 
index 619b766..e063cd0 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_NOSIGNAL.pdf and b/docs/libcurl/opts/CURLOPT_NOSIGNAL.pdf differ
index 75985aa..5475200 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_OPENSOCKETDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_OPENSOCKETDATA - custom pointer passed to open socket callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the opensocket callback set with <a Class="emphasis" href="./CURLOPT_OPENSOCKETFUNCTION.html">CURLOPT_OPENSOCKETFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">The default value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 7bf876d..11d5a53 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.pdf and b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.pdf differ
index b72dedb..14d1e8c 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_OPENSOCKETFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,34 +52,38 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_OPENSOCKETFUNCTION - set callback for opening sockets <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">typedef enum  {
- &nbsp; CURLSOCKTYPE_IPCXN,  /* socket created for a specific IP connection */
- &nbsp; CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
- &nbsp; CURLSOCKTYPE_LAST    /* never use */
- } curlsocktype;
- <p class="level0">struct curl_sockaddr {
- &nbsp; int family;
- &nbsp; int socktype;
- &nbsp; int protocol;
- &nbsp; unsigned int addrlen;
- &nbsp; struct sockaddr addr;
- };
- <p class="level0">curl_socket_t opensocket_callback(void *clientp,
- &nbsp;                                 curlsocktype purpose,
- &nbsp;                                 struct curl_sockaddr *address);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETFUNCTION, opensocket_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+typedef enum  {
+&nbsp; CURLSOCKTYPE_IPCXN,  /* socket created for a specific IP connection */
+&nbsp; CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
+&nbsp; CURLSOCKTYPE_LAST    /* never use */
+} curlsocktype;
+&nbsp;
+struct curl_sockaddr {
+&nbsp; int family;
+&nbsp; int socktype;
+&nbsp; int protocol;
+&nbsp; unsigned int addrlen;
+&nbsp; struct sockaddr addr;
+};
+&nbsp;
+curl_socket_t opensocket_callback(void *clientp,
+&nbsp;                                 curlsocktype purpose,
+&nbsp;                                 struct curl_sockaddr *address);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETFUNCTION, opensocket_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0">This callback function gets called by libcurl instead of the <span Class="emphasis">socket(2)</span> call. The callback's <span Class="emphasis">purpose</span> argument identifies the exact purpose for this particular socket: <span Class="emphasis">CURLSOCKTYPE_IPCXN</span> is for IP based connections and <span Class="emphasis">CURLSOCKTYPE_ACCEPT</span> is for sockets created after accept() - such as when doing active FTP. Future versions of libcurl may support more purposes. 
 <p class="level0">The <span Class="emphasis">clientp</span> pointer contains whatever user-defined value set using the <a Class="emphasis" href="./CURLOPT_OPENSOCKETDATA.html">CURLOPT_OPENSOCKETDATA</a> function. 
 <p class="level0">The callback gets the resolved peer address as the <span Class="emphasis">address</span> argument and is allowed to modify the address or refuse to connect completely. The callback function should return the newly created socket or <span Class="emphasis">CURL_SOCKET_BAD</span> in case no connection could be established or another error was detected. Any additional <span Class="emphasis">setsockopt(2)</span> calls can of course be done on the socket at the user's discretion.  A <span Class="emphasis">CURL_SOCKET_BAD</span> return value from the callback function will signal an unrecoverable error to libcurl and it will return <span Class="emphasis">CURLE_COULDNT_CONNECT</span> from the function that triggered this callback. This return code can be used for IP address blacklisting. 
 <p class="level0">If you want to pass in a socket with an already established connection, pass the socket back with this callback and then use <a Class="emphasis" href="./CURLOPT_SOCKOPTFUNCTION.html">CURLOPT_SOCKOPTFUNCTION</a> to signal that it already is connected. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
-<p class="level0">The default behavior is the equivalent of this: <pre>
-<p class="level0">&nbsp;  return socket(addr-&gt;family, addr-&gt;socktype, addr-&gt;protocol);
- </pre>
+<p class="level0">The default behavior is the equivalent of this: <pre class="level0">
+&nbsp;  return socket(addr-&gt;family, addr-&gt;socktype, addr-&gt;protocol);
+</pre>
 
 <p class="level0"><a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
index 335e93e..acf29a4 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.pdf differ
index b2da86d..a8f11ff 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PASSWORD man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PASSWORD - password to use in authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PASSWORD, char *pwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated password to use for the transfer. 
 <p class="level0">The <a Class="emphasis" href="./CURLOPT_PASSWORD.html">CURLOPT_PASSWORD</a> option should be used in conjunction with the <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 760f360..7ee12c9 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PASSWORD.pdf and b/docs/libcurl/opts/CURLOPT_PASSWORD.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
new file mode 100644 (file)
index 0000000..490aca0
--- /dev/null
@@ -0,0 +1,63 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at 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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PATH_AS_IS 3 "17 Jun 2014" "libcurl 7.42.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PATH_AS_IS, long leaveit);
+.SH DESCRIPTION
+By setting the long \fIleavit\fP to 1, to explicitly tell libcurl to not alter
+the given path before passing it on to the server.
+
+This tells libcurl to NOT squash sequences of "/../" or "/./" that may exist
+in the URL's path part and that is supposed to be removed according to RFC
+3986 section 5.2.4.
+
+Some server implementations are known to (erroneously) require the dot dot
+sequences to remain in the path and some clients want to pass these on in
+order to try out server implementations.
+
+By default libcurl will merge such sequences before using the path.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All 
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/../../etc/password");
+
+  curl_easy_setopt(curl, CURLOPT_PATH_AS_IS, 1L);
+
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Aded in 7.42.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.html b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.html
new file mode 100644 (file)
index 0000000..1d54f01
--- /dev/null
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PATH_AS_IS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PATH_AS_IS - do not handle dot dot sequences <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PATH_AS_IS, long leaveit); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">By setting the long <span Class="emphasis">leavit</span> to 1, to explicitly tell libcurl to not alter the given path before passing it on to the server. 
+<p class="level0">This tells libcurl to NOT squash sequences of "/../" or "/./" that may exist in the URL's path part and that is supposed to be removed according to RFC 3986 section 5.2.4. 
+<p class="level0">Some server implementations are known to (erroneously) require the dot dot sequences to remain in the path and some clients want to pass these on in order to try out server implementations. 
+<p class="level0">By default libcurl will merge such sequences before using the path. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All  <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com/../../etc/password">http://example.com/../../etc/password</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_PATH_AS_IS, 1L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Aded in 7.42.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.pdf b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.pdf
new file mode 100644 (file)
index 0000000..2e6c2d6
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
new file mode 100644 (file)
index 0000000..0d4357a
--- /dev/null
@@ -0,0 +1,87 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at 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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PINNEDPUBLICKEY 3 "27 Aug 2014" "libcurl 7.38.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PINNEDPUBLICKEY \- set pinned public key
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char *pinnedpubkey);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. The string can be the
+file name of your pinned public key. The file format expected is "PEM" or "DER".
+The string can also be any number of base64 encoded sha256 hashes preceded by
+"sha256//" and seperated by ";"
+
+When negotiating a TLS or SSL connection, the server sends a certificate
+indicating its identity. A public key is extracted from this certificate and
+if it does not exactly match the public key provided to this option, curl will
+abort the connection before sending or receiving any data.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+  curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "/etc/publickey.der");
+  /* OR
+  curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "sha256//YhKJKSzoTt2b5FP18fvpHo7fJYqQCjAa3HWY3tvRMwE=;sha256//t62CeU2tQiqkexU74Gxa2eg7fRbEgoChTociMee9wno=");
+  */
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.fi
+.SH PUBLIC KEY EXTRACTION
+If you do not have the server's public key file you can extract it from the
+server's certificate.
+.nf
+# extract public key in pem format from certificate
+openssl x509 -in www.test.com.pem -pubkey -noout > www.test.com.pubkey.pem
+# convert public key from pem to der
+openssl asn1parse -noout -inform pem -in www.test.com.pubkey.pem -out www.test.com.pubkey.der
+# sha256 hash and base64 encode der to string for use
+openssl dgst -sha256 -binary www.test.com.pubkey.der | openssl base64
+.fi
+The public key in PEM format contains a header, base64 data and a
+footer:
+.nf
+-----BEGIN PUBLIC KEY-----
+[BASE 64 DATA]
+-----END PUBLIC KEY-----
+.fi
+.SH AVAILABILITY
+Added in 7.39.0 for OpenSSL, GnuTLS and GSKit. Added in 7.43.0 for
+NSS and wolfSSL/CyaSSL. sha256 support added in 7.44.0 for OpenSSL,
+GnuTLS, NSS and wolfSSL/CyaSSL. Other SSL backends not supported.
+.SH RETURN VALUE
+Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_SSL_VERIFYPEER "(3), "
+.BR CURLOPT_SSL_VERIFYHOST "(3), "
+.BR CURLOPT_CAINFO "(3), "
+.BR CURLOPT_CAPATH "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.html b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.html
new file mode 100644 (file)
index 0000000..b0f5e63
--- /dev/null
@@ -0,0 +1,96 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PINNEDPUBLICKEY man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PINNEDPUBLICKEY - set pinned public key <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char *pinnedpubkey); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. The string can be the file name of your pinned public key. The file format expected is "PEM" or "DER". The string can also be any number of base64 encoded sha256 hashes preceded by "sha256//" and seperated by ";" 
+<p class="level0">When negotiating a TLS or SSL connection, the server sends a certificate indicating its identity. A public key is extracted from this certificate and if it does not exactly match the public key provided to this option, curl will abort the connection before sending or receiving any data. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+&nbsp; curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "/etc/publickey.der");
+&nbsp; /* OR
+&nbsp; curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "sha256//YhKJKSzoTt2b5FP18fvpHo7fJYqQCjAa3HWY3tvRMwE=;sha256//t62CeU2tQiqkexU74Gxa2eg7fRbEgoChTociMee9wno=");
+&nbsp; */
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="PUBLIC"></a><h2 class="nroffsh">PUBLIC KEY EXTRACTION</h2>
+<p class="level0">If you do not have the server's public key file you can extract it from the server's certificate. <pre class="level0">
+&#35; extract public key in pem format from certificate
+openssl x509 -in www.test.com.pem -pubkey -noout &gt; www.test.com.pubkey.pem
+&#35; convert public key from pem to der
+openssl asn1parse -noout -inform pem -in www.test.com.pubkey.pem -out www.test.com.pubkey.der
+&#35; sha256 hash and base64 encode der to string for use
+openssl dgst -sha256 -binary www.test.com.pubkey.der | openssl base64
+</pre>
+
+<p class="level0">The public key in PEM format contains a header, base64 data and a footer: <pre class="level0">
+-----BEGIN PUBLIC KEY-----
+[BASE 64 DATA]
+-----END PUBLIC KEY-----
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.39.0 for OpenSSL, GnuTLS and GSKit. Added in 7.43.0 for NSS and wolfSSL/CyaSSL. sha256 support added in 7.44.0 for OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL. Other SSL backends not supported. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_CAPATH.html">CURLOPT_CAPATH</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.pdf b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.pdf
new file mode 100644 (file)
index 0000000..3b77059
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
new file mode 100644 (file)
index 0000000..5f64195
--- /dev/null
@@ -0,0 +1,63 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at 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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PIPEWAIT 3 "12 May 2015" "libcurl 7.43.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PIPEWAIT, long wait);
+.SH DESCRIPTION
+Set \fIwait\fP to 1L to tell libcurl to prefer to wait for a connection to
+confirm or deny that it can do pipelining or multiplexing before continuing.
+
+When about to perform a new transfer that allows pipelining or multiplexing,
+libcurl will check for existing connections to re-use and pipeline on. If no
+such connection exists it will immediately continue and create a fresh new
+connection to use.
+
+By setting this option to 1 - and having \fICURLMOPT_PIPELINE\fP enabled for
+the multi handle this transfer is associated with - libcurl will instead wait
+for the connection to reveal if it is possible to pipeline/multiplex on before
+it continues. This enables libcurl to much better keep the number of
+connections to a minimum when using pipelining or multiplexing protocols.
+
+The effect thus becomes that with this option set, libcurl prefers to wait and
+re-use an existing connection for pipelining rather than the opposite: prefer
+to open a new connection rather than waiting.
+
+The waiting time is as long as it takes for the connection to get up and for
+libcurl to get the necessary response back that informs it about its protocol
+and support level.
+.SH DEFAULT
+0 (off)
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+.SH AVAILABILITY
+Added in 7.43.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_FORBID_REUSE "(3), " CURLOPT_FRESH_CONNECT "(3), "
+.BR CURLMOPT_PIPELINING "(3), " CURLMOPT_MAX_HOST_CONNECTIONS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PIPEWAIT.html b/docs/libcurl/opts/CURLOPT_PIPEWAIT.html
new file mode 100644 (file)
index 0000000..b266c5e
--- /dev/null
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PIPEWAIT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PIPEWAIT - wait for pipelining/multiplexing <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PIPEWAIT, long wait); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set <span Class="emphasis">wait</span> to 1L to tell libcurl to prefer to wait for a connection to confirm or deny that it can do pipelining or multiplexing before continuing. 
+<p class="level0">When about to perform a new transfer that allows pipelining or multiplexing, libcurl will check for existing connections to re-use and pipeline on. If no such connection exists it will immediately continue and create a fresh new connection to use. 
+<p class="level0">By setting this option to 1 - and having <span Class="emphasis">CURLMOPT_PIPELINE</span> enabled for the multi handle this transfer is associated with - libcurl will instead wait for the connection to reveal if it is possible to pipeline/multiplex on before it continues. This enables libcurl to much better keep the number of connections to a minimum when using pipelining or multiplexing protocols. 
+<p class="level0">The effect thus becomes that with this option set, libcurl prefers to wait and re-use an existing connection for pipelining rather than the opposite: prefer to open a new connection rather than waiting. 
+<p class="level0">The waiting time is as long as it takes for the connection to get up and for libcurl to get the necessary response back that informs it about its protocol and support level. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 (off) <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.43.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FORBID_REUSE.html">CURLOPT_FORBID_REUSE</a>, <a Class="manpage" href="./CURLOPT_FRESH_CONNECT.html">CURLOPT_FRESH_CONNECT</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a>, <a Class="manpage" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PIPEWAIT.pdf b/docs/libcurl/opts/CURLOPT_PIPEWAIT.pdf
new file mode 100644 (file)
index 0000000..0132620
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PIPEWAIT.pdf differ
index 4154014..1358803 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PORT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PORT - set remote port number to work with <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This option sets <span Class="emphasis">number</span> to be the remote port number to connect to, instead of the one specified in the URL or the default port for the used protocol. 
 <p class="level0">Usually, you just let the URL decide which port to use but this allows the application to override that. 
index 9a9bb46..860b8b8 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PORT.pdf and b/docs/libcurl/opts/CURLOPT_PORT.pdf differ
index bc7dcd1..bb92037 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_POST man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_POST - request a HTTP POST <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POST, long post); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">A parameter set to 1 tells libcurl to do a regular HTTP post. This will also make the library use a "Content-Type: application/x-www-form-urlencoded" header. (This is by far the most commonly used POST method). 
 <p class="level0">Use one of <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> or <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a> options to specify what data to post and <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a> or <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE_LARGE.html">CURLOPT_POSTFIELDSIZE_LARGE</a> to set the data size. 
index 8e0e966..c2ce020 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_POST.pdf and b/docs/libcurl/opts/CURLOPT_POST.pdf differ
index d559143..27e4510 100644 (file)
@@ -44,6 +44,9 @@ used by HTML forms. Change Content-Type with \fICURLOPT_HTTPHEADER(3)\fP.
 
 Using \fICURLOPT_POSTFIELDS(3)\fP implies \fICURLOPT_POST(3)\fP.
 
+You can use \fIcurl_easy_escape(3)\fP to url-encode your data, if necessary. It
+returns a pointer to an encoded string that can be passed as \fIpostdata\fP.
+
 If you want to do a zero-byte POST, you need to set
 \fICURLOPT_POSTFIELDSIZE(3)\fP explicitly to zero, as simply setting
 \fICURLOPT_POSTFIELDS(3)\fP to NULL or "" just effectively disables the
index 3b998ef..d8fd439 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_POSTFIELDS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,29 +52,34 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_POSTFIELDS - specify data to POST to server <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, pointing to the full data to send in a HTTP POST operation. You must make sure that the data is formatted the way you want the server to receive it. libcurl will not convert or encode it for you in any way. For example, the web server may assume that this data is url-encoded. 
 <p class="level0">The data pointed to is NOT copied by the library: as a consequence, it must be preserved by the calling application until the associated transfer finishes. This behaviour can be changed (so libcurl does copy the data) by setting the <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a> option. 
 <p class="level0">This POST is a normal application/x-www-form-urlencoded kind (and libcurl will set that Content-Type by default when this option is used), which is commonly used by HTML forms. Change Content-Type with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. 
 <p class="level0">Using <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> implies <a Class="emphasis" href="./CURLOPT_POST.html">CURLOPT_POST</a>. 
+<p class="level0">You can use <span Class="emphasis">curl_easy_escape(3)</span> to url-encode your data, if necessary. It returns a pointer to an encoded string that can be passed as <span Class="emphasis">postdata</span>. 
 <p class="level0">If you want to do a zero-byte POST, you need to set <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a> explicitly to zero, as simply setting <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> to NULL or "" just effectively disables the sending of the specified string. libcurl will instead assume that you'll send the POST data using the read callback! 
 <p class="level0">Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> as usual. 
 <p class="level0">To make multipart/formdata posts (aka <a href="http://www.ietf.org/rfc/rfc2388.txt">RFC 2388</a>-posts), check out the <a Class="emphasis" href="./CURLOPT_HTTPPOST.html">CURLOPT_HTTPPOST</a> option combined with <span Class="emphasis">curl_formadd(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; const char *data = "data to send";
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* size of the POST data */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
- <p class="level0">&nbsp; /* pass in a pointer to the data - libcurl will not copy */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; const char *data = "data to send";
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* size of the POST data */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
+&nbsp;
+&nbsp; /* pass in a pointer to the data - libcurl will not copy */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 879a677..8e8644d 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_POSTFIELDS.pdf and b/docs/libcurl/opts/CURLOPT_POSTFIELDS.pdf differ
index ac4732b..7046668 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_POSTFIELDSIZE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,23 +52,27 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_POSTFIELDSIZE - size of POST data pointed to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">If you want to post data to the server without having libcurl do a strlen() to measure the data size, this option must be used. When this option is used you can post fully binary data, which otherwise is likely to fail. If this size is set to -1, the library will use strlen() to get the size. 
 <p class="level0">If you post more than 2GB, use <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE_LARGE.html">CURLOPT_POSTFIELDSIZE_LARGE</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">-1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; const char *data = "data to send";
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* size of the POST data */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) strlen(data));
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; const char *data = "data to send";
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* size of the POST data */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) strlen(data));
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 98043aa..ea991f3 100644 (file)
@@ -72,12 +72,12 @@ endobj
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:02+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:02+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-17393b2772b9' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-17393b2772b9' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:24+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:24+02:00</xmp:CreateDate>
 <xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9'/>
-<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-17393b2772b9' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:8216eefe-78d5-11f0-0000-17393b2772b9'/>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-17393b2772b9' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
@@ -86,9 +86,9 @@ endobj
 endstream
 endobj
 2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091802+01'00')
-/ModDate(D:20150108091802+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081124+02'00')
+/ModDate(D:20150812081124+02'00')
 /Creator(groff version 1.22.3)>>endobj
 xref
 0 15
@@ -109,7 +109,7 @@ xref
 0000001889 00000 n 
 trailer
 << /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<E7A069C89AE370A9D41735FF131F0C9F><E7A069C89AE370A9D41735FF131F0C9F>]
+/ID [<8BF561F8AF8B932CC4A2CD621BAF8816><8BF561F8AF8B932CC4A2CD621BAF8816>]
 >>
 startxref
 3466
index 322ee47..cd8901b 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_POSTFIELDSIZE_LARGE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,27 +52,32 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_POSTFIELDSIZE_LARGE - size of POST data pointed to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE_LARGE,
- &nbsp;                         curl_off_t size);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE_LARGE,
+&nbsp;                         curl_off_t size);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">If you want to post data to the server without having libcurl do a strlen() to measure the data size, this option must be used. When this option is used you can post fully binary data, which otherwise is likely to fail. If this size is set to -1, the library will use strlen() to get the size. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">-1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; const char *data = large_chunk;
- &nbsp; curl_off_t length_of_data; /* set somehow */
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* size of the POST data */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, length_of_data);
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; const char *data = large_chunk;
+&nbsp; curl_off_t length_of_data; /* set somehow */
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* size of the POST data */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, length_of_data);
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 53bb6bd..64330d4 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.pdf and b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.pdf differ
index ba8a206..027b74d 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_POSTQUOTE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_POSTQUOTE - (S)FTP commands to run after the transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTQUOTE, struct curl_slist *cmds); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a linked list of FTP or SFTP commands to pass to the server after your FTP transfer request. The commands will only be run if no error occurred. The linked list should be a fully valid list of struct curl_slist structs properly filled in as described for <a Class="emphasis" href="./CURLOPT_QUOTE.html">CURLOPT_QUOTE</a>. 
 <p class="level0">Disable this operation again by setting a NULL to this option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 7ee5b9b..a967487 100644 (file)
@@ -70,12 +70,12 @@ endobj
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:03+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:03+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-56fc4828454a' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-56fc4828454a' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:24+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:24+02:00</xmp:CreateDate>
 <xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a'/>
-<rdf:Description rdf:about='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-56fc4828454a' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:8216eefe-78d5-11f0-0000-56fc4828454a'/>
+<rdf:Description rdf:about='uuid:8216eefe-78d5-11f0-0000-56fc4828454a' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
@@ -84,9 +84,9 @@ endobj
 endstream
 endobj
 2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091803+01'00')
-/ModDate(D:20150108091803+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081124+02'00')
+/ModDate(D:20150812081124+02'00')
 /Creator(groff version 1.22.3)>>endobj
 xref
 0 15
@@ -107,7 +107,7 @@ xref
 0000001843 00000 n 
 trailer
 << /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<6D18367D1B659C0775060C32CB00322E><6D18367D1B659C0775060C32CB00322E>]
+/ID [<ED9B25888E54BDFB04922D9C185068C8><ED9B25888E54BDFB04922D9C185068C8>]
 >>
 startxref
 3420
index f4b8ffe..0400059 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_POSTREDIR man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,28 +52,32 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_POSTREDIR - how to act on a HTTP POST redirect <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTREDIR,
- &nbsp;                         long bitmask);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTREDIR,
+&nbsp;                         long bitmask);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a bitmask to control how libcurl acts on redirects after POSTs that get a 301, 302 or 303 response back.  A parameter with bit 0 set (value <span Class="bold">CURL_REDIR_POST_301</span>) tells the library to respect <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a>/10.3.2 and not convert POST requests into GET requests when following a 301 redirection. Setting bit 1 (value <span Class="bold">CURL_REDIR_POST_302</span>) makes libcurl maintain the request method after a 302 redirect whilst setting bit 2 (value <span Class="bold">CURL_REDIR_POST_303</span>) makes libcurl maintain the request method after a 303 redirect. The value <span Class="bold">CURL_REDIR_POST_ALL</span> is a convenience define that sets all three bits. 
 <p class="level0">The non-RFC behaviour is ubiquitous in web browsers, so the library does the conversion by default to maintain consistency. However, a server may require a POST to remain a POST after such a redirection. This option is meaningful only when setting <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* a silly POST example */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data=true");
- <p class="level0">&nbsp; /* example.com is redirected, so we tell libcurl to send POST on 301, 302 and
- &nbsp;    303 HTTP response codes */
- &nbsp; curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* a silly POST example */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data=true");
+&nbsp;
+&nbsp; /* example.com is redirected, so we tell libcurl to send POST on 301, 302 and
+&nbsp;    303 HTTP response codes */
+&nbsp; curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.17.1. This option was known as CURLOPT_POST301 up to 7.19.0 as it only supported the 301 then. CURL_REDIR_POST_303 was added in 7.26.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 513682a..e371271 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_POSTREDIR.pdf and b/docs/libcurl/opts/CURLOPT_POSTREDIR.pdf differ
index f74c660..b0c9a30 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PREQUOTE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PREQUOTE - commands to run before FTP or SFTP transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PREQUOTE, char *cmds); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a linked list of FTP or SFTP commands to pass to the server after the transfer type is set. The linked list should be a fully valid list of struct curl_slist structs properly filled in as described for <a Class="emphasis" href="./CURLOPT_QUOTE.html">CURLOPT_QUOTE</a>. Disable this operation again by setting a NULL to this option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 60ae8e4..ca9c5a1 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PREQUOTE.pdf and b/docs/libcurl/opts/CURLOPT_PREQUOTE.pdf differ
index bdb11cf..9907f97 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -37,7 +37,22 @@ NULL
 .SH PROTOCOLS
 All
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+struct private secrets;
+if(curl) {
+  struct private *extracted;
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* store a pointer to our private struct */
+  curl_easy_setopt(curl, CURLOPT_PRIVATE, &secrets);
+
+  curl_easy_perform(curl);
+
+  /* we can extract the private pointer again too */
+  curl_easy_getinfo(curl, CURLINFO_PRIVATE, &extracted);
+}
+.fi
 .SH AVAILABILITY
 Added in 7.10.3
 .SH RETURN VALUE
index 165f333..2be9405 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PRIVATE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,29 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PRIVATE - store a private pointer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRIVATE, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a void * as parameter, pointing to data that should be associated with this curl handle.  The pointer can subsequently be retrieved using <span Class="emphasis">curl_easy_getinfo(3)</span> with the CURLINFO_PRIVATE option. libcurl itself never does nothing with this data. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+struct private secrets;
+if(curl) {
+&nbsp; struct private *extracted;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* store a pointer to our private struct */
+&nbsp; curl_easy_setopt(curl, CURLOPT_PRIVATE, &secrets);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+&nbsp;
+&nbsp; /* we can extract the private pointer again too */
+&nbsp; curl_easy_getinfo(curl, CURLINFO_PRIVATE, &extracted);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.10.3 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a>, <a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <span Class="manpage"> </span> <p class="roffit">
index 6d0c6d4..1cf43d5 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PRIVATE.pdf and b/docs/libcurl/opts/CURLOPT_PRIVATE.pdf differ
index cd73126..8a8a94b 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PROGRESSDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PROGRESSDATA - custom pointer passed to the progress callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the progress callback set with <a Class="emphasis" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">The default value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index efd9226..ba2a7db 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.pdf and b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.pdf differ
index 489cd70..2cd791d 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PROGRESSFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PROGRESSFUNCTION - callback to progress meter function <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">int progress_callback(void *clientp, &nbsp;                     double dltotal, &nbsp;                     double dlnow, &nbsp;                     double ultotal, &nbsp;                     double ulnow); 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSFUNCTION, progress_callback); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
index dc418fe..656e09f 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.pdf differ
index b2eae23..a5ef7f3 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PROTOCOLS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,54 +52,56 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PROTOCOLS - set allowed protocols <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask limits what protocols libcurl may use in the transfer. This allows you to have a libcurl built to support a wide range of protocols but still limit specific transfers to only be allowed to use a subset of them. By default libcurl will accept all protocols it supports (<span Class="emphasis">CURLPROTO_ALL</span>). See also <a Class="emphasis" href="./CURLOPT_REDIR_PROTOCOLS.html">CURLOPT_REDIR_PROTOCOLS</a>. 
-<p class="level0">These are the available protocol defines: <pre>
-<p class="level0">CURLPROTO_DICT
- CURLPROTO_FILE
- CURLPROTO_FTP
- CURLPROTO_FTPS
- CURLPROTO_GOPHER
- CURLPROTO_HTTP
- CURLPROTO_HTTPS
- CURLPROTO_IMAP
- CURLPROTO_IMAPS
- CURLPROTO_LDAP
- CURLPROTO_LDAPS
- CURLPROTO_POP3
- CURLPROTO_POP3S
- CURLPROTO_RTMP
- CURLPROTO_RTMPE
- CURLPROTO_RTMPS
- CURLPROTO_RTMPT
- CURLPROTO_RTMPTE
- CURLPROTO_RTMPTS
- CURLPROTO_RTSP
- CURLPROTO_SCP
- CURLPROTO_SFTP
- CURLPROTO_SMB
- CURLPROTO_SMTP
- CURLPROTO_SMTPS
- CURLPROTO_TELNET
- CURLPROTO_TFTP
- </pre>
+<p class="level0">These are the available protocol defines: <pre class="level0">
+CURLPROTO_DICT
+CURLPROTO_FILE
+CURLPROTO_FTP
+CURLPROTO_FTPS
+CURLPROTO_GOPHER
+CURLPROTO_HTTP
+CURLPROTO_HTTPS
+CURLPROTO_IMAP
+CURLPROTO_IMAPS
+CURLPROTO_LDAP
+CURLPROTO_LDAPS
+CURLPROTO_POP3
+CURLPROTO_POP3S
+CURLPROTO_RTMP
+CURLPROTO_RTMPE
+CURLPROTO_RTMPS
+CURLPROTO_RTMPT
+CURLPROTO_RTMPTE
+CURLPROTO_RTMPTS
+CURLPROTO_RTSP
+CURLPROTO_SCP
+CURLPROTO_SFTP
+CURLPROTO_SMB
+CURLPROTO_SMTP
+CURLPROTO_SMTPS
+CURLPROTO_TELNET
+CURLPROTO_TFTP
+</pre>
 
 <p class="level0"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">All protocols built-in <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; /* pass in the URL from an external source */
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
- <p class="level0">&nbsp; /* only allow HTTP, TFTP and SFTP */
- &nbsp; curl_easy_setopt(curl, CURLOPT_PROTOCOLS,
- &nbsp;                  CURLPROTO_HTTP | CURLPROTO_TFTP | CURLPROTO_SFTP);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+curl = curl_easy_init();
+if(curl) {
+&nbsp; /* pass in the URL from an external source */
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
+&nbsp;
+&nbsp; /* only allow HTTP, TFTP and SFTP */
+&nbsp; curl_easy_setopt(curl, CURLOPT_PROTOCOLS,
+&nbsp;                  CURLPROTO_HTTP | CURLPROTO_TFTP | CURLPROTO_SFTP);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.19.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 45587f3..309fa43 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PROTOCOLS.pdf and b/docs/libcurl/opts/CURLOPT_PROTOCOLS.pdf differ
index d37676a..ff3de62 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PROXY man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PROXY - set proxy to use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Set the <span Class="emphasis">proxy</span> to use for the upcoming request. The parameter should be a char * to a zero terminated string holding the host name or dotted IP address. 
 <p class="level0">To specify port number in this string, append :[port] to the end of the host name. The proxy's port number may optionally be specified with the separate option <a Class="emphasis" href="./CURLOPT_PROXYPORT.html">CURLOPT_PROXYPORT</a>. If not specified, libcurl will default to using port 1080 for proxies. 
index 76ace30..d8d8291 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PROXY.pdf and b/docs/libcurl/opts/CURLOPT_PROXY.pdf differ
index e7d050e..29fbac9 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PROXYAUTH man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PROXYAUTH - set HTTP proxy authentication methods to try <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYAUTH, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter, which is set to a bitmask, to tell libcurl which HTTP 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 <a Class="emphasis" href="./CURLOPT_PROXYUSERPWD.html">CURLOPT_PROXYUSERPWD</a> option. 
 <p class="level0">The bitmask can be constructed by or'ing together the bits fully listed and described in the <a Class="emphasis" href="./CURLOPT_HTTPAUTH.html">CURLOPT_HTTPAUTH</a> man page. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 377a5c4..38d3fc7 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PROXYAUTH.pdf and b/docs/libcurl/opts/CURLOPT_PROXYAUTH.pdf differ
index 8c14363..8e630f8 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PROXYHEADER man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PROXYHEADER - custom HTTP headers to pass to proxy <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYHEADER,
- &nbsp;                         struct curl_slist *headers);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYHEADER,
+&nbsp;                         struct curl_slist *headers);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a linked list of HTTP headers to pass in your HTTP request sent to a proxy. The rules for this list is identical to the <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> option's. 
 <p class="level0">The headers set with this option is only ever used in requests sent to a proxy - when there's also a request sent to a host. 
index 07ff613..93d9bd5 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PROXYHEADER.pdf and b/docs/libcurl/opts/CURLOPT_PROXYHEADER.pdf differ
index f41b4f0..5bafeb9 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PROXYPASSWORD man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PROXYPASSWORD - password to use with proxy authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPASSWORD, char *pwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated password to use for authentication with the proxy. 
 <p class="level0">The <a Class="emphasis" href="./CURLOPT_PROXYPASSWORD.html">CURLOPT_PROXYPASSWORD</a> option should be used in conjunction with the <a Class="emphasis" href="./CURLOPT_PROXYUSERNAME.html">CURLOPT_PROXYUSERNAME</a> option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 025758f..1f50795 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.pdf and b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.pdf differ
index e065f33..3e2c81f 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PROXYPORT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PROXYPORT - port number the proxy listens on <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPORT, long port); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long with this option to set the proxy port to connect to unless it is specified in the proxy string <a Class="emphasis" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a> or uses the default one. 
 <p class="level0">While this accepts a 'long', the port number is 16 bit so it can't be larger than 65535. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 4d66079..351bb8e 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PROXYPORT.pdf and b/docs/libcurl/opts/CURLOPT_PROXYPORT.pdf differ
index 2f45432..5ee0cf5 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PROXYTYPE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PROXYTYPE - proxy protocol type <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYTYPE, long type); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long with this option to set type of the proxy. Available options for this are <span Class="emphasis">CURLPROXY_HTTP</span>, <span Class="emphasis">CURLPROXY_HTTP_1_0</span> <span Class="emphasis">CURLPROXY_SOCKS4</span>, <span Class="emphasis">CURLPROXY_SOCKS5</span>, <span Class="emphasis">CURLPROXY_SOCKS4A</span> and <span Class="emphasis">CURLPROXY_SOCKS5_HOSTNAME</span>. The HTTP type is default. 
 <p class="level0">If you set <a Class="bold" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a> to <span Class="emphasis">CURLPROXY_HTTP_1_0</span>, it will only affect how libcurl speaks to a proxy when CONNECT is used. The HTTP version used for "regular" HTTP requests is instead controlled with <a Class="emphasis" href="./CURLOPT_HTTP_VERSION.html">CURLOPT_HTTP_VERSION</a>. 
index c5a8e40..d31cc97 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PROXYTYPE.pdf and b/docs/libcurl/opts/CURLOPT_PROXYTYPE.pdf differ
index 04e8263..f7c98db 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PROXYUSERNAME man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PROXYUSERNAME - user name to use for proxy authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERNAME,
- &nbsp;                         char *username);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERNAME,
+&nbsp;                         char *username);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated user name to use for the transfer. 
 <p class="level0"><a Class="bold" href="./CURLOPT_PROXYUSERNAME.html">CURLOPT_PROXYUSERNAME</a> sets the user name to be used in protocol authentication with the proxy. 
index 03f7611..0573e8f 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.pdf and b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.pdf differ
index ecd301c..0c71103 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PROXYUSERPWD man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PROXYUSERPWD - user name and password to use for proxy authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERPWD, char *userpwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, which should be [user name]:[password] to use for the connection to the HTTP proxy. Both the name and the password will be URL decoded before use, so to include for example a colon in the user name you should encode it as %3A. (This is different to how <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> is used - beware.) 
 <p class="level0">Use <a Class="emphasis" href="./CURLOPT_PROXYAUTH.html">CURLOPT_PROXYAUTH</a> to specify the authentication method. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index c99bf94..7682c09 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.pdf and b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
new file mode 100644 (file)
index 0000000..a6224fb
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at 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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROXY_SERVICE_NAME 3 "17 Jun 2015" "libcurl 7.43.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROXY_SERVICE_NAME \- proxy service name
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME, char *name);
+.SH DESCRIPTION
+Pass a char * as parameter to a string holding the \fIname\fP of the
+service. The default service name is "HTTP". This option allows you to change it.
+..SH DEFAULT
+See above
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.43.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_PROXY "(3), " CURLOPT_PROXYTYPE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.html b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.html
new file mode 100644 (file)
index 0000000..4d0329e
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROXY_SERVICE_NAME man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROXY_SERVICE_NAME - proxy service name <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME, char *name); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter to a string holding the <span Class="emphasis">name</span> of the service. The default service name is "HTTP". This option allows you to change it. 
+<p class="level0">See above <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.43.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <a Class="manpage" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.pdf b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.pdf
new file mode 100644 (file)
index 0000000..19a9905
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.pdf differ
index ae3f30a..65b97dd 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PROXY_TRANSFER_MODE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PROXY_TRANSFER_MODE - append FTP transfer mode to URL for proxy <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TRANSFER_MODE, long enabled); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. If the value is set to 1 (one), it tells libcurl to set the transfer mode (binary or ASCII) for FTP transfers done via a HTTP proxy, by appending ;type=a or ;type=i to the URL. Without this setting, or it being set to 0 (zero, the default), <a Class="emphasis" href="./CURLOPT_TRANSFERTEXT.html">CURLOPT_TRANSFERTEXT</a> has no effect when doing FTP via a proxy. Beware that not all proxies support this feature. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index d21dcf7..9d63f29 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.pdf and b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.pdf differ
index 1000cc7..c964743 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_PUT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_PUT - make a HTTP PUT request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PUT, long put); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">A parameter set to 1 tells the library to use HTTP PUT to transfer data. The data should be set with <a Class="emphasis" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a> and <a Class="emphasis" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a>. 
 <p class="level0">This option is <span Class="bold">deprecated</span> since version 7.12.1. Use <a Class="emphasis" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>! <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index d5f4626..e926ddb 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_PUT.pdf and b/docs/libcurl/opts/CURLOPT_PUT.pdf differ
index 91549af..ca310bb 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_QUOTE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_QUOTE - (S)FTP commands to run before transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_QUOTE, struct curl_slist *cmds); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a linked list of FTP or SFTP commands to pass to the server prior to your request. This will be done before any other commands are issued (even before the CWD command for FTP). The linked list should be a fully valid list of 'struct curl_slist' structs properly filled in with text strings. Use <span Class="emphasis">curl_slist_append(3)</span> to append strings (commands) to the list, and clear the entire list afterwards with <span Class="emphasis">curl_slist_free_all(3)</span>. Disable this operation again by setting a NULL to this option. When speaking to a FTP server, prefix the command with an asterisk (*) to make libcurl continue even if the command fails as by default libcurl will stop at first failure. 
 <p class="level0">The set of valid FTP commands depends on the server (see <a href="http://www.ietf.org/rfc/rfc959.txt">RFC 959</a> for a list of mandatory commands). 
index 76550af..b2dda69 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_QUOTE.pdf and b/docs/libcurl/opts/CURLOPT_QUOTE.pdf differ
index 2b81b5e..fb34ccb 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_RANDOM_FILE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_RANDOM_FILE - specify a source for random data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANDOM_FILE, char *path); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * to a zero terminated file name. The file will be used to read from to seed the random engine for SSL and more. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL, not used <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 5f8a5ac..29efb23 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.pdf and b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.pdf differ
index c256da8..89da714 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_RANGE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,23 +52,25 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_RANGE - set byte range to request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANGE, char *range); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, which should contain the specified range you want to retrieve. It should be in the format "X-Y", where either X or Y may be left out and X and Y are byte indexes. 
 <p class="level0">HTTP transfers also support several intervals, separated with commas as in <span Class="emphasis">"X-Y,N-M"</span>. 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 <a href="http://www.ietf.org/rfc/rfc2326.txt">RFC 2326</a> Section 12.29. For RTSP, byte ranges are <span Class="bold">not</span> permitted. Instead, ranges should be given in npt, utc, or smpte formats. 
 <p class="level0">Pass a NULL to this option to disable the use of ranges. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP, FTP, FILE, RTSP and SFTP. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* get the first 200 bytes */
- &nbsp; curl_easy_setopt(curl, CURLOPT_RANGE, "0-199");
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* get the first 200 bytes */
+&nbsp; curl_easy_setopt(curl, CURLOPT_RANGE, "0-199");
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">FILE since 7.18.0, RTSP since 7.20.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 196f75d..e0a132a 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_RANGE.pdf and b/docs/libcurl/opts/CURLOPT_RANGE.pdf differ
index db66631..a67f415 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -42,7 +42,19 @@ By default, this is a FILE * to stdin.
 .SH PROTOCOLS
 This is used for all protocols when sending data.
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+struct MyData this;
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* pass pointer that gets passed in to the
+     CURLOPT_READFUNCTION callback */
+  curl_easy_setopt(curl, CURLOPT_READDATA, &this);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 This option was once known by the older name \fICURLOPT_INFILE\fP, the name
 \fICURLOPT_READDATA\fP was introduced in 7.9.7.
index cb372fc..42642c6 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_READDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,14 +52,28 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_READDATA - custom pointer passed to the read callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Data <span Class="emphasis">pointer</span> to pass to the file read function. If you use the <a Class="emphasis" href="./CURLOPT_READFUNCTION.html">CURLOPT_READFUNCTION</a> option, this is the pointer you'll get as input in the 4th argument to the callback. 
 <p class="level0">If you don't specify a read callback but instead rely on the default internal read function, this data must be a valid readable FILE * (cast to 'void *'). 
 <p class="level0">If you're using libcurl as a win32 DLL, you MUST use a <a Class="emphasis" href="./CURLOPT_READFUNCTION.html">CURLOPT_READFUNCTION</a> if you set this option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">By default, this is a FILE * to stdin. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">This is used for all protocols when sending data. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+struct MyData this;
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* pass pointer that gets passed in to the
+&nbsp;    CURLOPT_READFUNCTION callback */
+&nbsp; curl_easy_setopt(curl, CURLOPT_READDATA, &this);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This option was once known by the older name <span Class="emphasis">CURLOPT_INFILE</span>, the name <span Class="emphasis">CURLOPT_READDATA</span> was introduced in 7.9.7. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">This will return CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_READFUNCTION.html">CURLOPT_READFUNCTION</a>, <a Class="manpage" href="./CURLOPT_WRITEDATA.html">CURLOPT_WRITEDATA</a>, <span Class="manpage"> </span> <p class="roffit">
index c23376d..f974e1c 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_READDATA.pdf and b/docs/libcurl/opts/CURLOPT_READDATA.pdf differ
index 79139ad..edd9bdb 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -34,9 +34,10 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READFUNCTION, read_callback);
 Pass a pointer to your callback function, as the prototype shows above.
 
 This callback function gets called by libcurl as soon as it needs to read data
-in order to send it to the peer. The data area pointed at by the pointer
-\fIbuffer\fP should be filled up with at most \fIsize\fP multiplied with
-\fInmemb\fP number of bytes by your function.
+in order to send it to the peer - like if you ask it to upload or post data to
+the server. The data area pointed at by the pointer \fIbuffer\fP should be
+filled up with at most \fIsize\fP multiplied with \fInmemb\fP number of bytes
+by your function.
 
 Your function must then return the actual number of bytes that it stored in
 that memory area. Returning 0 will signal end-of-file to the library and cause
@@ -75,4 +76,4 @@ was added in 7.12.1.
 This will return CURLE_OK.
 .SH "SEE ALSO"
 .BR CURLOPT_READDATA "(3), " CURLOPT_WRITEFUNCTION "(3), "
-.BR CURLOPT_SEEKFUNCTION "(3), "
+.BR CURLOPT_SEEKFUNCTION "(3), " CURLOPT_UPLOAD "(3), " CURLOPT_POST "(3), "
index e1e88dd..aeac9bd 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_READFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_READFUNCTION - read callback for data uploads <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">size_t read_callback(char *buffer, size_t size, size_t nitems, void *instream); 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READFUNCTION, read_callback); 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, as the prototype shows above. 
-<p class="level0">This callback function gets called by libcurl as soon as it needs to read data in order to send it to the peer. The data area pointed at by the pointer <span Class="emphasis">buffer</span> should be filled up with at most <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span> number of bytes by your function. 
+<p class="level0">This callback function gets called by libcurl as soon as it needs to read data in order to send it to the peer - like if you ask it to upload or post data to the server. The data area pointed at by the pointer <span Class="emphasis">buffer</span> should be filled up with at most <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span> number of bytes by your function. 
 <p class="level0">Your function must then return the actual number of bytes that it stored in that memory area. Returning 0 will signal end-of-file to the library and cause it to stop the current transfer. 
 <p class="level0">If you stop the current transfer by returning 0 "pre-maturely" (i.e before the server expected it, like when you've said you will upload N bytes and you upload less than N bytes), you may experience that the server "hangs" waiting for the rest of the data that won't come. 
 <p class="level0">The read callback may return <span Class="emphasis">CURL_READFUNC_ABORT</span> to stop the current operation immediately, resulting in a <span Class="emphasis">CURLE_ABORTED_BY_CALLBACK</span> error code from the transfer. 
@@ -64,6 +69,6 @@ p.roffit {
 <p class="level0">Here's an example setting a read callback for reading that to upload to an FTP site: <a href="http://curl.haxx.se/libcurl/c/ftpupload.html">http://curl.haxx.se/libcurl/c/ftpupload.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">CURL_READFUNC_PAUSE return code was added in 7.18.0 and CURL_READFUNC_ABORT was added in 7.12.1. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">This will return CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a Class="manpage" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a>, <a Class="manpage" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_SEEKFUNCTION.html">CURLOPT_SEEKFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a>, <a Class="manpage" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_SEEKFUNCTION.html">CURLOPT_SEEKFUNCTION</a>, <a Class="manpage" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>, <a Class="manpage" href="./CURLOPT_POST.html">CURLOPT_POST</a>, <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 7926845..1f1fb1f 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_READFUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_READFUNCTION.pdf differ
index 58f8e28..80249a3 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_REDIR_PROTOCOLS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,54 +52,56 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_REDIR_PROTOCOLS - set protocols allowed to redirect to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask limits what protocols libcurl may use in a transfer that it follows to in a redirect when <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a> is enabled. This allows you to limit specific transfers to only be allowed to use a subset of protocols in redirections. By default libcurl will allow all protocols except for FILE and SCP. 
-<p class="level0">These are the available protocol defines: <pre>
-<p class="level0">CURLPROTO_DICT
- CURLPROTO_FILE
- CURLPROTO_FTP
- CURLPROTO_FTPS
- CURLPROTO_GOPHER
- CURLPROTO_HTTP
- CURLPROTO_HTTPS
- CURLPROTO_IMAP
- CURLPROTO_IMAPS
- CURLPROTO_LDAP
- CURLPROTO_LDAPS
- CURLPROTO_POP3
- CURLPROTO_POP3S
- CURLPROTO_RTMP
- CURLPROTO_RTMPE
- CURLPROTO_RTMPS
- CURLPROTO_RTMPT
- CURLPROTO_RTMPTE
- CURLPROTO_RTMPTS
- CURLPROTO_RTSP
- CURLPROTO_SCP
- CURLPROTO_SFTP
- CURLPROTO_SMB
- CURLPROTO_SMTP
- CURLPROTO_SMTPS
- CURLPROTO_TELNET
- CURLPROTO_TFTP
- </pre>
+<p class="level0">These are the available protocol defines: <pre class="level0">
+CURLPROTO_DICT
+CURLPROTO_FILE
+CURLPROTO_FTP
+CURLPROTO_FTPS
+CURLPROTO_GOPHER
+CURLPROTO_HTTP
+CURLPROTO_HTTPS
+CURLPROTO_IMAP
+CURLPROTO_IMAPS
+CURLPROTO_LDAP
+CURLPROTO_LDAPS
+CURLPROTO_POP3
+CURLPROTO_POP3S
+CURLPROTO_RTMP
+CURLPROTO_RTMPE
+CURLPROTO_RTMPS
+CURLPROTO_RTMPT
+CURLPROTO_RTMPTE
+CURLPROTO_RTMPTS
+CURLPROTO_RTSP
+CURLPROTO_SCP
+CURLPROTO_SFTP
+CURLPROTO_SMB
+CURLPROTO_SMTP
+CURLPROTO_SMTPS
+CURLPROTO_TELNET
+CURLPROTO_TFTP
+</pre>
 
 <p class="level0"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">All protocols except for FILE, SCP and SMB. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; /* pass in the URL from an external source */
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
- <p class="level0">&nbsp; /* only allow redirects to HTTP and HTTPS URLs */
- &nbsp; curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS,
- &nbsp;                  CURLPROTO_HTTP | CURLPROTO_HTTPS);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+curl = curl_easy_init();
+if(curl) {
+&nbsp; /* pass in the URL from an external source */
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
+&nbsp;
+&nbsp; /* only allow redirects to HTTP and HTTPS URLs */
+&nbsp; curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS,
+&nbsp;                  CURLPROTO_HTTP | CURLPROTO_HTTPS);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.19.4, before then it would follow all protocols. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index f5e3527..e702d15 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.pdf and b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.pdf differ
index d00019b..bcb1625 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -37,7 +37,17 @@ NULL
 .SH PROTOCOLS
 HTTP
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* tell it where we found the link to this place */
+  curl_easy_setopt(curl, CURLOPT_REFERER, "http://example.com/aboutme.html");
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 If built with HTTP support
 .SH RETURN VALUE
index d9dcbc6..733a8c8 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_REFERER man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,24 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_REFERER - set the HTTP referer header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REFERER, char *where); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used to set the Referer: header in the http request sent to the remote server. This can be used to fool servers or scripts. You can also set any custom header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* tell it where we found the link to this place */
+&nbsp; curl_easy_setopt(curl, CURLOPT_REFERER, "<a href="http://example.com/aboutme.html">http://example.com/aboutme.html</a>");
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">If built with HTTP support <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if HTTP support is enabled, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_USERAGENT.html">CURLOPT_USERAGENT</a>, <a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <span Class="manpage"> </span> <p class="roffit">
index c898926..18d4035 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_REFERER.pdf and b/docs/libcurl/opts/CURLOPT_REFERER.pdf differ
index 06a393a..4d34ed6 100644 (file)
@@ -51,7 +51,8 @@ entries.
 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.
+and port number must exactly match what was already added previously. (Added in
+7.42.0)
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
@@ -75,7 +76,7 @@ if(curl) {
 curl_slist_free_all(host);
 .fi
 .SH AVAILABILITY
-Added in 7.21.3
+Added in 7.21.3. Removal support added in 7.42.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index f3bd342..bec4d85 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_RESOLVE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,35 +52,39 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_RESOLVE - provide custom host name to IP address resolves <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVE,
- &nbsp;                         struct curl_slist *hosts);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVE,
+&nbsp;                         struct curl_slist *hosts);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">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 <span Class="bold">struct curl_slist</span> structs properly filled in. Use <span Class="emphasis">curl_slist_append(3)</span> to create the list and <span Class="emphasis">curl_slist_free_all(3)</span> to clean up an entire list. 
 <p class="level0">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. 
 <p class="level0">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. Addresses to set with <span Class="emphasis">CURL_RESOLVE</span> will not time-out from the DNS cache like ordinary entries. 
-<p class="level0">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. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">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.42.0) <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl;
- struct curl_slist *host = NULL;
- host = curl_slist_append(NULL, "example.com:80:127.0.0.1");
- <p class="level0">curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- &nbsp; res = curl_easy_perform(curl);
- <p class="level0">&nbsp; /* always cleanup */
- &nbsp; curl_easy_cleanup(curl);
- }
- <p class="level0">curl_slist_free_all(host);
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl;
+struct curl_slist *host = NULL;
+host = curl_slist_append(NULL, "example.com:80:127.0.0.1");
+&nbsp;
+curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp; res = curl_easy_perform(curl);
+&nbsp;
+&nbsp; /* always cleanup */
+&nbsp; curl_easy_cleanup(curl);
+}
+&nbsp;
+curl_slist_free_all(host);
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Added in 7.21.3 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Added in 7.21.3. Removal support added in 7.42.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_IPRESOLVE.html">CURLOPT_IPRESOLVE</a>, <a Class="manpage" href="./CURLOPT_DNS_CACHE_TIMEOUT.html">CURLOPT_DNS_CACHE_TIMEOUT</a>, <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
index ee832c9..7c19077 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_RESOLVE.pdf and b/docs/libcurl/opts/CURLOPT_RESOLVE.pdf differ
index 223d95a..a796529 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_RESUME_FROM man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,27 +52,31 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_RESUME_FROM - set a point to resume transfer from <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM, long from); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter. It contains the offset in number of bytes that you want the transfer to start from. Set this option to 0 to make the transfer start from the beginning (effectively disabling resume). For FTP, set this option to -1 to make the transfer start from the end of the target file (useful to continue an interrupted upload). 
 <p class="level0">When doing uploads with FTP, the resume position is where in the local/source file libcurl should try to resume the upload from and it will then append the source file to the remote target file. 
 <p class="level0">If you need to resume a transfer beyond the 2GB limit, use <a Class="emphasis" href="./CURLOPT_RESUME_FROM_LARGE.html">CURLOPT_RESUME_FROM_LARGE</a> instead. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0, not used <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP, FTP, SFTP, FILE <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com">ftp://example.com</a>");
- <p class="level0">&nbsp; /* resume upload at byte index 200 */
- &nbsp; curl_easy_setopt(curl, CURLOPT_RESUME_FROM, 200L);
- <p class="level0">&nbsp; /* ask for upload */
- &nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
- <p class="level0">&nbsp; /* set total data amount to expect */
- &nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE, size_of_file);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com">ftp://example.com</a>");
+&nbsp;
+&nbsp; /* resume upload at byte index 200 */
+&nbsp; curl_easy_setopt(curl, CURLOPT_RESUME_FROM, 200L);
+&nbsp;
+&nbsp; /* ask for upload */
+&nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+&nbsp;
+&nbsp; /* set total data amount to expect */
+&nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE, size_of_file);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 2cae610..5b1aad1 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_RESUME_FROM.pdf and b/docs/libcurl/opts/CURLOPT_RESUME_FROM.pdf differ
index 122520b..20c956f 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_RESUME_FROM_LARGE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,32 +52,38 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_RESUME_FROM_LARGE - set a point to resume transfer from <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM_LARGE,
- &nbsp;                         curl_off_t from);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM_LARGE,
+&nbsp;                         curl_off_t from);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a curl_off_t as parameter. It contains the offset in number of bytes that you want the transfer to start from. Set this option to 0 to make the transfer start from the beginning (effectively disabling resume). For FTP, set this option to -1 to make the transfer start from the end of the target file (useful to continue an interrupted upload). 
 <p class="level0">When doing uploads with FTP, the resume position is where in the local/source file libcurl should try to resume the upload from and it will then append the source file to the remote target file. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0, not used <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP, FTP, SFTP, FILE <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_off_t resume_position = GET_IT_SOMEHOW;
- &nbsp; curl_off_t file_size = GET_IT_SOMEHOW_AS_WELL;
- <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com">ftp://example.com</a>");
- <p class="level0">&nbsp; /* resuming upload at this position, possibly beyond 2GB */
- &nbsp; curl_easy_setopt(curl, CURLOPT_RESUME_FROM_LARGE, resume_position);
- <p class="level0">&nbsp; /* ask for upload */
- &nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
- <p class="level0">&nbsp; /* set total data amount to expect */
- &nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, file_size);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_off_t resume_position = GET_IT_SOMEHOW;
+&nbsp; curl_off_t file_size = GET_IT_SOMEHOW_AS_WELL;
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com">ftp://example.com</a>");
+&nbsp;
+&nbsp; /* resuming upload at this position, possibly beyond 2GB */
+&nbsp; curl_easy_setopt(curl, CURLOPT_RESUME_FROM_LARGE, resume_position);
+&nbsp;
+&nbsp; /* ask for upload */
+&nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+&nbsp;
+&nbsp; /* set total data amount to expect */
+&nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, file_size);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.11.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 2c7eb2d..135317e 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.pdf and b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.pdf differ
index b1f53ca..1b567d9 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_RTSP_CLIENT_CSEQ man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_RTSP_CLIENT_CSEQ - set the RTSP client CSEQ number <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_CLIENT_CSEQ, long cseq); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long to set the the CSEQ number to issue for the next RTSP request. Useful if the application is resuming a previously broken connection. The CSEQ will increment from this new number henceforth. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 3a6b033..800e75b 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.pdf and b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.pdf differ
index 87592b5..5db979d 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_RTSP_REQUEST man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_RTSP_REQUEST - specify RTSP request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_REQUEST, long request); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Tell libcurl what kind of RTSP request to make. Pass one of the following RTSP enum values as a long in the <span Class="emphasis">request</span> argument. Unless noted otherwise, commands require the Session ID to be initialized. 
 <p class="level0"><a name="CURLRTSPREQOPTIONS"></a><span class="nroffip">CURL_RTSPREQ_OPTIONS</span> 
index baec9cb..1182354 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.pdf and b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.pdf differ
index e90ff59..45a5d06 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_RTSP_SERVER_CSEQ man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_RTSP_SERVER_CSEQ - set the RTSP server CSEQ number <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SERVER_CSEQ, long cseq); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long to set the CSEQ number to expect for the next RTSP Server-&gt;Client request.  <span Class="bold">NOTE</span>: this feature (listening for Server requests) is unimplemented. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index c64018d..9d520f9 100644 (file)
@@ -67,12 +67,12 @@ endobj
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:05+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:05+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:83e0b27e-78d5-11f0-0000-e6e9a23d587a' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:83e0b27e-78d5-11f0-0000-e6e9a23d587a' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:27+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:27+02:00</xmp:CreateDate>
 <xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a'/>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:83e0b27e-78d5-11f0-0000-e6e9a23d587a' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:83e0b27e-78d5-11f0-0000-e6e9a23d587a'/>
+<rdf:Description rdf:about='uuid:83e0b27e-78d5-11f0-0000-e6e9a23d587a' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
@@ -81,9 +81,9 @@ endobj
 endstream
 endobj
 2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091805+01'00')
-/ModDate(D:20150108091805+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081127+02'00')
+/ModDate(D:20150812081127+02'00')
 /Creator(groff version 1.22.3)>>endobj
 xref
 0 14
@@ -103,7 +103,7 @@ xref
 0000001666 00000 n 
 trailer
 << /Size 14 /Root 1 0 R /Info 2 0 R
-/ID [<A4FA71C88590FFAE0FC8708BF479E6D2><A4FA71C88590FFAE0FC8708BF479E6D2>]
+/ID [<8C96E27F966D9A8794FCAEBDAE104CE8><8C96E27F966D9A8794FCAEBDAE104CE8>]
 >>
 startxref
 3243
index d3cf458..81fb65e 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_RTSP_SESSION_ID man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_RTSP_SESSION_ID - set RTSP session ID <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SESSION_ID, char *id); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as a parameter to set the value of the current RTSP Session ID for the handle. Useful for resuming an in-progress session. Once this value is set to any non-NULL value, libcurl will return <span Class="emphasis">CURLE_RTSP_SESSION_ERROR</span> if ID received from the server does not match. If unset (or set to NULL), libcurl will automatically set the ID the first time the server sets it in a response. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 3b58f7c..be422bd 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.pdf and b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.pdf differ
index c35879b..f65c70c 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_RTSP_STREAM_URI man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_RTSP_STREAM_URI - set RTSP stream URI <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_STREAM_URI, char *URI); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Set the stream <span Class="emphasis">URI</span> to operate on by passing a char * . For example, a single session may be controlling <span Class="emphasis">rtsp://foo/twister/audio</span> and <span Class="emphasis">rtsp://foo/twister/video</span> and the application can switch to the appropriate stream using this option. If unset, libcurl will default to operating on generic server options by passing '*' in the place of the RTSP Stream URI. This option is distinct from <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a>. When working with RTSP, the <span Class="emphasis">CURLOPT_STREAM_URI(3)</span> indicates what URL to send to the server in the request header while the <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a> indicates where to make the connection to.  (e.g. the <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a> for the above examples might be set to <span Class="emphasis">rtsp://foo/twister</span> <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">'*' <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 79bbdc9..3756ff8 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.pdf and b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.pdf differ
index f79c01f..46609fa 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_RTSP_TRANSPORT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_RTSP_TRANSPORT - set RTSP Transport: header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_TRANSPORT,
- &nbsp;                         char *transport);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_TRANSPORT,
+&nbsp;                         char *transport);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * to tell libcurl what to pass for the Transport: header for this RTSP session. This is mainly a convenience method to avoid needing to set a custom Transport: header for every SETUP request. The application must set a Transport: header before issuing a SETUP request. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index d05ea24..72be67c 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.pdf and b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.pdf differ
index a703b49..713412e 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SASL_IR man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SASL_IR - enable sending initial response in first packet <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_IR, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. If the value is 1, curl will send the initial response to the server in the first authentication packet in order to reduce the number of ping pong requests. Only applicable to the following supporting SASL authentication mechanisms: 
 <p class="level0">* Login * Plain * GSSAPI * NTLM * OAuth 2.0 
index 841d3a9..7b46504 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SASL_IR.pdf and b/docs/libcurl/opts/CURLOPT_SASL_IR.pdf differ
index bd688d1..4cf4d98 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SEEKDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SEEKDATA - custom pointer passed to the seek callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Data <span Class="emphasis">pointer</span> to pass to the seek callback function. If you use the <a Class="emphasis" href="./CURLOPT_SEEKFUNCTION.html">CURLOPT_SEEKFUNCTION</a> option, this is the pointer you'll get as input. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">If you don't set this, NULL is passed to the callback. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 9cbfdea..ebe314d 100644 (file)
@@ -68,12 +68,12 @@ endobj
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:06+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:06+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-bfb7a2fb1104' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-bfb7a2fb1104' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:28+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:28+02:00</xmp:CreateDate>
 <xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104'/>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-bfb7a2fb1104' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:847948fe-78d5-11f0-0000-bfb7a2fb1104'/>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-bfb7a2fb1104' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
@@ -82,9 +82,9 @@ endobj
 endstream
 endobj
 2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091806+01'00')
-/ModDate(D:20150108091806+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081128+02'00')
+/ModDate(D:20150812081128+02'00')
 /Creator(groff version 1.22.3)>>endobj
 xref
 0 15
@@ -105,7 +105,7 @@ xref
 0000001688 00000 n 
 trailer
 << /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<DEB12F4A5B8693AE24F75ABA0F65967E><DEB12F4A5B8693AE24F75ABA0F65967E>]
+/ID [<0F85402D7DE02750E9EB57DA2274A941><0F85402D7DE02750E9EB57DA2274A941>]
 >>
 startxref
 3265
index 8747a17..bf7e304 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -43,10 +43,13 @@ shown above.
 This function gets called by libcurl to seek to a certain position in the
 input stream and can be used to fast forward a file in a resumed upload
 (instead of reading all uploaded bytes with the normal read
-function/callback). It is also called to rewind a stream when doing a HTTP PUT
-or POST with a multi-pass authentication method. The function shall work like
-fseek(3) or lseek(3) and it gets SEEK_SET, SEEK_CUR or SEEK_END as argument
-for \fIorigin\fP, although libcurl currently only passes SEEK_SET.
+function/callback). It is also called to rewind a stream when data has already
+been sent to the server and needs to be sent again. This may happen when doing
+a HTTP PUT or POST with a multi-pass authentication method, or when an
+existing HTTP connection is reused too late and the server closes the
+connection. The function shall work like fseek(3) or lseek(3) and it gets
+SEEK_SET, SEEK_CUR or SEEK_END as argument for \fIorigin\fP, although libcurl
+currently only passes SEEK_SET.
 
 \fIuserp\fP is the pointer you set with \fICURLOPT_SEEKDATA(3)\fP.
 
index 6010e49..6154cb5 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SEEKFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,19 +52,22 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SEEKFUNCTION - user callback for seeking in input stream <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">/* These are the return codes for the seek callbacks */
- #define CURL_SEEKFUNC_OK       0
- #define CURL_SEEKFUNC_FAIL     1 /* fail the entire transfer */
- #define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so
- &nbsp;                                   libcurl might try other means instead */
- <p class="level0">int seek_callback(void *userp, curl_off_t offset, int origin);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKFUNCTION, seek_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+/* These are the return codes for the seek callbacks */
+&#35;define CURL_SEEKFUNC_OK       0
+&#35;define CURL_SEEKFUNC_FAIL     1 /* fail the entire transfer */
+&#35;define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so
+&nbsp;                                   libcurl might try other means instead */
+&nbsp;
+int seek_callback(void *userp, curl_off_t offset, int origin);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKFUNCTION, seek_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
-<p class="level0">This function gets called by libcurl to seek to a certain position in the input stream and can be used to fast forward a file in a resumed upload (instead of reading all uploaded bytes with the normal read function/callback). It is also called to rewind a stream when doing a HTTP PUT or POST with a multi-pass authentication method. The function shall work like fseek(3) or lseek(3) and it gets SEEK_SET, SEEK_CUR or SEEK_END as argument for <span Class="emphasis">origin</span>, although libcurl currently only passes SEEK_SET. 
+<p class="level0">This function gets called by libcurl to seek to a certain position in the input stream and can be used to fast forward a file in a resumed upload (instead of reading all uploaded bytes with the normal read function/callback). It is also called to rewind a stream when data has already been sent to the server and needs to be sent again. This may happen when doing a HTTP PUT or POST with a multi-pass authentication method, or when an existing HTTP connection is reused too late and the server closes the connection. The function shall work like fseek(3) or lseek(3) and it gets SEEK_SET, SEEK_CUR or SEEK_END as argument for <span Class="emphasis">origin</span>, although libcurl currently only passes SEEK_SET. 
 <p class="level0"><span Class="emphasis">userp</span> is the pointer you set with <a Class="emphasis" href="./CURLOPT_SEEKDATA.html">CURLOPT_SEEKDATA</a>. 
 <p class="level0">The callback function must return <span Class="emphasis">CURL_SEEKFUNC_OK</span> on success, <span Class="emphasis">CURL_SEEKFUNC_FAIL</span> to cause the upload operation to fail or <span Class="emphasis">CURL_SEEKFUNC_CANTSEEK</span> to indicate that while the seek failed, libcurl is free to work around the problem if possible. The latter can sometimes be done by instead reading from the input or similar. 
 <p class="level0">If you forward the input arguments directly to fseek(3) or lseek(3), note that the data type for <span Class="emphasis">offset</span> is not the same as defined for curl_off_t on many systems! <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 712417b..048f83f 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
new file mode 100644 (file)
index 0000000..116fdbe
--- /dev/null
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at 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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SERVICE_NAME 3 "17 Jun 2015" "libcurl 7.43.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SERVICE_NAME \- SPNEGO service name
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name);
+.SH DESCRIPTION
+Pass a char * as parameter to a string holding the \fIname\fP of the
+service. The default service name is "HTTP". This option allows you to
+change it.
+..SH DEFAULT
+See above
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.43.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_PROXY "(3), " CURLOPT_PROXYTYPE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.html b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.html
new file mode 100644 (file)
index 0000000..3c6a495
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SERVICE_NAME man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SERVICE_NAME - SPNEGO service name <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter to a string holding the <span Class="emphasis">name</span> of the service. The default service name is "HTTP". This option allows you to change it. 
+<p class="level0">See above <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.43.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <a Class="manpage" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.pdf b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.pdf
new file mode 100644 (file)
index 0000000..21d32fb
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.pdf differ
index ae2082e..8fbe21b 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SHARE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SHARE - specify share handle to use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SHARE, CURLSH *share); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a <span Class="emphasis">share</span> handle as a parameter. The share handle must have been created by a previous call to <span Class="emphasis">curl_share_init(3)</span>. Setting this option, will make this curl handle use the data from the shared handle instead of keeping the data to itself. This enables several curl handles to share data. If the curl handles are used simultaneously in multiple threads, you <span Class="bold">MUST</span> use the locking methods in the share handle. See <span Class="emphasis">curl_share_setopt(3)</span> for details. 
 <p class="level0">If you add a share that is set to share cookies, your easy handle will use that cookie cache and get the cookie engine enabled. If you unshare an object that was using cookies (or change to another object that doesn't share cookies), the easy handle will get its cookie engine disabled. 
index 8453beb..6a55d9c 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SHARE.pdf and b/docs/libcurl/opts/CURLOPT_SHARE.pdf differ
index 692af0e..7a67c55 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SOCKOPTDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SOCKOPTDATA - custom pointer to pass to sockopt callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the sockopt callback set with <a Class="emphasis" href="./CURLOPT_SOCKOPTFUNCTION.html">CURLOPT_SOCKOPTFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">The default value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 5e4622f..04881f7 100644 (file)
@@ -72,12 +72,12 @@ endobj
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:06+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:06+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-a72fc39baf1d' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-a72fc39baf1d' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:28+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:28+02:00</xmp:CreateDate>
 <xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d'/>
-<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-a72fc39baf1d' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:847948fe-78d5-11f0-0000-a72fc39baf1d'/>
+<rdf:Description rdf:about='uuid:847948fe-78d5-11f0-0000-a72fc39baf1d' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
@@ -86,9 +86,9 @@ endobj
 endstream
 endobj
 2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091806+01'00')
-/ModDate(D:20150108091806+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081128+02'00')
+/ModDate(D:20150812081128+02'00')
 /Creator(groff version 1.22.3)>>endobj
 xref
 0 15
@@ -109,7 +109,7 @@ xref
 0000001836 00000 n 
 trailer
 << /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<548B7B107771A11F62E135259C369E68><548B7B107771A11F62E135259C369E68>]
+/ID [<D908C4288394121E1AB0E7BC684E0476><D908C4288394121E1AB0E7BC684E0476>]
 >>
 startxref
 3413
index 07186d2..211e800 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SOCKOPTFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,22 +52,26 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SOCKOPTFUNCTION - set callback for setting socket options <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">typedef enum  {
- &nbsp; CURLSOCKTYPE_IPCXN,  /* socket created for a specific IP connection */
- &nbsp; CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
- &nbsp; CURLSOCKTYPE_LAST    /* never use */
- } curlsocktype;
- <p class="level0">#define CURL_SOCKOPT_OK 0
- #define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return
- &nbsp;                               CURLE_ABORTED_BY_CALLBACK */
- #define CURL_SOCKOPT_ALREADY_CONNECTED 2
- <p class="level0">int sockopt_callback(void *clientp,
- &nbsp;                    curl_socket_t curlfd,
- &nbsp;                    curlsocktype purpose);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTFUNCTION, sockopt_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+typedef enum  {
+&nbsp; CURLSOCKTYPE_IPCXN,  /* socket created for a specific IP connection */
+&nbsp; CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
+&nbsp; CURLSOCKTYPE_LAST    /* never use */
+} curlsocktype;
+&nbsp;
+&#35;define CURL_SOCKOPT_OK 0
+&#35;define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return
+&nbsp;                               CURLE_ABORTED_BY_CALLBACK */
+&#35;define CURL_SOCKOPT_ALREADY_CONNECTED 2
+&nbsp;
+int sockopt_callback(void *clientp,
+&nbsp;                    curl_socket_t curlfd,
+&nbsp;                    curlsocktype purpose);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTFUNCTION, sockopt_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0">When set, this callback function gets called by libcurl when the socket has been created, but before the connect call to allow applications to change specific socket options. The callback's <span Class="emphasis">purpose</span> argument identifies the exact purpose for this particular socket: 
index 47958b9..5ccd41c 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.pdf differ
index 41a462e..0ee98e5 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SOCKS5_GSSAPI_NEC man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SOCKS5_GSSAPI_NEC - set socks proxy gssapi negotiation protection <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_NEC, long nec); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long set to 1 to enable or 0 to disable. As part of the gssapi negotiation a protection mode is negotiated. The <a href="http://www.ietf.org/rfc/rfc1961.txt">RFC 1961</a> says in section 4.3/4.4 it should be protected, but the NEC reference implementation does not. If enabled, this option allows the unprotected exchange of the protection mode negotiation. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">? <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 42a15ab..b120db2 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.pdf and b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.pdf differ
index 32c43d3..ab2c472 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SOCKS5_GSSAPI_SERVICE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SOCKS5_GSSAPI_SERVICE - proxy socks gssapi service name <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE, char *name); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter to a string holding the <span Class="emphasis">name</span> of the service. The default service name for a SOCKS5 server is rcmd/server-fqdn. This option allows you to change it. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">See above <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 74b6ccd..878761c 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf and b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf differ
index 6b28744..c7e306d 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSH_AUTH_TYPES man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSH_AUTH_TYPES - set desired auth types for SFTP and SCP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_AUTH_TYPES, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long set to a bitmask consisting of one or more of CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD and CURLSSH_AUTH_AGENT. 
 <p class="level0">Set <span Class="emphasis">CURLSSH_AUTH_ANY</span> to let libcurl pick a suitable one. Currently CURLSSH_AUTH_HOST has no effect. If CURLSSH_AUTH_AGENT is used, libcurl attempts to connect to ssh-agent or pageant and let the agent attempt the authentication. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index a719b92..d148ccb 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.pdf and b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.pdf differ
index 0bcbfdd..ee8d2f5 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 - checksum of SSH server public key <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
- &nbsp;                         char *md5);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
+&nbsp;                         char *md5);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * pointing to a string containing 32 hexadecimal digits. The string should be the 128 bit MD5 checksum of the remote host's public key, and libcurl will reject the connection to the host unless the md5sums match. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index e04a2f8..093d2c2 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf and b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf differ
index 9257ac7..87ecc6a 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSH_KEYDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSH_KEYDATA - pointer to pass to the SSH key callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a void * as parameter. This <span Class="emphasis">pointer</span> will be passed along verbatim to the callback set with <a Class="emphasis" href="./CURLOPT_SSH_KEYFUNCTION.html">CURLOPT_SSH_KEYFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 5c2b7db..b4b0713 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.pdf and b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.pdf differ
index bfc1920..3fe17c3 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSH_KEYFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,37 +52,42 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSH_KEYFUNCTION - callback for known host matching logic <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">enum curl_khstat {
- &nbsp; CURLKHSTAT_FINE_ADD_TO_FILE,
- &nbsp; CURLKHSTAT_FINE,
- &nbsp; CURLKHSTAT_REJECT, /* reject the connection, return an error */
- &nbsp; CURLKHSTAT_DEFER,  /* do not accept it, but we can't answer right
- &nbsp;                       now so this causes a CURLE_DEFER error but
- &nbsp;                       otherwise the connection will be left intact
- &nbsp;                       etc */
- };
- <p class="level0">enum curl_khmatch {
- &nbsp; CURLKHMATCH_OK,       /* match */
- &nbsp; CURLKHMATCH_MISMATCH, /* host found, key mismatch! */
- &nbsp; CURLKHMATCH_MISSING,  /* no matching host/key found */
- };
- <p class="level0">struct curl_khkey {
- &nbsp; const char *key; /* points to a zero-terminated string encoded with
- &nbsp;                     base64 if len is zero, otherwise to the "raw"
- &nbsp;                     data */
- &nbsp; size_t len;
- &nbsp; enum curl_khtype keytype;
- };
- <p class="level0">int ssh_keycallback(CURL *easy,
- &nbsp;                   const struct curl_khkey *knownkey,
- &nbsp;                   const struct curl_khkey *foundkey,
- &nbsp;                   enum curl_khmatch,
- &nbsp;                   void *clientp);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYFUNCTION,
- &nbsp;                         ssh_keycallback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+enum curl_khstat {
+&nbsp; CURLKHSTAT_FINE_ADD_TO_FILE,
+&nbsp; CURLKHSTAT_FINE,
+&nbsp; CURLKHSTAT_REJECT, /* reject the connection, return an error */
+&nbsp; CURLKHSTAT_DEFER,  /* do not accept it, but we can't answer right
+&nbsp;                       now so this causes a CURLE_DEFER error but
+&nbsp;                       otherwise the connection will be left intact
+&nbsp;                       etc */
+};
+&nbsp;
+enum curl_khmatch {
+&nbsp; CURLKHMATCH_OK,       /* match */
+&nbsp; CURLKHMATCH_MISMATCH, /* host found, key mismatch! */
+&nbsp; CURLKHMATCH_MISSING,  /* no matching host/key found */
+};
+&nbsp;
+struct curl_khkey {
+&nbsp; const char *key; /* points to a zero-terminated string encoded with
+&nbsp;                     base64 if len is zero, otherwise to the "raw"
+&nbsp;                     data */
+&nbsp; size_t len;
+&nbsp; enum curl_khtype keytype;
+};
+&nbsp;
+int ssh_keycallback(CURL *easy,
+&nbsp;                   const struct curl_khkey *knownkey,
+&nbsp;                   const struct curl_khkey *foundkey,
+&nbsp;                   enum curl_khmatch,
+&nbsp;                   void *clientp);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYFUNCTION,
+&nbsp;                         ssh_keycallback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0">It gets called when the known_host matching has been done, to allow the application to act and decide for libcurl how to proceed. The callback will only be called if <a Class="emphasis" href="./CURLOPT_SSH_KNOWNHOSTS.html">CURLOPT_SSH_KNOWNHOSTS</a> is also set. 
index cdbd6b6..0c0d9a5 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.pdf differ
index b757f22..107e4fd 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSH_KNOWNHOSTS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSH_KNOWNHOSTS - file name holding the SSH known hosts <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KNOWNHOSTS, char *fname); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string holding the file name of the known_host file to use.  The known_hosts file should use the OpenSSH file format as supported by libssh2. If this file is specified, libcurl will only accept connections with hosts that are known and present in that file, with a matching public key. Use <a Class="emphasis" href="./CURLOPT_SSH_KEYFUNCTION.html">CURLOPT_SSH_KEYFUNCTION</a> to alter the default behavior on host and key (mis)matching. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 51cf58a..a7d3740 100644 (file)
@@ -72,12 +72,12 @@ endobj
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
-<rdf:Description rdf:about='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:07+01:00</xmp:ModifyDate>
-<xmp:CreateDate>2015-01-08T09:18:07+01:00</xmp:CreateDate>
+<rdf:Description rdf:about='uuid:8511df7e-78d5-11f0-0000-97ccdacf2f0e' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:8511df7e-78d5-11f0-0000-97ccdacf2f0e' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:29+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:29+02:00</xmp:CreateDate>
 <xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e'/>
-<rdf:Description rdf:about='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:8511df7e-78d5-11f0-0000-97ccdacf2f0e' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:8511df7e-78d5-11f0-0000-97ccdacf2f0e'/>
+<rdf:Description rdf:about='uuid:8511df7e-78d5-11f0-0000-97ccdacf2f0e' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
@@ -86,9 +86,9 @@ endobj
 endstream
 endobj
 2 0 obj
-<</Producer(GPL Ghostscript 9.06)
-/CreationDate(D:20150108091807+01'00')
-/ModDate(D:20150108091807+01'00')
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081129+02'00')
+/ModDate(D:20150812081129+02'00')
 /Creator(groff version 1.22.3)>>endobj
 xref
 0 15
@@ -109,7 +109,7 @@ xref
 0000002028 00000 n 
 trailer
 << /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<D884164C072563CB883565F84D010B8D><D884164C072563CB883565F84D010B8D>]
+/ID [<632DBB8A202AD6F3B6D28E25E2670178><632DBB8A202AD6F3B6D28E25E2670178>]
 >>
 startxref
 3605
index c425a1b..22f1721 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSH_PRIVATE_KEYFILE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSH_PRIVATE_KEYFILE - set private key file for SSH auth <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PRIVATE_KEYFILE,
- &nbsp;                         char *filename);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PRIVATE_KEYFILE,
+&nbsp;                         char *filename);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * pointing to a <span Class="emphasis">filename</span> for your private key. If not used, libcurl defaults to <span Class="bold">$HOME/.ssh/id_dsa</span> if the HOME environment variable is set, and just "id_dsa" in the current directory if HOME is not set. 
 <p class="level0">If the file is password-protected, set the password with <a Class="emphasis" href="./CURLOPT_KEYPASSWD.html">CURLOPT_KEYPASSWD</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index ed2ddf9..49dc3c7 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.pdf and b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.pdf differ
index fc38e72..a932457 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSH_PUBLIC_KEYFILE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSH_PUBLIC_KEYFILE - set public key file for SSH auth <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PUBLIC_KEYFILE,
- &nbsp;                         char *filename);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PUBLIC_KEYFILE,
+&nbsp;                         char *filename);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * pointing to a <span Class="emphasis">filename</span> for your public key. If not used, libcurl defaults to <span Class="bold">$HOME/.ssh/id_dsa.pub</span> if the HOME environment variable is set, and just "id_dsa.pub" in the current directory if HOME is not set. 
 <p class="level0">If an empty string is passed, libcurl will pass no public key to libssh2 which then tries to compute it from the private key, this is known to work when libssh2 1.4.0+ is linked against OpenSSL. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index c588db2..594cea0 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.pdf and b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.pdf differ
index 8e3e4bc..1cd1df1 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSLCERT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSLCERT - set SSL client certificate <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT, char *cert); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the file name of your client certificate. The default format is "P12" on Secure Transport and "PEM" on other engines, and can be changed with <a Class="emphasis" href="./CURLOPT_SSLCERTTYPE.html">CURLOPT_SSLCERTTYPE</a>. 
 <p class="level0">With NSS or Secure Transport, this can also be the nickname of the certificate you wish to authenticate with as it is named in the security database. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname. 
index 7466794..2e7c5e0 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSLCERT.pdf and b/docs/libcurl/opts/CURLOPT_SSLCERT.pdf differ
index 071eeb7..2ead1f7 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSLCERTTYPE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,9 +52,9 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSLCERTTYPE - specify type of the client SSL certificate <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERTTYPE, char *type); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the format of your certificate. Supported formats are "PEM" and "DER", except with Secure Transport. OpenSSL (versions 0.9.3 and later) and Secure Transport (on iOS 5 or later, or OS X 10.7 or later) also support "P12" for PKCS#12-encoded files. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the format of your certificate. Supported formats are "PEM" and "DER", except with Secure Transport. OpenSSL (versions 0.9.3 and later) and Secure Transport (on iOS 5 or later, or OS X 10.7 or later) also support "P12" for PKCS&#35;12-encoded files. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">"PEM" <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
index dd66602..2a68e9f 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.pdf and b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.pdf differ
index 7263f40..55ea325 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSLENGINE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSLENGINE - set SSL engine identifier <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE, char *id); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used as the identifier for the crypto engine you want to use for your private key. 
 <p class="level0">If the crypto device cannot be loaded, <span Class="emphasis">CURLE_SSL_ENGINE_NOTFOUND</span> is returned. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index a9a478e..3d05678 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSLENGINE.pdf and b/docs/libcurl/opts/CURLOPT_SSLENGINE.pdf differ
index 75c3bbc..69c8703 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSLENGINE_DEFAULT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSLENGINE_DEFAULT - make SSL engine default <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE_DEFAULT, long val); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long set to 1 as parameter. Sets the actual crypto engine as the default for (asymmetric) crypto operations. 
 <p class="level0">If the crypto device cannot be set, <span Class="emphasis">CURLE_SSL_ENGINE_SETFAILED</span> is returned. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 506cb92..394ec8d 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.pdf and b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.pdf differ
index faabcf3..b31d6ed 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSLKEY man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,10 +52,10 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSLKEY - specify private keyfile for TLS and SSL client cert <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEY, char *keyfile); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the file name of your private key. The default format is "PEM" and can be changed with <a Class="emphasis" href="./CURLOPT_SSLKEYTYPE.html">CURLOPT_SSLKEYTYPE</a>. 
-<p class="level0">(iOS and Mac OS X only) This option is ignored if curl was built against Secure Transport. Secure Transport expects the private key to be already present in the keychain or PKCS#12 file containing the certificate. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">(iOS and Mac OS X only) This option is ignored if curl was built against Secure Transport. Secure Transport expects the private key to be already present in the keychain or PKCS&#35;12 file containing the certificate. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
index fe27c02..8044a15 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSLKEY.pdf and b/docs/libcurl/opts/CURLOPT_SSLKEY.pdf differ
index be6b2bd..a4bd972 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSLKEYTYPE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSLKEYTYPE - set type of the private key file <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEYTYPE, char *type); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the format of your private key. Supported formats are "PEM", "DER" and "ENG". 
 <p class="level0">The format "ENG" enables you to load the private key from a crypto engine. In this case <a Class="emphasis" href="./CURLOPT_SSLKEY.html">CURLOPT_SSLKEY</a> is used as an identifier passed to the engine. You have to set the crypto engine with <a Class="emphasis" href="./CURLOPT_SSLENGINE.html">CURLOPT_SSLENGINE</a>. "DER" format key file currently does not work because of a bug in OpenSSL. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index f5446ae..238bbe4 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.pdf and b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.pdf differ
index efbca5b..dedebc6 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSLVERSION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSLVERSION - set preferred TLS/SSL version <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLVERSION, long version); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter to control which version of SSL/TLS to attempt to use. 
 <p class="level0">Use one of the available defines for this purpose. The available options are: 
@@ -69,16 +74,18 @@ p.roffit {
 <p class="level0"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">CURL_SSLVERSION_DEFAULT <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
- <p class="level0">&nbsp; /* ask libcurl to use TLS version 1.0 or later */
- &nbsp; curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+&nbsp;
+&nbsp; /* ask libcurl to use TLS version 1.0 or later */
+&nbsp; curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">SSLv2 is disabled by default since 7.18.1. Other SSL versions availability may vary depending on which backend libcurl has been built to use. 
index ed73b15..713933c 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSLVERSION.pdf and b/docs/libcurl/opts/CURLOPT_SSLVERSION.pdf differ
index eab61ca..afba26a 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSL_CIPHER_LIST man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSL_CIPHER_LIST - specify ciphers to use for TLS <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CIPHER_LIST, char *list); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char *, pointing to a zero terminated string holding the list of ciphers to use for the SSL connection. The list must be syntactically correct, it consists of one or more cipher strings separated by colons. Commas or spaces are also acceptable separators but colons are normally used, !, - and + can be used as operators. 
 <p class="level0">For OpenSSL and GnuTLS valid examples of cipher lists include 'RC4-SHA', &acute;SHA1+DES&acute;, 'TLSv1' and 'DEFAULT'. The default list is normally set when you compile OpenSSL. 
@@ -55,7 +60,7 @@ p.roffit {
 <p class="level0">&nbsp;<a href="http://www.openssl.org/docs/apps/ciphers.html">http://www.openssl.org/docs/apps/ciphers.html</a> 
 <p class="level0">For NSS, valid examples of cipher lists include 'rsa_rc4_128_md5', &acute;rsa_aes_128_sha&acute;, etc. With NSS you don't add/remove ciphers. If one uses this option then all known ciphers are disabled and only those passed in are enabled. 
 <p class="level0">You'll find more details about the NSS cipher lists on this URL: 
-<p class="level0">&nbsp;<a href="http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives">http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives</a> <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">&nbsp;<a href="http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html">http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html</a>&#35;Directives <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL, use internal default <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
index 4b0f4d0..292a70f 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.pdf and b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.pdf differ
index 4873cdd..977cc12 100644 (file)
@@ -38,7 +38,8 @@ All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
 .SH EXAMPLE
 TODO
 .SH AVAILABILITY
-Added in 7.11.0. Only used with the OpenSSL backend.
+Added in 7.11.0 for OpenSSL. Added in 7.42.0 for wolfSSL/CyaSSL. Other SSL
+backends not supported.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index 7c3995d..8531b4b 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSL_CTX_DATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,13 +52,13 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSL_CTX_DATA - custom pointer passed to ssl_ctx callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_DATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Data <span Class="emphasis">pointer</span> to pass to the ssl context callback set by the option <a Class="emphasis" href="./CURLOPT_SSL_CTX_FUNCTION.html">CURLOPT_SSL_CTX_FUNCTION</a>, this is the pointer you'll get as third parameter. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Added in 7.11.0. Only used with the OpenSSL backend. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Added in 7.11.0 for OpenSSL. Added in 7.42.0 for wolfSSL/CyaSSL. Other SSL backends not supported. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_SSL_CTX_FUNCTION.html">CURLOPT_SSL_CTX_FUNCTION</a>, <a Class="manpage" href="./CURLOPT_SSLVERSION.html">CURLOPT_SSLVERSION</a>, <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
index 8e9f8bd..efe4ce7 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.pdf and b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.pdf differ
index 1e8dbe5..e3e0170 100644 (file)
@@ -22,7 +22,7 @@
 .\"
 .TH CURLOPT_SSL_CTX_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
 .SH NAME
-CURLOPT_SSL_CTX_FUNCTION \- openssl specific callback to do SSL magic
+CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL or wolfSSL/CyaSSL
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -32,28 +32,28 @@ CURLcode ssl_ctx_callback(CURL *curl, void *ssl_ctx, void *userptr);
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_FUNCTION,
                           ssl_ctx_callback);
 .SH DESCRIPTION
-This option only works for libcurl powered by OpenSSL. If libcurl was built
-against another SSL library, this functionality is absent.
+This option only works for libcurl powered by OpenSSL or wolfSSL/CyaSSL. If
+libcurl was built against another SSL library this functionality is absent.
 
 Pass a pointer to your callback function, which should match the prototype
 shown above.
 
 This callback function gets called by libcurl just before the initialization
-of a SSL connection after having processed all other SSL related options to
-give a last chance to an application to modify the behaviour of openssl's ssl
-initialization. The \fIsslctx\fP parameter is actually a pointer to an openssl
-\fISSL_CTX\fP. If an error is returned from the callback, no attempt to
-establish a connection is made and the perform operation will return the error
-code.  Set the \fIuserptr\fP argument with the \fICURLOPT_SSL_CTX_DATA(3)\fP
-option.
+of an SSL connection after having processed all other SSL related options to
+give a last chance to an application to modify the behaviour of the SSL
+initialization. The \fIssl_ctx\fP parameter is actually a pointer to the SSL
+library's \fISSL_CTX\fP. If an error is returned from the callback no attempt
+to establish a connection is made and the perform operation will return the
+callback's error code. Set the \fIuserptr\fP argument with the
+\fICURLOPT_SSL_CTX_DATA(3)\fP option.
 
 This function will get called on all new connections made to a server, during
 the SSL negotiation. The SSL_CTX pointer will be a new one every time.
 
-To use this properly, a non-trivial amount of knowledge of the openssl
-libraries is necessary. For example, using this function allows you to use
-openssl callbacks to add additional validation code for certificates, and even
-to change the actual URI of a HTTPS request (example used in the lib509 test
+To use this properly, a non-trivial amount of knowledge of your SSL library
+is necessary. For example, you can use this function to call library-specific
+callbacks to add additional validation code for certificates, and even to
+change the actual URI of a HTTPS request (example used in the lib509 test
 case).  See also the example section for a replacement of the key, certificate
 and trust file settings.
 .SH DEFAULT
@@ -63,7 +63,8 @@ All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
 .SH EXAMPLE
 TODO
 .SH AVAILABILITY
-Added in 7.11.0. Only supported when built with OpenSSL.
+Added in 7.11.0 for OpenSSL. Added in 7.42.0 for wolfSSL/CyaSSL. Other SSL
+backends not supported.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index 2b0f441..add6819 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSL_CTX_FUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -46,23 +51,25 @@ p.roffit {
 </head><body>
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
-<p class="level0">CURLOPT_SSL_CTX_FUNCTION - openssl specific callback to do SSL magic <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode ssl_ctx_callback(CURL *curl, void *ssl_ctx, void *userptr);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_FUNCTION,
- &nbsp;                         ssl_ctx_callback);
- </pre>
+<p class="level0">CURLOPT_SSL_CTX_FUNCTION - SSL context callback for OpenSSL or wolfSSL/CyaSSL <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode ssl_ctx_callback(CURL *curl, void *ssl_ctx, void *userptr);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_FUNCTION,
+&nbsp;                         ssl_ctx_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This option only works for libcurl powered by OpenSSL. If libcurl was built against another SSL library, this functionality is absent. 
+<p class="level0">This option only works for libcurl powered by OpenSSL or wolfSSL/CyaSSL. If libcurl was built against another SSL library this functionality is absent. 
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
-<p class="level0">This callback function gets called by libcurl just before the initialization of a SSL connection after having processed all other SSL related options to give a last chance to an application to modify the behaviour of openssl's ssl initialization. The <span Class="emphasis">sslctx</span> parameter is actually a pointer to an openssl <span Class="emphasis">SSL_CTX</span>. If an error is returned from the callback, no attempt to establish a connection is made and the perform operation will return the error code.  Set the <span Class="emphasis">userptr</span> argument with the <a Class="emphasis" href="./CURLOPT_SSL_CTX_DATA.html">CURLOPT_SSL_CTX_DATA</a> option. 
+<p class="level0">This callback function gets called by libcurl just before the initialization of an SSL connection after having processed all other SSL related options to give a last chance to an application to modify the behaviour of the SSL initialization. The <span Class="emphasis">ssl_ctx</span> parameter is actually a pointer to the SSL library's <span Class="emphasis">SSL_CTX</span>. If an error is returned from the callback no attempt to establish a connection is made and the perform operation will return the callback's error code. Set the <span Class="emphasis">userptr</span> argument with the <a Class="emphasis" href="./CURLOPT_SSL_CTX_DATA.html">CURLOPT_SSL_CTX_DATA</a> option. 
 <p class="level0">This function will get called on all new connections made to a server, during the SSL negotiation. The SSL_CTX pointer will be a new one every time. 
-<p class="level0">To use this properly, a non-trivial amount of knowledge of the openssl libraries is necessary. For example, using this function allows you to use openssl callbacks to add additional validation code for certificates, and even to change the actual URI of a HTTPS request (example used in the lib509 test case).  See also the example section for a replacement of the key, certificate and trust file settings. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">To use this properly, a non-trivial amount of knowledge of your SSL library is necessary. For example, you can use this function to call library-specific callbacks to add additional validation code for certificates, and even to change the actual URI of a HTTPS request (example used in the lib509 test case).  See also the example section for a replacement of the key, certificate and trust file settings. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Added in 7.11.0. Only supported when built with OpenSSL. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Added in 7.11.0 for OpenSSL. Added in 7.42.0 for wolfSSL/CyaSSL. Other SSL backends not supported. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_SSL_CTX_DATA.html">CURLOPT_SSL_CTX_DATA</a>, <a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
index af3d959..21b0570 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.pdf differ
index 69d6df2..74751f6 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSL_ENABLE_ALPN man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSL_ENABLE_ALPN - enable ALPN <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_ALPN, long npn); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter, 0 or 1 where 1 is for enable and 0 for disable. This option enables/disables ALPN in the SSL handshake (if the SSL backend libcurl is built to use supports it), which can be used to negotiate http2. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">1, enabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 96f158c..c7d009e 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.pdf and b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.pdf differ
index 3278e95..24b817a 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSL_ENABLE_NPN man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSL_ENABLE_NPN - enable NPN <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_NPN, long npn); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter, 0 or 1 where 1 is for enable and 0 for disable. This option enables/disables NPN in the SSL handshake (if the SSL backend libcurl is built to use supports it), which can be used to negotiate http2. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">1, enabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 49767cb..9c5a912 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.pdf and b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
new file mode 100644 (file)
index 0000000..31a05e6
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at 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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSL_FALSESTART 3 "14 Feb 2015" "libcurl 7.41.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSL_FALSESTART \- enable TLS false start
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_FALSESTART, long enable);
+.SH DESCRIPTION
+Pass a long as parameter set to 1 to enable or 0 to disable.
+
+This option determines whether libcurl should use false start during the TLS
+handshake. False start is a mode where a TLS client will start sending
+application data before verifying the server's Finished message, thus saving a
+round trip when performing a full handshake.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.42.0. This option is currently only supported by the NSS and
+Secure Transport (on iOS 7.0 or later, or OS X 10.9 or later) TLS backends.
+.SH RETURN VALUE
+Returns CURLE_OK if false start is supported by the SSL backend, otherwise
+returns CURLE_NOT_BUILT_IN.
diff --git a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.html b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.html
new file mode 100644 (file)
index 0000000..eb6b4a9
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSL_FALSESTART man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSL_FALSESTART - enable TLS false start <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_FALSESTART, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter set to 1 to enable or 0 to disable. 
+<p class="level0">This option determines whether libcurl should use false start during the TLS handshake. False start is a mode where a TLS client will start sending application data before verifying the server's Finished message, thus saving a round trip when performing a full handshake. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.42.0. This option is currently only supported by the NSS and Secure Transport (on iOS 7.0 or later, or OS X 10.9 or later) TLS backends. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if false start is supported by the SSL backend, otherwise returns CURLE_NOT_BUILT_IN. <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.pdf b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.pdf
new file mode 100644 (file)
index 0000000..bca982c
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.pdf differ
index 09bcb96..0afd2fb 100644 (file)
@@ -30,13 +30,25 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask);
 .SH DESCRIPTION
 Pass a long with a bitmask to tell libcurl about specific SSL behaviors.
 
-\fICURLSSLOPT_ALLOW_BEAST\fP is the only supported bit and by setting this the
-user will tell libcurl to not attempt to use any workarounds for a security
-flaw in the SSL3 and TLS1.0 protocols.  If this option isn't used or this bit
-is set to 0, the SSL layer libcurl uses may use a work-around for this flaw
-although it might cause interoperability problems with some (older) SSL
-implementations. WARNING: avoiding this work-around lessens the security, and
-by setting this option to 1 you ask for exactly that.
+\fICURLSSLOPT_ALLOW_BEAST\fP tells libcurl to not attempt to use any
+workarounds for a security flaw in the SSL3 and TLS1.0 protocols.  If this
+option isn't used or this bit is set to 0, the SSL layer libcurl uses may use a
+work-around for this flaw although it might cause interoperability problems
+with some (older) SSL implementations. WARNING: avoiding this work-around
+lessens the security, and by setting this option to 1 you ask for exactly that.
+This option is only supported for DarwinSSL, NSS and OpenSSL.
+
+Added in 7.44.0:
+
+\fICURLSSLOPT_NO_REVOKE\fP tells libcurl to disable certificate revocation
+checks for those SSL backends where such behavior is present. \fBCurrently this
+option is only supported for WinSSL (the native Windows SSL library), with an
+exception in the case of Windows' Untrusted Publishers blacklist which it seems
+can't be bypassed.\fP This option may have broader support to accommodate other
+SSL backends in the future.
+http://curl.haxx.se/docs/ssl-compared.html
+
+
 .SH DEFAULT
 0
 .SH PROTOCOLS
index f268c59..5b0a4a6 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSL_OPTIONS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,10 +52,14 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSL_OPTIONS - set SSL behavior options <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long with a bitmask to tell libcurl about specific SSL behaviors. 
-<p class="level0"><span Class="emphasis">CURLSSLOPT_ALLOW_BEAST</span> is the only supported bit and by setting this the user will tell libcurl to not attempt to use any workarounds for a security flaw in the SSL3 and TLS1.0 protocols.  If this option isn't used or this bit is set to 0, the SSL layer libcurl uses may use a work-around for this flaw although it might cause interoperability problems with some (older) SSL implementations. WARNING: avoiding this work-around lessens the security, and by setting this option to 1 you ask for exactly that. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0"><span Class="emphasis">CURLSSLOPT_ALLOW_BEAST</span> tells libcurl to not attempt to use any workarounds for a security flaw in the SSL3 and TLS1.0 protocols.  If this option isn't used or this bit is set to 0, the SSL layer libcurl uses may use a work-around for this flaw although it might cause interoperability problems with some (older) SSL implementations. WARNING: avoiding this work-around lessens the security, and by setting this option to 1 you ask for exactly that. This option is only supported for DarwinSSL, NSS and OpenSSL. 
+<p class="level0">Added in 7.44.0: 
+<p class="level0"><span Class="emphasis">CURLSSLOPT_NO_REVOKE</span> tells libcurl to disable certificate revocation checks for those SSL backends where such behavior is present. <span class="bold">Currently this option is only supported for WinSSL (the native Windows SSL library), with an exception in the case of Windows' Untrusted Publishers blacklist which it seems can't be bypassed.</span> This option may have broader support to accommodate other SSL backends in the future. <a href="http://curl.haxx.se/docs/ssl-compared.html">http://curl.haxx.se/docs/ssl-compared.html</a> 
+<p class="level0">
+<p class="level0"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All TLS-based protocols <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
index c974eb5..b93f18d 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.pdf and b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.pdf differ
index 0f32572..c19e264 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSL_SESSIONID_CACHE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSL_SESSIONID_CACHE - enable/disable use of the SSL session-ID cache <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_SESSIONID_CACHE,
- &nbsp;                        long enabled);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_SESSIONID_CACHE,
+&nbsp;                        long enabled);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long set to 0 to disable libcurl's use of SSL session-ID caching. Set this to 1 to enable it. By default all transfers are done using the cache enabled. While nothing ever should get hurt by attempting to reuse SSL session-IDs, there seem to be or have been broken SSL implementations in the wild that may require you to disable this in order for you to succeed. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 467c624..5165718 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.pdf and b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.pdf differ
index ca39a09..fbf2042 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -66,7 +66,17 @@ also set to zero and cannot be overridden.
 .SH PROTOCOLS
 All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+
+  /* Set the default value: strict name check please */
+  curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 If built TLS enabled.
 .SH RETURN VALUE
index 7de718d..7ca3c50 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSL_VERIFYHOST man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSL_VERIFYHOST - verify the certificate's name against host <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYHOST, long verify); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter specifying what to <span Class="emphasis">verify</span>. 
 <p class="level0">This option determines whether libcurl verifies that the server cert is for the server it is known as. 
@@ -60,7 +65,19 @@ p.roffit {
 <p class="level0">This option controls checking the server's certificate's claimed identity. The server could be lying.  To control lying, see <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>.  If libcurl is built against NSS and <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> is zero, <a Class="emphasis" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a> is also set to zero and cannot be overridden. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">2 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+&nbsp;
+&nbsp; /* Set the default value: strict name check please */
+&nbsp; curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">If built TLS enabled. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if TLS is supported, and CURLE_UNKNOWN_OPTION if not. 
 <p class="level0">If 1 is set as argument, <span Class="emphasis">CURLE_BAD_FUNCTION_ARGUMENT</span> is returned. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
index 3ba7cfd..48dad47 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.pdf and b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.pdf differ
index f2bad74..81bb593 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -62,7 +62,17 @@ By default, curl assumes a value of 1.
 .SH PROTOCOLS
 All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+
+  /* Set the default value: strict certificate check please */
+  curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 If built TLS enabled.
 .SH RETURN VALUE
index 7b9a56c..b978b55 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_SSL_VERIFYPEER man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_SSL_VERIFYPEER - verify the peer's SSL certificate <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYPEER, long verify); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter to enable or disable. 
 <p class="level0">This option determines whether curl verifies the authenticity of the peer's certificate. A value of 1 means curl verifies; 0 (zero) means it doesn't. 
@@ -57,7 +62,19 @@ p.roffit {
 <p class="level0">WARNING: disabling verification of the certificate allows bad guys to man-in-the-middle the communication without you knowing it. Disabling verification makes the communication insecure. Just having encryption on a transfer is not enough as you cannot be sure that you are communicating with the correct end-point. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">By default, curl assumes a value of 1. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+&nbsp;
+&nbsp; /* Set the default value: strict certificate check please */
+&nbsp; curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">If built TLS enabled. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a>, <span Class="manpage"> </span> <p class="roffit">
index 2bba563..c5adbd2 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.pdf and b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
new file mode 100644 (file)
index 0000000..d7f011a
--- /dev/null
@@ -0,0 +1,53 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at 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.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSL_VERIFYSTATUS 3 "04 Dec 2014" "libcurl 7.40.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYSTATUS, long verify);
+.SH DESCRIPTION
+Pass a long as parameter set to 1 to enable or 0 to disable.
+
+This option determines whether libcurl verifies the status of the server cert
+using the "Certificate Status Request" TLS extension (aka. OCSP stapling).
+
+Note that if this option is enabled but the server does not support the TLS
+extension, the verification will fail.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.41.0. This option is currently only supported by the OpenSSL, GnuTLS
+and NSS TLS backends.
+.SH RETURN VALUE
+Returns CURLE_OK if OCSP stapling is supported by the SSL backend, otherwise
+returns CURLE_NOT_BUILT_IN.
+.SH "SEE ALSO"
+.BR CURLOPT_SSL_VERIFYHOST "(3), "
+.BR CURLOPT_SSL_VERIFYPEER "(3), "
+.BR CURLOPT_CAINFO "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.html b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.html
new file mode 100644 (file)
index 0000000..eb3ed2a
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSL_VERIFYSTATUS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
+ padding-left: 2em;
+}
+
+P.level1, pre.level1 {
+ padding-left: 4em;
+}
+
+P.level2, pre.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSL_VERIFYSTATUS - verify the certificate's status <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYSTATUS, long verify); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter set to 1 to enable or 0 to disable. 
+<p class="level0">This option determines whether libcurl verifies the status of the server cert using the "Certificate Status Request" TLS extension (aka. OCSP stapling). 
+<p class="level0">Note that if this option is enabled but the server does not support the TLS extension, the verification will fail. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.41.0. This option is currently only supported by the OpenSSL, GnuTLS and NSS TLS backends. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if OCSP stapling is supported by the SSL backend, otherwise returns CURLE_NOT_BUILT_IN. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.pdf b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.pdf
new file mode 100644 (file)
index 0000000..9e02620
--- /dev/null
@@ -0,0 +1,111 @@
+%PDF-1.4
+%Çì\8f¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+x\9c­Vën£F\14þï§8ÚþX¼2\13\86áÚV\95\9c\84tÝ:Æ5$j\94T\16±' »\ 4\1cÀ\9bæ\1döUú\8e=sÁÄIV«J\95%0Ì̹|ç;ßá\ 1,BÁ\12?}_Ý\ f\ e\16>Ü6\ 3\vn\a\ f\ 3*\17AßV÷p\98â\86@¼Ho\ 6ê\f\ 5ß\ 6?d$\b\1f\18Gg\8bi<O\97I2]\9eG\8bÉÉE\92\ eÓO\ 3\93\12J!]\r(\r\89çàÉt=0ÆrÍ\92ïmbÓ0T\v¶K<\eÒÇÁ¥q\96\\19ìj\b«m],yÖ<-\eÞV\9bvhÚNHÂ\90\19ø\90We\ 3oºþ+ý­÷m\87!q\82ïøî<ʨ-± ¶\1c,BÌ\9b\84®HÝt\1cF\\ fLæÉ\13³qoÊ%nÈ´¥ÓH¼ï!³-âX>\98Ô\96Ëÿ\ fVV\87\13ü\ 3_\86èß²|fð:¿y\82ö\8eÃ\8a×mþu\95µü½DÃ&®´ayÄí°h\9aÞ6¦\1cXT/´Y»mT\12Ïó·\ 3\87`ÝMê\91@îK.fñ<\99$ûù"<]®?äåªØ®9ü,
+y .äî\17±Ýv \9d*0V\15nxYè+¹\ 4\1fî²r]ðÑÛe~ß\83Æ,\87XÞw@\13x\8d ¨Ê[\81\99CÂÀu\14fWÃ\9f$Lû 3\17O\aÏ\12>\8e\92£Åd\9e\99&
+u\15OÞH~\9eí¢\bIàî@\87L\85\905°Éêì\9e·¼\ 6Ì\1aÚ
+\e\v/¼Ì®\v\ eU\8dGðq\9d\99H\8fÒ\92)Ð[\ f(aø y\90Þå\r¨\96\80µ0x\9f\97¼\81Ç;\8ed¨¡È¯\ 5À\9a)ÔñDÖ_q\83 J#Ë\rÕ\8dzâõ\17Å\98À%¾¦¡ðä\bOxNR\v¶M\8e)\88\ 3ï\8evT\83\1cS\1f×`hº.øÃ\967í;¬}\ 2|GÛ¿[^6"ô+#û\9c\11\88\8f\92¹\bkS \93«!\91ñX$ R\1dÒ\ f\97ƬBoí]ÖB.Âî\93Ç\7f
+¾5\\ f©\90
+Û7¶m\9f\9aôi\8b²ÃºB\ 4ʪ\85f»ÙTµÚ¤"\13\ e\19rÇéÚ\r\9d3\95C\17ìHn×\ 6\9dP"\8a \88 \1eó¢P\1a$D\16ëoj[\1d5nzjøÄó0HÍ\8e¼ ¯û\ eeGìÙãá\89æ\9f\8bÊ&4\ e7S§ëßñ\99\16\14DWË\93í1_¯Nûîèy+"õ}\9fí*fX¯\ 3\91äîb\98/t\b\ e\93!`?Ù\9e¯\131mb¹¡dL\9cB¼sh3â[^§\94Gñô\85v`Ì!\ 6±Ï\ec\\14².×Y\83uÝÔU[­ª¢ù\11>¦é\1c;úD^'§cq\9bÇs6\82ä\14ß\ 1oWoà¹\97Fôçøt>\8dºv\ e¾ÙÎi\9f\ 5e¢ïU\ eDZÆÚ\r\827FF(vî¼\89\92¨>\1a\9fC?>°z\9eK;\ eL¦ãÃÉt\92^ìC\83EdN\10ì\90A\17
+àñz\8d¨ä%øÄAû\ 4Òý~ÀίyÙ\16OP\95xÑd\17\r¢FE¼á%Êê\b~-·\ 2eT\\98%\89F|õÙ\14q\b§¨×¼\7\ 4u÷Û\80v\9d\1e¥g\8b\19\9c\ f)C\9dõ¨1\9e\9eEZb_\83\8b\83_M~T\88v[ë±\1e-ãßE\7fïÉ\81ÈèU
+\18¾\fUDÊ\18rO\8f8a\97)Ý*×#¨\84\18\r\87\91¥Ó\at(\97\86r=\8b\87\8e¥ä)]\1e\ e¥\92x\81q6\99\ eCÜOqr¤ËÉ\8c¼56^Âa$Q\ 4ãi\12÷\|A®×ãíc¬>\v\9e\11À±I7ºå·Êhß\1cºô<«cÑk\8bó(Z¼´H\89÷ßM\1e\8d\93\14~\v2¶û\80èmáG\93OP:Mf£/\ 5p7\8d\90¯\88ðÐD,\ 3ÇÀÆ8æ+°q<IL\9d\9dLPa(J\a\7fàï_Gc»|endstream
+endobj
+6 0 obj
+1230
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 10 0 R
+/Font 11 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 13 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+10 0 obj
+<</R7
+7 0 R>>
+endobj
+11 0 obj
+<</R9
+9 0 R/R8
+8 0 R>>
+endobj
+9 0 obj
+<</BaseFont/Times-Bold/Type/Font
+/Subtype/Type1>>
+endobj
+8 0 obj
+<</BaseFont/Times-Roman/Type/Font
+/Encoding 12 0 R/Subtype/Type1>>
+endobj
+12 0 obj
+<</Type/Encoding/Differences[
+140/fi
+173/minus]>>
+endobj
+13 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1346>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='uuid:86430c7e-78d5-11f0-0000-75a6345ca275' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.16'/>
+<rdf:Description rdf:about='uuid:86430c7e-78d5-11f0-0000-75a6345ca275' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-08-12T08:11:31+02:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-08-12T08:11:31+02:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:86430c7e-78d5-11f0-0000-75a6345ca275' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:86430c7e-78d5-11f0-0000-75a6345ca275'/>
+<rdf:Description rdf:about='uuid:86430c7e-78d5-11f0-0000-75a6345ca275' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+                                                                        
+                                                                        
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.16)
+/CreationDate(D:20150812081131+02'00')
+/ModDate(D:20150812081131+02'00')
+/Creator(groff version 1.22.3)>>endobj
+xref
+0 14
+0000000000 65535 f 
+0000001554 00000 n 
+0000003365 00000 n 
+0000001495 00000 n 
+0000001335 00000 n 
+0000000015 00000 n 
+0000001315 00000 n 
+0000001619 00000 n 
+0000001794 00000 n 
+0000001729 00000 n 
+0000001660 00000 n 
+0000001690 00000 n 
+0000001876 00000 n 
+0000001942 00000 n 
+trailer
+<< /Size 14 /Root 1 0 R /Info 2 0 R
+/ID [<C60007D8815D1C73E5022698D69DF45E><C60007D8815D1C73E5022698D69DF45E>]
+>>
+startxref
+3519
+%%EOF
index 67e9501..8ef1a32 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -36,7 +36,16 @@ stderr
 .SH PROTOCOLS
 All
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+FILE *filep = fopen("dump", "wb");
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+  curl_easy_setopt(curl, CURLOPT_STDERR, filep);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 Always
 .SH RETURN VALUE
index 50fcd93..52fcb4d 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_STDERR man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,23 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_STDERR - redirect stderr to another stream <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STDERR, FILE *stream); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a FILE * as parameter. Tell libcurl to use this <span Class="emphasis">stream</span> instead of stderr when showing the progress meter and displaying <a Class="emphasis" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a> data. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">stderr <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+FILE *filep = fopen("dump", "wb");
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp; curl_easy_setopt(curl, CURLOPT_STDERR, filep);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a>, <a Class="manpage" href="./CURLOPT_NOPROGRESS.html">CURLOPT_NOPROGRESS</a>, <span Class="manpage"> </span> <p class="roffit">
index 18a1a52..7d01fcb 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_STDERR.pdf and b/docs/libcurl/opts/CURLOPT_STDERR.pdf differ
index daf3df4..941cc48 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -38,7 +38,23 @@ disable keepalive probes
 .SH PROTOCOLS
 All
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* enable TCP keep-alive for this transfer */
+  curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+
+  /* keep-alive idle time to 120 seconds */
+  curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L);
+
+  /* interval time between keep-alive probes: 60 seconds */
+  curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 Added in 7.25.0
 .SH RETURN VALUE
index 765594e..0d08878 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TCP_KEEPALIVE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,30 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TCP_KEEPALIVE - enable TCP keep-alive probing <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPALIVE, long probe); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. If set to 1, TCP keepalive probes will be sent. The delay and frequency of these probes can be controlled by the <a Class="emphasis" href="./CURLOPT_TCP_KEEPIDLE.html">CURLOPT_TCP_KEEPIDLE</a> and <a Class="emphasis" href="./CURLOPT_TCP_KEEPINTVL.html">CURLOPT_TCP_KEEPINTVL</a> options, provided the operating system supports them. Set to 0 (default behavior) to disable keepalive probes <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* enable TCP keep-alive for this transfer */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+&nbsp;
+&nbsp; /* keep-alive idle time to 120 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L);
+&nbsp;
+&nbsp; /* interval time between keep-alive probes: 60 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.25.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_TCP_KEEPIDLE.html">CURLOPT_TCP_KEEPIDLE</a>, <a Class="manpage" href="./CURLOPT_TCP_KEEPINTVL.html">CURLOPT_TCP_KEEPINTVL</a>, <span Class="manpage"> </span> <p class="roffit">
index 3f60961..2e55c29 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.pdf and b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.pdf differ
index 1724824..d60a3df 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -36,7 +36,23 @@ operating systems support this option.
 .SH PROTOCOLS
 All
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* enable TCP keep-alive for this transfer */
+  curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+
+  /* set keep-alive idle time to 120 seconds */
+  curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L);
+
+  /* interval time between keep-alive probes: 60 seconds */
+  curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 Added in 7.25.0
 .SH RETURN VALUE
index a575947..d001882 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TCP_KEEPIDLE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,30 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TCP_KEEPIDLE - set TCP keep-alive idle time wait <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPIDLE, long delay); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. Sets the <span Class="emphasis">delay</span>, in seconds, that the operating system will wait while the connection is idle before sending keepalive probes. Not all operating systems support this option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">? <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* enable TCP keep-alive for this transfer */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+&nbsp;
+&nbsp; /* set keep-alive idle time to 120 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L);
+&nbsp;
+&nbsp; /* interval time between keep-alive probes: 60 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.25.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_TCP_KEEPALIVE.html">CURLOPT_TCP_KEEPALIVE</a>, <a Class="manpage" href="./CURLOPT_TCP_KEEPINTVL.html">CURLOPT_TCP_KEEPINTVL</a>, <span Class="manpage"> </span> <p class="roffit">
index cdcc179..20ee61a 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.pdf and b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.pdf differ
index e4bcf7f..42bc0b4 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -34,7 +34,23 @@ option. (Added in 7.25.0)
 .SH DEFAULT
 .SH PROTOCOLS
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* enable TCP keep-alive for this transfer */
+  curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+
+  /* keep-alive idle time to 120 seconds */
+  curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L);
+
+  /* interval time between keep-alive probes: 60 seconds */
+  curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 Always
 .SH RETURN VALUE
index b7579fb..712bc38 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TCP_KEEPINTVL man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,30 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TCP_KEEPINTVL - set TCP keep-alive interval <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPINTVL, long interval); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long. Sets the interval, in seconds, that the operating system will wait between sending keepalive probes. Not all operating systems support this option. (Added in 7.25.0) <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0"><a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0"><a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* enable TCP keep-alive for this transfer */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+&nbsp;
+&nbsp; /* keep-alive idle time to 120 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L);
+&nbsp;
+&nbsp; /* interval time between keep-alive probes: 60 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_TCP_KEEPALIVE.html">CURLOPT_TCP_KEEPALIVE</a>, <a Class="manpage" href="./CURLOPT_TCP_KEEPIDLE.html">CURLOPT_TCP_KEEPIDLE</a>, <span Class="manpage"> </span> <p class="roffit">
index 7982bab..e2370c4 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.pdf and b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.pdf differ
index 7f2ba49..421b5c6 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TCP_NODELAY man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TCP_NODELAY - set the TCP_NODELAY option <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long specifying whether the TCP_NODELAY option is to be set or cleared (1 = set, 0 = clear). The option is cleared by default. This will have no effect after the connection has been established. 
 <p class="level0">Setting this option will disable TCP's Nagle algorithm. The purpose of this algorithm is to try to minimize the number of small packets on the network (where "small packets" means TCP segments less than the Maximum Segment Size (MSS) for the network). 
index 7277e8e..9be0e81 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.pdf and b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.pdf differ
index ac50076..5dbd6e1 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TELNETOPTIONS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TELNETOPTIONS - custom telnet options <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS, &nbsp;                         struct curl_slist *cmds); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Provide a pointer to a curl_slist with variables to pass to the telnet negotiations. The variables should be in the format &lt;option=value&gt;. libcurl supports the options 'TTYPE', 'XDISPLOC' and 'NEW_ENV'. See the TELNET standard for details. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index ade0176..14a5259 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.pdf and b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.pdf differ
index 080d612..a853740 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TFTP_BLKSIZE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TFTP_BLKSIZE - TFTP block size <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Specify <span Class="emphasis">blocksize</span> to use for TFTP data transmission. Valid range as per <a href="http://www.ietf.org/rfc/rfc2348.txt">RFC 2348</a> is 8-65464 bytes. The default of 512 bytes will be used if this option is not specified. The specified block size will only be used pending support by the remote server. If the server does not return an option acknowledgement or returns an option acknowledgement with no blksize, the default of 512 bytes will be used. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">512 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index ef1d0fd..95591f9 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.pdf and b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.pdf differ
index dedeed0..a6ee991 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TIMECONDITION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TIMECONDITION - select condition for a time request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMECONDITION, long cond); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter. This defines how the <a Class="emphasis" href="./CURLOPT_TIMEVALUE.html">CURLOPT_TIMEVALUE</a> time value is treated. You can set this parameter to <span Class="emphasis">CURL_TIMECOND_IFMODSINCE</span> or <span Class="emphasis">CURL_TIMECOND_IFUNMODSINCE</span>. 
 <p class="level0">The last modification time of a file is not always known and in such instances this feature will have no effect even if the given time condition would not have been met. <span Class="emphasis">curl_easy_getinfo(3)</span> with the <span Class="emphasis">CURLINFO_CONDITION_UNMET</span> option can be used after a transfer to learn if a zero-byte successful "transfer" was due to this condition not matching. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 7c4f1b6..16b32ae 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TIMECONDITION.pdf and b/docs/libcurl/opts/CURLOPT_TIMECONDITION.pdf differ
index 41e0569..6440ffe 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -50,7 +50,17 @@ Default timeout is 0 (zero) which means it never times out during transfer.
 .SH PROTOCOLS
 All
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* complete within 20 seconds */
+  curl_easy_setopt(curl, CURLOPT_TIMEOUT, 20L);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 Always
 .SH RETURN VALUE
index 1b1b784..a8bcfa6 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TIMEOUT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TIMEOUT - set maximum time the request is allowed to take <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter containing <span Class="emphasis">timeout</span> - the maximum time in seconds that you allow the libcurl transfer operation to take. Normally, name lookups can take a considerable time and limiting operations to less than a few minutes risk aborting perfectly normal operations. This option may cause libcurl to use the SIGALRM signal to timeout system calls. 
 <p class="level0">In unix-like systems, this might cause signals to be used unless <a Class="emphasis" href="./CURLOPT_NOSIGNAL.html">CURLOPT_NOSIGNAL</a> is set. 
@@ -55,7 +60,19 @@ p.roffit {
 <p class="level0">Since this puts a hard limit for how long time a request is allowed to take, it has limited use in dynamic use cases with varying transfer times. You are then advised to explore <a Class="emphasis" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <a Class="emphasis" href="./CURLOPT_LOW_SPEED_TIME.html">CURLOPT_LOW_SPEED_TIME</a> or using <a Class="emphasis" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a> to implement your own timeout logic. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">Default timeout is 0 (zero) which means it never times out during transfer. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* complete within 20 seconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TIMEOUT, 20L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_TIMEOUT_MS.html">CURLOPT_TIMEOUT_MS</a>, <span Class="manpage">  </span> <a Class="manpage" href="./CURLOPT_CONNECTTIMEOUT.html">CURLOPT_CONNECTTIMEOUT</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
index 958c762..3ebfb10 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TIMEOUT.pdf and b/docs/libcurl/opts/CURLOPT_TIMEOUT.pdf differ
index fe9a3cd..3727133 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -54,7 +54,17 @@ Default timeout is 0 (zero) which means it never times out during transfer.
 .SH PROTOCOLS
 All
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* complete within 20000 milliseconds */
+  curl_easy_setopt(curl, CURLOPT_TIMEOUT_MS, 20000L);
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 Always
 .SH RETURN VALUE
index 383bff3..0063aa4 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TIMEOUT_MS man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TIMEOUT_MS - set maximum time the request is allowed to take <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT_MS, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter containing <span Class="emphasis">timeout</span> - the maximum time in milliseconds that you allow the libcurl transfer operation to take. Normally, name lookups can take a considerable time and limiting operations to less than a few minutes risk aborting perfectly normal operations. This option may cause libcurl to use the SIGALRM signal to timeout system calls. 
 <p class="level0">If libcurl is built to use the standard system name resolver, that portion of the transfer will still use full-second resolution for timeouts with a minimum timeout allowed of one second. 
@@ -56,7 +61,19 @@ p.roffit {
 <p class="level0">Since this puts a hard limit for how long time a request is allowed to take, it has limited use in dynamic use cases with varying transfer times. You are then advised to explore <a Class="emphasis" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <a Class="emphasis" href="./CURLOPT_LOW_SPEED_TIME.html">CURLOPT_LOW_SPEED_TIME</a> or using <a Class="emphasis" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a> to implement your own timeout logic. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">Default timeout is 0 (zero) which means it never times out during transfer. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* complete within 20000 milliseconds */
+&nbsp; curl_easy_setopt(curl, CURLOPT_TIMEOUT_MS, 20000L);
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, <span Class="manpage">  </span> <a Class="manpage" href="./CURLOPT_CONNECTTIMEOUT.html">CURLOPT_CONNECTTIMEOUT</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
index f5ced77..6897c08 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.pdf and b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.pdf differ
index 14df2f1..f2f5dad 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TIMEVALUE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TIMEVALUE - set time value for conditional <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE, long val); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long <span Class="emphasis">val</span> as parameter. This should be the time counted as seconds since 1 Jan 1970, and the time will be used in a condition as specified with <a Class="emphasis" href="./CURLOPT_TIMECONDITION.html">CURLOPT_TIMECONDITION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 9265a93..416318b 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TIMEVALUE.pdf and b/docs/libcurl/opts/CURLOPT_TIMEVALUE.pdf differ
index 3af10cb..76c5650 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TLSAUTH_PASSWORD man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TLSAUTH_PASSWORD - password to use for TLS authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_PASSWORD, char *pwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, which should point to the zero terminated password to use for the TLS authentication method specified with the <a Class="emphasis" href="./CURLOPT_TLSAUTH_TYPE.html">CURLOPT_TLSAUTH_TYPE</a> option. Requires that the <a Class="emphasis" href="./CURLOPT_TLSAUTH_USERNAME.html">CURLOPT_TLSAUTH_USERNAME</a> option also be set. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 631361a..753542a 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.pdf and b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.pdf differ
index 7a96979..02c9a96 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TLSAUTH_TYPE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TLSAUTH_TYPE - set TLS authentication methods <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long as parameter, which is set to a bitmask, to tell libcurl which authentication method(s) you want it to use for TLS authentication. 
 <p class="level0">
index e8549b0..3c794dc 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.pdf and b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.pdf differ
index 2d8fcf6..7ebb829 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TLSAUTH_USERNAME man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TLSAUTH_USERNAME - user name to use for TLS authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_USERNAME, char *user); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, which should point to the zero terminated username to use for the TLS authentication method specified with the <a Class="emphasis" href="./CURLOPT_TLSAUTH_TYPE.html">CURLOPT_TLSAUTH_TYPE</a> option. Requires that the <a Class="emphasis" href="./CURLOPT_TLSAUTH_PASSWORD.html">CURLOPT_TLSAUTH_PASSWORD</a> option also be set. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index c4be60c..35301a9 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.pdf and b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.pdf differ
index 7a95187..443edee 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TRANSFERTEXT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TRANSFERTEXT - request a text based transfer for FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFERTEXT, long text); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">A parameter set to 1 tells the library to use ASCII mode for FTP transfers, instead of the default binary transfer. For win32 systems it does not set the stdout to binary mode. This option can be usable when transferring text data between systems with different views on certain characters, such as newlines or similar. 
 <p class="level0">libcurl does not do a complete ASCII conversion when doing ASCII transfers over FTP. This is a known limitation/flaw that nobody has rectified. libcurl simply sets the mode to ASCII and performs a standard transfer. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index a7fceec..3571185 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.pdf and b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.pdf differ
index 5cb1e39..0b27904 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_TRANSFER_ENCODING man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_TRANSFER_ENCODING - ask for HTTP Transfer Encoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFER_ENCODING, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long set to 1 to <span Class="emphasis">enable</span> or 0 to disable. 
 <p class="level0">Adds a request for compressed Transfer Encoding in the outgoing HTTP request. If the server supports this and so desires, it can respond with the HTTP response sent using a compressed Transfer-Encoding that will be automatically uncompressed by libcurl on reception. 
index f135e55..4a01a70 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.pdf and b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.pdf differ
index 17fcef6..1b50449 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_UNIX_SOCKET_PATH man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_UNIX_SOCKET_PATH - set Unix domain socket <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNIX_SOCKET_PATH, char *path); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Enables the use of Unix domain sockets as connection endpoint and sets the path to <span Class="emphasis">path</span>. If <span Class="emphasis">path</span> is NULL, then Unix domain sockets are disabled. An empty string will result in an error at some point, it will not disable use of Unix domain sockets. 
 <p class="level0">When enabled, cURL will connect to the Unix domain socket instead of establishing a TCP connection to a host. Since no TCP connection is created, cURL does not need to resolve the DNS hostname in the URL. 
@@ -56,20 +61,20 @@ p.roffit {
 <p class="level0">Default is NULL, meaning that no Unix domain sockets are used. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All protocols except for file:// and FTP are supported in theory. HTTP, IMAP, POP3 and SMTP should in particular work (including their SSL/TLS variants). <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">Given that you have an nginx server running, listening on /tmp/nginx.sock, you can request a HTTP resource with: 
-<p class="level0"><pre>
-<p class="level0">&nbsp;   curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, "/tmp/nginx.sock");
- &nbsp;   curl_easy_setopt(curl_handle, CURLOPT_URL, "<a href="http://localhost/">http://localhost/</a>");
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;   curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, "/tmp/nginx.sock");
+&nbsp;   curl_easy_setopt(curl_handle, CURLOPT_URL, "<a href="http://localhost/">http://localhost/</a>");
+</pre>
 
 <p class="level0">
 <p class="level0">If you are on Linux and somehow have a need for paths larger than 107 bytes, you could use the proc filesystem to bypass the limitation: 
-<p class="level0"><pre>
-<p class="level0">&nbsp;   int dirfd = open(long_directory_path_to_socket, O_DIRECTORY | O_RDONLY);
- &nbsp;   char path[108];
- &nbsp;   snprintf(path, sizeof(path), "/proc/self/fd/%d/nginx.sock", dirfd);
- &nbsp;   curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, path);
- &nbsp;   /* Be sure to keep dirfd valid until you discard the handle */
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp;   int dirfd = open(long_directory_path_to_socket, O_DIRECTORY | O_RDONLY);
+&nbsp;   char path[108];
+&nbsp;   snprintf(path, sizeof(path), "/proc/self/fd/%d/nginx.sock", dirfd);
+&nbsp;   curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, path);
+&nbsp;   /* Be sure to keep dirfd valid until you discard the handle */
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Since 7.40.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 200b623..1bd7f8f 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.pdf and b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.pdf differ
index 9d16b0f..1e04eb0 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_UNRESTRICTED_AUTH man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_UNRESTRICTED_AUTH - send credentials to other hosts too <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNRESTRICTED_AUTH,
- &nbsp;                         long goahead);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNRESTRICTED_AUTH,
+&nbsp;                         long goahead);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">A long parameter set to 1 tells libcurl it can continue to send authentication (user+password) credentials when following locations, even when hostname changed. This option is meaningful only when setting <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
index 56e223b..d7493b4 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.pdf and b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.pdf differ
index f0c399f..afbf48a 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_UPLOAD man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,30 +52,35 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_UPLOAD - enable data upload <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD, long upload); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">The long parameter <span Class="emphasis">upload</span> set to 1 tells the library to prepare for and perform an upload. The <a Class="emphasis" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a> and <a Class="emphasis" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a> or <a Class="emphasis" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a> options are also interesting for uploads. If the protocol is HTTP, uploading means using the PUT request unless you tell libcurl otherwise. 
 <p class="level0">Using PUT with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> as usual. 
 <p class="level0">If you use PUT to a HTTP 1.1 server, you can upload data without knowing the size before starting the transfer if you use chunked encoding. You enable this by adding a header like "Transfer-Encoding: chunked" with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. With HTTP 1.0 or without chunked transfer, you must specify the size. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0, default is download <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; /* we want to use our own read function */
- &nbsp; curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
- <p class="level0">&nbsp; /* enable uploading */
- &nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
- <p class="level0">&nbsp; /* specify target */
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/dir/to/newfile">ftp://example.com/dir/to/newfile</a>");
- <p class="level0">&nbsp; /* now specify which pointer to pass to our callback */
- &nbsp; curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
- <p class="level0">&nbsp; /* Set the size of the file to upload */
- &nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)fsize);
- <p class="level0">&nbsp; /* Now run off and do what you've been told! */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; /* we want to use our own read function */
+&nbsp; curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+&nbsp;
+&nbsp; /* enable uploading */
+&nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+&nbsp;
+&nbsp; /* specify target */
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/dir/to/newfile">ftp://example.com/dir/to/newfile</a>");
+&nbsp;
+&nbsp; /* now specify which pointer to pass to our callback */
+&nbsp; curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
+&nbsp;
+&nbsp; /* Set the size of the file to upload */
+&nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)fsize);
+&nbsp;
+&nbsp; /* Now run off and do what you've been told! */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 4b3a45f..f989719 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_UPLOAD.pdf and b/docs/libcurl/opts/CURLOPT_UPLOAD.pdf differ
index bf19228..6e4824a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -284,6 +284,29 @@ escape it by providing it as backslash and its ASCII value in hexadecimal:
 .SH DEFAULT
 There is no default URL. If this option isn't set, no transfer can be
 performed.
+.SH SECURITY CONCERNS
+Applications may at times find it convenient to allow users to specify URLs
+for various purposes and that string would then end up fed to this option.
+
+Getting a URL from an external untrusted party will bring reasons for several
+security concerns:
+
+If you have an application that runs as or in a server application, getting an
+unfiltered URL can easily trick your application to access a local resource
+instead of a remote. Protecting yourself against localhost accesses is very
+hard when accepting user provided URLs.
+
+Such custom URLs can also access other ports than you planned as port numbers
+are part of the regular URL format. The combination of a local host and a
+custom port number can allow external users to play tricks with your local
+services.
+
+Accepting external URLs may also use other protocols than http:// or other
+common ones. Restrict what accept with \fICURLOPT_PROTOCOLS(3)\fP.
+
+User provided URLs can also be made to point to sites that redirect further on
+(possibly to other protocols too). Consider your
+\fICURLOPT_FOLLOWLOCATION(3)\fP and \fICURLOPT_REDIR_PROTOCOLS(3)\fP settings.
 .SH PROTOCOLS
 All
 .SH EXAMPLE
index 0f75582..3bb2e19 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_URL man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_URL - provide the URL to use in the request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_URL, char *URL); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass in a pointer to the <span Class="emphasis">URL</span> to work with. The parameter should be a char * to a zero terminated string which must be URL-encoded in the following format: 
 <p class="level0">scheme://host:port/path 
@@ -135,16 +140,23 @@ p.roffit {
 <p class="level1">For more information about the individual components of a LDAP URL please see <a href="http://www.ietf.org/rfc/rfc4516.txt">RFC 4516</a>. 
 <p class="level0"><a name="RTMP"></a><span class="nroffip">RTMP</span> 
 <p class="level1">There's no official URL spec for RTMP so libcurl uses the URL syntax supported by the underlying librtmp library. It has a syntax where it wants a traditional URL, followed by a space and a series of space-separated name=value pairs. 
-<p class="level1">While space is not typically a "legal" letter, libcurl accepts them. When a user wants to pass in a '#' (hash) character it will be treated as a fragment and get cut off by libcurl if provided literally. You will instead have to escape it by providing it as backslash and its ASCII value in hexadecimal: "\23". <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
-<p class="level0">There is no default URL. If this option isn't set, no transfer can be performed. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level1">While space is not typically a "legal" letter, libcurl accepts them. When a user wants to pass in a '&#35;' (hash) character it will be treated as a fragment and get cut off by libcurl if provided literally. You will instead have to escape it by providing it as backslash and its ASCII value in hexadecimal: "\23". <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">There is no default URL. If this option isn't set, no transfer can be performed. <a name="SECURITY"></a><h2 class="nroffsh">SECURITY CONCERNS</h2>
+<p class="level0">Applications may at times find it convenient to allow users to specify URLs for various purposes and that string would then end up fed to this option. 
+<p class="level0">Getting a URL from an external untrusted party will bring reasons for several security concerns: 
+<p class="level0">If you have an application that runs as or in a server application, getting an unfiltered URL can easily trick your application to access a local resource instead of a remote. Protecting yourself against localhost accesses is very hard when accepting user provided URLs. 
+<p class="level0">Such custom URLs can also access other ports than you planned as port numbers are part of the regular URL format. The combination of a local host and a custom port number can allow external users to play tricks with your local services. 
+<p class="level0">Accepting external URLs may also use other protocols than http:// or other common ones. Restrict what accept with <a Class="emphasis" href="./CURLOPT_PROTOCOLS.html">CURLOPT_PROTOCOLS</a>. 
+<p class="level0">User provided URLs can also be made to point to sites that redirect further on (possibly to other protocols too). Consider your <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a> and <a Class="emphasis" href="./CURLOPT_REDIR_PROTOCOLS.html">CURLOPT_REDIR_PROTOCOLS</a> settings. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">POP3 and SMTP were added in 7.31.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 7867b41..7ac38c4 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_URL.pdf and b/docs/libcurl/opts/CURLOPT_URL.pdf differ
index 13ccbd4..4d7036d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -37,7 +37,16 @@ NULL, no User-Agent: header is used by default.
 .SH PROTOCOLS
 HTTP, HTTPS
 .SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  curl_easy_setopt(curl, CURLOPT_USERAGENT, "Dark Secret Ninja/1.0");
+
+  curl_easy_perform(curl);
+}
+.fi
 .SH AVAILABILITY
 As long as HTTP is supported
 .SH RETURN VALUE
index e418ec5..7144744 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_USERAGENT man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,12 +52,23 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_USERAGENT - set HTTP user-agent header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERAGENT, char *ua); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used to set the User-Agent: header in the HTTP request sent to the remote server. This can be used to fool servers or scripts. You can also set any custom header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">NULL, no User-Agent: header is used by default. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">HTTP, HTTPS <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; curl_easy_setopt(curl, CURLOPT_USERAGENT, "Dark Secret Ninja/1.0");
+&nbsp;
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">As long as HTTP is supported <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Returns CURLE_OK if HTTP is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_REFERER.html">CURLOPT_REFERER</a>, <a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <span Class="manpage"> </span> <p class="roffit">
index d3ef568..04aed42 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_USERAGENT.pdf and b/docs/libcurl/opts/CURLOPT_USERAGENT.pdf differ
index e0d459d..0036565 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_USERNAME man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_USERNAME - user name to use in authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERNAME,
- &nbsp;                         char *username);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERNAME,
+&nbsp;                         char *username);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated user name to use for the transfer. 
 <p class="level0"><a Class="bold" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> sets the user name to be used in protocol authentication. You should not use this option together with the (older) <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> option. 
index 904f8b0..92a3735 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_USERNAME.pdf and b/docs/libcurl/opts/CURLOPT_USERNAME.pdf differ
index c1c3394..3e4a955 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_USERPWD man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_USERPWD - user name and password to use in authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERPWD, char *userpwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, pointing to a zero terminated login details string for the connection. The format of which is: [user name]:[password]. 
 <p class="level0">When using Kerberos V5 authentication with a Windows based server, you should specify the user name part with the domain name in order for the server to successfully obtain a Kerberos Ticket. If you don't then the initial part of the authentication handshake may fail. 
index 5e5209b..23c3c66 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_USERPWD.pdf and b/docs/libcurl/opts/CURLOPT_USERPWD.pdf differ
index 22916b0..5f849dc 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_USE_SSL man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_USE_SSL - request using SSL / TLS for the transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USE_SSL, long level); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a long using one of the values from below, to make libcurl use your desired <span Class="emphasis">level</span> of SSL for the transfer. 
 <p class="level0">These are all protocols that start out plain text and get "upgraded" to SSL using the STARTTLS command. 
@@ -62,16 +67,18 @@ p.roffit {
 <p class="level1">Require SSL for all communication or fail with <span Class="emphasis">CURLE_USE_SSL_FAILED</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">CURLUSESSL_NONE <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">FTP, SMTP, POP3, IMAP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/dir/file.ext">ftp://example.com/dir/file.ext</a>");
- <p class="level0">&nbsp; /* require use of SSL for this, or fail */
- &nbsp; curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/dir/file.ext">ftp://example.com/dir/file.ext</a>");
+&nbsp;
+&nbsp; /* require use of SSL for this, or fail */
+&nbsp; curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">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_* <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index b2c5442..4c36937 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_USE_SSL.pdf and b/docs/libcurl/opts/CURLOPT_USE_SSL.pdf differ
index 402a394..48bdf3d 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_VERBOSE man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,23 +52,25 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_VERBOSE - set verbose mode on/off <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_VERBOSE, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Set the <span Class="emphasis">onoff</span> parameter to 1 to make the library display a lot of verbose information about its operations on this <span Class="emphasis">handle</span>. Very useful for libcurl and/or protocol debugging and understanding. The verbose information will be sent to stderr, or the stream set with <a Class="emphasis" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>. 
 <p class="level0">You hardly ever want this set in production use, you will almost always want this when you debug/report problems. 
 <p class="level0">To also get all the protocol data sent and received, consider using the <a Class="emphasis" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">0, meaning disabled. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0"><pre>
-<p class="level0">CURL *curl = curl_easy_init();
- if(curl) {
- &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
- <p class="level0">&nbsp; /* ask libcurl to show us the verbose output */
- &nbsp; curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
- <p class="level0">&nbsp; /* Perform the request */
- &nbsp; curl_easy_perform(curl);
- }
- </pre>
+<p class="level0"><pre class="level0">
+CURL *curl = curl_easy_init();
+if(curl) {
+&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+&nbsp;
+&nbsp; /* ask libcurl to show us the verbose output */
+&nbsp; curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+&nbsp;
+&nbsp; /* Perform the request */
+&nbsp; curl_easy_perform(curl);
+}
+</pre>
 
 <p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
index 5250d4e..9559882 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_VERBOSE.pdf and b/docs/libcurl/opts/CURLOPT_VERBOSE.pdf differ
index 1abff18..8013723 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_WILDCARDMATCH man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_WILDCARDMATCH - enable directory wildcard transfers <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WILDCARDMATCH, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Set <span Class="emphasis">onoff</span> to 1 if you want to transfer multiple files according to a file name pattern. The pattern can be specified as part of the <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a> option, using an fnmatch-like pattern (Shell Pattern Matching) in the last part of URL (file name). 
 <p class="level0">By default, libcurl uses its internal wildcard matching implementation. You can provide your own matching function by the <a Class="emphasis" href="./CURLOPT_FNMATCH_FUNCTION.html">CURLOPT_FNMATCH_FUNCTION</a> option. 
index c0d81dc..c0cd141 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.pdf and b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.pdf differ
index be07c76..0b7a502 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -46,12 +46,14 @@ By default, this is a FILE * to stdout.
 Used for all protocols.
 .SH EXAMPLE
 A common technique is to use the write callback to store the incoming data
-into a dynamically growing allocated buffer, and then this CURLOPT_WRITEDATA
-is used to point to a struct or the buffer to store data in. Like in the
-getinmemory example: http://curl.haxx.se/libcurl/c/getinmemory.html
+into a dynamically growing allocated buffer, and then this
+\fICURLOPT_WRITEDATA(3)\fP is used to point to a struct or the buffer to store
+data in. Like in the getinmemory example:
+http://curl.haxx.se/libcurl/c/getinmemory.html
 .SH AVAILABILITY
 Available in all libcurl versions. This option was formerly known as
-\fICURLOPT_FILE\fP, the name \fICURLOPT_WRITEDATA\fP was introduced in 7.9.7.
+\fICURLOPT_FILE\fP, the name \fICURLOPT_WRITEDATA(3)\fP was introduced in
+7.9.7.
 .SH RETURN VALUE
 This will return CURLE_OK.
 .SH "SEE ALSO"
index fb9dff9..e1adf77 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_WRITEDATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,15 +52,15 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_WRITEDATA - custom pointer passed to the write callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">A data <span Class="emphasis">pointer</span> to pass to the write callback. If you use the <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a> option, this is the pointer you'll get in that callback's 4th argument. If you don't use a write callback, you must make <span Class="emphasis">pointer</span> a 'FILE *' (cast to 'void *') as libcurl will pass this to <span Class="emphasis">fwrite(3)</span> when writing data. 
 <p class="level0">The internal <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a> will write the data to the FILE * given with this option, or to stdout if this option hasn't been set. 
 <p class="level0">If you're using libcurl as a win32 DLL, you <span Class="bold">MUST</span> use the <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a> if you set this option or you will experience crashes. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
 <p class="level0">By default, this is a FILE * to stdout. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
 <p class="level0">Used for all protocols. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
-<p class="level0">A common technique is to use the write callback to store the incoming data into a dynamically growing allocated buffer, and then this CURLOPT_WRITEDATA is used to point to a struct or the buffer to store data in. Like in the getinmemory example: <a href="http://curl.haxx.se/libcurl/c/getinmemory.html">http://curl.haxx.se/libcurl/c/getinmemory.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Available in all libcurl versions. This option was formerly known as <span Class="emphasis">CURLOPT_FILE</span>, the name <span Class="emphasis">CURLOPT_WRITEDATA</span> was introduced in 7.9.7. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">A common technique is to use the write callback to store the incoming data into a dynamically growing allocated buffer, and then this <a Class="emphasis" href="./CURLOPT_WRITEDATA.html">CURLOPT_WRITEDATA</a> is used to point to a struct or the buffer to store data in. Like in the getinmemory example: <a href="http://curl.haxx.se/libcurl/c/getinmemory.html">http://curl.haxx.se/libcurl/c/getinmemory.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Available in all libcurl versions. This option was formerly known as <span Class="emphasis">CURLOPT_FILE</span>, the name <a Class="emphasis" href="./CURLOPT_WRITEDATA.html">CURLOPT_WRITEDATA</a> was introduced in 7.9.7. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">This will return CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a Class="manpage" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, <a Class="manpage" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a>, <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
index 2751caa..508d74b 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_WRITEDATA.pdf and b/docs/libcurl/opts/CURLOPT_WRITEDATA.pdf differ
index 94bb1b2..a54dcd4 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_WRITEFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,11 +52,13 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_WRITEFUNCTION - set callback for writing received data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0"><pre>
-<p class="level0">#include &lt;curl/curl.h&gt;
- <p class="level0">size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata);
- <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEFUNCTION, write_callback);
- </pre>
+<p class="level0"><pre class="level0">
+&#35;include &lt;curl/curl.h&gt;
+&nbsp;
+size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata);
+&nbsp;
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEFUNCTION, write_callback);
+</pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
 <p class="level0">This callback function gets called by libcurl as soon as there is data received that needs to be saved.  <span Class="emphasis">ptr</span> points to the delivered data, and the size of that data is <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span>. 
index 42c2177..c847f1e 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.pdf differ
index 3c61c0e..e779438 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_XFERINFODATA man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_XFERINFODATA - custom pointer passed to the progress callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFODATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the progress callback set with <a Class="emphasis" href="./CURLOPT_XFERINFOFUNCTION.html">CURLOPT_XFERINFOFUNCTION</a>. 
 <p class="level0">This is an alias for <a Class="emphasis" href="./CURLOPT_PROGRESSDATA.html">CURLOPT_PROGRESSDATA</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index 87d1cfd..a3088de 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_XFERINFODATA.pdf and b/docs/libcurl/opts/CURLOPT_XFERINFODATA.pdf differ
index 12435a1..01b000b 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_XFERINFOFUNCTION man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_XFERINFOFUNCTION - callback to progress meter function <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">int progress_callback(void *clientp, &nbsp;                     curl_off_t dltotal, &nbsp;                     curl_off_t dlnow, &nbsp;                     curl_off_t ultotal, &nbsp;                     curl_off_t ulnow); 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFOFUNCTION, progress_callback); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
index 56d3a0d..07dc41a 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.pdf and b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.pdf differ
index 0658c30..95604a3 100644 (file)
@@ -4,15 +4,20 @@
 <title>CURLOPT_XOAUTH2_BEARER man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -47,7 +52,7 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">CURLOPT_XOAUTH2_BEARER - specify OAuth 2.0 access token <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">&#35;include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Pass a char * as parameter, which should point to the zero terminated OAuth 2.0 Bearer Access Token for use with IMAP, POP3 and SMTP servers that support the OAuth 2.0 Authorization Framework. 
 <p class="level0">Note: The user name used to generate the Bearer Token should be supplied via the <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
index b8406cf..84dec60 100644 (file)
Binary files a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.pdf and b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.pdf differ
index eac785c..4865b41 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -66,8 +66,9 @@ man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3               \
  CURLOPT_NEW_DIRECTORY_PERMS.3 CURLOPT_NEW_FILE_PERMS.3                        \
  CURLOPT_NOBODY.3 CURLOPT_NOPROGRESS.3 CURLOPT_NOPROXY.3               \
  CURLOPT_NOSIGNAL.3 CURLOPT_OPENSOCKETDATA.3                           \
- CURLOPT_OPENSOCKETFUNCTION.3 CURLOPT_PASSWORD.3 CURLOPT_PORT.3                \
- CURLOPT_POST.3 CURLOPT_POSTFIELDS.3 CURLOPT_POSTFIELDSIZE.3           \
+ CURLOPT_OPENSOCKETFUNCTION.3 CURLOPT_PASSWORD.3                       \
+ CURLOPT_PINNEDPUBLICKEY.3 CURLOPT_PORT.3 CURLOPT_POST.3               \
+ CURLOPT_POSTFIELDS.3 CURLOPT_POSTFIELDSIZE.3                          \
  CURLOPT_POSTFIELDSIZE_LARGE.3 CURLOPT_POSTQUOTE.3 CURLOPT_POSTREDIR.3 \
  CURLOPT_PREQUOTE.3 CURLOPT_PRIVATE.3 CURLOPT_PROGRESSDATA.3           \
  CURLOPT_PROGRESSFUNCTION.3 CURLOPT_PROTOCOLS.3 CURLOPT_PROXY.3                \
@@ -90,17 +91,18 @@ man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3             \
  CURLOPT_SSLCERT.3 CURLOPT_SSLCERTTYPE.3 CURLOPT_SSL_CIPHER_LIST.3     \
  CURLOPT_SSL_CTX_DATA.3 CURLOPT_SSL_CTX_FUNCTION.3                     \
  CURLOPT_SSL_ENABLE_ALPN.3 CURLOPT_SSL_ENABLE_NPN.3 CURLOPT_SSLENGINE.3        \
- CURLOPT_SSLENGINE_DEFAULT.3 CURLOPT_SSLKEY.3 CURLOPT_SSLKEYTYPE.3     \
- CURLOPT_SSL_OPTIONS.3 CURLOPT_SSL_SESSIONID_CACHE.3                   \
- CURLOPT_SSL_VERIFYHOST.3 CURLOPT_SSL_VERIFYPEER.3 CURLOPT_SSLVERSION.3        \
- CURLOPT_STDERR.3 CURLOPT_TCP_KEEPALIVE.3 CURLOPT_TCP_KEEPIDLE.3       \
- CURLOPT_TCP_KEEPINTVL.3 CURLOPT_TCP_NODELAY.3 CURLOPT_TELNETOPTIONS.3 \
- CURLOPT_TFTP_BLKSIZE.3 CURLOPT_TIMECONDITION.3 CURLOPT_TIMEOUT.3      \
- CURLOPT_TIMEOUT_MS.3 CURLOPT_TIMEVALUE.3 CURLOPT_TLSAUTH_PASSWORD.3   \
- CURLOPT_TLSAUTH_TYPE.3 CURLOPT_TLSAUTH_USERNAME.3                     \
- CURLOPT_TRANSFER_ENCODING.3 CURLOPT_TRANSFERTEXT.3                    \
- CURLOPT_UNRESTRICTED_AUTH.3 CURLOPT_UPLOAD.3 CURLOPT_URL.3            \
- CURLOPT_USERAGENT.3 CURLOPT_USERNAME.3 CURLOPT_USERPWD.3              \
+ CURLOPT_SSLENGINE_DEFAULT.3 CURLOPT_SSL_FALSESTART.3 CURLOPT_SSLKEY.3 \
+ CURLOPT_SSLKEYTYPE.3 CURLOPT_SSL_OPTIONS.3                            \
+ CURLOPT_SSL_SESSIONID_CACHE.3 CURLOPT_SSL_VERIFYHOST.3                        \
+ CURLOPT_SSL_VERIFYPEER.3 CURLOPT_SSL_VERIFYSTATUS.3                   \
+ CURLOPT_SSLVERSION.3 CURLOPT_STDERR.3 CURLOPT_TCP_KEEPALIVE.3         \
+ CURLOPT_TCP_KEEPIDLE.3 CURLOPT_TCP_KEEPINTVL.3 CURLOPT_TCP_NODELAY.3  \
+ CURLOPT_TELNETOPTIONS.3 CURLOPT_TFTP_BLKSIZE.3 CURLOPT_TIMECONDITION.3        \
+ CURLOPT_TIMEOUT.3 CURLOPT_TIMEOUT_MS.3 CURLOPT_TIMEVALUE.3            \
+ CURLOPT_TLSAUTH_PASSWORD.3 CURLOPT_TLSAUTH_TYPE.3                     \
+ CURLOPT_TLSAUTH_USERNAME.3 CURLOPT_TRANSFER_ENCODING.3                        \
+ CURLOPT_TRANSFERTEXT.3 CURLOPT_UNRESTRICTED_AUTH.3 CURLOPT_UPLOAD.3   \
+ CURLOPT_URL.3 CURLOPT_USERAGENT.3 CURLOPT_USERNAME.3 CURLOPT_USERPWD.3        \
  CURLOPT_USE_SSL.3 CURLOPT_VERBOSE.3 CURLOPT_WILDCARDMATCH.3           \
  CURLOPT_WRITEDATA.3 CURLOPT_WRITEFUNCTION.3 CURLOPT_XFERINFODATA.3    \
  CURLOPT_XFERINFOFUNCTION.3 CURLOPT_XOAUTH2_BEARER.3                   \
@@ -110,8 +112,10 @@ man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3            \
  CURLMOPT_MAX_TOTAL_CONNECTIONS.3 CURLMOPT_PIPELINING.3                        \
  CURLMOPT_PIPELINING_SERVER_BL.3 CURLMOPT_PIPELINING_SITE_BL.3         \
  CURLMOPT_SOCKETDATA.3 CURLMOPT_SOCKETFUNCTION.3 CURLMOPT_TIMERDATA.3  \
- CURLMOPT_TIMERFUNCTION.3 CURLOPT_UNIX_SOCKET_PATH.3
-
+ CURLMOPT_TIMERFUNCTION.3 CURLOPT_UNIX_SOCKET_PATH.3                   \
+ CURLOPT_PATH_AS_IS.3 CURLOPT_PROXY_SERVICE_NAME.3                     \
+ CURLOPT_SERVICE_NAME.3 CURLOPT_PIPEWAIT.3 CURLMOPT_PUSHDATA.3         \
+ CURLMOPT_PUSHFUNCTION.3
 
 HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
  CURLOPT_ADDRESS_SCOPE.html CURLOPT_APPEND.html                                \
@@ -166,8 +170,8 @@ HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html      \
  CURLOPT_NEW_FILE_PERMS.html CURLOPT_NOBODY.html                       \
  CURLOPT_NOPROGRESS.html CURLOPT_NOPROXY.html CURLOPT_NOSIGNAL.html    \
  CURLOPT_OPENSOCKETDATA.html CURLOPT_OPENSOCKETFUNCTION.html           \
- CURLOPT_PASSWORD.html CURLOPT_PORT.html CURLOPT_POST.html             \
- CURLOPT_POSTFIELDS.html CURLOPT_POSTFIELDSIZE.html                    \
+ CURLOPT_PASSWORD.html CURLOPT_PINNEDPUBLICKEY.html CURLOPT_PORT.html  \
+ CURLOPT_POST.html CURLOPT_POSTFIELDS.html CURLOPT_POSTFIELDSIZE.html  \
  CURLOPT_POSTFIELDSIZE_LARGE.html CURLOPT_POSTQUOTE.html               \
  CURLOPT_POSTREDIR.html CURLOPT_PREQUOTE.html CURLOPT_PRIVATE.html     \
  CURLOPT_PROGRESSDATA.html CURLOPT_PROGRESSFUNCTION.html               \
@@ -193,11 +197,11 @@ HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html    \
  CURLOPT_SSL_CIPHER_LIST.html CURLOPT_SSL_CTX_DATA.html                        \
  CURLOPT_SSL_CTX_FUNCTION.html CURLOPT_SSL_ENABLE_ALPN.html            \
  CURLOPT_SSL_ENABLE_NPN.html CURLOPT_SSLENGINE.html                    \
- CURLOPT_SSLENGINE_DEFAULT.html CURLOPT_SSLKEY.html                    \
- CURLOPT_SSLKEYTYPE.html CURLOPT_SSL_OPTIONS.html                      \
+ CURLOPT_SSLENGINE_DEFAULT.html CURLOPT_SSL_FALSESTART.html            \
+ CURLOPT_SSLKEY.html CURLOPT_SSLKEYTYPE.html CURLOPT_SSL_OPTIONS.html  \
  CURLOPT_SSL_SESSIONID_CACHE.html CURLOPT_SSL_VERIFYHOST.html          \
- CURLOPT_SSL_VERIFYPEER.html CURLOPT_SSLVERSION.html                   \
- CURLOPT_STDERR.html CURLOPT_TCP_KEEPALIVE.html                                \
+ CURLOPT_SSL_VERIFYPEER.html CURLOPT_SSL_VERIFYSTATUS.html             \
+ CURLOPT_SSLVERSION.html CURLOPT_STDERR.html CURLOPT_TCP_KEEPALIVE.html        \
  CURLOPT_TCP_KEEPIDLE.html CURLOPT_TCP_KEEPINTVL.html                  \
  CURLOPT_TCP_NODELAY.html CURLOPT_TELNETOPTIONS.html                   \
  CURLOPT_TFTP_BLKSIZE.html CURLOPT_TIMECONDITION.html                  \
@@ -217,7 +221,10 @@ HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html     \
  CURLMOPT_PIPELINING_SERVER_BL.html CURLMOPT_PIPELINING_SITE_BL.html   \
  CURLMOPT_SOCKETDATA.html CURLMOPT_SOCKETFUNCTION.html                 \
  CURLMOPT_TIMERDATA.html CURLMOPT_TIMERFUNCTION.html                   \
- CURLOPT_UNIX_SOCKET_PATH.html
+ CURLOPT_UNIX_SOCKET_PATH.html CURLOPT_PATH_AS_IS.html                 \
+ CURLOPT_PROXY_SERVICE_NAME.html CURLOPT_SERVICE_NAME.html             \
+ CURLOPT_PIPEWAIT.html CURLMOPT_PUSHDATA.html                          \
+ CURLMOPT_PUSHFUNCTION.html
 
 PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf    \
  CURLOPT_ADDRESS_SCOPE.pdf CURLOPT_APPEND.pdf CURLOPT_AUTOREFERER.pdf  \
@@ -269,8 +276,9 @@ PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf \
  CURLOPT_NEW_DIRECTORY_PERMS.pdf CURLOPT_NEW_FILE_PERMS.pdf            \
  CURLOPT_NOBODY.pdf CURLOPT_NOPROGRESS.pdf CURLOPT_NOPROXY.pdf         \
  CURLOPT_NOSIGNAL.pdf CURLOPT_OPENSOCKETDATA.pdf                       \
- CURLOPT_OPENSOCKETFUNCTION.pdf CURLOPT_PASSWORD.pdf CURLOPT_PORT.pdf  \
- CURLOPT_POST.pdf CURLOPT_POSTFIELDS.pdf CURLOPT_POSTFIELDSIZE.pdf     \
+ CURLOPT_OPENSOCKETFUNCTION.pdf CURLOPT_PASSWORD.pdf                   \
+ CURLOPT_PINNEDPUBLICKEY.pdf CURLOPT_PORT.pdf CURLOPT_POST.pdf         \
+ CURLOPT_POSTFIELDS.pdf CURLOPT_POSTFIELDSIZE.pdf                      \
  CURLOPT_POSTFIELDSIZE_LARGE.pdf CURLOPT_POSTQUOTE.pdf                 \
  CURLOPT_POSTREDIR.pdf CURLOPT_PREQUOTE.pdf CURLOPT_PRIVATE.pdf                \
  CURLOPT_PROGRESSDATA.pdf CURLOPT_PROGRESSFUNCTION.pdf                 \
@@ -296,30 +304,33 @@ PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf       \
  CURLOPT_SSL_CIPHER_LIST.pdf CURLOPT_SSL_CTX_DATA.pdf                  \
  CURLOPT_SSL_CTX_FUNCTION.pdf CURLOPT_SSL_ENABLE_ALPN.pdf              \
  CURLOPT_SSL_ENABLE_NPN.pdf CURLOPT_SSLENGINE.pdf                      \
- CURLOPT_SSLENGINE_DEFAULT.pdf CURLOPT_SSLKEY.pdf                      \
- CURLOPT_SSLKEYTYPE.pdf CURLOPT_SSL_OPTIONS.pdf                                \
+ CURLOPT_SSLENGINE_DEFAULT.pdf CURLOPT_SSL_FALSESTART.pdf              \
+ CURLOPT_SSLKEY.pdf CURLOPT_SSLKEYTYPE.pdf CURLOPT_SSL_OPTIONS.pdf     \
  CURLOPT_SSL_SESSIONID_CACHE.pdf CURLOPT_SSL_VERIFYHOST.pdf            \
- CURLOPT_SSL_VERIFYPEER.pdf CURLOPT_SSLVERSION.pdf CURLOPT_STDERR.pdf  \
- CURLOPT_TCP_KEEPALIVE.pdf CURLOPT_TCP_KEEPIDLE.pdf                    \
- CURLOPT_TCP_KEEPINTVL.pdf CURLOPT_TCP_NODELAY.pdf                     \
- CURLOPT_TELNETOPTIONS.pdf CURLOPT_TFTP_BLKSIZE.pdf                    \
- CURLOPT_TIMECONDITION.pdf CURLOPT_TIMEOUT.pdf CURLOPT_TIMEOUT_MS.pdf  \
- CURLOPT_TIMEVALUE.pdf CURLOPT_TLSAUTH_PASSWORD.pdf                    \
- CURLOPT_TLSAUTH_TYPE.pdf CURLOPT_TLSAUTH_USERNAME.pdf                 \
- CURLOPT_TRANSFER_ENCODING.pdf CURLOPT_TRANSFERTEXT.pdf                        \
- CURLOPT_UNRESTRICTED_AUTH.pdf CURLOPT_UPLOAD.pdf CURLOPT_URL.pdf      \
- CURLOPT_USERAGENT.pdf CURLOPT_USERNAME.pdf CURLOPT_USERPWD.pdf                \
- CURLOPT_USE_SSL.pdf CURLOPT_VERBOSE.pdf CURLOPT_WILDCARDMATCH.pdf     \
- CURLOPT_WRITEDATA.pdf CURLOPT_WRITEFUNCTION.pdf                       \
- CURLOPT_XFERINFODATA.pdf CURLOPT_XFERINFOFUNCTION.pdf                 \
- CURLOPT_XOAUTH2_BEARER.pdf CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf     \
+ CURLOPT_SSL_VERIFYPEER.pdf CURLOPT_SSL_VERIFYSTATUS.pdf               \
+ CURLOPT_SSLVERSION.pdf CURLOPT_STDERR.pdf CURLOPT_TCP_KEEPALIVE.pdf   \
+ CURLOPT_TCP_KEEPIDLE.pdf CURLOPT_TCP_KEEPINTVL.pdf                    \
+ CURLOPT_TCP_NODELAY.pdf CURLOPT_TELNETOPTIONS.pdf                     \
+ CURLOPT_TFTP_BLKSIZE.pdf CURLOPT_TIMECONDITION.pdf CURLOPT_TIMEOUT.pdf        \
+ CURLOPT_TIMEOUT_MS.pdf CURLOPT_TIMEVALUE.pdf                          \
+ CURLOPT_TLSAUTH_PASSWORD.pdf CURLOPT_TLSAUTH_TYPE.pdf                 \
+ CURLOPT_TLSAUTH_USERNAME.pdf CURLOPT_TRANSFER_ENCODING.pdf            \
+ CURLOPT_TRANSFERTEXT.pdf CURLOPT_UNRESTRICTED_AUTH.pdf                        \
+ CURLOPT_UPLOAD.pdf CURLOPT_URL.pdf CURLOPT_USERAGENT.pdf              \
+ CURLOPT_USERNAME.pdf CURLOPT_USERPWD.pdf CURLOPT_USE_SSL.pdf          \
+ CURLOPT_VERBOSE.pdf CURLOPT_WILDCARDMATCH.pdf CURLOPT_WRITEDATA.pdf   \
+ CURLOPT_WRITEFUNCTION.pdf CURLOPT_XFERINFODATA.pdf                    \
+ CURLOPT_XFERINFOFUNCTION.pdf CURLOPT_XOAUTH2_BEARER.pdf               \
+ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf                                        \
  CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf CURLMOPT_MAXCONNECTS.pdf     \
  CURLMOPT_MAX_HOST_CONNECTIONS.pdf CURLMOPT_MAX_PIPELINE_LENGTH.pdf    \
  CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf CURLMOPT_PIPELINING.pdf            \
  CURLMOPT_PIPELINING_SERVER_BL.pdf CURLMOPT_PIPELINING_SITE_BL.pdf     \
  CURLMOPT_SOCKETDATA.pdf CURLMOPT_SOCKETFUNCTION.pdf                   \
  CURLMOPT_TIMERDATA.pdf CURLMOPT_TIMERFUNCTION.pdf                     \
- CURLOPT_UNIX_SOCKET_PATH.pdf
+ CURLOPT_UNIX_SOCKET_PATH.pdf CURLOPT_PATH_AS_IS.pdf                   \
+ CURLOPT_PROXY_SERVICE_NAME.pdf CURLOPT_SERVICE_NAME.pdf               \
+ CURLOPT_PIPEWAIT.pdf CURLMOPT_PUSHDATA.pdf CURLMOPT_PUSHFUNCTION.pdf
 
 CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
 
index cb2f5d2..f6cd895 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 ###########################################################################
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -100,8 +110,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = docs/libcurl/opts
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -122,7 +130,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -179,6 +188,7 @@ man3dir = $(mandir)/man3
 am__installdirs = "$(DESTDIR)$(man3dir)"
 MANS = $(man_MANS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -237,7 +247,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -290,6 +300,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -306,7 +317,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -411,8 +421,9 @@ man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3             \
  CURLOPT_NEW_DIRECTORY_PERMS.3 CURLOPT_NEW_FILE_PERMS.3                        \
  CURLOPT_NOBODY.3 CURLOPT_NOPROGRESS.3 CURLOPT_NOPROXY.3               \
  CURLOPT_NOSIGNAL.3 CURLOPT_OPENSOCKETDATA.3                           \
- CURLOPT_OPENSOCKETFUNCTION.3 CURLOPT_PASSWORD.3 CURLOPT_PORT.3                \
- CURLOPT_POST.3 CURLOPT_POSTFIELDS.3 CURLOPT_POSTFIELDSIZE.3           \
+ CURLOPT_OPENSOCKETFUNCTION.3 CURLOPT_PASSWORD.3                       \
+ CURLOPT_PINNEDPUBLICKEY.3 CURLOPT_PORT.3 CURLOPT_POST.3               \
+ CURLOPT_POSTFIELDS.3 CURLOPT_POSTFIELDSIZE.3                          \
  CURLOPT_POSTFIELDSIZE_LARGE.3 CURLOPT_POSTQUOTE.3 CURLOPT_POSTREDIR.3 \
  CURLOPT_PREQUOTE.3 CURLOPT_PRIVATE.3 CURLOPT_PROGRESSDATA.3           \
  CURLOPT_PROGRESSFUNCTION.3 CURLOPT_PROTOCOLS.3 CURLOPT_PROXY.3                \
@@ -435,17 +446,18 @@ man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3           \
  CURLOPT_SSLCERT.3 CURLOPT_SSLCERTTYPE.3 CURLOPT_SSL_CIPHER_LIST.3     \
  CURLOPT_SSL_CTX_DATA.3 CURLOPT_SSL_CTX_FUNCTION.3                     \
  CURLOPT_SSL_ENABLE_ALPN.3 CURLOPT_SSL_ENABLE_NPN.3 CURLOPT_SSLENGINE.3        \
- CURLOPT_SSLENGINE_DEFAULT.3 CURLOPT_SSLKEY.3 CURLOPT_SSLKEYTYPE.3     \
- CURLOPT_SSL_OPTIONS.3 CURLOPT_SSL_SESSIONID_CACHE.3                   \
- CURLOPT_SSL_VERIFYHOST.3 CURLOPT_SSL_VERIFYPEER.3 CURLOPT_SSLVERSION.3        \
- CURLOPT_STDERR.3 CURLOPT_TCP_KEEPALIVE.3 CURLOPT_TCP_KEEPIDLE.3       \
- CURLOPT_TCP_KEEPINTVL.3 CURLOPT_TCP_NODELAY.3 CURLOPT_TELNETOPTIONS.3 \
- CURLOPT_TFTP_BLKSIZE.3 CURLOPT_TIMECONDITION.3 CURLOPT_TIMEOUT.3      \
- CURLOPT_TIMEOUT_MS.3 CURLOPT_TIMEVALUE.3 CURLOPT_TLSAUTH_PASSWORD.3   \
- CURLOPT_TLSAUTH_TYPE.3 CURLOPT_TLSAUTH_USERNAME.3                     \
- CURLOPT_TRANSFER_ENCODING.3 CURLOPT_TRANSFERTEXT.3                    \
- CURLOPT_UNRESTRICTED_AUTH.3 CURLOPT_UPLOAD.3 CURLOPT_URL.3            \
- CURLOPT_USERAGENT.3 CURLOPT_USERNAME.3 CURLOPT_USERPWD.3              \
+ CURLOPT_SSLENGINE_DEFAULT.3 CURLOPT_SSL_FALSESTART.3 CURLOPT_SSLKEY.3 \
+ CURLOPT_SSLKEYTYPE.3 CURLOPT_SSL_OPTIONS.3                            \
+ CURLOPT_SSL_SESSIONID_CACHE.3 CURLOPT_SSL_VERIFYHOST.3                        \
+ CURLOPT_SSL_VERIFYPEER.3 CURLOPT_SSL_VERIFYSTATUS.3                   \
+ CURLOPT_SSLVERSION.3 CURLOPT_STDERR.3 CURLOPT_TCP_KEEPALIVE.3         \
+ CURLOPT_TCP_KEEPIDLE.3 CURLOPT_TCP_KEEPINTVL.3 CURLOPT_TCP_NODELAY.3  \
+ CURLOPT_TELNETOPTIONS.3 CURLOPT_TFTP_BLKSIZE.3 CURLOPT_TIMECONDITION.3        \
+ CURLOPT_TIMEOUT.3 CURLOPT_TIMEOUT_MS.3 CURLOPT_TIMEVALUE.3            \
+ CURLOPT_TLSAUTH_PASSWORD.3 CURLOPT_TLSAUTH_TYPE.3                     \
+ CURLOPT_TLSAUTH_USERNAME.3 CURLOPT_TRANSFER_ENCODING.3                        \
+ CURLOPT_TRANSFERTEXT.3 CURLOPT_UNRESTRICTED_AUTH.3 CURLOPT_UPLOAD.3   \
+ CURLOPT_URL.3 CURLOPT_USERAGENT.3 CURLOPT_USERNAME.3 CURLOPT_USERPWD.3        \
  CURLOPT_USE_SSL.3 CURLOPT_VERBOSE.3 CURLOPT_WILDCARDMATCH.3           \
  CURLOPT_WRITEDATA.3 CURLOPT_WRITEFUNCTION.3 CURLOPT_XFERINFODATA.3    \
  CURLOPT_XFERINFOFUNCTION.3 CURLOPT_XOAUTH2_BEARER.3                   \
@@ -455,7 +467,10 @@ man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3            \
  CURLMOPT_MAX_TOTAL_CONNECTIONS.3 CURLMOPT_PIPELINING.3                        \
  CURLMOPT_PIPELINING_SERVER_BL.3 CURLMOPT_PIPELINING_SITE_BL.3         \
  CURLMOPT_SOCKETDATA.3 CURLMOPT_SOCKETFUNCTION.3 CURLMOPT_TIMERDATA.3  \
- CURLMOPT_TIMERFUNCTION.3 CURLOPT_UNIX_SOCKET_PATH.3
+ CURLMOPT_TIMERFUNCTION.3 CURLOPT_UNIX_SOCKET_PATH.3                   \
+ CURLOPT_PATH_AS_IS.3 CURLOPT_PROXY_SERVICE_NAME.3                     \
+ CURLOPT_SERVICE_NAME.3 CURLOPT_PIPEWAIT.3 CURLMOPT_PUSHDATA.3         \
+ CURLMOPT_PUSHFUNCTION.3
 
 HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
  CURLOPT_ADDRESS_SCOPE.html CURLOPT_APPEND.html                                \
@@ -510,8 +525,8 @@ HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html      \
  CURLOPT_NEW_FILE_PERMS.html CURLOPT_NOBODY.html                       \
  CURLOPT_NOPROGRESS.html CURLOPT_NOPROXY.html CURLOPT_NOSIGNAL.html    \
  CURLOPT_OPENSOCKETDATA.html CURLOPT_OPENSOCKETFUNCTION.html           \
- CURLOPT_PASSWORD.html CURLOPT_PORT.html CURLOPT_POST.html             \
- CURLOPT_POSTFIELDS.html CURLOPT_POSTFIELDSIZE.html                    \
+ CURLOPT_PASSWORD.html CURLOPT_PINNEDPUBLICKEY.html CURLOPT_PORT.html  \
+ CURLOPT_POST.html CURLOPT_POSTFIELDS.html CURLOPT_POSTFIELDSIZE.html  \
  CURLOPT_POSTFIELDSIZE_LARGE.html CURLOPT_POSTQUOTE.html               \
  CURLOPT_POSTREDIR.html CURLOPT_PREQUOTE.html CURLOPT_PRIVATE.html     \
  CURLOPT_PROGRESSDATA.html CURLOPT_PROGRESSFUNCTION.html               \
@@ -537,11 +552,11 @@ HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html    \
  CURLOPT_SSL_CIPHER_LIST.html CURLOPT_SSL_CTX_DATA.html                        \
  CURLOPT_SSL_CTX_FUNCTION.html CURLOPT_SSL_ENABLE_ALPN.html            \
  CURLOPT_SSL_ENABLE_NPN.html CURLOPT_SSLENGINE.html                    \
- CURLOPT_SSLENGINE_DEFAULT.html CURLOPT_SSLKEY.html                    \
- CURLOPT_SSLKEYTYPE.html CURLOPT_SSL_OPTIONS.html                      \
+ CURLOPT_SSLENGINE_DEFAULT.html CURLOPT_SSL_FALSESTART.html            \
+ CURLOPT_SSLKEY.html CURLOPT_SSLKEYTYPE.html CURLOPT_SSL_OPTIONS.html  \
  CURLOPT_SSL_SESSIONID_CACHE.html CURLOPT_SSL_VERIFYHOST.html          \
- CURLOPT_SSL_VERIFYPEER.html CURLOPT_SSLVERSION.html                   \
- CURLOPT_STDERR.html CURLOPT_TCP_KEEPALIVE.html                                \
+ CURLOPT_SSL_VERIFYPEER.html CURLOPT_SSL_VERIFYSTATUS.html             \
+ CURLOPT_SSLVERSION.html CURLOPT_STDERR.html CURLOPT_TCP_KEEPALIVE.html        \
  CURLOPT_TCP_KEEPIDLE.html CURLOPT_TCP_KEEPINTVL.html                  \
  CURLOPT_TCP_NODELAY.html CURLOPT_TELNETOPTIONS.html                   \
  CURLOPT_TFTP_BLKSIZE.html CURLOPT_TIMECONDITION.html                  \
@@ -561,7 +576,10 @@ HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html     \
  CURLMOPT_PIPELINING_SERVER_BL.html CURLMOPT_PIPELINING_SITE_BL.html   \
  CURLMOPT_SOCKETDATA.html CURLMOPT_SOCKETFUNCTION.html                 \
  CURLMOPT_TIMERDATA.html CURLMOPT_TIMERFUNCTION.html                   \
- CURLOPT_UNIX_SOCKET_PATH.html
+ CURLOPT_UNIX_SOCKET_PATH.html CURLOPT_PATH_AS_IS.html                 \
+ CURLOPT_PROXY_SERVICE_NAME.html CURLOPT_SERVICE_NAME.html             \
+ CURLOPT_PIPEWAIT.html CURLMOPT_PUSHDATA.html                          \
+ CURLMOPT_PUSHFUNCTION.html
 
 PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf    \
  CURLOPT_ADDRESS_SCOPE.pdf CURLOPT_APPEND.pdf CURLOPT_AUTOREFERER.pdf  \
@@ -613,8 +631,9 @@ PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf \
  CURLOPT_NEW_DIRECTORY_PERMS.pdf CURLOPT_NEW_FILE_PERMS.pdf            \
  CURLOPT_NOBODY.pdf CURLOPT_NOPROGRESS.pdf CURLOPT_NOPROXY.pdf         \
  CURLOPT_NOSIGNAL.pdf CURLOPT_OPENSOCKETDATA.pdf                       \
- CURLOPT_OPENSOCKETFUNCTION.pdf CURLOPT_PASSWORD.pdf CURLOPT_PORT.pdf  \
- CURLOPT_POST.pdf CURLOPT_POSTFIELDS.pdf CURLOPT_POSTFIELDSIZE.pdf     \
+ CURLOPT_OPENSOCKETFUNCTION.pdf CURLOPT_PASSWORD.pdf                   \
+ CURLOPT_PINNEDPUBLICKEY.pdf CURLOPT_PORT.pdf CURLOPT_POST.pdf         \
+ CURLOPT_POSTFIELDS.pdf CURLOPT_POSTFIELDSIZE.pdf                      \
  CURLOPT_POSTFIELDSIZE_LARGE.pdf CURLOPT_POSTQUOTE.pdf                 \
  CURLOPT_POSTREDIR.pdf CURLOPT_PREQUOTE.pdf CURLOPT_PRIVATE.pdf                \
  CURLOPT_PROGRESSDATA.pdf CURLOPT_PROGRESSFUNCTION.pdf                 \
@@ -640,30 +659,33 @@ PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf       \
  CURLOPT_SSL_CIPHER_LIST.pdf CURLOPT_SSL_CTX_DATA.pdf                  \
  CURLOPT_SSL_CTX_FUNCTION.pdf CURLOPT_SSL_ENABLE_ALPN.pdf              \
  CURLOPT_SSL_ENABLE_NPN.pdf CURLOPT_SSLENGINE.pdf                      \
- CURLOPT_SSLENGINE_DEFAULT.pdf CURLOPT_SSLKEY.pdf                      \
- CURLOPT_SSLKEYTYPE.pdf CURLOPT_SSL_OPTIONS.pdf                                \
+ CURLOPT_SSLENGINE_DEFAULT.pdf CURLOPT_SSL_FALSESTART.pdf              \
+ CURLOPT_SSLKEY.pdf CURLOPT_SSLKEYTYPE.pdf CURLOPT_SSL_OPTIONS.pdf     \
  CURLOPT_SSL_SESSIONID_CACHE.pdf CURLOPT_SSL_VERIFYHOST.pdf            \
- CURLOPT_SSL_VERIFYPEER.pdf CURLOPT_SSLVERSION.pdf CURLOPT_STDERR.pdf  \
- CURLOPT_TCP_KEEPALIVE.pdf CURLOPT_TCP_KEEPIDLE.pdf                    \
- CURLOPT_TCP_KEEPINTVL.pdf CURLOPT_TCP_NODELAY.pdf                     \
- CURLOPT_TELNETOPTIONS.pdf CURLOPT_TFTP_BLKSIZE.pdf                    \
- CURLOPT_TIMECONDITION.pdf CURLOPT_TIMEOUT.pdf CURLOPT_TIMEOUT_MS.pdf  \
- CURLOPT_TIMEVALUE.pdf CURLOPT_TLSAUTH_PASSWORD.pdf                    \
- CURLOPT_TLSAUTH_TYPE.pdf CURLOPT_TLSAUTH_USERNAME.pdf                 \
- CURLOPT_TRANSFER_ENCODING.pdf CURLOPT_TRANSFERTEXT.pdf                        \
- CURLOPT_UNRESTRICTED_AUTH.pdf CURLOPT_UPLOAD.pdf CURLOPT_URL.pdf      \
- CURLOPT_USERAGENT.pdf CURLOPT_USERNAME.pdf CURLOPT_USERPWD.pdf                \
- CURLOPT_USE_SSL.pdf CURLOPT_VERBOSE.pdf CURLOPT_WILDCARDMATCH.pdf     \
- CURLOPT_WRITEDATA.pdf CURLOPT_WRITEFUNCTION.pdf                       \
- CURLOPT_XFERINFODATA.pdf CURLOPT_XFERINFOFUNCTION.pdf                 \
- CURLOPT_XOAUTH2_BEARER.pdf CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf     \
+ CURLOPT_SSL_VERIFYPEER.pdf CURLOPT_SSL_VERIFYSTATUS.pdf               \
+ CURLOPT_SSLVERSION.pdf CURLOPT_STDERR.pdf CURLOPT_TCP_KEEPALIVE.pdf   \
+ CURLOPT_TCP_KEEPIDLE.pdf CURLOPT_TCP_KEEPINTVL.pdf                    \
+ CURLOPT_TCP_NODELAY.pdf CURLOPT_TELNETOPTIONS.pdf                     \
+ CURLOPT_TFTP_BLKSIZE.pdf CURLOPT_TIMECONDITION.pdf CURLOPT_TIMEOUT.pdf        \
+ CURLOPT_TIMEOUT_MS.pdf CURLOPT_TIMEVALUE.pdf                          \
+ CURLOPT_TLSAUTH_PASSWORD.pdf CURLOPT_TLSAUTH_TYPE.pdf                 \
+ CURLOPT_TLSAUTH_USERNAME.pdf CURLOPT_TRANSFER_ENCODING.pdf            \
+ CURLOPT_TRANSFERTEXT.pdf CURLOPT_UNRESTRICTED_AUTH.pdf                        \
+ CURLOPT_UPLOAD.pdf CURLOPT_URL.pdf CURLOPT_USERAGENT.pdf              \
+ CURLOPT_USERNAME.pdf CURLOPT_USERPWD.pdf CURLOPT_USE_SSL.pdf          \
+ CURLOPT_VERBOSE.pdf CURLOPT_WILDCARDMATCH.pdf CURLOPT_WRITEDATA.pdf   \
+ CURLOPT_WRITEFUNCTION.pdf CURLOPT_XFERINFODATA.pdf                    \
+ CURLOPT_XFERINFOFUNCTION.pdf CURLOPT_XOAUTH2_BEARER.pdf               \
+ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf                                        \
  CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf CURLMOPT_MAXCONNECTS.pdf     \
  CURLMOPT_MAX_HOST_CONNECTIONS.pdf CURLMOPT_MAX_PIPELINE_LENGTH.pdf    \
  CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf CURLMOPT_PIPELINING.pdf            \
  CURLMOPT_PIPELINING_SERVER_BL.pdf CURLMOPT_PIPELINING_SITE_BL.pdf     \
  CURLMOPT_SOCKETDATA.pdf CURLMOPT_SOCKETFUNCTION.pdf                   \
  CURLMOPT_TIMERDATA.pdf CURLMOPT_TIMERFUNCTION.pdf                     \
- CURLOPT_UNIX_SOCKET_PATH.pdf
+ CURLOPT_UNIX_SOCKET_PATH.pdf CURLOPT_PATH_AS_IS.pdf                   \
+ CURLOPT_PROXY_SERVICE_NAME.pdf CURLOPT_SERVICE_NAME.pdf               \
+ CURLOPT_PIPEWAIT.pdf CURLMOPT_PUSHDATA.pdf CURLMOPT_PUSHFUNCTION.pdf
 
 CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
 EXTRA_DIST = $(man_MANS) $(HTMLPAGES) $(PDFPAGES)
@@ -685,7 +707,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/libcurl/opts/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign docs/libcurl/opts/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -906,6 +927,8 @@ uninstall-man: uninstall-man3
        ps ps-am tags-am uninstall uninstall-am uninstall-man \
        uninstall-man3
 
+.PRECIOUS: Makefile
+
 
 html: $(HTMLPAGES)
 
index b8b0838..4021c76 100644 (file)
@@ -118,6 +118,7 @@ CURLE_SSL_CRL_BADFILE           7.19.0
 CURLE_SSL_ENGINE_INITFAILED     7.12.3
 CURLE_SSL_ENGINE_NOTFOUND       7.9.3
 CURLE_SSL_ENGINE_SETFAILED      7.9.3
+CURLE_SSL_INVALIDCERTSTATUS     7.41.0
 CURLE_SSL_ISSUER_ERROR          7.19.0
 CURLE_SSL_PEER_CERTIFICATE      7.8           7.17.1
 CURLE_SSL_PINNEDPUBKEYNOTMATCH  7.39.0
@@ -283,6 +284,8 @@ CURLMOPT_MAX_TOTAL_CONNECTIONS  7.30.0
 CURLMOPT_PIPELINING             7.16.0
 CURLMOPT_PIPELINING_SERVER_BL   7.30.0
 CURLMOPT_PIPELINING_SITE_BL     7.30.0
+CURLMOPT_PUSHDATA               7.44.0
+CURLMOPT_PUSHFUNCTION           7.44.0
 CURLMOPT_SOCKETDATA             7.15.4
 CURLMOPT_SOCKETFUNCTION         7.15.4
 CURLMOPT_TIMERDATA              7.16.0
@@ -430,7 +433,9 @@ CURLOPT_PASSWDDATA              7.4.2         7.11.1      7.15.5
 CURLOPT_PASSWDFUNCTION          7.4.2         7.11.1      7.15.5
 CURLOPT_PASSWORD                7.19.1
 CURLOPT_PASV_HOST               7.12.1        7.16.0      7.15.5
+CURLOPT_PATH_AS_IS              7.42.0
 CURLOPT_PINNEDPUBLICKEY         7.39.0
+CURLOPT_PIPEWAIT                7.43.0
 CURLOPT_PORT                    7.1
 CURLOPT_POST                    7.1
 CURLOPT_POST301                 7.17.1        7.19.1
@@ -452,6 +457,7 @@ CURLOPT_PROXYPORT               7.1
 CURLOPT_PROXYTYPE               7.10
 CURLOPT_PROXYUSERNAME           7.19.1
 CURLOPT_PROXYUSERPWD            7.1
+CURLOPT_PROXY_SERVICE_NAME      7.43.0
 CURLOPT_PROXY_TRANSFER_MODE     7.18.0
 CURLOPT_PUT                     7.1
 CURLOPT_QUOTE                   7.1
@@ -475,6 +481,7 @@ CURLOPT_SASL_IR                 7.31.0
 CURLOPT_SEEKDATA                7.18.0
 CURLOPT_SEEKFUNCTION            7.18.0
 CURLOPT_SERVER_RESPONSE_TIMEOUT 7.20.0
+CURLOPT_SERVICE_NAME            7.43.0
 CURLOPT_SHARE                   7.10
 CURLOPT_SOCKOPTDATA             7.16.0
 CURLOPT_SOCKOPTFUNCTION         7.16.0
@@ -509,10 +516,12 @@ CURLOPT_SSL_CTX_DATA            7.10.6
 CURLOPT_SSL_CTX_FUNCTION        7.10.6
 CURLOPT_SSL_ENABLE_ALPN         7.36.0
 CURLOPT_SSL_ENABLE_NPN          7.36.0
+CURLOPT_SSL_FALSESTART          7.42.0
 CURLOPT_SSL_OPTIONS             7.25.0
 CURLOPT_SSL_SESSIONID_CACHE     7.16.0
 CURLOPT_SSL_VERIFYHOST          7.8.1
 CURLOPT_SSL_VERIFYPEER          7.4.2
+CURLOPT_SSL_VERIFYSTATUS        7.41.0
 CURLOPT_STDERR                  7.1
 CURLOPT_TCP_KEEPALIVE           7.25.0
 CURLOPT_TCP_KEEPIDLE            7.25.0
@@ -552,6 +561,9 @@ CURLPAUSE_RECV                  7.18.0
 CURLPAUSE_RECV_CONT             7.18.0
 CURLPAUSE_SEND                  7.18.0
 CURLPAUSE_SEND_CONT             7.18.0
+CURLPIPE_HTTP1                  7.43.0
+CURLPIPE_MULTIPLEX              7.43.0
+CURLPIPE_NOTHING                7.43.0
 CURLPROTO_ALL                   7.19.4
 CURLPROTO_DICT                  7.19.4
 CURLPROTO_FILE                  7.19.4
@@ -621,6 +633,7 @@ CURLSSLBACKEND_POLARSSL         7.34.0
 CURLSSLBACKEND_QSOSSL           7.34.0        -           7.38.1
 CURLSSLBACKEND_SCHANNEL         7.34.0
 CURLSSLOPT_ALLOW_BEAST          7.25.0
+CURLSSLOPT_NO_REVOKE            7.44.0
 CURLUSESSL_ALL                  7.17.0
 CURLUSESSL_CONTROL              7.17.0
 CURLUSESSL_NONE                 7.17.0
@@ -661,6 +674,7 @@ 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_2_0           7.33.0
+CURL_HTTP_VERSION_2             7.43.0
 CURL_HTTP_VERSION_NONE          7.9.1
 CURL_IPRESOLVE_V4               7.10.8
 CURL_IPRESOLVE_V6               7.10.8
@@ -691,6 +705,8 @@ CURL_POLL_OUT                   7.14.0
 CURL_POLL_REMOVE                7.14.0
 CURL_PROGRESS_BAR               7.1.1         -           7.4.1
 CURL_PROGRESS_STATS             7.1.1         -           7.4.1
+CURL_PUSH_DENY                  7.44.0
+CURL_PUSH_OK                    7.44.0
 CURL_READFUNC_ABORT             7.12.1
 CURL_READFUNC_PAUSE             7.18.0
 CURL_REDIR_GET_ALL              7.19.1
index d1ff7a6..a7b76e2 100755 (executable)
@@ -24,7 +24,7 @@
 # Experience has shown that the symbols-in-versions file is very useful to
 # applications that want to build with a wide range of libcurl versions.
 # It is however easy to get it wrong and the source gets a bit messy with all
-# the fixed numerical comparisions.
+# the fixed numerical comparisons.
 #
 # The point of this script is to provide an easy-to-use macro for libcurl-
 # using applications to do preprocessor checks for specific libcurl defines,
@@ -71,7 +71,7 @@ while(<F>) {
         my $dep;
 
         # is there removed info?
-        if($vers =~ /([\d.]+)[ \t-]+([\d.]+)[ \t]+([\d.]+)/) {
+        if($vers =~ /([\d.]+)[ \t-]+([\d.-]+)[ \t]+([\d.]+)/) {
             ($intr, $dep, $rm)=($1, $2, $3);
         }
         # is it a dep-only line?
index 0c633de..89b9b12 100644 (file)
@@ -4,15 +4,20 @@
 <title>mk-ca-bundle man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -70,6 +75,7 @@ p.roffit {
 <p class="level1">Valid purposes are: 
 <p class="level2">ALL, DIGITAL_SIGNATURE, NON_REPUDIATION, KEY_ENCIPHERMENT, DATA_ENCIPHERMENT, KEY_AGREEMENT, KEY_CERT_SIGN, CRL_SIGN, SERVER_AUTH (default), CLIENT_AUTH, CODE_SIGNING, EMAIL_PROTECTION, IPSEC_END_SYSTEM, IPSEC_TUNNEL, IPSEC_USER, TIME_STAMPING, STEP_UP_APPROVED 
 <p class="level1">
+<p class="level0"><a name=""></a><span class="nroffip"></span> 
 <p class="level1">Valid trust levels are: 
 <p class="level2">ALL, TRUSTED_DELEGATOR (default), NOT_TRUSTED, MUST_VERIFY_TRUST, TRUSTED 
 <p class="level1">
@@ -88,9 +94,9 @@ p.roffit {
 <p class="level0"><a name="-v"></a><span class="nroffip">-v</span> 
 <p class="level1">be verbose and print out processed CAs <a name="EXIT"></a><h2 class="nroffsh">EXIT STATUS</h2>
 <p class="level0">Returns 0 on success. Returns 1 if it fails to download data. <a name="CERTDATA"></a><h2 class="nroffsh">CERTDATA FORMAT</h2>
-<p class="level0">The file format used by Mozilla for this trust information seems to be documented here: <pre>
-<p class="level0"><a href="http://p11-glue.freedesktop.org/doc/storing-trust-policy/storing-trust-existing.html">http://p11-glue.freedesktop.org/doc/storing-trust-policy/storing-trust-existing.html</a>
- </pre>
+<p class="level0">The file format used by Mozilla for this trust information seems to be documented here: <pre class="level0">
+<a href="http://p11-glue.freedesktop.org/doc/storing-trust-policy/storing-trust-existing.html">http://p11-glue.freedesktop.org/doc/storing-trust-policy/storing-trust-existing.html</a>
+</pre>
 
 <p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><span Class="manpage">curl (1)</span> <a name="HISTORY"></a><h2 class="nroffsh">HISTORY</h2>
index fbd4b36..483aa8c 100644 (file)
Binary files a/docs/mk-ca-bundle.pdf and b/docs/mk-ca-bundle.pdf differ
index 1b6b48f..bce5fa6 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = include
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -162,6 +171,7 @@ am__define_uniq_tagged_files = \
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -245,7 +255,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -298,6 +308,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -314,7 +325,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -392,7 +402,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign include/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -687,6 +696,8 @@ uninstall-am:
        mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
        ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 1087121..b71496e 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -78,9 +88,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = include/curl
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(srcdir)/curlbuild.h.in $(top_srcdir)/mkinstalldirs \
-       $(pkginclude_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -101,7 +108,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(pkginclude_HEADERS) \
+       $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h curlbuild.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
@@ -173,6 +182,7 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curlbuild.h.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 pkgincludedir = $(includedir)/curl
 ACLOCAL = @ACLOCAL@
@@ -232,7 +242,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -285,6 +295,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -301,7 +312,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -420,7 +430,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/curl/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign include/curl/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -680,6 +689,8 @@ uninstall-am: uninstall-pkgincludeHEADERS
        mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
        uninstall-am uninstall-pkgincludeHEADERS
 
+.PRECIOUS: Makefile
+
 
 checksrc:
        @@PERL@ $(top_srcdir)/lib/checksrc.pl -Wcurlbuild.h -D$(top_srcdir)/include/curl $(pkginclude_HEADERS) $(EXTRA_DIST)
index 44b1b7e..64f9261 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -523,6 +523,7 @@ typedef enum {
                                     session will be queued */
   CURLE_SSL_PINNEDPUBKEYNOTMATCH, /* 90 - specified pinned public key did not
                                      match */
+  CURLE_SSL_INVALIDCERTSTATUS,   /* 91 - invalid certificate status */
   CURL_LAST /* never use! */
 } CURLcode;
 
@@ -724,6 +725,10 @@ typedef enum {
    servers, a user can this way allow the vulnerability back. */
 #define CURLSSLOPT_ALLOW_BEAST (1<<0)
 
+/* - NO_REVOKE tells libcurl to disable certificate revocation checks for those
+   SSL backends where such behavior is present. */
+#define CURLSSLOPT_NO_REVOKE (1<<1)
+
 #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
                           the obsolete stuff removed! */
 
@@ -845,7 +850,7 @@ typedef enum {
   CINIT(WRITEDATA, OBJECTPOINT, 1),
 
   /* The full URL to get/put */
-  CINIT(URL,  OBJECTPOINT, 2),
+  CINIT(URL, OBJECTPOINT, 2),
 
   /* Port number to connect to, if other than default. */
   CINIT(PORT, LONG, 3),
@@ -1622,6 +1627,24 @@ typedef enum {
   /* Path to Unix domain socket */
   CINIT(UNIX_SOCKET_PATH, OBJECTPOINT, 231),
 
+  /* Set if we should verify the certificate status. */
+  CINIT(SSL_VERIFYSTATUS, LONG, 232),
+
+  /* Set if we should enable TLS false start. */
+  CINIT(SSL_FALSESTART, LONG, 233),
+
+  /* Do not squash dot-dot sequences */
+  CINIT(PATH_AS_IS, LONG, 234),
+
+  /* Proxy Service Name */
+  CINIT(PROXY_SERVICE_NAME, OBJECTPOINT, 235),
+
+  /* Service Name */
+  CINIT(SERVICE_NAME, OBJECTPOINT, 236),
+
+  /* Wait/don't wait for pipe/mutex to clarify */
+  CINIT(PIPEWAIT, LONG, 237),
+
   CURLOPT_LASTENTRY /* the last unused */
 } CURLoption;
 
@@ -1676,6 +1699,11 @@ enum {
   CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */
 };
 
+/* Convenience definition simple because the name of the version is HTTP/2 and
+   not 2.0. The 2_0 version of the enum name was set while the version was
+   still planned to be 2.0 and we stick to it for compatibility. */
+#define CURL_HTTP_VERSION_2 CURL_HTTP_VERSION_2_0
+
 /*
  * Public API enums for RTSP requests
  */
index ccdafc1..43455a9 100644 (file)
 
 /* This is the version number of the libcurl package from which this header
    file origins: */
-#define LIBCURL_VERSION "7.40.0"
+#define LIBCURL_VERSION "7.44.0"
 
 /* The numeric version number is also available "in parts" by using these
    defines: */
 #define LIBCURL_VERSION_MAJOR 7
-#define LIBCURL_VERSION_MINOR 40
+#define LIBCURL_VERSION_MINOR 44
 #define LIBCURL_VERSION_PATCH 0
 
 /* This is the numeric version of the libcurl version number, meant for easier
    This 6-digit (24 bits) hexadecimal number does not show pre-release number,
    and it is always a greater number in a more recent release. It makes
    comparisons with greater than and less than work.
+
+   Note: This define is the full hex number and _does not_ use the
+   CURL_VERSION_BITS() macro since curl's own configure script greps for it
+   and needs it to contain the full number.
 */
-#define LIBCURL_VERSION_NUM 0x072800
+#define LIBCURL_VERSION_NUM 0x072c00
 
 /*
  * This is the date and time when the full source package was created. The
  *
  * "Mon Feb 12 11:35:33 UTC 2007"
  */
-#define LIBCURL_TIMESTAMP "Thu Jan  8 08:17:17 UTC 2015"
+#define LIBCURL_TIMESTAMP "Wed Aug 12 06:10:30 UTC 2015"
+
+#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|z)
+#define CURL_AT_LEAST_VERSION(x,y,z) \
+  (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))
 
 #endif /* __CURL_CURLVER_H */
index cc9e7f5..c6b0d76 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -57,15 +57,8 @@ CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
 # undef vaprintf
 # define printf curl_mprintf
 # define fprintf curl_mfprintf
-#ifdef CURLDEBUG
-/* When built with CURLDEBUG we define away the sprintf functions since we
-   don't want internal code to be using them */
-# define sprintf sprintf_was_used
-# define vsprintf vsprintf_was_used
-#else
 # define sprintf curl_msprintf
 # define vsprintf curl_mvsprintf
-#endif
 # define snprintf curl_msnprintf
 # define vprintf curl_mvprintf
 # define vfprintf curl_mvfprintf
index 3c4acb0..36e2e94 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -74,6 +74,11 @@ typedef enum {
    curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */
 #define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM
 
+/* bitmask bits for CURLMOPT_PIPELINING */
+#define CURLPIPE_NOTHING   0L
+#define CURLPIPE_HTTP1     1L
+#define CURLPIPE_MULTIPLEX 2L
+
 typedef enum {
   CURLMSG_NONE, /* first, not used */
   CURLMSG_DONE, /* This easy handle has completed. 'result' contains
@@ -365,6 +370,12 @@ typedef enum {
   /* maximum number of open connections in total */
   CINIT(MAX_TOTAL_CONNECTIONS, LONG, 13),
 
+   /* This is the server push callback function pointer */
+  CINIT(PUSHFUNCTION, FUNCTIONPOINT, 14),
+
+  /* This is the argument passed to the server push callback */
+  CINIT(PUSHDATA, OBJECTPOINT, 15),
+
   CURLMOPT_LASTENTRY /* the last unused */
 } CURLMoption;
 
@@ -392,6 +403,31 @@ CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,
 CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
                                         curl_socket_t sockfd, void *sockp);
 
+
+/*
+ * Name: curl_push_callback
+ *
+ * Desc: This callback gets called when a new stream is being pushed by the
+ *       server. It approves or denies the new stream.
+ *
+ * Returns: CURL_PUSH_OK or CURL_PUSH_DENY.
+ */
+#define CURL_PUSH_OK   0
+#define CURL_PUSH_DENY 1
+
+struct curl_pushheaders;  /* forward declaration only */
+
+CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h,
+                                        size_t num);
+CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h,
+                                         const char *name);
+
+typedef int (*curl_push_callback)(CURL *parent,
+                                  CURL *easy,
+                                  size_t num_headers,
+                                  struct curl_pushheaders *headers,
+                                  void *userp);
+
 #ifdef __cplusplus
 } /* end of extern "C" */
 #endif
index 69d41a2..13fb0fa 100644 (file)
@@ -270,6 +270,8 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_slist,
    (option) == CURLOPT_DNS_LOCAL_IP4 ||                                       \
    (option) == CURLOPT_DNS_LOCAL_IP6 ||                                       \
    (option) == CURLOPT_LOGIN_OPTIONS ||                                       \
+   (option) == CURLOPT_PROXY_SERVICE_NAME ||                                  \
+   (option) == CURLOPT_SERVICE_NAME ||                                        \
    0)
 
 /* evaluates to true if option takes a curl_write_callback argument */
index 377bb86..0b0fdcb 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2011-11-20.07; # UTC
+scriptversion=2013-12-25.23; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -41,19 +41,15 @@ scriptversion=2011-11-20.07; # UTC
 # This script is compatible with the BSD install script, but was written
 # from scratch.
 
+tab='  '
 nl='
 '
-IFS=" ""       $nl"
+IFS=" $tab$nl"
 
-# set DOITPROG to echo to test this script
+# Set DOITPROG to "echo" to test this script.
 
-# Don't use :- since 4.3BSD and earlier shells don't like it.
 doit=${DOITPROG-}
-if test -z "$doit"; then
-  doit_exec=exec
-else
-  doit_exec=$doit
-fi
+doit_exec=${doit:-exec}
 
 # Put in absolute file names if you don't have them in your path;
 # or use environment vars.
@@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
 rmprog=${RMPROG-rm}
 stripprog=${STRIPPROG-strip}
 
-posix_glob='?'
-initialize_posix_glob='
-  test "$posix_glob" != "?" || {
-    if (set -f) 2>/dev/null; then
-      posix_glob=
-    else
-      posix_glob=:
-    fi
-  }
-'
-
 posix_mkdir=
 
 # Desired mode of installed file.
@@ -97,7 +82,7 @@ dir_arg=
 dst_arg=
 
 copy_on_change=false
-no_target_directory=
+is_target_a_directory=possibly
 
 usage="\
 Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
@@ -137,46 +122,57 @@ while test $# -ne 0; do
     -d) dir_arg=true;;
 
     -g) chgrpcmd="$chgrpprog $2"
-       shift;;
+        shift;;
 
     --help) echo "$usage"; exit $?;;
 
     -m) mode=$2
-       case $mode in
-         *' '* | *'    '* | *'
-'*       | *'*'* | *'?'* | *'['*)
-           echo "$0: invalid mode: $mode" >&2
-           exit 1;;
-       esac
-       shift;;
+        case $mode in
+          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+            echo "$0: invalid mode: $mode" >&2
+            exit 1;;
+        esac
+        shift;;
 
     -o) chowncmd="$chownprog $2"
-       shift;;
+        shift;;
 
     -s) stripcmd=$stripprog;;
 
-    -t) dst_arg=$2
-       # Protect names problematic for 'test' and other utilities.
-       case $dst_arg in
-         -* | [=\(\)!]) dst_arg=./$dst_arg;;
-       esac
-       shift;;
+    -t)
+        is_target_a_directory=always
+        dst_arg=$2
+        # Protect names problematic for 'test' and other utilities.
+        case $dst_arg in
+          -* | [=\(\)!]) dst_arg=./$dst_arg;;
+        esac
+        shift;;
 
-    -T) no_target_directory=true;;
+    -T) is_target_a_directory=never;;
 
     --version) echo "$0 $scriptversion"; exit $?;;
 
-    --)        shift
-       break;;
+    --) shift
+        break;;
 
-    -*)        echo "$0: invalid option: $1" >&2
-       exit 1;;
+    -*) echo "$0: invalid option: $1" >&2
+        exit 1;;
 
     *)  break;;
   esac
   shift
 done
 
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+  if test -n "$dst_arg"; then
+    echo "$0: target directory not allowed when installing a directory." >&2
+    exit 1
+  fi
+fi
+
 if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
   # When -d is used, all remaining arguments are directories to create.
   # When -t is used, the destination is already specified.
@@ -208,6 +204,15 @@ if test $# -eq 0; then
 fi
 
 if test -z "$dir_arg"; then
+  if test $# -gt 1 || test "$is_target_a_directory" = always; then
+    if test ! -d "$dst_arg"; then
+      echo "$0: $dst_arg: Is not a directory." >&2
+      exit 1
+    fi
+  fi
+fi
+
+if test -z "$dir_arg"; then
   do_exit='(exit $ret); exit $ret'
   trap "ret=129; $do_exit" 1
   trap "ret=130; $do_exit" 2
@@ -223,16 +228,16 @@ if test -z "$dir_arg"; then
 
     *[0-7])
       if test -z "$stripcmd"; then
-       u_plus_rw=
+        u_plus_rw=
       else
-       u_plus_rw='% 200'
+        u_plus_rw='% 200'
       fi
       cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
     *)
       if test -z "$stripcmd"; then
-       u_plus_rw=
+        u_plus_rw=
       else
-       u_plus_rw=,u+rw
+        u_plus_rw=,u+rw
       fi
       cp_umask=$mode$u_plus_rw;;
   esac
@@ -269,41 +274,15 @@ do
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
     if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-       echo "$0: $dst_arg: Is a directory" >&2
-       exit 1
+      if test "$is_target_a_directory" = never; then
+        echo "$0: $dst_arg: Is a directory" >&2
+        exit 1
       fi
       dstdir=$dst
       dst=$dstdir/`basename "$src"`
       dstdir_status=0
     else
-      # Prefer dirname, but fall back on a substitute if dirname fails.
-      dstdir=`
-       (dirname "$dst") 2>/dev/null ||
-       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-            X"$dst" : 'X\(//\)[^/]' \| \
-            X"$dst" : 'X\(//\)$' \| \
-            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-       echo X"$dst" |
-           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-                  s//\1/
-                  q
-                }
-                /^X\(\/\/\)[^/].*/{
-                  s//\1/
-                  q
-                }
-                /^X\(\/\/\)$/{
-                  s//\1/
-                  q
-                }
-                /^X\(\/\).*/{
-                  s//\1/
-                  q
-                }
-                s/.*/./; q'
-      `
-
+      dstdir=`dirname "$dst"`
       test -d "$dstdir"
       dstdir_status=$?
     fi
@@ -314,74 +293,74 @@ do
   if test $dstdir_status != 0; then
     case $posix_mkdir in
       '')
-       # Create intermediate dirs using mode 755 as modified by the umask.
-       # This is like FreeBSD 'install' as of 1997-10-28.
-       umask=`umask`
-       case $stripcmd.$umask in
-         # Optimize common cases.
-         *[2367][2367]) mkdir_umask=$umask;;
-         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-         *[0-7])
-           mkdir_umask=`expr $umask + 22 \
-             - $umask % 100 % 40 + $umask % 20 \
-             - $umask % 10 % 4 + $umask % 2
-           `;;
-         *) mkdir_umask=$umask,go-w;;
-       esac
-
-       # With -d, create the new directory with the user-specified mode.
-       # Otherwise, rely on $mkdir_umask.
-       if test -n "$dir_arg"; then
-         mkdir_mode=-m$mode
-       else
-         mkdir_mode=
-       fi
-
-       posix_mkdir=false
-       case $umask in
-         *[123567][0-7][0-7])
-           # POSIX mkdir -p sets u+wx bits regardless of umask, which
-           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-           ;;
-         *)
-           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-           if (umask $mkdir_umask &&
-               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-           then
-             if test -z "$dir_arg" || {
-                  # Check for POSIX incompatibilities with -m.
-                  # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-                  # other-writable bit of parent directory when it shouldn't.
-                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
-                  case $ls_ld_tmpdir in
-                    d????-?r-*) different_mode=700;;
-                    d????-?--*) different_mode=755;;
-                    *) false;;
-                  esac &&
-                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-                  }
-                }
-             then posix_mkdir=:
-             fi
-             rmdir "$tmpdir/d" "$tmpdir"
-           else
-             # Remove any dirs left behind by ancient mkdir implementations.
-             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-           fi
-           trap '' 0;;
-       esac;;
+        # Create intermediate dirs using mode 755 as modified by the umask.
+        # This is like FreeBSD 'install' as of 1997-10-28.
+        umask=`umask`
+        case $stripcmd.$umask in
+          # Optimize common cases.
+          *[2367][2367]) mkdir_umask=$umask;;
+          .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+          *[0-7])
+            mkdir_umask=`expr $umask + 22 \
+              - $umask % 100 % 40 + $umask % 20 \
+              - $umask % 10 % 4 + $umask % 2
+            `;;
+          *) mkdir_umask=$umask,go-w;;
+        esac
+
+        # With -d, create the new directory with the user-specified mode.
+        # Otherwise, rely on $mkdir_umask.
+        if test -n "$dir_arg"; then
+          mkdir_mode=-m$mode
+        else
+          mkdir_mode=
+        fi
+
+        posix_mkdir=false
+        case $umask in
+          *[123567][0-7][0-7])
+            # POSIX mkdir -p sets u+wx bits regardless of umask, which
+            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+            ;;
+          *)
+            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+            trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+            if (umask $mkdir_umask &&
+                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+            then
+              if test -z "$dir_arg" || {
+                   # Check for POSIX incompatibilities with -m.
+                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                   # other-writable bit of parent directory when it shouldn't.
+                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                   ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                   case $ls_ld_tmpdir in
+                     d????-?r-*) different_mode=700;;
+                     d????-?--*) different_mode=755;;
+                     *) false;;
+                   esac &&
+                   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+                     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                   }
+                 }
+              then posix_mkdir=:
+              fi
+              rmdir "$tmpdir/d" "$tmpdir"
+            else
+              # Remove any dirs left behind by ancient mkdir implementations.
+              rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+            fi
+            trap '' 0;;
+        esac;;
     esac
 
     if
       $posix_mkdir && (
-       umask $mkdir_umask &&
-       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+        umask $mkdir_umask &&
+        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
       )
     then :
     else
@@ -391,53 +370,51 @@ do
       # directory the slow way, step by step, checking for races as we go.
 
       case $dstdir in
-       /*) prefix='/';;
-       [-=\(\)!]*) prefix='./';;
-       *)  prefix='';;
+        /*) prefix='/';;
+        [-=\(\)!]*) prefix='./';;
+        *)  prefix='';;
       esac
 
-      eval "$initialize_posix_glob"
-
       oIFS=$IFS
       IFS=/
-      $posix_glob set -f
+      set -f
       set fnord $dstdir
       shift
-      $posix_glob set +f
+      set +f
       IFS=$oIFS
 
       prefixes=
 
       for d
       do
-       test X"$d" = X && continue
-
-       prefix=$prefix$d
-       if test -d "$prefix"; then
-         prefixes=
-       else
-         if $posix_mkdir; then
-           (umask=$mkdir_umask &&
-            $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-           # Don't fail if two instances are running concurrently.
-           test -d "$prefix" || exit 1
-         else
-           case $prefix in
-             *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-             *) qprefix=$prefix;;
-           esac
-           prefixes="$prefixes '$qprefix'"
-         fi
-       fi
-       prefix=$prefix/
+        test X"$d" = X && continue
+
+        prefix=$prefix$d
+        if test -d "$prefix"; then
+          prefixes=
+        else
+          if $posix_mkdir; then
+            (umask=$mkdir_umask &&
+             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+            # Don't fail if two instances are running concurrently.
+            test -d "$prefix" || exit 1
+          else
+            case $prefix in
+              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+              *) qprefix=$prefix;;
+            esac
+            prefixes="$prefixes '$qprefix'"
+          fi
+        fi
+        prefix=$prefix/
       done
 
       if test -n "$prefixes"; then
-       # Don't fail if two instances are running concurrently.
-       (umask $mkdir_umask &&
-        eval "\$doit_exec \$mkdirprog $prefixes") ||
-         test -d "$dstdir" || exit 1
-       obsolete_mkdir_used=true
+        # Don't fail if two instances are running concurrently.
+        (umask $mkdir_umask &&
+         eval "\$doit_exec \$mkdirprog $prefixes") ||
+          test -d "$dstdir" || exit 1
+        obsolete_mkdir_used=true
       fi
     fi
   fi
@@ -472,15 +449,12 @@ do
 
     # If -C, don't bother to copy if it wouldn't change the file.
     if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"    2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
-       eval "$initialize_posix_glob" &&
-       $posix_glob set -f &&
+       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
+       set -f &&
        set X $old && old=:$2:$4:$5:$6 &&
        set X $new && new=:$2:$4:$5:$6 &&
-       $posix_glob set +f &&
-
+       set +f &&
        test "$old" = "$new" &&
        $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
     then
@@ -493,24 +467,24 @@ do
       # to itself, or perhaps because mv is so ancient that it does not
       # support -f.
       {
-       # Now remove or move aside any old file at destination location.
-       # We try this two ways since rm can't unlink itself on some
-       # systems and the destination file might be busy for other
-       # reasons.  In this case, the final cleanup might fail but the new
-       # file should still install successfully.
-       {
-         test ! -f "$dst" ||
-         $doit $rmcmd -f "$dst" 2>/dev/null ||
-         { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-           { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-         } ||
-         { echo "$0: cannot unlink or rename $dst" >&2
-           (exit 1); exit 1
-         }
-       } &&
-
-       # Now rename the file to the real destination.
-       $doit $mvcmd "$dsttmp" "$dst"
+        # Now remove or move aside any old file at destination location.
+        # We try this two ways since rm can't unlink itself on some
+        # systems and the destination file might be busy for other
+        # reasons.  In this case, the final cleanup might fail but the new
+        # file should still install successfully.
+        {
+          test ! -f "$dst" ||
+          $doit $rmcmd -f "$dst" 2>/dev/null ||
+          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+            { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+          } ||
+          { echo "$0: cannot unlink or rename $dst" >&2
+            (exit 1); exit 1
+          }
+        } &&
+
+        # Now rename the file to the real destination.
+        $doit $mvcmd "$dsttmp" "$dst"
       }
     fi || exit 1
 
index e7886ac..49a3409 100644 (file)
@@ -98,4 +98,7 @@ if(WIN32)
   endif()
 endif()
 
-install(TARGETS ${LIB_NAME} DESTINATION lib)
+install(TARGETS ${LIB_NAME}
+  ARCHIVE DESTINATION lib
+  LIBRARY DESTINATION lib
+  RUNTIME DESTINATION bin)
index 14f5ac8..0b7ba59 100644 (file)
@@ -101,7 +101,7 @@ ZLIB_ROOT = ../../zlib-1.2.8
 !ifdef %libssh2_root
 LIBSSH2_ROOT = $(%libssh2_root)
 !else
-LIBSSH2_ROOT = ../../libssh2-1.4.3
+LIBSSH2_ROOT = ../../libssh2-1.5.0
 !endif
 
 !ifdef %librtmp_root
@@ -113,7 +113,7 @@ LIBRTMP_ROOT = ../../rtmpdump-2.3
 !ifdef %openssl_root
 OPENSSL_ROOT = $(%openssl_root)
 !else
-OPENSSL_ROOT = ../../openssl-0.9.8zc
+OPENSSL_ROOT = ../../openssl-1.0.2a
 !endif
 
 !ifdef %ares_root
index 6dffbd9..ef8d124 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
 
-DOCS = README.encoding README.memoryleak README.ares README.curlx      \
- README.hostip README.multi_socket README.httpauth README.pipelining    \
- README.curl_off_t README.pingpong
-
 CMAKE_DIST = CMakeLists.txt curl_config.h.cmake
 
 EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 config-win32.h     \
@@ -32,9 +28,9 @@ EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 config-win32.h    \
  makefile.dj config-dos.h libcurl.plist libcurl.rc config-amigaos.h    \
  makefile.amiga Makefile.netware nwlib.c nwos.c config-win32ce.h       \
  config-os400.h setup-os400.h config-symbian.h Makefile.Watcom         \
- config-tpf.h $(DOCS) mk-ca-bundle.pl mk-ca-bundle.vbs $(CMAKE_DIST)   \
+ config-tpf.h mk-ca-bundle.pl mk-ca-bundle.vbs $(CMAKE_DIST)   \
  firefox-db2pem.sh config-vxworks.h Makefile.vxworks checksrc.pl       \
- objnames-test08.sh objnames-test10.sh objnames.inc
+ objnames-test08.sh objnames-test10.sh objnames.inc checksrc.whitelist
 
 lib_LTLIBRARIES = libcurl.la
 
@@ -84,9 +80,9 @@ if SONAME_BUMP
 #
 # This conditional soname bump SHOULD be removed at next "proper" bump.
 #
-VERSIONINFO=-version-info 8:0:3
+VERSIONINFO=-version-info 9:0:4
 else
-VERSIONINFO=-version-info 7:0:3
+VERSIONINFO=-version-info 8:0:4
 endif
 
 # This flag accepts an argument of the form current[:revision[:age]]. So,
index b9531fd..37c2648 100644 (file)
@@ -27,7 +27,7 @@ ZLIB_PATH = ..\..\zlib-1.2.8
 
 # Edit the path below to point to the base of your OpenSSL package.
 !ifndef OPENSSL_PATH
-OPENSSL_PATH = ..\..\openssl-0.9.8zc
+OPENSSL_PATH = ..\..\openssl-1.0.2a
 !endif
 
 # Set libcurl static lib, dll and import lib
@@ -74,7 +74,7 @@ LINKLIB  = $(LINKLIB) $(ZLIB_PATH)\zlib.lib
 
 # SSL support is enabled setting WITH_SSL=1
 !ifdef WITH_SSL
-DEFINES  = $(DEFINES) -DUSE_SSLEAY
+DEFINES  = $(DEFINES) -DUSE_OPENSSL
 INCDIRS  = $(INCDIRS);$(OPENSSL_PATH)\inc32;$(OPENSSL_PATH)\inc32\openssl
 LINKLIB  = $(LINKLIB) $(OPENSSL_PATH)\out32\ssleay32.lib $(OPENSSL_PATH)\out32\libeay32.lib
 !endif
index 5947cf0..27bfd10 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 ###########################################################################
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -110,10 +120,6 @@ host_triplet = @host@
 @USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_6 = -DCURL_STATICLIB
 @DOING_CURL_SYMBOL_HIDING_TRUE@am__append_7 = -DCURL_HIDDEN_SYMBOLS
 @DOING_CURL_SYMBOL_HIDING_TRUE@am__append_8 = $(CFLAG_CURL_SYMBOL_HIDING)
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
-       $(srcdir)/Makefile.am $(srcdir)/curl_config.h.in \
-       $(top_srcdir)/mkinstalldirs $(srcdir)/libcurl.vers.in \
-       $(top_srcdir)/depcomp
 subdir = lib
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
@@ -135,7 +141,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = curl_config.h $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES = libcurl.vers
 CONFIG_CLEAN_VPATH_FILES =
@@ -212,19 +219,19 @@ am__objects_1 = libcurl_la-file.lo libcurl_la-timeval.lo \
        libcurl_la-curl_ntlm_wb.lo libcurl_la-curl_ntlm_core.lo \
        libcurl_la-curl_ntlm_msgs.lo libcurl_la-curl_sasl.lo \
        libcurl_la-curl_multibyte.lo libcurl_la-hostcheck.lo \
-       libcurl_la-bundles.lo libcurl_la-conncache.lo \
-       libcurl_la-pipeline.lo libcurl_la-dotdot.lo \
-       libcurl_la-x509asn1.lo libcurl_la-http2.lo \
-       libcurl_la-curl_sasl_sspi.lo libcurl_la-smb.lo \
-       libcurl_la-curl_sasl_gssapi.lo libcurl_la-curl_endian.lo
+       libcurl_la-conncache.lo libcurl_la-pipeline.lo \
+       libcurl_la-dotdot.lo libcurl_la-x509asn1.lo \
+       libcurl_la-http2.lo libcurl_la-curl_sasl_sspi.lo \
+       libcurl_la-smb.lo libcurl_la-curl_sasl_gssapi.lo \
+       libcurl_la-curl_endian.lo libcurl_la-curl_des.lo
 am__dirstamp = $(am__leading_dot)dirstamp
 am__objects_2 = vtls/libcurl_la-openssl.lo vtls/libcurl_la-gtls.lo \
        vtls/libcurl_la-vtls.lo vtls/libcurl_la-nss.lo \
        vtls/libcurl_la-polarssl.lo \
        vtls/libcurl_la-polarssl_threadlock.lo \
        vtls/libcurl_la-axtls.lo vtls/libcurl_la-cyassl.lo \
-       vtls/libcurl_la-curl_schannel.lo \
-       vtls/libcurl_la-curl_darwinssl.lo vtls/libcurl_la-gskit.lo
+       vtls/libcurl_la-schannel.lo vtls/libcurl_la-darwinssl.lo \
+       vtls/libcurl_la-gskit.lo
 am__objects_3 = $(am__objects_1) $(am__objects_2)
 am__objects_4 =
 am__objects_5 = $(am__objects_4) $(am__objects_4)
@@ -282,19 +289,19 @@ am__objects_6 = libcurlu_la-file.lo libcurlu_la-timeval.lo \
        libcurlu_la-curl_ntlm.lo libcurlu_la-curl_ntlm_wb.lo \
        libcurlu_la-curl_ntlm_core.lo libcurlu_la-curl_ntlm_msgs.lo \
        libcurlu_la-curl_sasl.lo libcurlu_la-curl_multibyte.lo \
-       libcurlu_la-hostcheck.lo libcurlu_la-bundles.lo \
-       libcurlu_la-conncache.lo libcurlu_la-pipeline.lo \
-       libcurlu_la-dotdot.lo libcurlu_la-x509asn1.lo \
-       libcurlu_la-http2.lo libcurlu_la-curl_sasl_sspi.lo \
-       libcurlu_la-smb.lo libcurlu_la-curl_sasl_gssapi.lo \
-       libcurlu_la-curl_endian.lo
+       libcurlu_la-hostcheck.lo libcurlu_la-conncache.lo \
+       libcurlu_la-pipeline.lo libcurlu_la-dotdot.lo \
+       libcurlu_la-x509asn1.lo libcurlu_la-http2.lo \
+       libcurlu_la-curl_sasl_sspi.lo libcurlu_la-smb.lo \
+       libcurlu_la-curl_sasl_gssapi.lo libcurlu_la-curl_endian.lo \
+       libcurlu_la-curl_des.lo
 am__objects_7 = vtls/libcurlu_la-openssl.lo vtls/libcurlu_la-gtls.lo \
        vtls/libcurlu_la-vtls.lo vtls/libcurlu_la-nss.lo \
        vtls/libcurlu_la-polarssl.lo \
        vtls/libcurlu_la-polarssl_threadlock.lo \
        vtls/libcurlu_la-axtls.lo vtls/libcurlu_la-cyassl.lo \
-       vtls/libcurlu_la-curl_schannel.lo \
-       vtls/libcurlu_la-curl_darwinssl.lo vtls/libcurlu_la-gskit.lo
+       vtls/libcurlu_la-schannel.lo vtls/libcurlu_la-darwinssl.lo \
+       vtls/libcurlu_la-gskit.lo
 am__objects_8 = $(am__objects_6) $(am__objects_7)
 am_libcurlu_la_OBJECTS = $(am__objects_8) $(am__objects_5)
 libcurlu_la_OBJECTS = $(am_libcurlu_la_OBJECTS)
@@ -363,6 +370,9 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
+       $(srcdir)/curl_config.h.in $(srcdir)/libcurl.vers.in \
+       $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -423,7 +433,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -478,6 +488,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -494,7 +505,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -562,7 +572,7 @@ top_srcdir = @top_srcdir@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -577,19 +587,15 @@ top_srcdir = @top_srcdir@
 #
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
-DOCS = README.encoding README.memoryleak README.ares README.curlx      \
- README.hostip README.multi_socket README.httpauth README.pipelining    \
- README.curl_off_t README.pingpong
-
 CMAKE_DIST = CMakeLists.txt curl_config.h.cmake
 EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 config-win32.h     \
  config-win32ce.h config-riscos.h config-mac.h curl_config.h.in                \
  makefile.dj config-dos.h libcurl.plist libcurl.rc config-amigaos.h    \
  makefile.amiga Makefile.netware nwlib.c nwos.c config-win32ce.h       \
  config-os400.h setup-os400.h config-symbian.h Makefile.Watcom         \
- config-tpf.h $(DOCS) mk-ca-bundle.pl mk-ca-bundle.vbs $(CMAKE_DIST)   \
+ config-tpf.h mk-ca-bundle.pl mk-ca-bundle.vbs $(CMAKE_DIST)   \
  firefox-db2pem.sh config-vxworks.h Makefile.vxworks checksrc.pl       \
- objnames-test08.sh objnames-test10.sh objnames.inc
+ objnames-test08.sh objnames-test10.sh objnames.inc checksrc.whitelist
 
 lib_LTLIBRARIES = libcurl.la
 @BUILD_UNITTESTS_FALSE@noinst_LTLIBRARIES = 
@@ -623,7 +629,7 @@ lib_LTLIBRARIES = libcurl.la
 AM_CPPFLAGS = -I$(top_builddir)/include/curl -I$(top_builddir)/include \
        -I$(top_srcdir)/include -I$(top_builddir)/lib \
        -I$(top_srcdir)/lib $(am__append_1) -DBUILDING_LIBCURL
-@SONAME_BUMP_FALSE@VERSIONINFO = -version-info 7:0:3
+@SONAME_BUMP_FALSE@VERSIONINFO = -version-info 8:0:4
 
 #
 # Bumping of SONAME conditionally may seem like a weird thing to do, and yeah
@@ -634,7 +640,7 @@ AM_CPPFLAGS = -I$(top_builddir)/include/curl -I$(top_builddir)/include \
 #
 # This conditional soname bump SHOULD be removed at next "proper" bump.
 #
-@SONAME_BUMP_TRUE@VERSIONINFO = -version-info 8:0:3
+@SONAME_BUMP_TRUE@VERSIONINFO = -version-info 9:0:4
 AM_LDFLAGS = 
 AM_CFLAGS = 
 libcurl_la_CPPFLAGS_EXTRA = $(am__append_6) $(am__append_7)
@@ -649,11 +655,11 @@ libcurlu_la_LDFLAGS = $(AM_LDFLAGS) -static $(LIBCURL_LIBS)
 libcurlu_la_CFLAGS = $(AM_CFLAGS)
 LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c     \
   vtls/polarssl.c vtls/polarssl_threadlock.c vtls/axtls.c               \
-  vtls/cyassl.c vtls/curl_schannel.c vtls/curl_darwinssl.c vtls/gskit.c
+  vtls/cyassl.c vtls/schannel.c vtls/darwinssl.c vtls/gskit.c
 
 LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h                \
   vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h vtls/axtls.h   \
-  vtls/cyassl.h vtls/curl_schannel.h vtls/curl_darwinssl.h vtls/gskit.h
+  vtls/cyassl.h vtls/schannel.h vtls/darwinssl.h vtls/gskit.h
 
 LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
   cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c       \
@@ -671,8 +677,9 @@ LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
   http_negotiate_sspi.c http_proxy.c non-ascii.c asyn-ares.c            \
   asyn-thread.c curl_gssapi.c curl_ntlm.c curl_ntlm_wb.c                \
   curl_ntlm_core.c curl_ntlm_msgs.c curl_sasl.c curl_multibyte.c        \
-  hostcheck.c bundles.c conncache.c pipeline.c dotdot.c x509asn1.c      \
-  http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c
+  hostcheck.c conncache.c pipeline.c dotdot.c x509asn1.c                \
+  http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c       \
+  curl_des.c
 
 LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
   formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h         \
@@ -688,9 +695,10 @@ LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
   rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
   curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
   curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
-  curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h bundles.h   \
+  curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h             \
   conncache.h curl_setup_once.h multihandle.h setup-vms.h pipeline.h    \
-  dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h
+  dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h  \
+  curl_printf.h
 
 LIB_RCFILES = libcurl.rc
 CSOURCES = $(LIB_CFILES) $(LIB_VTLS_CFILES)
@@ -716,7 +724,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign lib/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -725,7 +732,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -820,9 +827,9 @@ vtls/libcurl_la-axtls.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurl_la-cyassl.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
-vtls/libcurl_la-curl_schannel.lo: vtls/$(am__dirstamp) \
+vtls/libcurl_la-schannel.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
-vtls/libcurl_la-curl_darwinssl.lo: vtls/$(am__dirstamp) \
+vtls/libcurl_la-darwinssl.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurl_la-gskit.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
@@ -845,9 +852,9 @@ vtls/libcurlu_la-axtls.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurlu_la-cyassl.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
-vtls/libcurlu_la-curl_schannel.lo: vtls/$(am__dirstamp) \
+vtls/libcurlu_la-schannel.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
-vtls/libcurlu_la-curl_darwinssl.lo: vtls/$(am__dirstamp) \
+vtls/libcurlu_la-darwinssl.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurlu_la-gskit.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
@@ -867,12 +874,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-asyn-ares.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-asyn-thread.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-base64.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-bundles.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-conncache.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-connect.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-content_encoding.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-cookie.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_des.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_endian.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_gethostname.Plo@am__quote@
@@ -971,12 +978,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-asyn-ares.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-asyn-thread.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-base64.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-bundles.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-conncache.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-connect.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-content_encoding.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-cookie.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_des.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_endian.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_gethostname.Plo@am__quote@
@@ -1072,26 +1079,26 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-wildcard.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-x509asn1.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-axtls.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-curl_darwinssl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-curl_schannel.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-cyassl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-darwinssl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gskit.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gtls.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-nss.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-openssl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-polarssl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-schannel.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-vtls.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-axtls.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-curl_darwinssl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-curl_schannel.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-cyassl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-darwinssl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gskit.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gtls.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-nss.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-openssl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-polarssl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-polarssl_threadlock.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-schannel.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-vtls.Plo@am__quote@
 
 .c.o:
@@ -1776,13 +1783,6 @@ libcurl_la-hostcheck.lo: hostcheck.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
 
-libcurl_la-bundles.lo: bundles.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-bundles.lo -MD -MP -MF $(DEPDIR)/libcurl_la-bundles.Tpo -c -o libcurl_la-bundles.lo `test -f 'bundles.c' || echo '$(srcdir)/'`bundles.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-bundles.Tpo $(DEPDIR)/libcurl_la-bundles.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bundles.c' object='libcurl_la-bundles.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-bundles.lo `test -f 'bundles.c' || echo '$(srcdir)/'`bundles.c
-
 libcurl_la-conncache.lo: conncache.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-conncache.lo -MD -MP -MF $(DEPDIR)/libcurl_la-conncache.Tpo -c -o libcurl_la-conncache.lo `test -f 'conncache.c' || echo '$(srcdir)/'`conncache.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-conncache.Tpo $(DEPDIR)/libcurl_la-conncache.Plo
@@ -1846,6 +1846,13 @@ libcurl_la-curl_endian.lo: curl_endian.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_endian.lo `test -f 'curl_endian.c' || echo '$(srcdir)/'`curl_endian.c
 
+libcurl_la-curl_des.lo: curl_des.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_des.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_des.Tpo -c -o libcurl_la-curl_des.lo `test -f 'curl_des.c' || echo '$(srcdir)/'`curl_des.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_des.Tpo $(DEPDIR)/libcurl_la-curl_des.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_des.c' object='libcurl_la-curl_des.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_des.lo `test -f 'curl_des.c' || echo '$(srcdir)/'`curl_des.c
+
 vtls/libcurl_la-openssl.lo: vtls/openssl.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-openssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-openssl.Tpo -c -o vtls/libcurl_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-openssl.Tpo vtls/$(DEPDIR)/libcurl_la-openssl.Plo
@@ -1902,19 +1909,19 @@ vtls/libcurl_la-cyassl.lo: vtls/cyassl.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-cyassl.lo `test -f 'vtls/cyassl.c' || echo '$(srcdir)/'`vtls/cyassl.c
 
-vtls/libcurl_la-curl_schannel.lo: vtls/curl_schannel.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-curl_schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-curl_schannel.Tpo -c -o vtls/libcurl_la-curl_schannel.lo `test -f 'vtls/curl_schannel.c' || echo '$(srcdir)/'`vtls/curl_schannel.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-curl_schannel.Tpo vtls/$(DEPDIR)/libcurl_la-curl_schannel.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/curl_schannel.c' object='vtls/libcurl_la-curl_schannel.lo' libtool=yes @AMDEPBACKSLASH@
+vtls/libcurl_la-schannel.lo: vtls/schannel.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-schannel.Tpo -c -o vtls/libcurl_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-schannel.Tpo vtls/$(DEPDIR)/libcurl_la-schannel.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/schannel.c' object='vtls/libcurl_la-schannel.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-curl_schannel.lo `test -f 'vtls/curl_schannel.c' || echo '$(srcdir)/'`vtls/curl_schannel.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c
 
-vtls/libcurl_la-curl_darwinssl.lo: vtls/curl_darwinssl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-curl_darwinssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-curl_darwinssl.Tpo -c -o vtls/libcurl_la-curl_darwinssl.lo `test -f 'vtls/curl_darwinssl.c' || echo '$(srcdir)/'`vtls/curl_darwinssl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-curl_darwinssl.Tpo vtls/$(DEPDIR)/libcurl_la-curl_darwinssl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/curl_darwinssl.c' object='vtls/libcurl_la-curl_darwinssl.lo' libtool=yes @AMDEPBACKSLASH@
+vtls/libcurl_la-darwinssl.lo: vtls/darwinssl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-darwinssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-darwinssl.Tpo -c -o vtls/libcurl_la-darwinssl.lo `test -f 'vtls/darwinssl.c' || echo '$(srcdir)/'`vtls/darwinssl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-darwinssl.Tpo vtls/$(DEPDIR)/libcurl_la-darwinssl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/darwinssl.c' object='vtls/libcurl_la-darwinssl.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-curl_darwinssl.lo `test -f 'vtls/curl_darwinssl.c' || echo '$(srcdir)/'`vtls/curl_darwinssl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-darwinssl.lo `test -f 'vtls/darwinssl.c' || echo '$(srcdir)/'`vtls/darwinssl.c
 
 vtls/libcurl_la-gskit.lo: vtls/gskit.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-gskit.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-gskit.Tpo -c -o vtls/libcurl_la-gskit.lo `test -f 'vtls/gskit.c' || echo '$(srcdir)/'`vtls/gskit.c
@@ -2581,13 +2588,6 @@ libcurlu_la-hostcheck.lo: hostcheck.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
 
-libcurlu_la-bundles.lo: bundles.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-bundles.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-bundles.Tpo -c -o libcurlu_la-bundles.lo `test -f 'bundles.c' || echo '$(srcdir)/'`bundles.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-bundles.Tpo $(DEPDIR)/libcurlu_la-bundles.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bundles.c' object='libcurlu_la-bundles.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-bundles.lo `test -f 'bundles.c' || echo '$(srcdir)/'`bundles.c
-
 libcurlu_la-conncache.lo: conncache.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-conncache.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-conncache.Tpo -c -o libcurlu_la-conncache.lo `test -f 'conncache.c' || echo '$(srcdir)/'`conncache.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-conncache.Tpo $(DEPDIR)/libcurlu_la-conncache.Plo
@@ -2651,6 +2651,13 @@ libcurlu_la-curl_endian.lo: curl_endian.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_endian.lo `test -f 'curl_endian.c' || echo '$(srcdir)/'`curl_endian.c
 
+libcurlu_la-curl_des.lo: curl_des.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_des.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_des.Tpo -c -o libcurlu_la-curl_des.lo `test -f 'curl_des.c' || echo '$(srcdir)/'`curl_des.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_des.Tpo $(DEPDIR)/libcurlu_la-curl_des.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_des.c' object='libcurlu_la-curl_des.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_des.lo `test -f 'curl_des.c' || echo '$(srcdir)/'`curl_des.c
+
 vtls/libcurlu_la-openssl.lo: vtls/openssl.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-openssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-openssl.Tpo -c -o vtls/libcurlu_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-openssl.Tpo vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
@@ -2707,19 +2714,19 @@ vtls/libcurlu_la-cyassl.lo: vtls/cyassl.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-cyassl.lo `test -f 'vtls/cyassl.c' || echo '$(srcdir)/'`vtls/cyassl.c
 
-vtls/libcurlu_la-curl_schannel.lo: vtls/curl_schannel.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-curl_schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-curl_schannel.Tpo -c -o vtls/libcurlu_la-curl_schannel.lo `test -f 'vtls/curl_schannel.c' || echo '$(srcdir)/'`vtls/curl_schannel.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-curl_schannel.Tpo vtls/$(DEPDIR)/libcurlu_la-curl_schannel.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/curl_schannel.c' object='vtls/libcurlu_la-curl_schannel.lo' libtool=yes @AMDEPBACKSLASH@
+vtls/libcurlu_la-schannel.lo: vtls/schannel.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-schannel.Tpo -c -o vtls/libcurlu_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-schannel.Tpo vtls/$(DEPDIR)/libcurlu_la-schannel.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/schannel.c' object='vtls/libcurlu_la-schannel.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-curl_schannel.lo `test -f 'vtls/curl_schannel.c' || echo '$(srcdir)/'`vtls/curl_schannel.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-schannel.lo `test -f 'vtls/schannel.c' || echo '$(srcdir)/'`vtls/schannel.c
 
-vtls/libcurlu_la-curl_darwinssl.lo: vtls/curl_darwinssl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-curl_darwinssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-curl_darwinssl.Tpo -c -o vtls/libcurlu_la-curl_darwinssl.lo `test -f 'vtls/curl_darwinssl.c' || echo '$(srcdir)/'`vtls/curl_darwinssl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-curl_darwinssl.Tpo vtls/$(DEPDIR)/libcurlu_la-curl_darwinssl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/curl_darwinssl.c' object='vtls/libcurlu_la-curl_darwinssl.lo' libtool=yes @AMDEPBACKSLASH@
+vtls/libcurlu_la-darwinssl.lo: vtls/darwinssl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-darwinssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-darwinssl.Tpo -c -o vtls/libcurlu_la-darwinssl.lo `test -f 'vtls/darwinssl.c' || echo '$(srcdir)/'`vtls/darwinssl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-darwinssl.Tpo vtls/$(DEPDIR)/libcurlu_la-darwinssl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/darwinssl.c' object='vtls/libcurlu_la-darwinssl.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-curl_darwinssl.lo `test -f 'vtls/curl_darwinssl.c' || echo '$(srcdir)/'`vtls/curl_darwinssl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-darwinssl.lo `test -f 'vtls/darwinssl.c' || echo '$(srcdir)/'`vtls/darwinssl.c
 
 vtls/libcurlu_la-gskit.lo: vtls/gskit.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-gskit.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-gskit.Tpo -c -o vtls/libcurlu_la-gskit.lo `test -f 'vtls/gskit.c' || echo '$(srcdir)/'`vtls/gskit.c
@@ -2945,6 +2952,8 @@ uninstall-am: uninstall-libLTLIBRARIES
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES
 
+.PRECIOUS: Makefile
+
 
 checksrc:
        @@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(top_srcdir)/lib $(CSOURCES) $(HHEADERS)
index 8f9d16d..d444a6b 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 
 LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c     \
   vtls/polarssl.c vtls/polarssl_threadlock.c vtls/axtls.c               \
-  vtls/cyassl.c vtls/curl_schannel.c vtls/curl_darwinssl.c vtls/gskit.c
+  vtls/cyassl.c vtls/schannel.c vtls/darwinssl.c vtls/gskit.c
 
 LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h                \
   vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h vtls/axtls.h   \
-  vtls/cyassl.h vtls/curl_schannel.h vtls/curl_darwinssl.h vtls/gskit.h
+  vtls/cyassl.h vtls/schannel.h vtls/darwinssl.h vtls/gskit.h
 
 LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
   cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c       \
@@ -44,8 +44,9 @@ LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
   http_negotiate_sspi.c http_proxy.c non-ascii.c asyn-ares.c            \
   asyn-thread.c curl_gssapi.c curl_ntlm.c curl_ntlm_wb.c                \
   curl_ntlm_core.c curl_ntlm_msgs.c curl_sasl.c curl_multibyte.c        \
-  hostcheck.c bundles.c conncache.c pipeline.c dotdot.c x509asn1.c      \
-  http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c
+  hostcheck.c conncache.c pipeline.c dotdot.c x509asn1.c                \
+  http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c       \
+  curl_des.c
 
 LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
   formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h         \
@@ -61,9 +62,10 @@ LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
   rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
   curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
   curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
-  curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h bundles.h   \
+  curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h             \
   conncache.h curl_setup_once.h multihandle.h setup-vms.h pipeline.h    \
-  dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h
+  dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h  \
+  curl_printf.h
 
 LIB_RCFILES = libcurl.rc
 
index f3673c5..736e600 100644 (file)
@@ -1,7 +1,7 @@
 ###########################################################################
 #
 ## Makefile for building libcurl.a with MingW (GCC-3.2 or later)
-## and optionally OpenSSL (0.9.8), libssh2 (1.3), zlib (1.2.5), librtmp (2.3)
+## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4)
 ##
 ## Usage:   mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
 ## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
@@ -18,23 +18,23 @@ ZLIB_PATH = ../../zlib-1.2.8
 endif
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
 endif
 # Edit the path below to point to the base of your LibSSH2 package.
 ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.4.3
+LIBSSH2_PATH = ../../libssh2-1.5.0
 endif
 # Edit the path below to point to the base of your librtmp package.
 ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../librtmp-2.3
+LIBRTMP_PATH = ../../librtmp-2.4
 endif
 # Edit the path below to point to the base of your libidn package.
 ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../libidn-1.18
+LIBIDN_PATH = ../../libidn-1.32
 endif
 # Edit the path below to point to the base of your MS IDN package.
 # Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
-# http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ad6158d7-ddba-416a-9109-07607425a815
+# https://www.microsoft.com/en-us/download/details.aspx?id=734
 ifndef WINIDN_PATH
 WINIDN_PATH = ../../Microsoft IDN Mitigation APIs
 endif
@@ -44,7 +44,7 @@ LDAP_SDK = c:/novell/ndk/cldapsdk/win32
 endif
 # Edit the path below to point to the base of your nghttp2 package.
 ifndef NGHTTP2_PATH
-NGHTTP2_PATH = ../../nghttp2-0.6.7
+NGHTTP2_PATH = ../../nghttp2-1.0.0
 endif
 
 PROOT = ..
@@ -55,10 +55,10 @@ LIBCARES_PATH = $(PROOT)/ares
 endif
 
 CC     = $(CROSSPREFIX)gcc
-CFLAGS = -g -O2 -Wall
+CFLAGS = $(CURL_CFLAG_EXTRAS) -g -O2 -Wall
 CFLAGS += -fno-strict-aliasing
 # comment LDFLAGS below to keep debug info
-LDFLAGS        = -s
+LDFLAGS        = $(CURL_LDFLAG_EXTRAS) -s
 AR     = $(CROSSPREFIX)ar
 RANLIB = $(CROSSPREFIX)ranlib
 RC     = $(CROSSPREFIX)windres
@@ -75,10 +75,12 @@ endif
 endif
 
 ifeq ($(ARCH),w64)
-CFLAGS  += -D_AMD64_
+CFLAGS  += -m64 -D_AMD64_
+LDFLAGS += -m64
 RCFLAGS += -F pe-x86-64
 else
 CFLAGS  += -m32
+LDFLAGS += -m32
 RCFLAGS += -F pe-i386
 endif
 
@@ -214,14 +216,17 @@ ifdef SSL
       OPENSSL_LIBS = -lcrypto -lssl
     endif
   endif
+  ifndef DYN
+    OPENSSL_LIBS += -lgdi32 -lcrypt32
+  endif
   INCLUDES += -I"$(OPENSSL_INCLUDE)"
-  CFLAGS += -DUSE_SSLEAY -DUSE_OPENSSL -DHAVE_OPENSSL_ENGINE_H -DHAVE_OPENSSL_PKCS12_H \
+  CFLAGS += -DUSE_OPENSSL -DHAVE_OPENSSL_ENGINE_H -DHAVE_OPENSSL_PKCS12_H \
             -DHAVE_ENGINE_LOAD_BUILTIN_ENGINES -DOPENSSL_NO_KRB5 \
             -DCURL_WANTS_CA_BUNDLE_ENV
   DLL_LIBS += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
   ifdef SRP
     ifeq "$(wildcard $(OPENSSL_INCLUDE)/openssl/srp.h)" "$(OPENSSL_INCLUDE)/openssl/srp.h"
-      CFLAGS += -DHAVE_SSLEAY_SRP -DUSE_TLS_SRP
+      CFLAGS += -DHAVE_OPENSSL_SRP -DUSE_TLS_SRP
     endif
   endif
 endif
@@ -323,5 +328,3 @@ $(PROOT)/include/curl/curlbuild.h:
 
 $(LIBCARES_PATH)/libcares.a:
        $(MAKE) -C $(LIBCARES_PATH) -f Makefile.m32
-
-
index 802959c..5a955f8 100644 (file)
@@ -19,12 +19,12 @@ endif
 
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
 endif
 
 # Edit the path below to point to the base of your LibSSH2 package.
 ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.4.3
+LIBSSH2_PATH = ../../libssh2-1.5.0
 endif
 
 # Edit the path below to point to the base of your axTLS package.
@@ -214,6 +214,11 @@ WITH_SSL =
 else
 ifeq ($(findstring -ssl,$(CFG)),-ssl)
 WITH_SSL = 1
+ifeq ($(findstring -srp,$(CFG)),-srp)
+ifeq "$(wildcard $(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)/openssl/srp.h)" "$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)/openssl/srp.h"
+WITH_SRP = 1
+endif
+endif
 endif
 endif
 ifeq ($(findstring -zlib,$(CFG)),-zlib)
@@ -638,6 +643,10 @@ ifdef WITH_SSL
        @echo $(DL)#define HAVE_LIBSSL 1$(DL) >> $@
        @echo $(DL)#define HAVE_LIBCRYPTO 1$(DL) >> $@
        @echo $(DL)#define OPENSSL_NO_KRB5 1$(DL) >> $@
+ifdef WITH_SRP
+       @echo $(DL)#define HAVE_SSLEAY_SRP 1$(DL) >> $@
+       @echo $(DL)#define USE_TLS_SRP 1$(DL) >> $@
+endif
 ifdef WITH_SPNEGO
        @echo $(DL)#define HAVE_SPNEGO 1$(DL) >> $@
 endif
@@ -690,6 +699,11 @@ ifdef WITH_SSL
 else
        @echo SSL support:     no
 endif
+ifdef WITH_SRP
+       @echo SRP support:     enabled
+else
+       @echo SRP support:     no
+endif
 ifdef WITH_SSH2
        @echo SSH2 support:    enabled (libssh2)
 else
index 461e4f7..987e01e 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
 !INCLUDE ..\winbuild\Makefile.msvc.names\r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH   = ../../openssl-0.9.8zc\r
+OPENSSL_PATH   = ../../openssl-1.0.2a\r
 !ENDIF\r
 \r
 !IFNDEF LIBSSH2_PATH\r
-LIBSSH2_PATH   = ../../libssh2-1.4.3\r
+LIBSSH2_PATH   = ../../libssh2-1.5.0\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
@@ -90,7 +90,7 @@ MACHINE  = X86
 # If, for some reason the Windows SDK is installed but not installed\r
 # in the default location, you can specify WINDOWS_SDK_PATH.\r
 # It can be downloaded from:\r
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
 \r
 # WINDOWS_SSPI = 1\r
 \r
@@ -105,7 +105,7 @@ WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
 \r
 CCNODBG      = cl.exe /O2 /DNDEBUG\r
 CCDEBUG      = cl.exe /Od /Gm /Zi /D_DEBUG /RTC1\r
-CFLAGSSSL    = /DUSE_SSLEAY /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"\r
+CFLAGSSSL    = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"\r
 CFLAGSWINSSL = /DUSE_SCHANNEL\r
 CFLAGSSSH2   = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"\r
 CFLAGSZLIB   = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
@@ -427,7 +427,7 @@ CFGSET   = TRUE
 TARGET = $(LIBCURL_DYN_LIB_DBG)\r
 DIROBJ = $(CFG)\r
 LNK    = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
-CC     = $(CCDEBUG) $(RTLIBD) \r
+CC     = $(CCDEBUG) $(RTLIBD)\r
 CFGSET = TRUE\r
 RESOURCE = $(DIROBJ)\libcurl.res\r
 !ENDIF\r
@@ -528,13 +528,12 @@ X_OBJS= \
        $(DIROBJ)\asyn-thread.obj \\r
        $(DIROBJ)\axtls.obj \\r
        $(DIROBJ)\base64.obj \\r
-       $(DIROBJ)\bundles.obj \\r
        $(DIROBJ)\conncache.obj \\r
        $(DIROBJ)\connect.obj \\r
        $(DIROBJ)\content_encoding.obj \\r
        $(DIROBJ)\cookie.obj \\r
        $(DIROBJ)\curl_addrinfo.obj \\r
-       $(DIROBJ)\curl_darwinssl.obj \\r
+       $(DIROBJ)\curl_des.obj \\r
        $(DIROBJ)\curl_endian.obj \\r
        $(DIROBJ)\curl_fnmatch.obj \\r
        $(DIROBJ)\curl_gethostname.obj \\r
@@ -549,10 +548,10 @@ X_OBJS= \
        $(DIROBJ)\curl_sasl.obj \\r
        $(DIROBJ)\curl_sasl_gssapi.obj \\r
        $(DIROBJ)\curl_sasl_sspi.obj \\r
-       $(DIROBJ)\curl_schannel.obj \\r
        $(DIROBJ)\curl_sspi.obj \\r
        $(DIROBJ)\curl_threads.obj \\r
        $(DIROBJ)\cyassl.obj \\r
+       $(DIROBJ)\darwinssl.obj \\r
        $(DIROBJ)\dict.obj \\r
        $(DIROBJ)\dotdot.obj \\r
        $(DIROBJ)\easy.obj \\r
@@ -607,6 +606,7 @@ X_OBJS= \
        $(DIROBJ)\progress.obj \\r
        $(DIROBJ)\rawstr.obj \\r
        $(DIROBJ)\rtsp.obj \\r
+       $(DIROBJ)\schannel.obj \\r
        $(DIROBJ)\security.obj \\r
        $(DIROBJ)\select.obj \\r
        $(DIROBJ)\sendf.obj \\r
diff --git a/lib/Makefile.vc11 b/lib/Makefile.vc11
new file mode 100644 (file)
index 0000000..d1bf34a
--- /dev/null
@@ -0,0 +1,677 @@
+#***************************************************************************\r
+#                                  _   _ ____  _\r
+#  Project                     ___| | | |  _ \| |\r
+#                             / __| | | | |_) | |\r
+#                            | (__| |_| |  _ <| |___\r
+#                             \___|\___/|_| \_\_____|\r
+#\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+#\r
+# This software is licensed as described in the file COPYING, which\r
+# you should have received as part of this distribution. The terms\r
+# are also available at http://curl.haxx.se/docs/copyright.html.\r
+#\r
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
+# copies of the Software, and permit persons to whom the Software is\r
+# furnished to do so, under the terms of the COPYING file.\r
+#\r
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
+# KIND, either express or implied.\r
+#\r
+#***************************************************************************\r
+\r
+# All files in the Makefile.vc* series are generated automatically from the\r
+# one made for MSVC version 6. Alas, if you want to do changes to any of the\r
+# files and send back to the project, edit the version six, make your diff and\r
+# mail curl-library.\r
+\r
+###########################################################################\r
+#\r
+# Makefile for building libcurl with MSVC11\r
+#\r
+# Usage: see usage message below\r
+#        Should be invoked from \lib directory\r
+#        Edit the paths and desired library name\r
+#        SSL path is only required if you intend compiling\r
+#        with SSL.\r
+#\r
+# This make file leaves the result either a .lib or .dll file\r
+# in the \lib directory. It should be called from the \lib\r
+# directory.\r
+#\r
+# An option would have been to allow the source directory to\r
+# be specified, but I saw no requirement.\r
+#\r
+# Another option would have been to leave the .lib and .dll\r
+# files in the "cfg" directory, but then the make file\r
+# in \src would need to be changed.\r
+#\r
+##############################################################\r
+\r
+# ----------------------------------------------\r
+# Verify that current subdir is libcurl's 'lib'\r
+# ----------------------------------------------\r
+\r
+!IF ! EXIST(.\curl_addrinfo.c)\r
+!  MESSAGE Can not process this makefile from outside of libcurl's 'lib' subdirectory.\r
+!  MESSAGE Change to libcurl's 'lib' subdirectory, and try again.\r
+!  ERROR   See previous message.\r
+!ENDIF\r
+\r
+# ------------------------------------------------\r
+# Makefile.msvc.names provides libcurl file names\r
+# ------------------------------------------------\r
+\r
+!INCLUDE ..\winbuild\Makefile.msvc.names\r
+\r
+!IFNDEF OPENSSL_PATH\r
+OPENSSL_PATH   = ../../openssl-1.0.2a\r
+!ENDIF\r
+\r
+!IFNDEF LIBSSH2_PATH\r
+LIBSSH2_PATH   = ../../libssh2-1.5.0\r
+!ENDIF\r
+\r
+!IFNDEF ZLIB_PATH\r
+ZLIB_PATH  = ../../zlib-1.2.8\r
+!ENDIF\r
+\r
+!IFNDEF MACHINE\r
+MACHINE  = X86\r
+!ENDIF\r
+\r
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication\r
+# without an openssl installation and offers the ability to authenticate\r
+# using the "current logged in user". Since at least with MSVC11 the sspi.h\r
+# header is broken it is either required to install the Windows SDK,\r
+# or to fix sspi.h with adding this define at the beginning of sspi.h:\r
+# #define FreeCredentialHandle FreeCredentialsHandle\r
+#\r
+# If, for some reason the Windows SDK is installed but not installed\r
+# in the default location, you can specify WINDOWS_SDK_PATH.\r
+# It can be downloaded from:\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
+\r
+# WINDOWS_SSPI = 1\r
+\r
+!IFDEF WINDOWS_SSPI\r
+!IFNDEF WINDOWS_SDK_PATH\r
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"\r
+!ENDIF\r
+!ENDIF\r
+\r
+#############################################################\r
+## Nothing more to do below this line!\r
+\r
+CCNODBG      = cl.exe /O2 /DNDEBUG\r
+CCDEBUG      = cl.exe /Od /Gm /Zi /D_DEBUG /RTC1\r
+CFLAGSSSL    = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"\r
+CFLAGSWINSSL = /DUSE_SCHANNEL\r
+CFLAGSSSH2   = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"\r
+CFLAGSZLIB   = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
+CFLAGS       = /I. /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /D_BIND_TO_CURRENT_VCLIBS_VERSION=1\r
+CFLAGSLIB    = /DCURL_STATICLIB\r
+LNKDLL       = link.exe /DLL\r
+LNKLIB       = link.exe /lib\r
+LFLAGS       = /nologo /machine:$(MACHINE)\r
+SSLLIBS      = libeay32.lib ssleay32.lib\r
+ZLIBLIBSDLL  = zdll.lib\r
+ZLIBLIBS     = zlib.lib\r
+WINLIBS      = ws2_32.lib wldap32.lib advapi32.lib\r
+CFLAGS       = $(CFLAGS)\r
+\r
+CFGSET       = FALSE\r
+\r
+!IFDEF WINDOWS_SSPI\r
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include\r
+!ENDIF\r
+\r
+!IFDEF USE_IPV6\r
+CFLAGS = $(CFLAGS) /DUSE_IPV6\r
+!ENDIF\r
+\r
+!IFDEF USE_IDN\r
+CFLAGS = $(CFLAGS) /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES\r
+!ENDIF\r
+\r
+##############################################################\r
+# Runtime library configuration\r
+\r
+RTLIB   = /MD\r
+RTLIBD  = /MDd\r
+\r
+!IF "$(RTLIBCFG)" == "static"\r
+RTLIB  = /MT\r
+RTLIBD = /MTd\r
+!ENDIF\r
+\r
+\r
+######################\r
+# release\r
+\r
+!IF "$(CFG)" == "release"\r
+TARGET = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC     = $(CCNODBG) $(RTLIB) $(CFLAGSLIB)\r
+CFGSET = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl\r
+\r
+!IF "$(CFG)" == "release-ssl"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-winssl\r
+\r
+!IF "$(CFG)" == "release-winssl"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-zlib\r
+\r
+!IF "$(CFG)" == "release-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-winssl-zlib\r
+\r
+!IF "$(CFG)" == "release-winssl-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-ssh2-zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-ssh2-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-dll\r
+\r
+!IF "$(CFG)" == "release-ssl-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-dll\r
+\r
+!IF "$(CFG)" == "release-dll"\r
+TARGET = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKDLL) $(WINLIBS) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC     = $(CCNODBG) $(RTLIB)\r
+CFGSET = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# release-dll-ssl-dll\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# release-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# release-dll-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug\r
+\r
+!IF "$(CFG)" == "debug"\r
+TARGET = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC     = $(CCDEBUG) $(RTLIBD) $(CFLAGSLIB)\r
+CFGSET = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl\r
+\r
+!IF "$(CFG)" == "debug-ssl"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-zlib\r
+\r
+!IF "$(CFG)" == "debug-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-zlib\r
+\r
+!IF "$(CFG)" == "debug-ssl-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-ssh2-zlib\r
+\r
+!IF "$(CFG)" == "debug-ssl-ssh2-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-dll\r
+\r
+!IF "$(CFG)" == "debug-ssl-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = /LIBPATH:$(OPENSSL_PATH)\out32dll\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll\r
+\r
+!IF "$(CFG)" == "debug-dll"\r
+TARGET = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC     = $(CCDEBUG) $(RTLIBD)\r
+CFGSET = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll-ssl-dll\r
+\r
+!IF "$(CFG)" == "debug-dll-ssl-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-dll-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+#######################\r
+# Usage\r
+#\r
+!IF "$(CFGSET)" == "FALSE" && "$(CFG)" != ""\r
+!MESSAGE Usage: nmake /f makefile.vc11 CFG=<config> <target>\r
+!MESSAGE where <config> is one of:\r
+!MESSAGE   release                      - release static library\r
+!MESSAGE   release-ssl                  - release static library with ssl\r
+!MESSAGE   release-zlib                 - release static library with zlib\r
+!MESSAGE   release-ssl-zlib             - release static library with ssl and zlib\r
+!MESSAGE   release-ssl-ssh2-zlib        - release static library with ssl, ssh2 and zlib\r
+!MESSAGE   release-ssl-dll              - release static library with dynamic ssl\r
+!MESSAGE   release-zlib-dll             - release static library with dynamic zlib\r
+!MESSAGE   release-ssl-dll-zlib-dll     - release static library with dynamic ssl and dynamic zlib\r
+!MESSAGE   release-dll                  - release dynamic library\r
+!MESSAGE   release-dll-ssl-dll          - release dynamic library with dynamic ssl\r
+!MESSAGE   release-dll-zlib-dll         - release dynamic library with dynamic zlib\r
+!MESSAGE   release-dll-ssl-dll-zlib-dll - release dynamic library with dynamic ssl and dynamic zlib\r
+!MESSAGE   debug                        - debug static library\r
+!MESSAGE   debug-ssl                    - debug static library with ssl\r
+!MESSAGE   debug-zlib                   - debug static library with zlib\r
+!MESSAGE   debug-ssl-zlib               - debug static library with ssl and zlib\r
+!MESSAGE   debug-ssl-ssh2-zlib          - debug static library with ssl, ssh2 and zlib\r
+!MESSAGE   debug-ssl-dll                - debug static library with dynamic ssl\r
+!MESSAGE   debug-zlib-dll               - debug static library with dynamic zlib\r
+!MESSAGE   debug-ssl-dll-zlib-dll       - debug static library with dynamic ssl and dynamic zlib\r
+!MESSAGE   debug-dll                    - debug dynamic library\r
+!MESSAGE   debug-dll-ssl-dll            - debug dynamic library with dynamic ssl\r
+!MESSAGE   debug-dll-zlib-dll           - debug dynamic library with dynamic zlib1\r
+!MESSAGE   debug-dll-ssl-dll-zlib-dll   - debug dynamic library with dynamic ssl and dynamic zlib\r
+!MESSAGE <target> can be left blank in which case all is assumed\r
+!ERROR please choose a valid configuration "$(CFG)"\r
+!ENDIF\r
+\r
+#######################\r
+# Only the clean target can be used if a config was not provided.\r
+#\r
+!IF "$(CFGSET)" == "FALSE"\r
+clean:\r
+       @-erase /s *.dll 2> NUL\r
+       @-erase /s *.exp 2> NUL\r
+       @-erase /s *.idb 2> NUL\r
+       @-erase /s *.lib 2> NUL\r
+       @-erase /s *.obj 2> NUL\r
+       @-erase /s *.pch 2> NUL\r
+       @-erase /s *.pdb 2> NUL\r
+       @-erase /s *.res 2> NUL\r
+!ELSE\r
+# A config was provided, so the library can be built.\r
+#\r
+X_OBJS= \\r
+       $(DIROBJ)\amigaos.obj \\r
+       $(DIROBJ)\asyn-ares.obj \\r
+       $(DIROBJ)\asyn-thread.obj \\r
+       $(DIROBJ)\axtls.obj \\r
+       $(DIROBJ)\base64.obj \\r
+       $(DIROBJ)\conncache.obj \\r
+       $(DIROBJ)\connect.obj \\r
+       $(DIROBJ)\content_encoding.obj \\r
+       $(DIROBJ)\cookie.obj \\r
+       $(DIROBJ)\curl_addrinfo.obj \\r
+       $(DIROBJ)\curl_des.obj \\r
+       $(DIROBJ)\curl_endian.obj \\r
+       $(DIROBJ)\curl_fnmatch.obj \\r
+       $(DIROBJ)\curl_gethostname.obj \\r
+       $(DIROBJ)\curl_gssapi.obj \\r
+       $(DIROBJ)\curl_memrchr.obj \\r
+       $(DIROBJ)\curl_multibyte.obj \\r
+       $(DIROBJ)\curl_ntlm.obj \\r
+       $(DIROBJ)\curl_ntlm_core.obj \\r
+       $(DIROBJ)\curl_ntlm_msgs.obj \\r
+       $(DIROBJ)\curl_ntlm_wb.obj \\r
+       $(DIROBJ)\curl_rtmp.obj \\r
+       $(DIROBJ)\curl_sasl.obj \\r
+       $(DIROBJ)\curl_sasl_gssapi.obj \\r
+       $(DIROBJ)\curl_sasl_sspi.obj \\r
+       $(DIROBJ)\curl_sspi.obj \\r
+       $(DIROBJ)\curl_threads.obj \\r
+       $(DIROBJ)\cyassl.obj \\r
+       $(DIROBJ)\darwinssl.obj \\r
+       $(DIROBJ)\dict.obj \\r
+       $(DIROBJ)\dotdot.obj \\r
+       $(DIROBJ)\easy.obj \\r
+       $(DIROBJ)\escape.obj \\r
+       $(DIROBJ)\file.obj \\r
+       $(DIROBJ)\fileinfo.obj \\r
+       $(DIROBJ)\formdata.obj \\r
+       $(DIROBJ)\ftp.obj \\r
+       $(DIROBJ)\ftplistparser.obj \\r
+       $(DIROBJ)\getenv.obj \\r
+       $(DIROBJ)\getinfo.obj \\r
+       $(DIROBJ)\gopher.obj \\r
+       $(DIROBJ)\gtls.obj \\r
+       $(DIROBJ)\hash.obj \\r
+       $(DIROBJ)\hmac.obj \\r
+       $(DIROBJ)\hostasyn.obj \\r
+       $(DIROBJ)\hostcheck.obj \\r
+       $(DIROBJ)\hostip.obj \\r
+       $(DIROBJ)\hostip4.obj \\r
+       $(DIROBJ)\hostip6.obj \\r
+       $(DIROBJ)\hostsyn.obj \\r
+       $(DIROBJ)\http.obj \\r
+       $(DIROBJ)\http_chunks.obj \\r
+       $(DIROBJ)\http_digest.obj \\r
+       $(DIROBJ)\http_negotiate.obj \\r
+       $(DIROBJ)\http_negotiate_sspi.obj \\r
+       $(DIROBJ)\http_proxy.obj \\r
+       $(DIROBJ)\idn_win32.obj \\r
+       $(DIROBJ)\if2ip.obj \\r
+       $(DIROBJ)\imap.obj \\r
+       $(DIROBJ)\inet_ntop.obj \\r
+       $(DIROBJ)\inet_pton.obj \\r
+       $(DIROBJ)\krb5.obj \\r
+       $(DIROBJ)\ldap.obj \\r
+       $(DIROBJ)\llist.obj \\r
+       $(DIROBJ)\md4.obj \\r
+       $(DIROBJ)\md5.obj \\r
+       $(DIROBJ)\memdebug.obj \\r
+       $(DIROBJ)\mprintf.obj \\r
+       $(DIROBJ)\multi.obj \\r
+       $(DIROBJ)\netrc.obj \\r
+       $(DIROBJ)\non-ascii.obj \\r
+       $(DIROBJ)\nonblock.obj \\r
+       $(DIROBJ)\nss.obj \\r
+       $(DIROBJ)\openldap.obj \\r
+       $(DIROBJ)\parsedate.obj \\r
+       $(DIROBJ)\pingpong.obj \\r
+       $(DIROBJ)\pipeline.obj \\r
+       $(DIROBJ)\polarssl.obj \\r
+       $(DIROBJ)\polarssl_threadlock.obj \\r
+       $(DIROBJ)\pop3.obj \\r
+       $(DIROBJ)\progress.obj \\r
+       $(DIROBJ)\rawstr.obj \\r
+       $(DIROBJ)\rtsp.obj \\r
+       $(DIROBJ)\schannel.obj \\r
+       $(DIROBJ)\security.obj \\r
+       $(DIROBJ)\select.obj \\r
+       $(DIROBJ)\sendf.obj \\r
+       $(DIROBJ)\share.obj \\r
+       $(DIROBJ)\slist.obj \\r
+       $(DIROBJ)\smb.obj \\r
+       $(DIROBJ)\smtp.obj \\r
+       $(DIROBJ)\socks.obj \\r
+       $(DIROBJ)\socks_gssapi.obj \\r
+       $(DIROBJ)\socks_sspi.obj \\r
+       $(DIROBJ)\speedcheck.obj \\r
+       $(DIROBJ)\splay.obj \\r
+       $(DIROBJ)\ssh.obj \\r
+       $(DIROBJ)\vtls.obj \\r
+       $(DIROBJ)\openssl.obj \\r
+       $(DIROBJ)\strdup.obj \\r
+       $(DIROBJ)\strequal.obj \\r
+       $(DIROBJ)\strerror.obj \\r
+       $(DIROBJ)\strtok.obj \\r
+       $(DIROBJ)\strtoofft.obj \\r
+       $(DIROBJ)\telnet.obj \\r
+       $(DIROBJ)\tftp.obj \\r
+       $(DIROBJ)\timeval.obj \\r
+       $(DIROBJ)\transfer.obj \\r
+       $(DIROBJ)\url.obj \\r
+       $(DIROBJ)\version.obj \\r
+       $(DIROBJ)\warnless.obj \\r
+       $(DIROBJ)\wildcard.obj \\r
+       $(RESOURCE)\r
+\r
+all : $(TARGET)\r
+\r
+$(TARGET): $(X_OBJS)\r
+       $(LNK) $(LFLAGS) $(X_OBJS)\r
+       -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_REL) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_DBG) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_REL) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_DBG) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_REL) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) . /y\r
+       -xcopy $(DIROBJ)\*.exp                  . /y\r
+       -xcopy $(DIROBJ)\*.pdb                  . /y\r
+\r
+$(X_OBJS): $(DIROBJ)\r
+\r
+$(DIROBJ):\r
+       @if not exist "$(DIROBJ)" mkdir $(DIROBJ)\r
+\r
+.SUFFIXES: .c .obj .res\r
+\r
+{.\}.c{$(DIROBJ)\}.obj:\r
+       $(CC) $(CFLAGS) /Fo"$@"  $<\r
+\r
+{.\vtls\}.c{$(DIROBJ)\}.obj:\r
+       $(CC) $(CFLAGS) /Fo"$@"  $<\r
+\r
+debug-dll\libcurl.res \\r
+debug-dll-ssl-dll\libcurl.res \\r
+debug-dll-zlib-dll\libcurl.res \\r
+debug-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc\r
+       rc /dDEBUGBUILD=1 /Fo $@ libcurl.rc\r
+\r
+release-dll\libcurl.res \\r
+release-dll-ssl-dll\libcurl.res \\r
+release-dll-zlib-dll\libcurl.res \\r
+release-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc\r
+       rc /dDEBUGBUILD=0 /Fo $@ libcurl.rc\r
+!ENDIF  # End of case where a config was provided.\r
diff --git a/lib/Makefile.vc12 b/lib/Makefile.vc12
new file mode 100644 (file)
index 0000000..7590de4
--- /dev/null
@@ -0,0 +1,677 @@
+#***************************************************************************\r
+#                                  _   _ ____  _\r
+#  Project                     ___| | | |  _ \| |\r
+#                             / __| | | | |_) | |\r
+#                            | (__| |_| |  _ <| |___\r
+#                             \___|\___/|_| \_\_____|\r
+#\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+#\r
+# This software is licensed as described in the file COPYING, which\r
+# you should have received as part of this distribution. The terms\r
+# are also available at http://curl.haxx.se/docs/copyright.html.\r
+#\r
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
+# copies of the Software, and permit persons to whom the Software is\r
+# furnished to do so, under the terms of the COPYING file.\r
+#\r
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
+# KIND, either express or implied.\r
+#\r
+#***************************************************************************\r
+\r
+# All files in the Makefile.vc* series are generated automatically from the\r
+# one made for MSVC version 6. Alas, if you want to do changes to any of the\r
+# files and send back to the project, edit the version six, make your diff and\r
+# mail curl-library.\r
+\r
+###########################################################################\r
+#\r
+# Makefile for building libcurl with MSVC12\r
+#\r
+# Usage: see usage message below\r
+#        Should be invoked from \lib directory\r
+#        Edit the paths and desired library name\r
+#        SSL path is only required if you intend compiling\r
+#        with SSL.\r
+#\r
+# This make file leaves the result either a .lib or .dll file\r
+# in the \lib directory. It should be called from the \lib\r
+# directory.\r
+#\r
+# An option would have been to allow the source directory to\r
+# be specified, but I saw no requirement.\r
+#\r
+# Another option would have been to leave the .lib and .dll\r
+# files in the "cfg" directory, but then the make file\r
+# in \src would need to be changed.\r
+#\r
+##############################################################\r
+\r
+# ----------------------------------------------\r
+# Verify that current subdir is libcurl's 'lib'\r
+# ----------------------------------------------\r
+\r
+!IF ! EXIST(.\curl_addrinfo.c)\r
+!  MESSAGE Can not process this makefile from outside of libcurl's 'lib' subdirectory.\r
+!  MESSAGE Change to libcurl's 'lib' subdirectory, and try again.\r
+!  ERROR   See previous message.\r
+!ENDIF\r
+\r
+# ------------------------------------------------\r
+# Makefile.msvc.names provides libcurl file names\r
+# ------------------------------------------------\r
+\r
+!INCLUDE ..\winbuild\Makefile.msvc.names\r
+\r
+!IFNDEF OPENSSL_PATH\r
+OPENSSL_PATH   = ../../openssl-1.0.2a\r
+!ENDIF\r
+\r
+!IFNDEF LIBSSH2_PATH\r
+LIBSSH2_PATH   = ../../libssh2-1.5.0\r
+!ENDIF\r
+\r
+!IFNDEF ZLIB_PATH\r
+ZLIB_PATH  = ../../zlib-1.2.8\r
+!ENDIF\r
+\r
+!IFNDEF MACHINE\r
+MACHINE  = X86\r
+!ENDIF\r
+\r
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication\r
+# without an openssl installation and offers the ability to authenticate\r
+# using the "current logged in user". Since at least with MSVC12 the sspi.h\r
+# header is broken it is either required to install the Windows SDK,\r
+# or to fix sspi.h with adding this define at the beginning of sspi.h:\r
+# #define FreeCredentialHandle FreeCredentialsHandle\r
+#\r
+# If, for some reason the Windows SDK is installed but not installed\r
+# in the default location, you can specify WINDOWS_SDK_PATH.\r
+# It can be downloaded from:\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
+\r
+# WINDOWS_SSPI = 1\r
+\r
+!IFDEF WINDOWS_SSPI\r
+!IFNDEF WINDOWS_SDK_PATH\r
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"\r
+!ENDIF\r
+!ENDIF\r
+\r
+#############################################################\r
+## Nothing more to do below this line!\r
+\r
+CCNODBG      = cl.exe /O2 /DNDEBUG\r
+CCDEBUG      = cl.exe /Od /Gm /Zi /D_DEBUG /RTC1\r
+CFLAGSSSL    = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"\r
+CFLAGSWINSSL = /DUSE_SCHANNEL\r
+CFLAGSSSH2   = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"\r
+CFLAGSZLIB   = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
+CFLAGS       = /I. /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /D_BIND_TO_CURRENT_VCLIBS_VERSION=1\r
+CFLAGSLIB    = /DCURL_STATICLIB\r
+LNKDLL       = link.exe /DLL\r
+LNKLIB       = link.exe /lib\r
+LFLAGS       = /nologo /machine:$(MACHINE)\r
+SSLLIBS      = libeay32.lib ssleay32.lib\r
+ZLIBLIBSDLL  = zdll.lib\r
+ZLIBLIBS     = zlib.lib\r
+WINLIBS      = ws2_32.lib wldap32.lib advapi32.lib\r
+CFLAGS       = $(CFLAGS)\r
+\r
+CFGSET       = FALSE\r
+\r
+!IFDEF WINDOWS_SSPI\r
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include\r
+!ENDIF\r
+\r
+!IFDEF USE_IPV6\r
+CFLAGS = $(CFLAGS) /DUSE_IPV6\r
+!ENDIF\r
+\r
+!IFDEF USE_IDN\r
+CFLAGS = $(CFLAGS) /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES\r
+!ENDIF\r
+\r
+##############################################################\r
+# Runtime library configuration\r
+\r
+RTLIB   = /MD\r
+RTLIBD  = /MDd\r
+\r
+!IF "$(RTLIBCFG)" == "static"\r
+RTLIB  = /MT\r
+RTLIBD = /MTd\r
+!ENDIF\r
+\r
+\r
+######################\r
+# release\r
+\r
+!IF "$(CFG)" == "release"\r
+TARGET = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC     = $(CCNODBG) $(RTLIB) $(CFLAGSLIB)\r
+CFGSET = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl\r
+\r
+!IF "$(CFG)" == "release-ssl"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-winssl\r
+\r
+!IF "$(CFG)" == "release-winssl"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-zlib\r
+\r
+!IF "$(CFG)" == "release-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-winssl-zlib\r
+\r
+!IF "$(CFG)" == "release-winssl-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-ssh2-zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-ssh2-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-dll\r
+\r
+!IF "$(CFG)" == "release-ssl-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-dll\r
+\r
+!IF "$(CFG)" == "release-dll"\r
+TARGET = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKDLL) $(WINLIBS) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC     = $(CCNODBG) $(RTLIB)\r
+CFGSET = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# release-dll-ssl-dll\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# release-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# release-dll-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug\r
+\r
+!IF "$(CFG)" == "debug"\r
+TARGET = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC     = $(CCDEBUG) $(RTLIBD) $(CFLAGSLIB)\r
+CFGSET = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl\r
+\r
+!IF "$(CFG)" == "debug-ssl"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-zlib\r
+\r
+!IF "$(CFG)" == "debug-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-zlib\r
+\r
+!IF "$(CFG)" == "debug-ssl-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-ssh2-zlib\r
+\r
+!IF "$(CFG)" == "debug-ssl-ssh2-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-dll\r
+\r
+!IF "$(CFG)" == "debug-ssl-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = /LIBPATH:$(OPENSSL_PATH)\out32dll\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll\r
+\r
+!IF "$(CFG)" == "debug-dll"\r
+TARGET = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC     = $(CCDEBUG) $(RTLIBD)\r
+CFGSET = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll-ssl-dll\r
+\r
+!IF "$(CFG)" == "debug-dll-ssl-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-dll-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+#######################\r
+# Usage\r
+#\r
+!IF "$(CFGSET)" == "FALSE" && "$(CFG)" != ""\r
+!MESSAGE Usage: nmake /f makefile.vc12 CFG=<config> <target>\r
+!MESSAGE where <config> is one of:\r
+!MESSAGE   release                      - release static library\r
+!MESSAGE   release-ssl                  - release static library with ssl\r
+!MESSAGE   release-zlib                 - release static library with zlib\r
+!MESSAGE   release-ssl-zlib             - release static library with ssl and zlib\r
+!MESSAGE   release-ssl-ssh2-zlib        - release static library with ssl, ssh2 and zlib\r
+!MESSAGE   release-ssl-dll              - release static library with dynamic ssl\r
+!MESSAGE   release-zlib-dll             - release static library with dynamic zlib\r
+!MESSAGE   release-ssl-dll-zlib-dll     - release static library with dynamic ssl and dynamic zlib\r
+!MESSAGE   release-dll                  - release dynamic library\r
+!MESSAGE   release-dll-ssl-dll          - release dynamic library with dynamic ssl\r
+!MESSAGE   release-dll-zlib-dll         - release dynamic library with dynamic zlib\r
+!MESSAGE   release-dll-ssl-dll-zlib-dll - release dynamic library with dynamic ssl and dynamic zlib\r
+!MESSAGE   debug                        - debug static library\r
+!MESSAGE   debug-ssl                    - debug static library with ssl\r
+!MESSAGE   debug-zlib                   - debug static library with zlib\r
+!MESSAGE   debug-ssl-zlib               - debug static library with ssl and zlib\r
+!MESSAGE   debug-ssl-ssh2-zlib          - debug static library with ssl, ssh2 and zlib\r
+!MESSAGE   debug-ssl-dll                - debug static library with dynamic ssl\r
+!MESSAGE   debug-zlib-dll               - debug static library with dynamic zlib\r
+!MESSAGE   debug-ssl-dll-zlib-dll       - debug static library with dynamic ssl and dynamic zlib\r
+!MESSAGE   debug-dll                    - debug dynamic library\r
+!MESSAGE   debug-dll-ssl-dll            - debug dynamic library with dynamic ssl\r
+!MESSAGE   debug-dll-zlib-dll           - debug dynamic library with dynamic zlib1\r
+!MESSAGE   debug-dll-ssl-dll-zlib-dll   - debug dynamic library with dynamic ssl and dynamic zlib\r
+!MESSAGE <target> can be left blank in which case all is assumed\r
+!ERROR please choose a valid configuration "$(CFG)"\r
+!ENDIF\r
+\r
+#######################\r
+# Only the clean target can be used if a config was not provided.\r
+#\r
+!IF "$(CFGSET)" == "FALSE"\r
+clean:\r
+       @-erase /s *.dll 2> NUL\r
+       @-erase /s *.exp 2> NUL\r
+       @-erase /s *.idb 2> NUL\r
+       @-erase /s *.lib 2> NUL\r
+       @-erase /s *.obj 2> NUL\r
+       @-erase /s *.pch 2> NUL\r
+       @-erase /s *.pdb 2> NUL\r
+       @-erase /s *.res 2> NUL\r
+!ELSE\r
+# A config was provided, so the library can be built.\r
+#\r
+X_OBJS= \\r
+       $(DIROBJ)\amigaos.obj \\r
+       $(DIROBJ)\asyn-ares.obj \\r
+       $(DIROBJ)\asyn-thread.obj \\r
+       $(DIROBJ)\axtls.obj \\r
+       $(DIROBJ)\base64.obj \\r
+       $(DIROBJ)\conncache.obj \\r
+       $(DIROBJ)\connect.obj \\r
+       $(DIROBJ)\content_encoding.obj \\r
+       $(DIROBJ)\cookie.obj \\r
+       $(DIROBJ)\curl_addrinfo.obj \\r
+       $(DIROBJ)\curl_des.obj \\r
+       $(DIROBJ)\curl_endian.obj \\r
+       $(DIROBJ)\curl_fnmatch.obj \\r
+       $(DIROBJ)\curl_gethostname.obj \\r
+       $(DIROBJ)\curl_gssapi.obj \\r
+       $(DIROBJ)\curl_memrchr.obj \\r
+       $(DIROBJ)\curl_multibyte.obj \\r
+       $(DIROBJ)\curl_ntlm.obj \\r
+       $(DIROBJ)\curl_ntlm_core.obj \\r
+       $(DIROBJ)\curl_ntlm_msgs.obj \\r
+       $(DIROBJ)\curl_ntlm_wb.obj \\r
+       $(DIROBJ)\curl_rtmp.obj \\r
+       $(DIROBJ)\curl_sasl.obj \\r
+       $(DIROBJ)\curl_sasl_gssapi.obj \\r
+       $(DIROBJ)\curl_sasl_sspi.obj \\r
+       $(DIROBJ)\curl_sspi.obj \\r
+       $(DIROBJ)\curl_threads.obj \\r
+       $(DIROBJ)\cyassl.obj \\r
+       $(DIROBJ)\darwinssl.obj \\r
+       $(DIROBJ)\dict.obj \\r
+       $(DIROBJ)\dotdot.obj \\r
+       $(DIROBJ)\easy.obj \\r
+       $(DIROBJ)\escape.obj \\r
+       $(DIROBJ)\file.obj \\r
+       $(DIROBJ)\fileinfo.obj \\r
+       $(DIROBJ)\formdata.obj \\r
+       $(DIROBJ)\ftp.obj \\r
+       $(DIROBJ)\ftplistparser.obj \\r
+       $(DIROBJ)\getenv.obj \\r
+       $(DIROBJ)\getinfo.obj \\r
+       $(DIROBJ)\gopher.obj \\r
+       $(DIROBJ)\gtls.obj \\r
+       $(DIROBJ)\hash.obj \\r
+       $(DIROBJ)\hmac.obj \\r
+       $(DIROBJ)\hostasyn.obj \\r
+       $(DIROBJ)\hostcheck.obj \\r
+       $(DIROBJ)\hostip.obj \\r
+       $(DIROBJ)\hostip4.obj \\r
+       $(DIROBJ)\hostip6.obj \\r
+       $(DIROBJ)\hostsyn.obj \\r
+       $(DIROBJ)\http.obj \\r
+       $(DIROBJ)\http_chunks.obj \\r
+       $(DIROBJ)\http_digest.obj \\r
+       $(DIROBJ)\http_negotiate.obj \\r
+       $(DIROBJ)\http_negotiate_sspi.obj \\r
+       $(DIROBJ)\http_proxy.obj \\r
+       $(DIROBJ)\idn_win32.obj \\r
+       $(DIROBJ)\if2ip.obj \\r
+       $(DIROBJ)\imap.obj \\r
+       $(DIROBJ)\inet_ntop.obj \\r
+       $(DIROBJ)\inet_pton.obj \\r
+       $(DIROBJ)\krb5.obj \\r
+       $(DIROBJ)\ldap.obj \\r
+       $(DIROBJ)\llist.obj \\r
+       $(DIROBJ)\md4.obj \\r
+       $(DIROBJ)\md5.obj \\r
+       $(DIROBJ)\memdebug.obj \\r
+       $(DIROBJ)\mprintf.obj \\r
+       $(DIROBJ)\multi.obj \\r
+       $(DIROBJ)\netrc.obj \\r
+       $(DIROBJ)\non-ascii.obj \\r
+       $(DIROBJ)\nonblock.obj \\r
+       $(DIROBJ)\nss.obj \\r
+       $(DIROBJ)\openldap.obj \\r
+       $(DIROBJ)\parsedate.obj \\r
+       $(DIROBJ)\pingpong.obj \\r
+       $(DIROBJ)\pipeline.obj \\r
+       $(DIROBJ)\polarssl.obj \\r
+       $(DIROBJ)\polarssl_threadlock.obj \\r
+       $(DIROBJ)\pop3.obj \\r
+       $(DIROBJ)\progress.obj \\r
+       $(DIROBJ)\rawstr.obj \\r
+       $(DIROBJ)\rtsp.obj \\r
+       $(DIROBJ)\schannel.obj \\r
+       $(DIROBJ)\security.obj \\r
+       $(DIROBJ)\select.obj \\r
+       $(DIROBJ)\sendf.obj \\r
+       $(DIROBJ)\share.obj \\r
+       $(DIROBJ)\slist.obj \\r
+       $(DIROBJ)\smb.obj \\r
+       $(DIROBJ)\smtp.obj \\r
+       $(DIROBJ)\socks.obj \\r
+       $(DIROBJ)\socks_gssapi.obj \\r
+       $(DIROBJ)\socks_sspi.obj \\r
+       $(DIROBJ)\speedcheck.obj \\r
+       $(DIROBJ)\splay.obj \\r
+       $(DIROBJ)\ssh.obj \\r
+       $(DIROBJ)\vtls.obj \\r
+       $(DIROBJ)\openssl.obj \\r
+       $(DIROBJ)\strdup.obj \\r
+       $(DIROBJ)\strequal.obj \\r
+       $(DIROBJ)\strerror.obj \\r
+       $(DIROBJ)\strtok.obj \\r
+       $(DIROBJ)\strtoofft.obj \\r
+       $(DIROBJ)\telnet.obj \\r
+       $(DIROBJ)\tftp.obj \\r
+       $(DIROBJ)\timeval.obj \\r
+       $(DIROBJ)\transfer.obj \\r
+       $(DIROBJ)\url.obj \\r
+       $(DIROBJ)\version.obj \\r
+       $(DIROBJ)\warnless.obj \\r
+       $(DIROBJ)\wildcard.obj \\r
+       $(RESOURCE)\r
+\r
+all : $(TARGET)\r
+\r
+$(TARGET): $(X_OBJS)\r
+       $(LNK) $(LFLAGS) $(X_OBJS)\r
+       -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_REL) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_DBG) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_REL) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_DBG) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_REL) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) . /y\r
+       -xcopy $(DIROBJ)\*.exp                  . /y\r
+       -xcopy $(DIROBJ)\*.pdb                  . /y\r
+\r
+$(X_OBJS): $(DIROBJ)\r
+\r
+$(DIROBJ):\r
+       @if not exist "$(DIROBJ)" mkdir $(DIROBJ)\r
+\r
+.SUFFIXES: .c .obj .res\r
+\r
+{.\}.c{$(DIROBJ)\}.obj:\r
+       $(CC) $(CFLAGS) /Fo"$@"  $<\r
+\r
+{.\vtls\}.c{$(DIROBJ)\}.obj:\r
+       $(CC) $(CFLAGS) /Fo"$@"  $<\r
+\r
+debug-dll\libcurl.res \\r
+debug-dll-ssl-dll\libcurl.res \\r
+debug-dll-zlib-dll\libcurl.res \\r
+debug-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc\r
+       rc /dDEBUGBUILD=1 /Fo $@ libcurl.rc\r
+\r
+release-dll\libcurl.res \\r
+release-dll-ssl-dll\libcurl.res \\r
+release-dll-zlib-dll\libcurl.res \\r
+release-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc\r
+       rc /dDEBUGBUILD=0 /Fo $@ libcurl.rc\r
+!ENDIF  # End of case where a config was provided.\r
diff --git a/lib/Makefile.vc14 b/lib/Makefile.vc14
new file mode 100644 (file)
index 0000000..226d27a
--- /dev/null
@@ -0,0 +1,677 @@
+#***************************************************************************\r
+#                                  _   _ ____  _\r
+#  Project                     ___| | | |  _ \| |\r
+#                             / __| | | | |_) | |\r
+#                            | (__| |_| |  _ <| |___\r
+#                             \___|\___/|_| \_\_____|\r
+#\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+#\r
+# This software is licensed as described in the file COPYING, which\r
+# you should have received as part of this distribution. The terms\r
+# are also available at http://curl.haxx.se/docs/copyright.html.\r
+#\r
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
+# copies of the Software, and permit persons to whom the Software is\r
+# furnished to do so, under the terms of the COPYING file.\r
+#\r
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
+# KIND, either express or implied.\r
+#\r
+#***************************************************************************\r
+\r
+# All files in the Makefile.vc* series are generated automatically from the\r
+# one made for MSVC version 6. Alas, if you want to do changes to any of the\r
+# files and send back to the project, edit the version six, make your diff and\r
+# mail curl-library.\r
+\r
+###########################################################################\r
+#\r
+# Makefile for building libcurl with MSVC14\r
+#\r
+# Usage: see usage message below\r
+#        Should be invoked from \lib directory\r
+#        Edit the paths and desired library name\r
+#        SSL path is only required if you intend compiling\r
+#        with SSL.\r
+#\r
+# This make file leaves the result either a .lib or .dll file\r
+# in the \lib directory. It should be called from the \lib\r
+# directory.\r
+#\r
+# An option would have been to allow the source directory to\r
+# be specified, but I saw no requirement.\r
+#\r
+# Another option would have been to leave the .lib and .dll\r
+# files in the "cfg" directory, but then the make file\r
+# in \src would need to be changed.\r
+#\r
+##############################################################\r
+\r
+# ----------------------------------------------\r
+# Verify that current subdir is libcurl's 'lib'\r
+# ----------------------------------------------\r
+\r
+!IF ! EXIST(.\curl_addrinfo.c)\r
+!  MESSAGE Can not process this makefile from outside of libcurl's 'lib' subdirectory.\r
+!  MESSAGE Change to libcurl's 'lib' subdirectory, and try again.\r
+!  ERROR   See previous message.\r
+!ENDIF\r
+\r
+# ------------------------------------------------\r
+# Makefile.msvc.names provides libcurl file names\r
+# ------------------------------------------------\r
+\r
+!INCLUDE ..\winbuild\Makefile.msvc.names\r
+\r
+!IFNDEF OPENSSL_PATH\r
+OPENSSL_PATH   = ../../openssl-1.0.2a\r
+!ENDIF\r
+\r
+!IFNDEF LIBSSH2_PATH\r
+LIBSSH2_PATH   = ../../libssh2-1.5.0\r
+!ENDIF\r
+\r
+!IFNDEF ZLIB_PATH\r
+ZLIB_PATH  = ../../zlib-1.2.8\r
+!ENDIF\r
+\r
+!IFNDEF MACHINE\r
+MACHINE  = X86\r
+!ENDIF\r
+\r
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication\r
+# without an openssl installation and offers the ability to authenticate\r
+# using the "current logged in user". Since at least with MSVC14 the sspi.h\r
+# header is broken it is either required to install the Windows SDK,\r
+# or to fix sspi.h with adding this define at the beginning of sspi.h:\r
+# #define FreeCredentialHandle FreeCredentialsHandle\r
+#\r
+# If, for some reason the Windows SDK is installed but not installed\r
+# in the default location, you can specify WINDOWS_SDK_PATH.\r
+# It can be downloaded from:\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
+\r
+# WINDOWS_SSPI = 1\r
+\r
+!IFDEF WINDOWS_SSPI\r
+!IFNDEF WINDOWS_SDK_PATH\r
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"\r
+!ENDIF\r
+!ENDIF\r
+\r
+#############################################################\r
+## Nothing more to do below this line!\r
+\r
+CCNODBG      = cl.exe /O2 /DNDEBUG\r
+CCDEBUG      = cl.exe /Od /Gm /Zi /D_DEBUG /RTC1\r
+CFLAGSSSL    = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"\r
+CFLAGSWINSSL = /DUSE_SCHANNEL\r
+CFLAGSSSH2   = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"\r
+CFLAGSZLIB   = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
+CFLAGS       = /I. /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /D_BIND_TO_CURRENT_VCLIBS_VERSION=1\r
+CFLAGSLIB    = /DCURL_STATICLIB\r
+LNKDLL       = link.exe /DLL\r
+LNKLIB       = link.exe /lib\r
+LFLAGS       = /nologo /machine:$(MACHINE)\r
+SSLLIBS      = libeay32.lib ssleay32.lib\r
+ZLIBLIBSDLL  = zdll.lib\r
+ZLIBLIBS     = zlib.lib\r
+WINLIBS      = ws2_32.lib wldap32.lib advapi32.lib\r
+CFLAGS       = $(CFLAGS)\r
+\r
+CFGSET       = FALSE\r
+\r
+!IFDEF WINDOWS_SSPI\r
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include\r
+!ENDIF\r
+\r
+!IFDEF USE_IPV6\r
+CFLAGS = $(CFLAGS) /DUSE_IPV6\r
+!ENDIF\r
+\r
+!IFDEF USE_IDN\r
+CFLAGS = $(CFLAGS) /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES\r
+!ENDIF\r
+\r
+##############################################################\r
+# Runtime library configuration\r
+\r
+RTLIB   = /MD\r
+RTLIBD  = /MDd\r
+\r
+!IF "$(RTLIBCFG)" == "static"\r
+RTLIB  = /MT\r
+RTLIBD = /MTd\r
+!ENDIF\r
+\r
+\r
+######################\r
+# release\r
+\r
+!IF "$(CFG)" == "release"\r
+TARGET = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC     = $(CCNODBG) $(RTLIB) $(CFLAGSLIB)\r
+CFGSET = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl\r
+\r
+!IF "$(CFG)" == "release-ssl"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-winssl\r
+\r
+!IF "$(CFG)" == "release-winssl"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-zlib\r
+\r
+!IF "$(CFG)" == "release-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-winssl-zlib\r
+\r
+!IF "$(CFG)" == "release-winssl-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-ssh2-zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-ssh2-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-dll\r
+\r
+!IF "$(CFG)" == "release-ssl-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-dll\r
+\r
+!IF "$(CFG)" == "release-dll"\r
+TARGET = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKDLL) $(WINLIBS) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC     = $(CCNODBG) $(RTLIB)\r
+CFGSET = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# release-dll-ssl-dll\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# release-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# release-dll-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug\r
+\r
+!IF "$(CFG)" == "debug"\r
+TARGET = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC     = $(CCDEBUG) $(RTLIBD) $(CFLAGSLIB)\r
+CFGSET = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl\r
+\r
+!IF "$(CFG)" == "debug-ssl"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-zlib\r
+\r
+!IF "$(CFG)" == "debug-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-zlib\r
+\r
+!IF "$(CFG)" == "debug-ssl-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-ssh2-zlib\r
+\r
+!IF "$(CFG)" == "debug-ssl-ssh2-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-dll\r
+\r
+!IF "$(CFG)" == "debug-ssl-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = /LIBPATH:$(OPENSSL_PATH)\out32dll\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll\r
+\r
+!IF "$(CFG)" == "debug-dll"\r
+TARGET = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC     = $(CCDEBUG) $(RTLIBD)\r
+CFGSET = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll-ssl-dll\r
+\r
+!IF "$(CFG)" == "debug-dll-ssl-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-dll-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+#######################\r
+# Usage\r
+#\r
+!IF "$(CFGSET)" == "FALSE" && "$(CFG)" != ""\r
+!MESSAGE Usage: nmake /f makefile.vc14 CFG=<config> <target>\r
+!MESSAGE where <config> is one of:\r
+!MESSAGE   release                      - release static library\r
+!MESSAGE   release-ssl                  - release static library with ssl\r
+!MESSAGE   release-zlib                 - release static library with zlib\r
+!MESSAGE   release-ssl-zlib             - release static library with ssl and zlib\r
+!MESSAGE   release-ssl-ssh2-zlib        - release static library with ssl, ssh2 and zlib\r
+!MESSAGE   release-ssl-dll              - release static library with dynamic ssl\r
+!MESSAGE   release-zlib-dll             - release static library with dynamic zlib\r
+!MESSAGE   release-ssl-dll-zlib-dll     - release static library with dynamic ssl and dynamic zlib\r
+!MESSAGE   release-dll                  - release dynamic library\r
+!MESSAGE   release-dll-ssl-dll          - release dynamic library with dynamic ssl\r
+!MESSAGE   release-dll-zlib-dll         - release dynamic library with dynamic zlib\r
+!MESSAGE   release-dll-ssl-dll-zlib-dll - release dynamic library with dynamic ssl and dynamic zlib\r
+!MESSAGE   debug                        - debug static library\r
+!MESSAGE   debug-ssl                    - debug static library with ssl\r
+!MESSAGE   debug-zlib                   - debug static library with zlib\r
+!MESSAGE   debug-ssl-zlib               - debug static library with ssl and zlib\r
+!MESSAGE   debug-ssl-ssh2-zlib          - debug static library with ssl, ssh2 and zlib\r
+!MESSAGE   debug-ssl-dll                - debug static library with dynamic ssl\r
+!MESSAGE   debug-zlib-dll               - debug static library with dynamic zlib\r
+!MESSAGE   debug-ssl-dll-zlib-dll       - debug static library with dynamic ssl and dynamic zlib\r
+!MESSAGE   debug-dll                    - debug dynamic library\r
+!MESSAGE   debug-dll-ssl-dll            - debug dynamic library with dynamic ssl\r
+!MESSAGE   debug-dll-zlib-dll           - debug dynamic library with dynamic zlib1\r
+!MESSAGE   debug-dll-ssl-dll-zlib-dll   - debug dynamic library with dynamic ssl and dynamic zlib\r
+!MESSAGE <target> can be left blank in which case all is assumed\r
+!ERROR please choose a valid configuration "$(CFG)"\r
+!ENDIF\r
+\r
+#######################\r
+# Only the clean target can be used if a config was not provided.\r
+#\r
+!IF "$(CFGSET)" == "FALSE"\r
+clean:\r
+       @-erase /s *.dll 2> NUL\r
+       @-erase /s *.exp 2> NUL\r
+       @-erase /s *.idb 2> NUL\r
+       @-erase /s *.lib 2> NUL\r
+       @-erase /s *.obj 2> NUL\r
+       @-erase /s *.pch 2> NUL\r
+       @-erase /s *.pdb 2> NUL\r
+       @-erase /s *.res 2> NUL\r
+!ELSE\r
+# A config was provided, so the library can be built.\r
+#\r
+X_OBJS= \\r
+       $(DIROBJ)\amigaos.obj \\r
+       $(DIROBJ)\asyn-ares.obj \\r
+       $(DIROBJ)\asyn-thread.obj \\r
+       $(DIROBJ)\axtls.obj \\r
+       $(DIROBJ)\base64.obj \\r
+       $(DIROBJ)\conncache.obj \\r
+       $(DIROBJ)\connect.obj \\r
+       $(DIROBJ)\content_encoding.obj \\r
+       $(DIROBJ)\cookie.obj \\r
+       $(DIROBJ)\curl_addrinfo.obj \\r
+       $(DIROBJ)\curl_des.obj \\r
+       $(DIROBJ)\curl_endian.obj \\r
+       $(DIROBJ)\curl_fnmatch.obj \\r
+       $(DIROBJ)\curl_gethostname.obj \\r
+       $(DIROBJ)\curl_gssapi.obj \\r
+       $(DIROBJ)\curl_memrchr.obj \\r
+       $(DIROBJ)\curl_multibyte.obj \\r
+       $(DIROBJ)\curl_ntlm.obj \\r
+       $(DIROBJ)\curl_ntlm_core.obj \\r
+       $(DIROBJ)\curl_ntlm_msgs.obj \\r
+       $(DIROBJ)\curl_ntlm_wb.obj \\r
+       $(DIROBJ)\curl_rtmp.obj \\r
+       $(DIROBJ)\curl_sasl.obj \\r
+       $(DIROBJ)\curl_sasl_gssapi.obj \\r
+       $(DIROBJ)\curl_sasl_sspi.obj \\r
+       $(DIROBJ)\curl_sspi.obj \\r
+       $(DIROBJ)\curl_threads.obj \\r
+       $(DIROBJ)\cyassl.obj \\r
+       $(DIROBJ)\darwinssl.obj \\r
+       $(DIROBJ)\dict.obj \\r
+       $(DIROBJ)\dotdot.obj \\r
+       $(DIROBJ)\easy.obj \\r
+       $(DIROBJ)\escape.obj \\r
+       $(DIROBJ)\file.obj \\r
+       $(DIROBJ)\fileinfo.obj \\r
+       $(DIROBJ)\formdata.obj \\r
+       $(DIROBJ)\ftp.obj \\r
+       $(DIROBJ)\ftplistparser.obj \\r
+       $(DIROBJ)\getenv.obj \\r
+       $(DIROBJ)\getinfo.obj \\r
+       $(DIROBJ)\gopher.obj \\r
+       $(DIROBJ)\gtls.obj \\r
+       $(DIROBJ)\hash.obj \\r
+       $(DIROBJ)\hmac.obj \\r
+       $(DIROBJ)\hostasyn.obj \\r
+       $(DIROBJ)\hostcheck.obj \\r
+       $(DIROBJ)\hostip.obj \\r
+       $(DIROBJ)\hostip4.obj \\r
+       $(DIROBJ)\hostip6.obj \\r
+       $(DIROBJ)\hostsyn.obj \\r
+       $(DIROBJ)\http.obj \\r
+       $(DIROBJ)\http_chunks.obj \\r
+       $(DIROBJ)\http_digest.obj \\r
+       $(DIROBJ)\http_negotiate.obj \\r
+       $(DIROBJ)\http_negotiate_sspi.obj \\r
+       $(DIROBJ)\http_proxy.obj \\r
+       $(DIROBJ)\idn_win32.obj \\r
+       $(DIROBJ)\if2ip.obj \\r
+       $(DIROBJ)\imap.obj \\r
+       $(DIROBJ)\inet_ntop.obj \\r
+       $(DIROBJ)\inet_pton.obj \\r
+       $(DIROBJ)\krb5.obj \\r
+       $(DIROBJ)\ldap.obj \\r
+       $(DIROBJ)\llist.obj \\r
+       $(DIROBJ)\md4.obj \\r
+       $(DIROBJ)\md5.obj \\r
+       $(DIROBJ)\memdebug.obj \\r
+       $(DIROBJ)\mprintf.obj \\r
+       $(DIROBJ)\multi.obj \\r
+       $(DIROBJ)\netrc.obj \\r
+       $(DIROBJ)\non-ascii.obj \\r
+       $(DIROBJ)\nonblock.obj \\r
+       $(DIROBJ)\nss.obj \\r
+       $(DIROBJ)\openldap.obj \\r
+       $(DIROBJ)\parsedate.obj \\r
+       $(DIROBJ)\pingpong.obj \\r
+       $(DIROBJ)\pipeline.obj \\r
+       $(DIROBJ)\polarssl.obj \\r
+       $(DIROBJ)\polarssl_threadlock.obj \\r
+       $(DIROBJ)\pop3.obj \\r
+       $(DIROBJ)\progress.obj \\r
+       $(DIROBJ)\rawstr.obj \\r
+       $(DIROBJ)\rtsp.obj \\r
+       $(DIROBJ)\schannel.obj \\r
+       $(DIROBJ)\security.obj \\r
+       $(DIROBJ)\select.obj \\r
+       $(DIROBJ)\sendf.obj \\r
+       $(DIROBJ)\share.obj \\r
+       $(DIROBJ)\slist.obj \\r
+       $(DIROBJ)\smb.obj \\r
+       $(DIROBJ)\smtp.obj \\r
+       $(DIROBJ)\socks.obj \\r
+       $(DIROBJ)\socks_gssapi.obj \\r
+       $(DIROBJ)\socks_sspi.obj \\r
+       $(DIROBJ)\speedcheck.obj \\r
+       $(DIROBJ)\splay.obj \\r
+       $(DIROBJ)\ssh.obj \\r
+       $(DIROBJ)\vtls.obj \\r
+       $(DIROBJ)\openssl.obj \\r
+       $(DIROBJ)\strdup.obj \\r
+       $(DIROBJ)\strequal.obj \\r
+       $(DIROBJ)\strerror.obj \\r
+       $(DIROBJ)\strtok.obj \\r
+       $(DIROBJ)\strtoofft.obj \\r
+       $(DIROBJ)\telnet.obj \\r
+       $(DIROBJ)\tftp.obj \\r
+       $(DIROBJ)\timeval.obj \\r
+       $(DIROBJ)\transfer.obj \\r
+       $(DIROBJ)\url.obj \\r
+       $(DIROBJ)\version.obj \\r
+       $(DIROBJ)\warnless.obj \\r
+       $(DIROBJ)\wildcard.obj \\r
+       $(RESOURCE)\r
+\r
+all : $(TARGET)\r
+\r
+$(TARGET): $(X_OBJS)\r
+       $(LNK) $(LFLAGS) $(X_OBJS)\r
+       -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_REL) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_DBG) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_REL) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_DBG) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_REL) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) . /y\r
+       -xcopy $(DIROBJ)\*.exp                  . /y\r
+       -xcopy $(DIROBJ)\*.pdb                  . /y\r
+\r
+$(X_OBJS): $(DIROBJ)\r
+\r
+$(DIROBJ):\r
+       @if not exist "$(DIROBJ)" mkdir $(DIROBJ)\r
+\r
+.SUFFIXES: .c .obj .res\r
+\r
+{.\}.c{$(DIROBJ)\}.obj:\r
+       $(CC) $(CFLAGS) /Fo"$@"  $<\r
+\r
+{.\vtls\}.c{$(DIROBJ)\}.obj:\r
+       $(CC) $(CFLAGS) /Fo"$@"  $<\r
+\r
+debug-dll\libcurl.res \\r
+debug-dll-ssl-dll\libcurl.res \\r
+debug-dll-zlib-dll\libcurl.res \\r
+debug-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc\r
+       rc /dDEBUGBUILD=1 /Fo $@ libcurl.rc\r
+\r
+release-dll\libcurl.res \\r
+release-dll-ssl-dll\libcurl.res \\r
+release-dll-zlib-dll\libcurl.res \\r
+release-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc\r
+       rc /dDEBUGBUILD=0 /Fo $@ libcurl.rc\r
+!ENDIF  # End of case where a config was provided.\r
index ee20ebe..c34c3db 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
 !INCLUDE ..\winbuild\Makefile.msvc.names\r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH   = ../../openssl-0.9.8zc\r
+OPENSSL_PATH   = ../../openssl-1.0.2a\r
 !ENDIF\r
 \r
 !IFNDEF LIBSSH2_PATH\r
-LIBSSH2_PATH   = ../../libssh2-1.4.3\r
+LIBSSH2_PATH   = ../../libssh2-1.5.0\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
@@ -90,7 +90,7 @@ MACHINE  = X86
 # If, for some reason the Windows SDK is installed but not installed\r
 # in the default location, you can specify WINDOWS_SDK_PATH.\r
 # It can be downloaded from:\r
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
 \r
 # WINDOWS_SSPI = 1\r
 \r
@@ -105,7 +105,7 @@ WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
 \r
 CCNODBG      = cl.exe /O2 /DNDEBUG\r
 CCDEBUG      = cl.exe /Od /Gm /Zi /D_DEBUG /GZ\r
-CFLAGSSSL    = /DUSE_SSLEAY /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"\r
+CFLAGSSSL    = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"\r
 CFLAGSWINSSL = /DUSE_SCHANNEL\r
 CFLAGSSSH2   = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"\r
 CFLAGSZLIB   = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
@@ -427,7 +427,7 @@ CFGSET   = TRUE
 TARGET = $(LIBCURL_DYN_LIB_DBG)\r
 DIROBJ = $(CFG)\r
 LNK    = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
-CC     = $(CCDEBUG) $(RTLIBD) \r
+CC     = $(CCDEBUG) $(RTLIBD)\r
 CFGSET = TRUE\r
 RESOURCE = $(DIROBJ)\libcurl.res\r
 !ENDIF\r
@@ -528,13 +528,12 @@ X_OBJS= \
        $(DIROBJ)\asyn-thread.obj \\r
        $(DIROBJ)\axtls.obj \\r
        $(DIROBJ)\base64.obj \\r
-       $(DIROBJ)\bundles.obj \\r
        $(DIROBJ)\conncache.obj \\r
        $(DIROBJ)\connect.obj \\r
        $(DIROBJ)\content_encoding.obj \\r
        $(DIROBJ)\cookie.obj \\r
        $(DIROBJ)\curl_addrinfo.obj \\r
-       $(DIROBJ)\curl_darwinssl.obj \\r
+       $(DIROBJ)\curl_des.obj \\r
        $(DIROBJ)\curl_endian.obj \\r
        $(DIROBJ)\curl_fnmatch.obj \\r
        $(DIROBJ)\curl_gethostname.obj \\r
@@ -549,10 +548,10 @@ X_OBJS= \
        $(DIROBJ)\curl_sasl.obj \\r
        $(DIROBJ)\curl_sasl_gssapi.obj \\r
        $(DIROBJ)\curl_sasl_sspi.obj \\r
-       $(DIROBJ)\curl_schannel.obj \\r
        $(DIROBJ)\curl_sspi.obj \\r
        $(DIROBJ)\curl_threads.obj \\r
        $(DIROBJ)\cyassl.obj \\r
+       $(DIROBJ)\darwinssl.obj \\r
        $(DIROBJ)\dict.obj \\r
        $(DIROBJ)\dotdot.obj \\r
        $(DIROBJ)\easy.obj \\r
@@ -607,6 +606,7 @@ X_OBJS= \
        $(DIROBJ)\progress.obj \\r
        $(DIROBJ)\rawstr.obj \\r
        $(DIROBJ)\rtsp.obj \\r
+       $(DIROBJ)\schannel.obj \\r
        $(DIROBJ)\security.obj \\r
        $(DIROBJ)\select.obj \\r
        $(DIROBJ)\sendf.obj \\r
diff --git a/lib/Makefile.vc7 b/lib/Makefile.vc7
new file mode 100644 (file)
index 0000000..97c4773
--- /dev/null
@@ -0,0 +1,677 @@
+#***************************************************************************\r
+#                                  _   _ ____  _\r
+#  Project                     ___| | | |  _ \| |\r
+#                             / __| | | | |_) | |\r
+#                            | (__| |_| |  _ <| |___\r
+#                             \___|\___/|_| \_\_____|\r
+#\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+#\r
+# This software is licensed as described in the file COPYING, which\r
+# you should have received as part of this distribution. The terms\r
+# are also available at http://curl.haxx.se/docs/copyright.html.\r
+#\r
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
+# copies of the Software, and permit persons to whom the Software is\r
+# furnished to do so, under the terms of the COPYING file.\r
+#\r
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
+# KIND, either express or implied.\r
+#\r
+#***************************************************************************\r
+\r
+# All files in the Makefile.vc* series are generated automatically from the\r
+# one made for MSVC version 6. Alas, if you want to do changes to any of the\r
+# files and send back to the project, edit the version six, make your diff and\r
+# mail curl-library.\r
+\r
+###########################################################################\r
+#\r
+# Makefile for building libcurl with MSVC7\r
+#\r
+# Usage: see usage message below\r
+#        Should be invoked from \lib directory\r
+#        Edit the paths and desired library name\r
+#        SSL path is only required if you intend compiling\r
+#        with SSL.\r
+#\r
+# This make file leaves the result either a .lib or .dll file\r
+# in the \lib directory. It should be called from the \lib\r
+# directory.\r
+#\r
+# An option would have been to allow the source directory to\r
+# be specified, but I saw no requirement.\r
+#\r
+# Another option would have been to leave the .lib and .dll\r
+# files in the "cfg" directory, but then the make file\r
+# in \src would need to be changed.\r
+#\r
+##############################################################\r
+\r
+# ----------------------------------------------\r
+# Verify that current subdir is libcurl's 'lib'\r
+# ----------------------------------------------\r
+\r
+!IF ! EXIST(.\curl_addrinfo.c)\r
+!  MESSAGE Can not process this makefile from outside of libcurl's 'lib' subdirectory.\r
+!  MESSAGE Change to libcurl's 'lib' subdirectory, and try again.\r
+!  ERROR   See previous message.\r
+!ENDIF\r
+\r
+# ------------------------------------------------\r
+# Makefile.msvc.names provides libcurl file names\r
+# ------------------------------------------------\r
+\r
+!INCLUDE ..\winbuild\Makefile.msvc.names\r
+\r
+!IFNDEF OPENSSL_PATH\r
+OPENSSL_PATH   = ../../openssl-1.0.2a\r
+!ENDIF\r
+\r
+!IFNDEF LIBSSH2_PATH\r
+LIBSSH2_PATH   = ../../libssh2-1.5.0\r
+!ENDIF\r
+\r
+!IFNDEF ZLIB_PATH\r
+ZLIB_PATH  = ../../zlib-1.2.8\r
+!ENDIF\r
+\r
+!IFNDEF MACHINE\r
+MACHINE  = X86\r
+!ENDIF\r
+\r
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication\r
+# without an openssl installation and offers the ability to authenticate\r
+# using the "current logged in user". Since at least with MSVC7 the sspi.h\r
+# header is broken it is either required to install the Windows SDK,\r
+# or to fix sspi.h with adding this define at the beginning of sspi.h:\r
+# #define FreeCredentialHandle FreeCredentialsHandle\r
+#\r
+# If, for some reason the Windows SDK is installed but not installed\r
+# in the default location, you can specify WINDOWS_SDK_PATH.\r
+# It can be downloaded from:\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
+\r
+# WINDOWS_SSPI = 1\r
+\r
+!IFDEF WINDOWS_SSPI\r
+!IFNDEF WINDOWS_SDK_PATH\r
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"\r
+!ENDIF\r
+!ENDIF\r
+\r
+#############################################################\r
+## Nothing more to do below this line!\r
+\r
+CCNODBG      = cl.exe /O2 /DNDEBUG\r
+CCDEBUG      = cl.exe /Od /Gm /Zi /D_DEBUG /GZ\r
+CFLAGSSSL    = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"\r
+CFLAGSWINSSL = /DUSE_SCHANNEL\r
+CFLAGSSSH2   = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"\r
+CFLAGSZLIB   = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
+CFLAGS       = /I. /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL /D_BIND_TO_CURRENT_VCLIBS_VERSION=1\r
+CFLAGSLIB    = /DCURL_STATICLIB\r
+LNKDLL       = link.exe /DLL\r
+LNKLIB       = link.exe /lib\r
+LFLAGS       = /nologo /machine:$(MACHINE)\r
+SSLLIBS      = libeay32.lib ssleay32.lib\r
+ZLIBLIBSDLL  = zdll.lib\r
+ZLIBLIBS     = zlib.lib\r
+WINLIBS      = ws2_32.lib wldap32.lib advapi32.lib\r
+CFLAGS       = $(CFLAGS)\r
+\r
+CFGSET       = FALSE\r
+\r
+!IFDEF WINDOWS_SSPI\r
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include\r
+!ENDIF\r
+\r
+!IFDEF USE_IPV6\r
+CFLAGS = $(CFLAGS) /DUSE_IPV6\r
+!ENDIF\r
+\r
+!IFDEF USE_IDN\r
+CFLAGS = $(CFLAGS) /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES\r
+!ENDIF\r
+\r
+##############################################################\r
+# Runtime library configuration\r
+\r
+RTLIB   = /MD\r
+RTLIBD  = /MDd\r
+\r
+!IF "$(RTLIBCFG)" == "static"\r
+RTLIB  = /MT\r
+RTLIBD = /MTd\r
+!ENDIF\r
+\r
+\r
+######################\r
+# release\r
+\r
+!IF "$(CFG)" == "release"\r
+TARGET = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC     = $(CCNODBG) $(RTLIB) $(CFLAGSLIB)\r
+CFGSET = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl\r
+\r
+!IF "$(CFG)" == "release-ssl"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-winssl\r
+\r
+!IF "$(CFG)" == "release-winssl"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-zlib\r
+\r
+!IF "$(CFG)" == "release-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-winssl-zlib\r
+\r
+!IF "$(CFG)" == "release-winssl-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-ssh2-zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-ssh2-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-dll\r
+\r
+!IF "$(CFG)" == "release-ssl-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# release-dll\r
+\r
+!IF "$(CFG)" == "release-dll"\r
+TARGET = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKDLL) $(WINLIBS) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC     = $(CCNODBG) $(RTLIB)\r
+CFGSET = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# release-dll-ssl-dll\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# release-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# release-dll-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_REL)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug\r
+\r
+!IF "$(CFG)" == "debug"\r
+TARGET = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC     = $(CCDEBUG) $(RTLIBD) $(CFLAGSLIB)\r
+CFGSET = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl\r
+\r
+!IF "$(CFG)" == "debug-ssl"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-zlib\r
+\r
+!IF "$(CFG)" == "debug-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-zlib\r
+\r
+!IF "$(CFG)" == "debug-ssl-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-ssh2-zlib\r
+\r
+!IF "$(CFG)" == "debug-ssl-ssh2-zlib"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32"\r
+LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-dll\r
+\r
+!IF "$(CFG)" == "debug-ssl-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = /LIBPATH:$(OPENSSL_PATH)\out32dll\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_STA_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll\r
+\r
+!IF "$(CFG)" == "debug-dll"\r
+TARGET = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ = $(CFG)\r
+LNK    = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC     = $(CCDEBUG) $(RTLIBD)\r
+CFGSET = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll-ssl-dll\r
+\r
+!IF "$(CFG)" == "debug-dll-ssl-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(LFLAGSSSL) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(ZLIBLIBSDLL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+######################\r
+# debug-dll-ssl-dll-zlib-dll\r
+\r
+!IF "$(CFG)" == "debug-dll-ssl-dll-zlib-dll"\r
+TARGET   = $(LIBCURL_DYN_LIB_DBG)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32dll"\r
+LNK      = $(LNKDLL) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBSDLL) $(LFLAGSSSL) $(LFLAGSZLIB) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
+CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB)\r
+CFGSET   = TRUE\r
+RESOURCE = $(DIROBJ)\libcurl.res\r
+!ENDIF\r
+\r
+#######################\r
+# Usage\r
+#\r
+!IF "$(CFGSET)" == "FALSE" && "$(CFG)" != ""\r
+!MESSAGE Usage: nmake /f makefile.vc6 CFG=<config> <target>\r
+!MESSAGE where <config> is one of:\r
+!MESSAGE   release                      - release static library\r
+!MESSAGE   release-ssl                  - release static library with ssl\r
+!MESSAGE   release-zlib                 - release static library with zlib\r
+!MESSAGE   release-ssl-zlib             - release static library with ssl and zlib\r
+!MESSAGE   release-ssl-ssh2-zlib        - release static library with ssl, ssh2 and zlib\r
+!MESSAGE   release-ssl-dll              - release static library with dynamic ssl\r
+!MESSAGE   release-zlib-dll             - release static library with dynamic zlib\r
+!MESSAGE   release-ssl-dll-zlib-dll     - release static library with dynamic ssl and dynamic zlib\r
+!MESSAGE   release-dll                  - release dynamic library\r
+!MESSAGE   release-dll-ssl-dll          - release dynamic library with dynamic ssl\r
+!MESSAGE   release-dll-zlib-dll         - release dynamic library with dynamic zlib\r
+!MESSAGE   release-dll-ssl-dll-zlib-dll - release dynamic library with dynamic ssl and dynamic zlib\r
+!MESSAGE   debug                        - debug static library\r
+!MESSAGE   debug-ssl                    - debug static library with ssl\r
+!MESSAGE   debug-zlib                   - debug static library with zlib\r
+!MESSAGE   debug-ssl-zlib               - debug static library with ssl and zlib\r
+!MESSAGE   debug-ssl-ssh2-zlib          - debug static library with ssl, ssh2 and zlib\r
+!MESSAGE   debug-ssl-dll                - debug static library with dynamic ssl\r
+!MESSAGE   debug-zlib-dll               - debug static library with dynamic zlib\r
+!MESSAGE   debug-ssl-dll-zlib-dll       - debug static library with dynamic ssl and dynamic zlib\r
+!MESSAGE   debug-dll                    - debug dynamic library\r
+!MESSAGE   debug-dll-ssl-dll            - debug dynamic library with dynamic ssl\r
+!MESSAGE   debug-dll-zlib-dll           - debug dynamic library with dynamic zlib1\r
+!MESSAGE   debug-dll-ssl-dll-zlib-dll   - debug dynamic library with dynamic ssl and dynamic zlib\r
+!MESSAGE <target> can be left blank in which case all is assumed\r
+!ERROR please choose a valid configuration "$(CFG)"\r
+!ENDIF\r
+\r
+#######################\r
+# Only the clean target can be used if a config was not provided.\r
+#\r
+!IF "$(CFGSET)" == "FALSE"\r
+clean:\r
+       @-erase /s *.dll 2> NUL\r
+       @-erase /s *.exp 2> NUL\r
+       @-erase /s *.idb 2> NUL\r
+       @-erase /s *.lib 2> NUL\r
+       @-erase /s *.obj 2> NUL\r
+       @-erase /s *.pch 2> NUL\r
+       @-erase /s *.pdb 2> NUL\r
+       @-erase /s *.res 2> NUL\r
+!ELSE\r
+# A config was provided, so the library can be built.\r
+#\r
+X_OBJS= \\r
+       $(DIROBJ)\amigaos.obj \\r
+       $(DIROBJ)\asyn-ares.obj \\r
+       $(DIROBJ)\asyn-thread.obj \\r
+       $(DIROBJ)\axtls.obj \\r
+       $(DIROBJ)\base64.obj \\r
+       $(DIROBJ)\conncache.obj \\r
+       $(DIROBJ)\connect.obj \\r
+       $(DIROBJ)\content_encoding.obj \\r
+       $(DIROBJ)\cookie.obj \\r
+       $(DIROBJ)\curl_addrinfo.obj \\r
+       $(DIROBJ)\curl_des.obj \\r
+       $(DIROBJ)\curl_endian.obj \\r
+       $(DIROBJ)\curl_fnmatch.obj \\r
+       $(DIROBJ)\curl_gethostname.obj \\r
+       $(DIROBJ)\curl_gssapi.obj \\r
+       $(DIROBJ)\curl_memrchr.obj \\r
+       $(DIROBJ)\curl_multibyte.obj \\r
+       $(DIROBJ)\curl_ntlm.obj \\r
+       $(DIROBJ)\curl_ntlm_core.obj \\r
+       $(DIROBJ)\curl_ntlm_msgs.obj \\r
+       $(DIROBJ)\curl_ntlm_wb.obj \\r
+       $(DIROBJ)\curl_rtmp.obj \\r
+       $(DIROBJ)\curl_sasl.obj \\r
+       $(DIROBJ)\curl_sasl_gssapi.obj \\r
+       $(DIROBJ)\curl_sasl_sspi.obj \\r
+       $(DIROBJ)\curl_sspi.obj \\r
+       $(DIROBJ)\curl_threads.obj \\r
+       $(DIROBJ)\cyassl.obj \\r
+       $(DIROBJ)\darwinssl.obj \\r
+       $(DIROBJ)\dict.obj \\r
+       $(DIROBJ)\dotdot.obj \\r
+       $(DIROBJ)\easy.obj \\r
+       $(DIROBJ)\escape.obj \\r
+       $(DIROBJ)\file.obj \\r
+       $(DIROBJ)\fileinfo.obj \\r
+       $(DIROBJ)\formdata.obj \\r
+       $(DIROBJ)\ftp.obj \\r
+       $(DIROBJ)\ftplistparser.obj \\r
+       $(DIROBJ)\getenv.obj \\r
+       $(DIROBJ)\getinfo.obj \\r
+       $(DIROBJ)\gopher.obj \\r
+       $(DIROBJ)\gtls.obj \\r
+       $(DIROBJ)\hash.obj \\r
+       $(DIROBJ)\hmac.obj \\r
+       $(DIROBJ)\hostasyn.obj \\r
+       $(DIROBJ)\hostcheck.obj \\r
+       $(DIROBJ)\hostip.obj \\r
+       $(DIROBJ)\hostip4.obj \\r
+       $(DIROBJ)\hostip6.obj \\r
+       $(DIROBJ)\hostsyn.obj \\r
+       $(DIROBJ)\http.obj \\r
+       $(DIROBJ)\http_chunks.obj \\r
+       $(DIROBJ)\http_digest.obj \\r
+       $(DIROBJ)\http_negotiate.obj \\r
+       $(DIROBJ)\http_negotiate_sspi.obj \\r
+       $(DIROBJ)\http_proxy.obj \\r
+       $(DIROBJ)\idn_win32.obj \\r
+       $(DIROBJ)\if2ip.obj \\r
+       $(DIROBJ)\imap.obj \\r
+       $(DIROBJ)\inet_ntop.obj \\r
+       $(DIROBJ)\inet_pton.obj \\r
+       $(DIROBJ)\krb5.obj \\r
+       $(DIROBJ)\ldap.obj \\r
+       $(DIROBJ)\llist.obj \\r
+       $(DIROBJ)\md4.obj \\r
+       $(DIROBJ)\md5.obj \\r
+       $(DIROBJ)\memdebug.obj \\r
+       $(DIROBJ)\mprintf.obj \\r
+       $(DIROBJ)\multi.obj \\r
+       $(DIROBJ)\netrc.obj \\r
+       $(DIROBJ)\non-ascii.obj \\r
+       $(DIROBJ)\nonblock.obj \\r
+       $(DIROBJ)\nss.obj \\r
+       $(DIROBJ)\openldap.obj \\r
+       $(DIROBJ)\parsedate.obj \\r
+       $(DIROBJ)\pingpong.obj \\r
+       $(DIROBJ)\pipeline.obj \\r
+       $(DIROBJ)\polarssl.obj \\r
+       $(DIROBJ)\polarssl_threadlock.obj \\r
+       $(DIROBJ)\pop3.obj \\r
+       $(DIROBJ)\progress.obj \\r
+       $(DIROBJ)\rawstr.obj \\r
+       $(DIROBJ)\rtsp.obj \\r
+       $(DIROBJ)\schannel.obj \\r
+       $(DIROBJ)\security.obj \\r
+       $(DIROBJ)\select.obj \\r
+       $(DIROBJ)\sendf.obj \\r
+       $(DIROBJ)\share.obj \\r
+       $(DIROBJ)\slist.obj \\r
+       $(DIROBJ)\smb.obj \\r
+       $(DIROBJ)\smtp.obj \\r
+       $(DIROBJ)\socks.obj \\r
+       $(DIROBJ)\socks_gssapi.obj \\r
+       $(DIROBJ)\socks_sspi.obj \\r
+       $(DIROBJ)\speedcheck.obj \\r
+       $(DIROBJ)\splay.obj \\r
+       $(DIROBJ)\ssh.obj \\r
+       $(DIROBJ)\vtls.obj \\r
+       $(DIROBJ)\openssl.obj \\r
+       $(DIROBJ)\strdup.obj \\r
+       $(DIROBJ)\strequal.obj \\r
+       $(DIROBJ)\strerror.obj \\r
+       $(DIROBJ)\strtok.obj \\r
+       $(DIROBJ)\strtoofft.obj \\r
+       $(DIROBJ)\telnet.obj \\r
+       $(DIROBJ)\tftp.obj \\r
+       $(DIROBJ)\timeval.obj \\r
+       $(DIROBJ)\transfer.obj \\r
+       $(DIROBJ)\url.obj \\r
+       $(DIROBJ)\version.obj \\r
+       $(DIROBJ)\warnless.obj \\r
+       $(DIROBJ)\wildcard.obj \\r
+       $(RESOURCE)\r
+\r
+all : $(TARGET)\r
+\r
+$(TARGET): $(X_OBJS)\r
+       $(LNK) $(LFLAGS) $(X_OBJS)\r
+       -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_REL) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_STA_LIB_DBG) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_REL) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_DYN_LIB_DBG) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_REL) . /y\r
+       -xcopy $(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) . /y\r
+       -xcopy $(DIROBJ)\*.exp                  . /y\r
+       -xcopy $(DIROBJ)\*.pdb                  . /y\r
+\r
+$(X_OBJS): $(DIROBJ)\r
+\r
+$(DIROBJ):\r
+       @if not exist "$(DIROBJ)" mkdir $(DIROBJ)\r
+\r
+.SUFFIXES: .c .obj .res\r
+\r
+{.\}.c{$(DIROBJ)\}.obj:\r
+       $(CC) $(CFLAGS) /Fo"$@"  $<\r
+\r
+{.\vtls\}.c{$(DIROBJ)\}.obj:\r
+       $(CC) $(CFLAGS) /Fo"$@"  $<\r
+\r
+debug-dll\libcurl.res \\r
+debug-dll-ssl-dll\libcurl.res \\r
+debug-dll-zlib-dll\libcurl.res \\r
+debug-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc\r
+       rc /dDEBUGBUILD=1 /Fo $@ libcurl.rc\r
+\r
+release-dll\libcurl.res \\r
+release-dll-ssl-dll\libcurl.res \\r
+release-dll-zlib-dll\libcurl.res \\r
+release-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc\r
+       rc /dDEBUGBUILD=0 /Fo $@ libcurl.rc\r
+!ENDIF  # End of case where a config was provided.\r
index 0d10ac5..10732f9 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
 !INCLUDE ..\winbuild\Makefile.msvc.names\r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH   = ../../openssl-0.9.8zc\r
+OPENSSL_PATH   = ../../openssl-1.0.2a\r
 !ENDIF\r
 \r
 !IFNDEF LIBSSH2_PATH\r
-LIBSSH2_PATH   = ../../libssh2-1.4.3\r
+LIBSSH2_PATH   = ../../libssh2-1.5.0\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
@@ -90,7 +90,7 @@ MACHINE  = X86
 # If, for some reason the Windows SDK is installed but not installed\r
 # in the default location, you can specify WINDOWS_SDK_PATH.\r
 # It can be downloaded from:\r
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
 \r
 # WINDOWS_SSPI = 1\r
 \r
@@ -105,7 +105,7 @@ WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
 \r
 CCNODBG      = cl.exe /O2 /DNDEBUG\r
 CCDEBUG      = cl.exe /Od /Gm /Zi /D_DEBUG /RTC1\r
-CFLAGSSSL    = /DUSE_SSLEAY /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"\r
+CFLAGSSSL    = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"\r
 CFLAGSWINSSL = /DUSE_SCHANNEL\r
 CFLAGSSSH2   = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"\r
 CFLAGSZLIB   = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
@@ -427,7 +427,7 @@ CFGSET   = TRUE
 TARGET = $(LIBCURL_DYN_LIB_DBG)\r
 DIROBJ = $(CFG)\r
 LNK    = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
-CC     = $(CCDEBUG) $(RTLIBD) \r
+CC     = $(CCDEBUG) $(RTLIBD)\r
 CFGSET = TRUE\r
 RESOURCE = $(DIROBJ)\libcurl.res\r
 !ENDIF\r
@@ -528,13 +528,12 @@ X_OBJS= \
        $(DIROBJ)\asyn-thread.obj \\r
        $(DIROBJ)\axtls.obj \\r
        $(DIROBJ)\base64.obj \\r
-       $(DIROBJ)\bundles.obj \\r
        $(DIROBJ)\conncache.obj \\r
        $(DIROBJ)\connect.obj \\r
        $(DIROBJ)\content_encoding.obj \\r
        $(DIROBJ)\cookie.obj \\r
        $(DIROBJ)\curl_addrinfo.obj \\r
-       $(DIROBJ)\curl_darwinssl.obj \\r
+       $(DIROBJ)\curl_des.obj \\r
        $(DIROBJ)\curl_endian.obj \\r
        $(DIROBJ)\curl_fnmatch.obj \\r
        $(DIROBJ)\curl_gethostname.obj \\r
@@ -549,10 +548,10 @@ X_OBJS= \
        $(DIROBJ)\curl_sasl.obj \\r
        $(DIROBJ)\curl_sasl_gssapi.obj \\r
        $(DIROBJ)\curl_sasl_sspi.obj \\r
-       $(DIROBJ)\curl_schannel.obj \\r
        $(DIROBJ)\curl_sspi.obj \\r
        $(DIROBJ)\curl_threads.obj \\r
        $(DIROBJ)\cyassl.obj \\r
+       $(DIROBJ)\darwinssl.obj \\r
        $(DIROBJ)\dict.obj \\r
        $(DIROBJ)\dotdot.obj \\r
        $(DIROBJ)\easy.obj \\r
@@ -607,6 +606,7 @@ X_OBJS= \
        $(DIROBJ)\progress.obj \\r
        $(DIROBJ)\rawstr.obj \\r
        $(DIROBJ)\rtsp.obj \\r
+       $(DIROBJ)\schannel.obj \\r
        $(DIROBJ)\security.obj \\r
        $(DIROBJ)\select.obj \\r
        $(DIROBJ)\sendf.obj \\r
index 9f1b8d4..0d9d951 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
 !INCLUDE ..\winbuild\Makefile.msvc.names\r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH   = ../../openssl-0.9.8zc\r
+OPENSSL_PATH   = ../../openssl-1.0.2a\r
 !ENDIF\r
 \r
 !IFNDEF LIBSSH2_PATH\r
-LIBSSH2_PATH   = ../../libssh2-1.4.3\r
+LIBSSH2_PATH   = ../../libssh2-1.5.0\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
@@ -90,7 +90,7 @@ MACHINE  = X86
 # If, for some reason the Windows SDK is installed but not installed\r
 # in the default location, you can specify WINDOWS_SDK_PATH.\r
 # It can be downloaded from:\r
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
 \r
 # WINDOWS_SSPI = 1\r
 \r
@@ -105,7 +105,7 @@ WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
 \r
 CCNODBG      = cl.exe /O2 /DNDEBUG\r
 CCDEBUG      = cl.exe /Od /Gm /Zi /D_DEBUG /RTC1\r
-CFLAGSSSL    = /DUSE_SSLEAY /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"\r
+CFLAGSSSL    = /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl"\r
 CFLAGSWINSSL = /DUSE_SCHANNEL\r
 CFLAGSSSH2   = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include"\r
 CFLAGSZLIB   = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
@@ -427,7 +427,7 @@ CFGSET   = TRUE
 TARGET = $(LIBCURL_DYN_LIB_DBG)\r
 DIROBJ = $(CFG)\r
 LNK    = $(LNKDLL) $(WINLIBS) /DEBUG /out:$(DIROBJ)\$(TARGET) /IMPLIB:$(DIROBJ)\$(LIBCURL_IMP_LIB_DBG) /PDB:$(DIROBJ)\$(LIBCURL_DYN_LIB_PDB)\r
-CC     = $(CCDEBUG) $(RTLIBD) \r
+CC     = $(CCDEBUG) $(RTLIBD)\r
 CFGSET = TRUE\r
 RESOURCE = $(DIROBJ)\libcurl.res\r
 !ENDIF\r
@@ -528,13 +528,12 @@ X_OBJS= \
        $(DIROBJ)\asyn-thread.obj \\r
        $(DIROBJ)\axtls.obj \\r
        $(DIROBJ)\base64.obj \\r
-       $(DIROBJ)\bundles.obj \\r
        $(DIROBJ)\conncache.obj \\r
        $(DIROBJ)\connect.obj \\r
        $(DIROBJ)\content_encoding.obj \\r
        $(DIROBJ)\cookie.obj \\r
        $(DIROBJ)\curl_addrinfo.obj \\r
-       $(DIROBJ)\curl_darwinssl.obj \\r
+       $(DIROBJ)\curl_des.obj \\r
        $(DIROBJ)\curl_endian.obj \\r
        $(DIROBJ)\curl_fnmatch.obj \\r
        $(DIROBJ)\curl_gethostname.obj \\r
@@ -549,10 +548,10 @@ X_OBJS= \
        $(DIROBJ)\curl_sasl.obj \\r
        $(DIROBJ)\curl_sasl_gssapi.obj \\r
        $(DIROBJ)\curl_sasl_sspi.obj \\r
-       $(DIROBJ)\curl_schannel.obj \\r
        $(DIROBJ)\curl_sspi.obj \\r
        $(DIROBJ)\curl_threads.obj \\r
        $(DIROBJ)\cyassl.obj \\r
+       $(DIROBJ)\darwinssl.obj \\r
        $(DIROBJ)\dict.obj \\r
        $(DIROBJ)\dotdot.obj \\r
        $(DIROBJ)\easy.obj \\r
@@ -607,6 +606,7 @@ X_OBJS= \
        $(DIROBJ)\progress.obj \\r
        $(DIROBJ)\rawstr.obj \\r
        $(DIROBJ)\rtsp.obj \\r
+       $(DIROBJ)\schannel.obj \\r
        $(DIROBJ)\security.obj \\r
        $(DIROBJ)\select.obj \\r
        $(DIROBJ)\sendf.obj \\r
diff --git a/lib/README.ares b/lib/README.ares
deleted file mode 100644 (file)
index 8c77937..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-                                  _   _ ____  _
-                              ___| | | |  _ \| |
-                             / __| | | | |_) | |
-                            | (__| |_| |  _ <| |___
-                             \___|\___/|_| \_\_____|
-
-          How To Build libcurl to Use c-ares For Asynch Name Resolves
-          ===========================================================
-
-c-ares:
-  http://c-ares.haxx.se/
-
-NOTE
-  The latest libcurl version requires c-ares 1.6.0 or later.
-
-  Once upon the time libcurl built fine with the "original" ares. That is no
-  longer true. You need to use c-ares.
-
-Build c-ares
-============
-
-1. unpack the c-ares archive
-2. cd c-ares-dir
-3. ./configure
-4. make
-5. make install
-
-Build libcurl to use c-ares in the curl source tree
-===================================================
-
-1. name or symlink the c-ares source directory 'ares' in the curl source
-   directory
-2. ./configure --enable-ares
-
-  Optionally, you can point out the c-ares install tree root with the the
-  --enable-ares option.
-
-3. make
-
-Build libcurl to use an installed c-ares
-========================================
-
-1. ./configure --enable-ares=/path/to/ares/install
-2. make
-
-c-ares on win32
-===============
-(description brought by Dominick Meglio)
-
-First I compiled c-ares. I changed the default C runtime library to be the
-single-threaded rather than the multi-threaded (this seems to be required to
-prevent linking errors later on). Then I simply build the areslib project (the
-other projects adig/ahost seem to fail under MSVC).
-
-Next was libcurl. I opened lib/config-win32.h and I added a:
- #define USE_ARES 1
-
-Next thing I did was I added the path for the ares includes to the include
-path, and the libares.lib to the libraries.
-
-Lastly, I also changed libcurl to be single-threaded rather than
-multi-threaded, again this was to prevent some duplicate symbol errors. I'm
-not sure why I needed to change everything to single-threaded, but when I
-didn't I got redefinition errors for several CRT functions (malloc, stricmp,
-etc.)
-
-I would have modified the MSVC++ project files, but I only have VC.NET and it
-uses a different format than VC6.0 so I didn't want to go and change
-everything and remove VC6.0 support from libcurl.
diff --git a/lib/README.curl_off_t b/lib/README.curl_off_t
deleted file mode 100644 (file)
index 923b277..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-   curl_off_t explained
-   ====================
-
-curl_off_t is a data type provided by the external libcurl include headers. It
-is the type meant to be used for the curl_easy_setopt() options that end with
-LARGE. The type is 64bit large on most modern platforms.
-
-Transition from < 7.19.0 to >= 7.19.0
--------------------------------------
-
-Applications that used libcurl before 7.19.0 that are rebuilt with a libcurl
-that is 7.19.0 or later may or may not have to worry about anything of
-this. We have made a significant effort to make the transition really seamless
-and transparent.
-
-You have have to take notice if you are in one of the following situations:
-
-o Your app is using or will after the transition use a libcurl that is built
-  with LFS (large file support) disabled even though your system otherwise
-  supports it.
-
-o Your app is using or will after the transition use a libcurl that doesn't
-  support LFS at all, but your system and compiler support 64bit data types.
-
-In both these cases, the curl_off_t type will now (after the transition) be
-64bit where it previously was 32bit. This will cause a binary incompatibility
-that you MAY need to deal with.
-
-Benefits
---------
-
-This new way has several benefits:
-
-o Platforms without LFS support can still use libcurl to do >32 bit file
-  transfers and range operations etc as long as they have >32 bit data-types
-  supported.
-
-o Applications will no longer easily build with the curl_off_t size
-  mismatched, which has been a very frequent (and annoying) problem with
-  libcurl <= 7.18.2
-
-Historically
-------------
-
-Previously, before 7.19.0, the curl_off_t type would be rather strongly
-connected to the size of the system off_t type, where currently curl_off_t is
-independent of that.
-
-The strong connection to off_t made it troublesome for application authors
-since when they did mistakes, they could get curl_off_t type of different
-sizes in the app vs libcurl, and that caused strange effects that were hard to
-track and detect by users of libcurl.
-
-SONAME
-------
-
-We opted to not bump the soname for the library unconditionally, simply
-because soname bumping is causing a lot of grief and moaning all over the
-community so we try to keep that at minimum. Also, our selected design path
-should be 100% backwards compatible for the vast majority of all libcurl
-users.
-
-Enforce SONAME bump
--------------------
-
-If configure doesn't detect your case where a bump is necessary, re-run it
-with the --enable-soname-bump command line option!
diff --git a/lib/README.curlx b/lib/README.curlx
deleted file mode 100644 (file)
index 5375b0d..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-                                  _   _ ____  _
-                              ___| | | |  _ \| |
-                             / __| | | | |_) | |
-                            | (__| |_| |  _ <| |___
-                             \___|\___/|_| \_\_____|
-
-                     Source Code Functions Apps Might Use
-                     ====================================
-
-The libcurl source code offers a few functions by source only. They are not
-part of the official libcurl API, but the source files might be useful for
-others so apps can optionally compile/build with these sources to gain
-additional functions.
-
-We provide them through a single header file for easy access for apps:
-"curlx.h"
-
- curlx_strtoofft()
-
-   A macro that converts a string containing a number to a curl_off_t number.
-   This might use the curlx_strtoll() function which is provided as source
-   code in strtoofft.c. Note that the function is only provided if no
-   strtoll() (or equivalent) function exist on your platform. If curl_off_t
-   is only a 32 bit number on your platform, this macro uses strtol().
-
- curlx_tvnow()
-
-   returns a struct timeval for the current time.
-
- curlx_tvdiff()
-
-   returns the difference between two timeval structs, in number of
-   milliseconds.
-
- curlx_tvdiff_secs()
-
-   returns the same as curlx_tvdiff but with full usec resolution (as a
-   double)
-
-FUTURE
-======
-
- Several functions will be removed from the public curl_ name space in a
- future libcurl release. They will then only become available as curlx_
- functions instead. To make the transition easier, we already today provide
- these functions with the curlx_ prefix to allow sources to get built properly
- with the new function names. The functions this concerns are:
-
-      curlx_getenv
-      curlx_strequal
-      curlx_strnequal
-      curlx_mvsnprintf
-      curlx_msnprintf
-      curlx_maprintf
-      curlx_mvaprintf
-      curlx_msprintf
-      curlx_mprintf
-      curlx_mfprintf
-      curlx_mvsprintf
-      curlx_mvprintf
-      curlx_mvfprintf
diff --git a/lib/README.encoding b/lib/README.encoding
deleted file mode 100644 (file)
index 1012bb9..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-                    Content Encoding Support for libcurl
-
-* About content encodings:
-
-HTTP/1.1 [RFC 2616] specifies that a client may request that a server encode
-its response. This is usually used to compress a response using one of a set
-of commonly available compression techniques. These schemes are `deflate' (the
-zlib algorithm), `gzip' and `compress' [sec 3.5, RFC 2616]. A client requests
-that the sever perform an encoding by including an Accept-Encoding header in
-the request document. The value of the header should be one of the recognized
-tokens `deflate', ... (there's a way to register new schemes/tokens, see sec
-3.5 of the spec). A server MAY honor the client's encoding request. When a
-response is encoded, the server includes a Content-Encoding header in the
-response. The value of the Content-Encoding header indicates which scheme was
-used to encode the data.
-
-A client may tell a server that it can understand several different encoding
-schemes. In this case the server may choose any one of those and use it to
-encode the response (indicating which one using the Content-Encoding header).
-It's also possible for a client to attach priorities to different schemes so
-that the server knows which it prefers. See sec 14.3 of RFC 2616 for more
-information on the Accept-Encoding header.
-
-* Current support for content encoding:
-
-Support for the 'deflate' and 'gzip' content encoding are supported by
-libcurl. Both regular and chunked transfers should work fine.  The library
-zlib is required for this feature. 'deflate' support was added by James
-Gallagher, and support for the 'gzip' encoding was added by Dan Fandrich.
-
-* The libcurl interface:
-
-To cause libcurl to request a content encoding use:
-
-    curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, <string>)
-
-where <string> is the intended value of the Accept-Encoding header.
-
-Currently, libcurl only understands how to process responses that use the
-"deflate" or "gzip" Content-Encoding, so the only values for
-CURLOPT_ACCEPT_ENCODING that will work (besides "identity," which does
-nothing) are "deflate" and "gzip" If a response is encoded using the
-"compress" or methods, libcurl will return an error indicating that the
-response could not be decoded.  If <string> is NULL no Accept-Encoding header
-is generated.  If <string> is a zero-length string, then an Accept-Encoding
-header containing all supported encodings will be generated.
-
-The CURLOPT_ACCEPT_ENCODING must be set to any non-NULL value for content to
-be automatically decoded.  If it is not set and the server still sends encoded
-content (despite not having been asked), the data is returned in its raw form
-and the Content-Encoding type is not checked.
-
-* The curl interface:
-
-Use the --compressed option with curl to cause it to ask servers to compress
-responses using any format supported by curl.
-
-James Gallagher <jgallagher@gso.uri.edu>
-Dan Fandrich <dan@coneharvesters.com>
diff --git a/lib/README.hostip b/lib/README.hostip
deleted file mode 100644 (file)
index d5688ff..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
- hostip.c explained
- ==================
-
- The main COMPILE-TIME DEFINES to keep in mind when reading the host*.c
- source file are these:
-
- CURLRES_IPV6 - this host has getaddrinfo() and family, and thus we use
- that. The host may not be able to resolve IPv6, but we don't really have to
- take that into account. Hosts that aren't IPv6-enabled have CURLRES_IPV4
- defined.
-
- CURLRES_ARES - is defined if libcurl is built to use c-ares for asynchronous
- name resolves. This can be Windows or *nix.
-
- CURLRES_THREADED - is defined if libcurl is built to use threading for
- asynchronous name resolves. The name resolve will be done in a new thread,
- and the supported asynch API will be the same as for ares-builds. This is
- the default under (native) Windows.
-
- If any of the two previous are defined, CURLRES_ASYNCH is defined too. If
- libcurl is not built to use an asynchronous resolver, CURLRES_SYNCH is
- defined.
-
- The host*.c sources files are split up like this:
-
- hostip.c      - method-independent resolver functions and utility functions
- hostasyn.c    - functions for asynchronous name resolves
- hostsyn.c     - functions for synchronous name resolves
- asyn-ares.c   - functions for asynchronous name resolves using c-ares
- asyn-thread.c - functions for asynchronous name resolves using threads
- hostip4.c     - IPv4 specific functions
- hostip6.c     - IPv6 specific functions
-
- The hostip.h is the single united header file for all this. It defines the
- CURLRES_* defines based on the config*.h and curl_setup.h defines.
diff --git a/lib/README.httpauth b/lib/README.httpauth
deleted file mode 100644 (file)
index 9605045..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-
-1. PUT/POST without a known auth to use (possibly no auth required):
-
-   (When explicitly set to use a multi-pass auth when doing a POST/PUT,
-   libcurl should immediately go the Content-Length: 0 bytes route to avoid
-   the first send all data phase, step 2. If told to use a single-pass auth,
-   goto step 3.)
-
-   Issue the proper PUT/POST request immediately, with the correct
-   Content-Length and Expect: headers.
-
-   If a 100 response is received or the wait for one times out, start sending
-   the request-body.
-
-   If a 401 (or 407 when talking through a proxy) is received, then:
-
-   If we have "more than just a little" data left to send, close the
-   connection. Exactly what "more than just a little" means will have to be
-   determined. Possibly the current transfer speed should be taken into
-   account as well.
-
-   NOTE: if the size of the POST data is less than MAX_INITIAL_POST_SIZE (when
-   CURLOPT_POSTFIELDS is used), libcurl will send everything in one single
-   write() (all request-headers and request-body) and thus it will
-   unconditionally send the full post data here.
-
-2. PUT/POST with multi-pass auth but not yet completely negotiated:
-
-   Send a PUT/POST request, we know that it will be rejected and thus we claim
-   Content-Length zero to avoid having to send the request-body. (This seems
-   to be what IE does.)
-
-3. PUT/POST as the last step in the auth negotiation, that is when we have
-   what we believe is a completed negotiation:
-
-   Send a full and proper PUT/POST request (again) with the proper
-   Content-Length and a following request-body.
-
-   NOTE: this may very well be the second (or even third) time the whole or at
-   least parts of the request body is sent to the server. Since the data may
-   be provided to libcurl with a callback, we need a way to tell the app that
-   the upload is to be restarted so that the callback will provide data from
-   the start again.  This requires an API method/mechanism that libcurl
-   doesn't have today. See below.
-
-Data Rewind
-
-   It will be troublesome for some apps to deal with a rewind like this in all
-   circumstances. I'm thinking for example when using 'curl' to upload data
-   from stdin. If libcurl ends up having to rewind the reading for a request
-   to succeed, of course a lack of this callback or if it returns failure, will
-   cause the request to fail completely.
-
-   The new callback is set with CURLOPT_IOCTLFUNCTION (in an attempt to add a
-   more generic function that might be used for other IO-related controls in
-   the future):
-
-     curlioerr curl_ioctl(CURL *handle, curliocmd cmd, void *clientp);
-
-   And in the case where the read is to be rewinded, it would be called with a
-   cmd named CURLIOCMD_RESTARTREAD. The callback would then return CURLIOE_OK,
-   if things are fine, or CURLIOE_FAILRESTART if not.
-
-Backwards Compatibility
-
-   The approach used until now, that issues a HEAD on the given URL to trigger
-   the auth negotiation could still be supported and encouraged, but it would
-   be up to the app to first fetch a URL with GET/HEAD to negotiate on, since
-   then a following PUT/POST wouldn't need to negotiate authentication and
-   thus avoid double-sending data.
-
-   Optionally, we keep the current approach if some option is set
-   (CURLOPT_HEADBEFOREAUTH or similar), since it seems to work fairly well for
-   POST on most servers.
diff --git a/lib/README.memoryleak b/lib/README.memoryleak
deleted file mode 100644 (file)
index 1661777..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-                                  _   _ ____  _
-                              ___| | | |  _ \| |
-                             / __| | | | |_) | |
-                            | (__| |_| |  _ <| |___
-                             \___|\___/|_| \_\_____|
-
-             How To Track Down Suspected Memory Leaks in libcurl
-             ===================================================
-
-Single-threaded
-
-  Please note that this memory leak system is not adjusted to work in more
-  than one thread. If you want/need to use it in a multi-threaded app. Please
-  adjust accordingly.
-
-
-Build
-
-  Rebuild libcurl with -DCURLDEBUG (usually, rerunning configure with
-  --enable-debug fixes this). 'make clean' first, then 'make' so that all
-  files actually are rebuilt properly. It will also make sense to build
-  libcurl with the debug option (usually -g to the compiler) so that debugging
-  it will be easier if you actually do find a leak in the library.
-
-  This will create a library that has memory debugging enabled.
-
-Modify Your Application
-
-  Add a line in your application code:
-
-       curl_memdebug("dump");
-
-  This will make the malloc debug system output a full trace of all resource
-  using functions to the given file name. Make sure you rebuild your program
-  and that you link with the same libcurl you built for this purpose as
-  described above.
-
-Run Your Application
-
-  Run your program as usual. Watch the specified memory trace file grow.
-
-  Make your program exit and use the proper libcurl cleanup functions etc. So
-  that all non-leaks are returned/freed properly.
-
-Analyze the Flow
-
-  Use the tests/memanalyze.pl perl script to analyze the dump file:
-
-    tests/memanalyze.pl dump
-
-  This now outputs a report on what resources that were allocated but never
-  freed etc. This report is very fine for posting to the list!
-
-  If this doesn't produce any output, no leak was detected in libcurl. Then
-  the leak is mostly likely to be in your code.
diff --git a/lib/README.multi_socket b/lib/README.multi_socket
deleted file mode 100644 (file)
index d91e1d9..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-Implementation of the curl_multi_socket API
-
-  The main ideas of the new API are simply:
-
-   1 - The application can use whatever event system it likes as it gets info
-       from libcurl about what file descriptors libcurl waits for what action
-       on. (The previous API returns fd_sets which is very select()-centric).
-
-   2 - When the application discovers action on a single socket, it calls
-       libcurl and informs that there was action on this particular socket and
-       libcurl can then act on that socket/transfer only and not care about
-       any other transfers. (The previous API always had to scan through all
-       the existing transfers.)
-
-  The idea is that curl_multi_socket_action() calls a given callback with
-  information about what socket to wait for what action on, and the callback
-  only gets called if the status of that socket has changed.
-
-  We also added a timer callback that makes libcurl call the application when
-  the timeout value changes, and you set that with curl_multi_setopt() and the
-  CURLMOPT_TIMERFUNCTION option. To get this to work, Internally, there's an
-  added a struct to each easy handle in which we store an "expire time" (if
-  any). The structs are then "splay sorted" so that we can add and remove
-  times from the linked list and yet somewhat swiftly figure out both how long
-  time there is until the next nearest timer expires and which timer (handle)
-  we should take care of now. Of course, the upside of all this is that we get
-  a curl_multi_timeout() that should also work with old-style applications
-  that use curl_multi_perform().
-
-  We created an internal "socket to easy handles" hash table that given
-  a socket (file descriptor) return the easy handle that waits for action on
-  that socket.  This hash is made using the already existing hash code
-  (previously only used for the DNS cache).
-
-  To make libcurl able to report plain sockets in the socket callback, we had
-  to re-organize the internals of the curl_multi_fdset() etc so that the
-  conversion from sockets to fd_sets for that function is only done in the
-  last step before the data is returned. I also had to extend c-ares to get a
-  function that can return plain sockets, as that library too returned only
-  fd_sets and that is no longer good enough. The changes done to c-ares are
-  available in c-ares 1.3.1 and later.
-
-  We have done a test runs with up to 9000 connections (with a single active
-  one). The curl_multi_socket_action() invoke then takes less than 10
-  microseconds in average (using the read-only-1-byte-at-a-time hack).  We are
-  now below the 60 microseconds "per socket action" goal (the extra 50 is the
-  time libevent needs).
-
-Documentation
-
-    http://curl.haxx.se/libcurl/c/curl_multi_socket_action.html
-    http://curl.haxx.se/libcurl/c/curl_multi_timeout.html
-    http://curl.haxx.se/libcurl/c/curl_multi_setopt.html
diff --git a/lib/README.pingpong b/lib/README.pingpong
deleted file mode 100644 (file)
index 69ba9aa..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-Date: December 5, 2009
-
-Pingpong
-========
-
- Pingpong is just my (Daniel's) jestful collective name on the protocols that
- share a very similar kind of back-and-forth procedure with command and
- responses to and from the server. FTP was previously the only protocol in
- that family that libcurl supported, but when POP3, IMAP and SMTP joined the
- team I moved some of the internals into a separate pingpong module to be
- easier to get used by all these protocols to reduce code duplication and ease
- code re-use between these protocols.
-
-FTP
-
- In 7.20.0 we converted code to use the new pingpong code from previously
- having been all "native" FTP code.
-
-POP3
-
- There's no support in the documented URL format to specify the exact mail to
- get, but we support that as the path specified in the URL.
-
-IMAP
-
-SMTP
-
- There's no official URL syntax defined for SMTP, but we use only the generic
- one and we provide two additional libcurl options to specify receivers and
- sender of the actual mail.
diff --git a/lib/README.pipelining b/lib/README.pipelining
deleted file mode 100644 (file)
index e5bf6ec..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-HTTP Pipelining with libcurl
-============================
-
-Background
-
-Since pipelining implies that one or more requests are sent to a server before
-the previous response(s) have been received, we only support it for multi
-interface use.
-
-Considerations
-
-When using the multi interface, you create one easy handle for each transfer.
-Bascially any number of handles can be created, added and used with the multi
-interface - simultaneously. It is an interface designed to allow many
-simultaneous transfers while still using a single thread. Pipelining does not
-change any of these details.
-
-API
-
-We've added a new option to curl_multi_setopt() called CURLMOPT_PIPELINING
-that enables "attempted pipelining" and then all easy handles used on that
-handle will attempt to use an existing pipeline.
-
-Details
-
-- A pipeline is only created if a previous connection exists to the same IP
-  address that the new request is being made to use.
-
-- Pipelines are only supported for HTTP(S) as no other currently supported
-  protocol has features resemembling this, but we still name this feature
-  plain 'pipelining' to possibly one day support it for other protocols as
-  well.
-
-- HTTP Pipelining is for GET and HEAD requests only.
-
-- When a pipeline is in use, we must take precautions so that when used easy
-  handles (i.e those who still wait for a response) are removed from the multi
-  handle, we must deal with the outstanding response nicely.
-
-- Explicitly asking for pipelining handle X and handle Y won't be supported.
-  It isn't easy for an app to do this association. The lib should probably
-  still resolve the second one properly to make sure that they actually _can_
-  be considered for pipelining. Also, asking for explicit pipelining on handle
-  X may be tricky when handle X get a closed connection.
index 34f95e9..e3ff85f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -71,7 +71,7 @@ bool Curl_amiga_init()
 }
 
 #ifdef __libnix__
-ADD2EXIT(Curl_amiga_cleanup,-50);
+ADD2EXIT(Curl_amiga_cleanup, -50);
 #endif
 
 #endif /* __AMIGA__ && ! __ixemul__ */
index 4404b6c..98ecdfd 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -68,9 +68,7 @@
 #include "connect.h"
 #include "select.h"
 #include "progress.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 
 #  if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \
      (defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__))
@@ -166,7 +164,7 @@ void Curl_resolver_cleanup(void *resolver)
 int Curl_resolver_duphandle(void **to, void *from)
 {
   /* Clone the ares channel for the new handle */
-  if(ARES_SUCCESS != ares_dup((ares_channel*)to,(ares_channel)from))
+  if(ARES_SUCCESS != ares_dup((ares_channel*)to, (ares_channel)from))
     return CURLE_FAILED_INIT;
   return CURLE_OK;
 }
@@ -188,8 +186,7 @@ void Curl_resolver_cancel(struct connectdata *conn)
  */
 static void destroy_async_data (struct Curl_async *async)
 {
-  if(async->hostname)
-    free(async->hostname);
+  free(async->hostname);
 
   if(async->os_specific) {
     struct ResolverResults *res = (struct ResolverResults *)async->os_specific;
@@ -388,7 +385,7 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
       timeout_ms = 1000;
 
     waitperform(conn, timeout_ms);
-    Curl_resolver_is_resolved(conn,&temp_entry);
+    Curl_resolver_is_resolved(conn, &temp_entry);
 
     if(conn->async.done)
       break;
@@ -536,15 +533,15 @@ Curl_addrinfo *Curl_resolver_getaddrinfo(struct connectdata *conn,
   bufp = strdup(hostname);
   if(bufp) {
     struct ResolverResults *res = NULL;
-    Curl_safefree(conn->async.hostname);
+    free(conn->async.hostname);
     conn->async.hostname = bufp;
     conn->async.port = port;
     conn->async.done = FALSE;   /* not done */
     conn->async.status = 0;     /* clear */
     conn->async.dns = NULL;     /* clear */
-    res = calloc(sizeof(struct ResolverResults),1);
+    res = calloc(sizeof(struct ResolverResults), 1);
     if(!res) {
-      Curl_safefree(conn->async.hostname);
+      free(conn->async.hostname);
       conn->async.hostname = NULL;
       return NULL;
     }
index 80b5e78..bd47d5a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "inet_ntop.h"
 #include "curl_threads.h"
 #include "connect.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
+
 /* The last #include file should be: */
 #include "memdebug.h"
 
@@ -192,13 +190,12 @@ void destroy_thread_sync_data(struct thread_sync_data * tsd)
     free(tsd->mtx);
   }
 
-  if(tsd->hostname)
-    free(tsd->hostname);
+  free(tsd->hostname);
 
   if(tsd->res)
     Curl_freeaddrinfo(tsd->res);
 
-  memset(tsd,0,sizeof(*tsd));
+  memset(tsd, 0, sizeof(*tsd));
 }
 
 /* Initialize resolver thread synchronization data */
@@ -366,9 +363,7 @@ static void destroy_async_data (struct Curl_async *async)
   }
   async->os_specific = NULL;
 
-  if(async->hostname)
-    free(async->hostname);
-
+  free(async->hostname);
   async->hostname = NULL;
 }
 
@@ -398,7 +393,7 @@ static bool init_resolve_thread (struct connectdata *conn,
   if(!init_thread_sync_data(td, hostname, port, hints))
     goto err_exit;
 
-  Curl_safefree(conn->async.hostname);
+  free(conn->async.hostname);
   conn->async.hostname = strdup(hostname);
   if(!conn->async.hostname)
     goto err_exit;
index 6b1eb7c..6b87eed 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 /* Base64 encoding/decoding */
 
 #include "curl_setup.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "urldata.h" /* for the SessionHandle definition */
 #include "warnless.h"
 #include "curl_base64.h"
-#include "curl_memory.h"
 #include "non-ascii.h"
 
-/* include memdebug.h last */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /* ---- Base64 Encoding/Decoding Table --- */
@@ -152,7 +149,7 @@ CURLcode Curl_base64_decode(const char *src,
   for(i = 0; i < numQuantums; i++) {
     size_t result = decodeQuantum(pos, src);
     if(!result) {
-      Curl_safefree(newstr);
+      free(newstr);
 
       return CURLE_BAD_CONTENT_ENCODING;
     }
@@ -255,8 +252,7 @@ static CURLcode base64_encode(const char *table64,
   *output = '\0';
   *outptr = base64data; /* return pointer to new data, allocated memory */
 
-  if(convbuf)
-    free(convbuf);
+  free(convbuf);
 
   *outlen = strlen(base64data); /* return the length of the new data */
 
diff --git a/lib/bundles.c b/lib/bundles.c
deleted file mode 100644 (file)
index aadf026..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2012, Linus Nielsen Feltzing, <linus@haxx.se>
- * Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at 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.
- *
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#include <curl/curl.h>
-
-#include "urldata.h"
-#include "url.h"
-#include "progress.h"
-#include "multiif.h"
-#include "bundles.h"
-#include "sendf.h"
-#include "rawstr.h"
-
-#include "curl_memory.h"
-/* The last #include file should be: */
-#include "memdebug.h"
-
-static void conn_llist_dtor(void *user, void *element)
-{
-  struct connectdata *data = element;
-  (void)user;
-
-  data->bundle = NULL;
-}
-
-CURLcode Curl_bundle_create(struct SessionHandle *data,
-                            struct connectbundle **cb_ptr)
-{
-  (void)data;
-  DEBUGASSERT(*cb_ptr == NULL);
-  *cb_ptr = malloc(sizeof(struct connectbundle));
-  if(!*cb_ptr)
-    return CURLE_OUT_OF_MEMORY;
-
-  (*cb_ptr)->num_connections = 0;
-  (*cb_ptr)->server_supports_pipelining = FALSE;
-
-  (*cb_ptr)->conn_list = Curl_llist_alloc((curl_llist_dtor) conn_llist_dtor);
-  if(!(*cb_ptr)->conn_list) {
-    Curl_safefree(*cb_ptr);
-    return CURLE_OUT_OF_MEMORY;
-  }
-  return CURLE_OK;
-}
-
-void Curl_bundle_destroy(struct connectbundle *cb_ptr)
-{
-  if(!cb_ptr)
-    return;
-
-  if(cb_ptr->conn_list) {
-    Curl_llist_destroy(cb_ptr->conn_list, NULL);
-    cb_ptr->conn_list = NULL;
-  }
-  Curl_safefree(cb_ptr);
-}
-
-/* Add a connection to a bundle */
-CURLcode Curl_bundle_add_conn(struct connectbundle *cb_ptr,
-                              struct connectdata *conn)
-{
-  if(!Curl_llist_insert_next(cb_ptr->conn_list, cb_ptr->conn_list->tail, conn))
-    return CURLE_OUT_OF_MEMORY;
-
-  conn->bundle = cb_ptr;
-
-  cb_ptr->num_connections++;
-  return CURLE_OK;
-}
-
-/* Remove a connection from a bundle */
-int Curl_bundle_remove_conn(struct connectbundle *cb_ptr,
-                            struct connectdata *conn)
-{
-  struct curl_llist_element *curr;
-
-  curr = cb_ptr->conn_list->head;
-  while(curr) {
-    if(curr->ptr == conn) {
-      Curl_llist_remove(cb_ptr->conn_list, curr, NULL);
-      cb_ptr->num_connections--;
-      conn->bundle = NULL;
-      return 1; /* we removed a handle */
-    }
-    curr = curr->next;
-  }
-  return 0;
-}
index f561492..8fad2cf 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2011 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2011 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -26,13 +26,32 @@ my $indent = 2;
 
 my $warnings;
 my $errors;
+my $supressed; # whitelisted problems
 my $file;
 my $dir=".";
 my $wlist;
+my $windows_os = $^O eq 'MSWin32' || $^O eq 'msys' || $^O eq 'cygwin';
+
+my %whitelist;
+
+sub readwhitelist {
+    open(W, "<$dir/checksrc.whitelist");
+    my @all=<W>;
+    for(@all) {
+        $windows_os ? $_ =~ s/\r?\n$// : chomp;
+        $whitelist{$_}=1;
+    }
+    close(W);
+}
 
 sub checkwarn {
     my ($num, $col, $file, $line, $msg, $error) = @_;
 
+    if($whitelist{$line}) {
+        $supressed++;
+        return;
+    }
+    
     my $w=$error?"error":"warning";
 
     if($w) {
@@ -78,6 +97,8 @@ if(!$file) {
     exit;
 }
 
+readwhitelist();
+
 do {
     if("$wlist" !~ / $file /) {
         my $fullname = $file;
@@ -100,7 +121,7 @@ sub scanfile {
     my $copyright=0;
 
     while(<R>) {
-        chomp;
+        $windows_os ? $_ =~ s/\r?\n$// : chomp;
         my $l = $_;
         my $column = 0;
 
@@ -144,6 +165,49 @@ sub scanfile {
             }
         }
 
+        # check for "return(" without space
+        if($l =~ /^(.*)return\(/) {
+            if($1 =~ / *\#/) {
+                # this is a #if, treat it differently
+            }
+            else {
+                checkwarn($line, length($1)+6, $file, $l,
+                          "return without space before paren");
+            }
+        }
+
+        # check for comma without space
+        if($l =~ /^(.*),[^ \n]/) {
+            my $pref=$1;
+            my $ign=0;
+            if($pref =~ / *\#/) {
+                # this is a #if, treat it differently
+                $ign=1;
+            }
+            elsif($pref =~ /\/\*/) {
+                # this is a comment
+                $ign=1;
+            }
+            elsif($pref =~ /[\"\']/) {
+                $ign = 1;
+                # There is a quote here, figure out whether the comma is
+                # within a string or '' or not.
+                if($pref =~ /\"/) {
+                    # withing a string
+                }
+                elsif($pref =~ /\'$/) {
+                    # a single letter
+                }
+                else {
+                    $ign = 0;
+                }
+            }
+            if(!$ign) {
+                checkwarn($line, length($pref)+1, $file, $l,
+                          "comma without following space");
+            }
+        }
+        
         # check for "} else"
         if($l =~ /^(.*)\} *else/) {
             checkwarn($line, length($1), $file, $l, "else after closing brace on same line");
@@ -153,12 +217,26 @@ sub scanfile {
             checkwarn($line, length($1)+1, $file, $l, "missing space after close paren");
         }
 
+        # check for space before the semicolon last in a line
+        if($l =~ /^(.*[^ ].*) ;$/) {
+            checkwarn($line, length($1), $file, $l, "space before last semicolon");
+        }
+
         # scan for use of banned functions
         if($l =~ /^(.*\W)(sprintf|vsprintf|strcat|strncat|gets)\s*\(/) {
             checkwarn($line, length($1), $file, $l,
                       "use of $2 is banned");
         }
 
+        # scan for use of non-binary fopen without the macro
+        if($l =~ /^(.*\W)fopen\s*\([^"]*\"([^"]*)/) {
+            my $mode = $2;
+            if($mode !~ /b/) {
+                checkwarn($line, length($1), $file, $l,
+                          "use of non-binary fopen without FOPEN_* macro");
+            }
+        }
+
         # check for open brace first on line but not first column
         # only alert if previous line ended with a close paren and wasn't a cpp
         # line
diff --git a/lib/checksrc.whitelist b/lib/checksrc.whitelist
new file mode 100644 (file)
index 0000000..e261b9d
--- /dev/null
@@ -0,0 +1,10 @@
+    227 Entering Passive Mode (a1,a2,a3,a4,p1,p2)
+    228 Entering Long Passive Mode (4,4,a1,a2,a3,a4,2,p1,p2)
+      150 ASCII data connection for /bin/ls (137.167.104.91,37445) (0 bytes).
+      150 Opening ASCII mode data connection for [file] (0.0.0.0,0) (545 bytes)
+   * no_proxy=domain1.dom,host.domain2.dom
+     Default values are (0,0) initialized by calloc.
+  file = fopen(name, "r"); /* VMS */
+    return fopen(file, "r"); /* VMS */
+    return fopen(file, "r", "rfm=stmlf", "ctx=stm");
+    curl_memlog("FILE %s:%d fopen(\"%s\",\"%s\") = %p\n",
index 76d8877..04b18b7 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -93,7 +93,6 @@
 
 #define USE_MANUAL 1
 #define USE_OPENSSL 1
-#define USE_SSLEAY 1
 #define CURL_DISABLE_LDAP 1
 
 #define OS "AmigaOS"
index dd5b06d..288bd1d 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
   #define HAVE_LIBZ              1
 #endif
 
-/* USE_SSLEAY on cmd-line */
-#ifdef USE_SSLEAY
+/* USE_OPENSSL on cmd-line */
+#ifdef USE_OPENSSL
   #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 HAVE_TERMIOS_H  1
   #define HAVE_VARIADIC_MACROS_GCC 1
 
-  /* Because djgpp <= 2.03 doesn't have snprintf() etc. */
-  #if (DJGPP_MINOR < 4)
-    #define _MPRINTF_REPLACE
-  #endif
-
 #elif defined(__WATCOMC__)
   #define HAVE_STRCASECMP 1
 
index d89c385..ee7a659 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -70,7 +70,6 @@
 #define HAVE_SIG_ATOMIC_T       1
 
 #ifdef MACOS_SSL_SUPPORT
-#  define USE_SSLEAY            1
 #  define USE_OPENSSL           1
 #endif
 
index f7eaab9..a40e3d8 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -69,7 +69,7 @@
 /* #undef CURL_EXTERN_SYMBOL */
 
 /* Use Windows LDAP implementation */
-/* #undef CURL_LDAP_WIN */
+/* #undef USE_WIN32_LDAP */
 
 /* your Entropy Gathering Daemon socket pathname */
 /* #undef EGD_SOCKET */
 #define HAVE_ZLIB_H 1
 #endif
 
-/* Enable appropriate definitions only when OpenSSL support is enabled */
-#ifdef USE_SSLEAY
-/* if OpenSSL is in use */
-#define USE_OPENSSL
-#endif
-
 #endif /* HEADER_CURL_CONFIG_SYMBIAN_H */
index 6ff701a..d6b8cc2 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 /* #undef USE_OPENSSL */
 
 /* if SSL is enabled */
-/* #undef USE_SSLEAY */
+/* #undef USE_OPENSSL */
 
 /* to enable SSPI support */
 /* #undef USE_WINDOWS_SSPI */
index 05220b5..d889efc 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -75,7 +75,7 @@
 /* #undef CURL_EXTERN_SYMBOL */
 
 /* Use Windows LDAP implementation */
-/* #undef CURL_LDAP_WIN */
+/* #undef USE_WIN32_LDAP */
 
 /* your Entropy Gathering Daemon socket pathname */
 /* #undef EGD_SOCKET */
 /* if OpenSSL is in use */
 #define USE_OPENSSL 1
 
-/* if SSL is enabled */
-#define USE_SSLEAY 1
-
 /* Define to 1 if you are building a Windows target without large file
    support. */
 /* #undef USE_WIN32_LARGE_FILES */
index 744e022..e9a3712 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -678,30 +678,30 @@ Vista
 /* ---------------------------------------------------------------- */
 
 #if defined(CURL_HAS_NOVELL_LDAPSDK) || defined(CURL_HAS_MOZILLA_LDAPSDK)
-#undef CURL_LDAP_WIN
+#undef USE_WIN32_LDAP
 #define HAVE_LDAP_SSL_H 1
 #define HAVE_LDAP_URL_PARSE 1
 #elif defined(CURL_HAS_OPENLDAP_LDAPSDK)
-#undef CURL_LDAP_WIN
+#undef USE_WIN32_LDAP
 #define HAVE_LDAP_URL_PARSE 1
 #else
 #undef HAVE_LDAP_URL_PARSE
-#define CURL_LDAP_WIN 1
+#define USE_WIN32_LDAP 1
 #endif
 
-#if defined(__WATCOMC__) && defined(CURL_LDAP_WIN)
+#if defined(__WATCOMC__) && defined(USE_WIN32_LDAP)
 #if __WATCOMC__ < 1280
 #define WINBERAPI  __declspec(cdecl)
 #define WINLDAPAPI __declspec(cdecl)
 #endif
 #endif
 
-#if defined(__POCC__) && defined(CURL_LDAP_WIN)
+#if defined(__POCC__) && defined(USE_WIN32_LDAP)
 #  define CURL_DISABLE_LDAP 1
 #endif
 
 /* Define to use the Windows crypto library. */
-#if !defined(USE_SSLEAY) && !defined(USE_NSS)
+#if !defined(USE_OPENSSL) && !defined(USE_NSS)
 #define USE_WIN32_CRYPTO
 #endif
 
index a8ab0d3..a723fd1 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 /*                           LDAP SUPPORT                           */
 /* ---------------------------------------------------------------- */
 
-#define CURL_LDAP_WIN 1
+#define USE_WIN32_LDAP 1
 #undef HAVE_LDAP_URL_PARSE
 
 /* ---------------------------------------------------------------- */
 #define ENOMEM 2
 #define EAGAIN 3
 
-extern int stat(const char *path,struct stat *buffer );
+extern int stat(const char *path, struct stat *buffer);
 
 #endif /* HEADER_CURL_CONFIG_WIN32CE_H */
index fcfb150..c712ed7 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2012, Linus Nielsen Feltzing, <linus@haxx.se>
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "multiif.h"
 #include "sendf.h"
 #include "rawstr.h"
-#include "bundles.h"
 #include "conncache.h"
+#include "curl_printf.h"
 
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
 
-static void free_bundle_hash_entry(void *freethis)
+static void conn_llist_dtor(void *user, void *element)
 {
-  struct connectbundle *b = (struct connectbundle *) freethis;
+  struct connectdata *data = element;
+  (void)user;
 
-  Curl_bundle_destroy(b);
+  data->bundle = NULL;
 }
 
-struct conncache *Curl_conncache_init(int size)
+static CURLcode bundle_create(struct SessionHandle *data,
+                              struct connectbundle **cb_ptr)
 {
-  struct conncache *connc;
-
-  connc = calloc(1, sizeof(struct conncache));
-  if(!connc)
-    return NULL;
+  (void)data;
+  DEBUGASSERT(*cb_ptr == NULL);
+  *cb_ptr = malloc(sizeof(struct connectbundle));
+  if(!*cb_ptr)
+    return CURLE_OUT_OF_MEMORY;
+
+  (*cb_ptr)->num_connections = 0;
+  (*cb_ptr)->multiuse = BUNDLE_UNKNOWN;
+
+  (*cb_ptr)->conn_list = Curl_llist_alloc((curl_llist_dtor) conn_llist_dtor);
+  if(!(*cb_ptr)->conn_list) {
+    Curl_safefree(*cb_ptr);
+    return CURLE_OUT_OF_MEMORY;
+  }
+  return CURLE_OK;
+}
 
-  connc->hash = Curl_hash_alloc(size, Curl_hash_str,
-                                Curl_str_key_compare, free_bundle_hash_entry);
+static void bundle_destroy(struct connectbundle *cb_ptr)
+{
+  if(!cb_ptr)
+    return;
 
-  if(!connc->hash) {
-    free(connc);
-    return NULL;
+  if(cb_ptr->conn_list) {
+    Curl_llist_destroy(cb_ptr->conn_list, NULL);
+    cb_ptr->conn_list = NULL;
   }
+  free(cb_ptr);
+}
+
+/* Add a connection to a bundle */
+static CURLcode bundle_add_conn(struct connectbundle *cb_ptr,
+                              struct connectdata *conn)
+{
+  if(!Curl_llist_insert_next(cb_ptr->conn_list, cb_ptr->conn_list->tail, conn))
+    return CURLE_OUT_OF_MEMORY;
 
-  return connc;
+  conn->bundle = cb_ptr;
+
+  cb_ptr->num_connections++;
+  return CURLE_OK;
 }
 
-void Curl_conncache_destroy(struct conncache *connc)
+/* Remove a connection from a bundle */
+static int bundle_remove_conn(struct connectbundle *cb_ptr,
+                              struct connectdata *conn)
 {
-  if(connc) {
-    Curl_hash_destroy(connc->hash);
-    connc->hash = NULL;
-    free(connc);
+  struct curl_llist_element *curr;
+
+  curr = cb_ptr->conn_list->head;
+  while(curr) {
+    if(curr->ptr == conn) {
+      Curl_llist_remove(cb_ptr->conn_list, curr, NULL);
+      cb_ptr->num_connections--;
+      conn->bundle = NULL;
+      return 1; /* we removed a handle */
+    }
+    curr = curr->next;
   }
+  return 0;
 }
 
-struct connectbundle *Curl_conncache_find_bundle(struct conncache *connc,
-                                                 char *hostname)
+static void free_bundle_hash_entry(void *freethis)
 {
-  struct connectbundle *bundle = NULL;
+  struct connectbundle *b = (struct connectbundle *) freethis;
+
+  bundle_destroy(b);
+}
 
+int Curl_conncache_init(struct conncache *connc, int size)
+{
+  return Curl_hash_init(&connc->hash, size, Curl_hash_str,
+                        Curl_str_key_compare, free_bundle_hash_entry);
+}
+
+void Curl_conncache_destroy(struct conncache *connc)
+{
   if(connc)
-    bundle = Curl_hash_pick(connc->hash, hostname, strlen(hostname)+1);
+    Curl_hash_destroy(&connc->hash);
+}
+
+/* returns an allocated key to find a bundle for this connection */
+static char *hashkey(struct connectdata *conn)
+{
+  return aprintf("%s:%d",
+                 conn->bits.proxy?conn->proxy.name:conn->host.name,
+                 conn->localport);
+}
+
+/* Look up the bundle with all the connections to the same host this
+   connectdata struct is setup to use. */
+struct connectbundle *Curl_conncache_find_bundle(struct connectdata *conn,
+                                                 struct conncache *connc)
+{
+  struct connectbundle *bundle = NULL;
+  if(connc) {
+    char *key = hashkey(conn);
+    if(key) {
+      bundle = Curl_hash_pick(&connc->hash, key, strlen(key));
+      free(key);
+    }
+  }
 
   return bundle;
 }
 
 static bool conncache_add_bundle(struct conncache *connc,
-                                 char *hostname,
+                                 char *key,
                                  struct connectbundle *bundle)
 {
-  void *p;
-
-  p = Curl_hash_add(connc->hash, hostname, strlen(hostname)+1, bundle);
+  void *p = Curl_hash_add(&connc->hash, key, strlen(key), bundle);
 
   return p?TRUE:FALSE;
 }
@@ -104,14 +172,14 @@ static void conncache_remove_bundle(struct conncache *connc,
   if(!connc)
     return;
 
-  Curl_hash_start_iterate(connc->hash, &iter);
+  Curl_hash_start_iterate(&connc->hash, &iter);
 
   he = Curl_hash_next_element(&iter);
   while(he) {
     if(he->ptr == bundle) {
       /* The bundle is destroyed by the hash destructor function,
          free_bundle_hash_entry() */
-      Curl_hash_delete(connc->hash, he->key, he->key_len);
+      Curl_hash_delete(&connc->hash, he->key, he->key_len);
       return;
     }
 
@@ -127,22 +195,31 @@ CURLcode Curl_conncache_add_conn(struct conncache *connc,
   struct connectbundle *new_bundle = NULL;
   struct SessionHandle *data = conn->data;
 
-  bundle = Curl_conncache_find_bundle(data->state.conn_cache,
-                                      conn->host.name);
+  bundle = Curl_conncache_find_bundle(conn, data->state.conn_cache);
   if(!bundle) {
-    result = Curl_bundle_create(data, &new_bundle);
+    char *key;
+    int rc;
+
+    result = bundle_create(data, &new_bundle);
     if(result)
       return result;
 
-    if(!conncache_add_bundle(data->state.conn_cache,
-                             conn->host.name, new_bundle)) {
-      Curl_bundle_destroy(new_bundle);
+    key = hashkey(conn);
+    if(!key) {
+      bundle_destroy(new_bundle);
+      return CURLE_OUT_OF_MEMORY;
+    }
+
+    rc = conncache_add_bundle(data->state.conn_cache, key, new_bundle);
+    free(key);
+    if(!rc) {
+      bundle_destroy(new_bundle);
       return CURLE_OUT_OF_MEMORY;
     }
     bundle = new_bundle;
   }
 
-  result = Curl_bundle_add_conn(bundle, conn);
+  result = bundle_add_conn(bundle, conn);
   if(result) {
     if(new_bundle)
       conncache_remove_bundle(data->state.conn_cache, new_bundle);
@@ -167,7 +244,7 @@ void Curl_conncache_remove_conn(struct conncache *connc,
   /* The bundle pointer can be NULL, since this function can be called
      due to a failed connection attempt, before being added to a bundle */
   if(bundle) {
-    Curl_bundle_remove_conn(bundle, conn);
+    bundle_remove_conn(bundle, conn);
     if(bundle->num_connections == 0) {
       conncache_remove_bundle(connc, bundle);
     }
@@ -199,7 +276,7 @@ void Curl_conncache_foreach(struct conncache *connc,
   if(!connc)
     return;
 
-  Curl_hash_start_iterate(connc->hash, &iter);
+  Curl_hash_start_iterate(&connc->hash, &iter);
 
   he = Curl_hash_next_element(&iter);
   while(he) {
@@ -230,7 +307,7 @@ Curl_conncache_find_first_connection(struct conncache *connc)
   struct curl_hash_element *he;
   struct connectbundle *bundle;
 
-  Curl_hash_start_iterate(connc->hash, &iter);
+  Curl_hash_start_iterate(&connc->hash, &iter);
 
   he = Curl_hash_next_element(&iter);
   while(he) {
index d793f24..59181bf 100644 (file)
@@ -7,6 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
+ * Copyright (C) 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2012 - 2014, Linus Nielsen Feltzing, <linus@haxx.se>
  *
  * This software is licensed as described in the file COPYING, which
  ***************************************************************************/
 
 struct conncache {
-  struct curl_hash *hash;
+  struct curl_hash hash;
   size_t num_connections;
   long next_connection_id;
   struct timeval last_cleanup;
 };
 
-struct conncache *Curl_conncache_init(int size);
+#define BUNDLE_NO_MULTIUSE -1
+#define BUNDLE_UNKNOWN     0  /* initial value */
+#define BUNDLE_PIPELINING  1
+#define BUNDLE_MULTIPLEX   2
+
+struct connectbundle {
+  int multiuse;                 /* supports multi-use */
+  size_t num_connections;       /* Number of connections in the bundle */
+  struct curl_llist *conn_list; /* The connectdata members of the bundle */
+};
+
+int Curl_conncache_init(struct conncache *, int size);
 
 void Curl_conncache_destroy(struct conncache *connc);
 
-struct connectbundle *Curl_conncache_find_bundle(struct conncache *connc,
-                                                 char *hostname);
+/* return the correct bundle, to a host or a proxy */
+struct connectbundle *Curl_conncache_find_bundle(struct connectdata *conn,
+                                                 struct conncache *connc);
 
 CURLcode Curl_conncache_add_conn(struct conncache *connc,
                                  struct connectdata *conn);
index 5a60d14..18ac32c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include <inet.h>
 #endif
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "urldata.h"
 #include "sendf.h"
 #include "if2ip.h"
 #include "strerror.h"
 #include "connect.h"
-#include "curl_memory.h"
 #include "select.h"
 #include "url.h" /* for Curl_safefree() */
 #include "multiif.h"
@@ -77,7 +74,8 @@
 #include "conncache.h"
 #include "multihandle.h"
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 #ifdef __SYMBIAN32__
@@ -542,6 +540,7 @@ static CURLcode trynextip(struct connectdata *conn,
                           int sockindex,
                           int tempindex)
 {
+  const int other = tempindex ^ 1;
   CURLcode result = CURLE_COULDNT_CONNECT;
 
   /* First clean up after the failed socket.
@@ -560,20 +559,21 @@ static CURLcode trynextip(struct connectdata *conn,
       family = conn->tempaddr[tempindex]->ai_family;
       ai = conn->tempaddr[tempindex]->ai_next;
     }
+#ifdef ENABLE_IPV6
     else if(conn->tempaddr[0]) {
       /* happy eyeballs - try the other protocol family */
       int firstfamily = conn->tempaddr[0]->ai_family;
-#ifdef ENABLE_IPV6
       family = (firstfamily == AF_INET) ? AF_INET6 : AF_INET;
-#else
-      family = firstfamily;
-#endif
       ai = conn->tempaddr[0]->ai_next;
     }
+#endif
 
     while(ai) {
-      while(ai && ai->ai_family != family)
-        ai = ai->ai_next;
+      if(conn->tempaddr[other]) {
+        /* we can safely skip addresses of the other protocol family */
+        while(ai && ai->ai_family != family)
+          ai = ai->ai_next;
+      }
 
       if(ai) {
         result = singleipconnect(conn, ai, &conn->tempsock[tempindex]);
@@ -749,6 +749,7 @@ CURLcode Curl_is_connected(struct connectdata *conn,
   }
 
   for(i=0; i<2; i++) {
+    const int other = i ^ 1;
     if(conn->tempsock[i] == CURL_SOCKET_BAD)
       continue;
 
@@ -778,7 +779,6 @@ CURLcode Curl_is_connected(struct connectdata *conn,
     else if(rc == CURL_CSELECT_OUT) {
       if(verifyconnect(conn->tempsock[i], &error)) {
         /* we are connected with TCP, awesome! */
-        int other = i ^ 1;
 
         /* use this socket from now on */
         conn->sock[sockindex] = conn->tempsock[i];
@@ -820,6 +820,7 @@ CURLcode Curl_is_connected(struct connectdata *conn,
       data->state.os_errno = error;
       SET_SOCKERRNO(error);
       if(conn->tempaddr[i]) {
+        CURLcode status;
         char ipaddress[MAX_IPADR_LEN];
         Curl_printable_address(conn->tempaddr[i], ipaddress, MAX_IPADR_LEN);
         infof(data, "connect to %s port %ld failed: %s\n",
@@ -828,7 +829,11 @@ CURLcode Curl_is_connected(struct connectdata *conn,
         conn->timeoutms_per_addr = conn->tempaddr[i]->ai_next == NULL ?
                                    allow : allow / 2;
 
-        result = trynextip(conn, sockindex, i);
+        status = trynextip(conn, sockindex, i);
+        if(status != CURLE_COULDNT_CONNECT
+            || conn->tempsock[other] == CURL_SOCKET_BAD)
+          /* the last attempt failed and no other sockets remain open */
+          result = status;
       }
     }
   }
@@ -878,7 +883,7 @@ static void tcpnodelay(struct connectdata *conn,
     infof(data, "Could not set TCP_NODELAY: %s\n",
           Curl_strerror(conn, SOCKERRNO));
   else
-    infof(data,"TCP_NODELAY set\n");
+    infof(data, "TCP_NODELAY set\n");
 #else
   (void)conn;
   (void)sockfd;
@@ -944,16 +949,21 @@ void Curl_sndbufset(curl_socket_t sockfd)
         detectOsState = DETECT_OS_VISTA_OR_LATER;
     }
 #else
-    ULONGLONG majorVersionMask;
+    ULONGLONG cm;
     OSVERSIONINFOEX osver;
 
     memset(&osver, 0, sizeof(osver));
     osver.dwOSVersionInfoSize = sizeof(osver);
     osver.dwMajorVersion = majorVersion;
-    majorVersionMask = VerSetConditionMask(0, VER_MAJORVERSION,
-                                           VER_GREATER_EQUAL);
 
-    if(VerifyVersionInfo(&osver, VER_MAJORVERSION, majorVersionMask))
+    cm = VerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL);
+    cm = VerSetConditionMask(cm, VER_MINORVERSION, VER_GREATER_EQUAL);
+    cm = VerSetConditionMask(cm, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
+    cm = VerSetConditionMask(cm, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
+
+    if(VerifyVersionInfo(&osver, (VER_MAJORVERSION | VER_MINORVERSION |
+                                  VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR),
+                         cm))
       detectOsState = DETECT_OS_VISTA_OR_LATER;
     else
       detectOsState = DETECT_OS_PREVISTA;
@@ -1016,8 +1026,12 @@ static CURLcode singleipconnect(struct connectdata *conn,
   }
   infof(data, "  Trying %s...\n", ipaddress);
 
+#ifdef ENABLE_IPV6
   is_tcp = (addr.family == AF_INET || addr.family == AF_INET6) &&
-           addr.socktype == SOCK_STREAM;
+    addr.socktype == SOCK_STREAM;
+#else
+  is_tcp = (addr.family == AF_INET) && addr.socktype == SOCK_STREAM;
+#endif
   if(is_tcp && data->set.tcp_nodelay)
     tcpnodelay(conn, sockfd);
 
@@ -1043,7 +1057,11 @@ static CURLcode singleipconnect(struct connectdata *conn,
   }
 
   /* possibly bind the local end to an IP, interface or port */
-  if(addr.family == AF_INET || addr.family == AF_INET6) {
+  if(addr.family == AF_INET
+#ifdef ENABLE_IPV6
+     || addr.family == AF_INET6
+#endif
+    ) {
     result = bindlocal(conn, sockfd, addr.family,
                        Curl_ipv6_scope((struct sockaddr*)&addr.sa_addr));
     if(result) {
@@ -1098,7 +1116,7 @@ static CURLcode singleipconnect(struct connectdata *conn,
     default:
       /* unknown error, fallthrough and try another address! */
       infof(data, "Immediate connect fail for %s: %s\n",
-            ipaddress, Curl_strerror(conn,error));
+            ipaddress, Curl_strerror(conn, error));
       data->state.os_errno = error;
 
       /* connect failed */
@@ -1153,8 +1171,11 @@ CURLcode Curl_connecthost(struct connectdata *conn,  /* context */
     conn->tempaddr[0] = conn->tempaddr[0]->ai_next;
   }
 
-  if(conn->tempsock[0] == CURL_SOCKET_BAD)
+  if(conn->tempsock[0] == CURL_SOCKET_BAD) {
+    if(!result)
+      result = CURLE_COULDNT_CONNECT;
     return result;
+  }
 
   data->info.numconnects++; /* to track the number of connections made */
 
@@ -1189,15 +1210,20 @@ curl_socket_t Curl_getconnectinfo(struct SessionHandle *data,
 
   DEBUGASSERT(data);
 
-  /* this only works for an easy handle that has been used for
-     curl_easy_perform()! */
-  if(data->state.lastconnect && data->multi_easy) {
+  /* this works for an easy handle:
+   * - that has been used for curl_easy_perform()
+   * - that is associated with a multi handle, and whose connection
+   *   was detached with CURLOPT_CONNECT_ONLY
+   */
+  if(data->state.lastconnect && (data->multi_easy || data->multi)) {
     struct connectdata *c = data->state.lastconnect;
     struct connfind find;
     find.tofind = data->state.lastconnect;
     find.found = FALSE;
 
-    Curl_conncache_foreach(data->multi_easy->conn_cache, &find, conn_is_conn);
+    Curl_conncache_foreach(data->multi_easy?
+                           &data->multi_easy->conn_cache:
+                           &data->multi->conn_cache, &find, conn_is_conn);
 
     if(!find.found) {
       data->state.lastconnect = NULL;
@@ -1248,8 +1274,10 @@ int Curl_closesocket(struct connectdata *conn,
          accept, then we MUST NOT call the callback but clear the accepted
          status */
       conn->sock_accepted[SECONDARYSOCKET] = FALSE;
-    else
+    else {
+      Curl_multi_closed(conn, sock);
       return conn->fclosesocket(conn->closesocket_client, sock);
+    }
   }
 
   if(conn)
@@ -1344,11 +1372,12 @@ void Curl_conncontrol(struct connectdata *conn, bool closeit,
 #if defined(CURL_DISABLE_VERBOSE_STRINGS)
   (void) reason;
 #endif
+  if(closeit != conn->bits.close) {
+    infof(conn->data, "Marked for [%s]: %s\n", closeit?"closure":"keep alive",
+          reason);
 
-  infof(conn->data, "Marked for [%s]: %s\n", closeit?"closure":"keep alive",
-        reason);
-
-  conn->bits.close = closeit; /* the only place in the source code that should
-                                 assign this bit */
+    conn->bits.close = closeit; /* the only place in the source code that
+                                   should assign this bit */
+  }
 }
 #endif
index 0b9c8d3..22730cf 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -84,44 +84,33 @@ Example set of cookies:
 
 #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
 
-#define _MPRINTF_REPLACE
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "urldata.h"
 #include "cookie.h"
 #include "strequal.h"
 #include "strtok.h"
 #include "sendf.h"
 #include "slist.h"
-#include "curl_memory.h"
 #include "share.h"
 #include "strtoofft.h"
 #include "rawstr.h"
 #include "curl_memrchr.h"
 #include "inet_pton.h"
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 static void freecookie(struct Cookie *co)
 {
-  if(co->expirestr)
-    free(co->expirestr);
-  if(co->domain)
-    free(co->domain);
-  if(co->path)
-    free(co->path);
-  if(co->spath)
-    free(co->spath);
-  if(co->name)
-    free(co->name);
-  if(co->value)
-    free(co->value);
-  if(co->maxage)
-    free(co->maxage);
-  if(co->version)
-    free(co->version);
-
+  free(co->expirestr);
+  free(co->domain);
+  free(co->path);
+  free(co->spath);
+  free(co->name);
+  free(co->value);
+  free(co->maxage);
+  free(co->version);
   free(co);
 }
 
@@ -236,11 +225,14 @@ static char *sanitize_cookie_path(const char *cookie_path)
     return NULL;
 
   /* some stupid site sends path attribute with '"'. */
+  len = strlen(new_path);
   if(new_path[0] == '\"') {
-    memmove((void *)new_path, (const void *)(new_path + 1), strlen(new_path));
+    memmove((void *)new_path, (const void *)(new_path + 1), len);
+    len--;
   }
-  if(new_path[strlen(new_path) - 1] == '\"') {
-    new_path[strlen(new_path) - 1] = 0x0;
+  if(len && (new_path[len - 1] == '\"')) {
+    new_path[len - 1] = 0x0;
+    len--;
   }
 
   /* RFC6265 5.2.4 The Path Attribute */
@@ -252,8 +244,7 @@ static char *sanitize_cookie_path(const char *cookie_path)
   }
 
   /* convert /hoge/ to /hoge */
-  len = strlen(new_path);
-  if(1 < len && new_path[len - 1] == '/') {
+  if(len && new_path[len - 1] == '/') {
     new_path[len - 1] = 0x0;
   }
 
@@ -298,8 +289,7 @@ void Curl_cookie_loadfiles(struct SessionHandle *data)
  */
 static void strstore(char **str, const char *newstr)
 {
-  if(*str)
-    free(*str);
+  free(*str);
   *str = strdup(newstr);
 }
 
@@ -419,7 +409,7 @@ Curl_cookie_add(struct SessionHandle *data,
     do {
       /* we have a <what>=<this> pair or a stand-alone word here */
       name[0]=what[0]=0; /* init the buffers */
-      if(1 <= sscanf(ptr, "%" MAX_NAME_TXT "[^;\r\n =]=%"
+      if(1 <= sscanf(ptr, "%" MAX_NAME_TXT "[^;\r\n =] =%"
                      MAX_COOKIE_LINE_TXT "[^;\r\n]",
                      name, what)) {
         /* Use strstore() below to properly deal with received cookie
@@ -834,21 +824,13 @@ Curl_cookie_add(struct SessionHandle *data,
 
         /* then free all the old pointers */
         free(clist->name);
-        if(clist->value)
-          free(clist->value);
-        if(clist->domain)
-          free(clist->domain);
-        if(clist->path)
-          free(clist->path);
-        if(clist->spath)
-          free(clist->spath);
-        if(clist->expirestr)
-          free(clist->expirestr);
-
-        if(clist->version)
-          free(clist->version);
-        if(clist->maxage)
-          free(clist->maxage);
+        free(clist->value);
+        free(clist->domain);
+        free(clist->path);
+        free(clist->spath);
+        free(clist->expirestr);
+        free(clist->version);
+        free(clist->maxage);
 
         *clist = *co;  /* then store all the new data */
 
@@ -932,7 +914,7 @@ struct CookieInfo *Curl_cookie_init(struct SessionHandle *data,
     fp = NULL;
   }
   else
-    fp = file?fopen(file, "r"):NULL;
+    fp = file?fopen(file, FOPEN_READTEXT):NULL;
 
   c->newsession = newsession; /* new session? */
 
@@ -969,7 +951,7 @@ struct CookieInfo *Curl_cookie_init(struct SessionHandle *data,
   return c;
 
 fail:
-  Curl_safefree(line);
+  free(line);
   if(!inc)
     /* Only clean up if we allocated it here, as the original could still be in
      * use by a share handle */
@@ -1216,8 +1198,7 @@ void Curl_cookie_clearsess(struct CookieInfo *cookies)
 void Curl_cookie_cleanup(struct CookieInfo *c)
 {
   if(c) {
-    if(c->filename)
-      free(c->filename);
+    free(c->filename);
     Curl_cookie_freelist(c->cookies, TRUE);
     free(c); /* free the base struct as well */
   }
@@ -1281,7 +1262,7 @@ static int cookie_output(struct CookieInfo *c, const char *dumphere)
     use_stdout=TRUE;
   }
   else {
-    out = fopen(dumphere, "w");
+    out = fopen(dumphere, FOPEN_WRITETEXT);
     if(!out)
       return 1; /* failure */
   }
@@ -1293,9 +1274,10 @@ static int cookie_output(struct CookieInfo *c, const char *dumphere)
           "# http://curl.haxx.se/docs/http-cookies.html\n"
           "# This file was generated by libcurl! Edit at your own risk.\n\n",
           out);
-    co = c->cookies;
 
-    while(co) {
+    for(co = c->cookies; co; co = co->next) {
+      if(!co->domain)
+        continue;
       format_ptr = get_netscape_format(co);
       if(format_ptr == NULL) {
         fprintf(out, "#\n# Fatal libcurl error\n");
@@ -1305,7 +1287,6 @@ static int cookie_output(struct CookieInfo *c, const char *dumphere)
       }
       fprintf(out, "%s\n", format_ptr);
       free(format_ptr);
-      co=co->next;
     }
   }
 
@@ -1326,10 +1307,9 @@ struct curl_slist *Curl_cookie_list(struct SessionHandle *data)
       (data->cookies->numcookies == 0))
     return NULL;
 
-  c = data->cookies->cookies;
-
-  while(c) {
-    /* fill the list with _all_ the cookies we know */
+  for(c = data->cookies->cookies; c; c = c->next) {
+    if(!c->domain)
+      continue;
     line = get_netscape_format(c);
     if(!line) {
       curl_slist_free_all(list);
@@ -1342,7 +1322,6 @@ struct curl_slist *Curl_cookie_list(struct SessionHandle *data)
       return NULL;
     }
     list = beg;
-    c = c->next;
   }
 
   return list;
index 1e359d5..6627a6b 100644 (file)
 #include "curl_addrinfo.h"
 #include "inet_pton.h"
 #include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
+
 /* The last #include file should be: */
 #include "memdebug.h"
 
-
 /*
  * Curl_freeaddrinfo()
  *
@@ -83,13 +80,8 @@ Curl_freeaddrinfo(Curl_addrinfo *cahead)
   Curl_addrinfo *ca;
 
   for(ca = cahead; ca != NULL; ca = canext) {
-
-    if(ca->ai_addr)
-      free(ca->ai_addr);
-
-    if(ca->ai_canonname)
-      free(ca->ai_canonname);
-
+    free(ca->ai_addr);
+    free(ca->ai_canonname);
     canext = ca->ai_next;
 
     free(ca);
index 87be9c7..5376aa7 100644 (file)
@@ -53,7 +53,7 @@
 #endif
 
 /* Use Windows LDAP implementation */
-#cmakedefine CURL_LDAP_WIN 1
+#cmakedefine USE_WIN32_LDAP 1
 
 /* when not building a shared library */
 #cmakedefine CURL_STATICLIB 1
 /* if OpenSSL is in use */
 #cmakedefine USE_OPENSSL 1
 
-/* if SSL is enabled */
-#cmakedefine USE_SSLEAY 1
-
 /* if Unix domain sockets are enabled  */
 #cmakedefine USE_UNIX_SOCKETS
 
index 1318afc..feb582e 100644 (file)
@@ -69,9 +69,6 @@
 /* Definition to make a library symbol externally visible. */
 #undef CURL_EXTERN_SYMBOL
 
-/* Use Windows LDAP implementation */
-#undef CURL_LDAP_WIN
-
 /* your Entropy Gathering Daemon socket pathname */
 #undef EGD_SOCKET
 
 /* Define to 1 if bool is an available type. */
 #undef HAVE_BOOL_T
 
+/* Define to 1 if using BoringSSL. */
+#undef HAVE_BORINGSSL
+
 /* Define to 1 if you have the clock_gettime function and monotonic timer. */
 #undef HAVE_CLOCK_GETTIME_MONOTONIC
 
 /* Define to 1 if you have the <cyassl/error-ssl.h> header file. */
 #undef HAVE_CYASSL_ERROR_SSL_H
 
+/* Define to 1 if you have the <cyassl/options.h> header file. */
+#undef HAVE_CYASSL_OPTIONS_H
+
+/* Define to 1 if you have the `DES_set_odd_parity' function. */
+#undef HAVE_DES_SET_ODD_PARITY
+
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 
 /* Define to 1 if you have the `resolve' library (-lresolve). */
 #undef HAVE_LIBRESOLVE
 
+/* Define to 1 if using libressl. */
+#undef HAVE_LIBRESSL
+
 /* Define to 1 if you have the <librtmp/rtmp.h> header file. */
 #undef HAVE_LIBRTMP_RTMP_H
 
 /* Define to 1 if you have the <openssl/rsa.h> header file. */
 #undef HAVE_OPENSSL_RSA_H
 
+/* if you have the function SRP_Calc_client_key */
+#undef HAVE_OPENSSL_SRP
+
 /* Define to 1 if you have the <openssl/ssl.h> header file. */
 #undef HAVE_OPENSSL_SSL_H
 
 /* Define to 1 if you have the <socket.h> header file. */
 #undef HAVE_SOCKET_H
 
-/* if you have the function SRP_Calc_client_key */
-#undef HAVE_SSLEAY_SRP
-
 /* Define to 1 if you have the `SSLv2_client_method' function. */
 #undef HAVE_SSLV2_CLIENT_METHOD
 
 /* to enable Windows native SSL/TLS support */
 #undef USE_SCHANNEL
 
-/* if SSL is enabled */
-#undef USE_SSLEAY
-
 /* if you want POSIX threaded DNS lookup */
 #undef USE_THREADS_POSIX
 
    */
 #undef USE_WIN32_LARGE_FILES
 
+/* Use Windows LDAP implementation */
+#undef USE_WIN32_LDAP
+
 /* Define to 1 if you are building a Windows target without large file
    support. */
 #undef USE_WIN32_SMALL_FILES
 /* to enable SSPI support */
 #undef USE_WINDOWS_SSPI
 
-/* Define to 1 if using yaSSL in OpenSSL compatibility mode. */
-#undef USE_YASSLEMUL
-
 /* Version number of package */
 #undef VERSION
 
diff --git a/lib/curl_des.c b/lib/curl_des.c
new file mode 100644 (file)
index 0000000..42c1df9
--- /dev/null
@@ -0,0 +1,63 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2015, Steve Holme, <steve_holme@hotmail.com>.
+ *
+ * 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.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#if defined(USE_NTLM) && (!defined(USE_OPENSSL) || defined(HAVE_BORINGSSL))
+
+#include "curl_des.h"
+
+/*
+ * Curl_des_set_odd_parity()
+ *
+ * This is used to apply odd parity to the given byte array. It is typically
+ * used by when a cryptography engines doesn't have it's own version.
+ *
+ * The function is a port of the Java based oddParity() function over at:
+ *
+ * http://davenport.sourceforge.net/ntlm.html
+ *
+ * Parameters:
+ *
+ * bytes       [in/out] - The data whose parity bits are to be adjusted for
+ *                        odd parity.
+ * len         [out]    - The length of the data.
+ */
+void Curl_des_set_odd_parity(unsigned char *bytes, size_t len)
+{
+  size_t i;
+
+  for(i = 0; i < len; i++) {
+    unsigned char b = bytes[i];
+
+    bool needs_parity = (((b >> 7) ^ (b >> 6) ^ (b >> 5) ^
+                          (b >> 4) ^ (b >> 3) ^ (b >> 2) ^
+                          (b >> 1)) & 0x01) == 0;
+
+    if(needs_parity)
+      bytes[i] |= 0x01;
+    else
+      bytes[i] &= 0xfe;
+  }
+}
+
+#endif /* USE_NTLM && (!USE_OPENSSL || HAVE_BORINGSSL) */
diff --git a/lib/curl_des.h b/lib/curl_des.h
new file mode 100644 (file)
index 0000000..b855db4
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef HEADER_CURL_DES_H
+#define HEADER_CURL_DES_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2015, Steve Holme, <steve_holme@hotmail.com>.
+ *
+ * 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.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#if defined(USE_NTLM) && (!defined(USE_OPENSSL) || defined(HAVE_BORINGSSL))
+
+/* Applies odd parity to the given byte array */
+void Curl_des_set_odd_parity(unsigned char *bytes, size_t length);
+
+#endif /* USE_NTLM && (!USE_OPENSSL || HAVE_BORINGSSL) */
+
+#endif /* HEADER_CURL_DES_H */
index 14a2883..bcd66ed 100644 (file)
@@ -62,6 +62,7 @@ unsigned int Curl_read32_le(unsigned char *buf)
          ((unsigned int)buf[2] << 16) | ((unsigned int)buf[3] << 24);
 }
 
+#if (CURL_SIZEOF_CURL_OFF_T > 4)
 /*
  * Curl_read64_le()
  *
@@ -97,6 +98,8 @@ unsigned __int64 Curl_read64_le(unsigned char *buf)
 }
 #endif
 
+#endif /* CURL_SIZEOF_CURL_OFF_T > 4 */
+
 /*
  * Curl_read16_be()
  *
@@ -135,6 +138,7 @@ unsigned int Curl_read32_be(unsigned char *buf)
          ((unsigned int)buf[2] << 8) | ((unsigned int)buf[3]);
 }
 
+#if (CURL_SIZEOF_CURL_OFF_T > 4)
 /*
  * Curl_read64_be()
  *
@@ -170,6 +174,8 @@ unsigned __int64 Curl_read64_be(unsigned char *buf)
 }
 #endif
 
+#endif /* CURL_SIZEOF_CURL_OFF_T > 4 */
+
 /*
  * Curl_write16_le()
  *
@@ -227,4 +233,4 @@ void Curl_write64_le(const __int64 value, unsigned char *buffer)
   Curl_write32_le((int)value, buffer);
   Curl_write32_le((int)(value >> 32), buffer + 4);
 }
-#endif
+#endif /* CURL_SIZEOF_CURL_OFF_T > 4 */
index 63f67b9..1e53918 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "curl_setup.h"
 
 #include "curl_fnmatch.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "curl_memory.h"
+
 /* The last #include file should be: */
 #include "memdebug.h"
 
index 2cd14ff..9baece5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2011 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -27,9 +27,9 @@
 #include "curl_gssapi.h"
 #include "sendf.h"
 
-static const char spnego_oid_bytes[] = "\x2b\x06\x01\x05\x05\x02";
+static char spnego_oid_bytes[] = "\x2b\x06\x01\x05\x05\x02";
 gss_OID_desc Curl_spnego_mech_oid = { 6, &spnego_oid_bytes };
-static const char krb5_oid_bytes[] = "\x2a\x86\x48\x86\xf7\x12\x01\x02\x02";
+static char krb5_oid_bytes[] = "\x2a\x86\x48\x86\xf7\x12\x01\x02\x02";
 gss_OID_desc Curl_krb5_mech_oid = { 9, &krb5_oid_bytes };
 
 OM_uint32 Curl_gss_init_sec_context(
index 35e4b24..19aab64 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2011 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -59,6 +59,17 @@ OM_uint32 Curl_gss_init_sec_context(
 void Curl_gss_log_error(struct SessionHandle *data, OM_uint32 status,
                         const char *prefix);
 
+/* Provide some definitions missing in old headers */
+#ifdef HAVE_OLD_GSSMIT
+#define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
+#define NCOMPAT 1
+#endif
+
+/* Define our privacy and integrity protection values */
+#define GSSAUTH_P_NONE      1
+#define GSSAUTH_P_INTEGRITY 2
+#define GSSAUTH_P_PRIVACY   4
+
 #endif /* HAVE_GSSAPI */
 
 #endif /* HEADER_CURL_GSSAPI_H */
index e3cdc72..bc744cc 100644 (file)
@@ -28,6 +28,9 @@
  * File curl_memory.h must be included by _all_ *.c source files
  * that use memory related functions strdup, malloc, calloc, realloc
  * or free, and given source file is used to build libcurl library.
+ * It should be included immediately before memdebug.h as the last files
+ * included to avoid undesired interaction with other memory function
+ * headers in dependent libraries.
  *
  * There is nearly no exception to above rule. All libcurl source
  * files in 'lib' subdirectory as well as those living deep inside
index a71c2bb..6722c6a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  ***************************************************************************/
 
 #include "curl_setup.h"
-
 #include "curl_memrchr.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "curl_memory.h"
+
 /* The last #include file should be: */
 #include "memdebug.h"
 
index 6e65722..403d005 100644 (file)
 #include "curl_setup.h"
 
 #if defined(USE_WIN32_IDN) || ((defined(USE_WINDOWS_SSPI) || \
-                                defined(CURL_LDAP_WIN)) && defined(UNICODE))
+                                defined(USE_WIN32_LDAP)) && defined(UNICODE))
 
  /*
   * MultiByte conversions using Windows kernel32 library.
   */
 
 #include "curl_multibyte.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "curl_memory.h"
+
 /* The last #include file should be: */
 #include "memdebug.h"
 
@@ -50,7 +47,8 @@ wchar_t *Curl_convert_UTF8_to_wchar(const char *str_utf8)
       if(str_w) {
         if(MultiByteToWideChar(CP_UTF8, 0, str_utf8, -1, str_w,
                                str_w_len) == 0) {
-          Curl_safefree(str_w);
+          free(str_w);
+          return NULL;
         }
       }
     }
@@ -71,7 +69,8 @@ char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w)
       if(str_utf8) {
         if(WideCharToMultiByte(CP_UTF8, 0, str_w, -1, str_utf8, str_utf8_len,
                                NULL, FALSE) == 0) {
-          Curl_safefree(str_utf8);
+          free(str_utf8);
+          return NULL;
         }
       }
     }
@@ -80,4 +79,4 @@ char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w)
   return str_utf8;
 }
 
-#endif /* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || CURL_LDAP_WIN) && UNICODE) */
+#endif /* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || USE_WIN32_LDAP) && UNICODE) */
index d024755..dc7ed4c 100644 (file)
@@ -24,7 +24,7 @@
 #include "curl_setup.h"
 
 #if defined(USE_WIN32_IDN) || ((defined(USE_WINDOWS_SSPI) || \
-                                defined(CURL_LDAP_WIN)) && defined(UNICODE))
+                                defined(USE_WIN32_LDAP)) && defined(UNICODE))
 
  /*
   * MultiByte conversions using Windows kernel32 library.
 wchar_t *Curl_convert_UTF8_to_wchar(const char *str_utf8);
 char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w);
 
-#endif /* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || CURL_LDAP_WIN) && UNICODE) */
+#endif /* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || USE_WIN32_LDAP) && UNICODE) */
 
 
 #if defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI) || \
-    defined(CURL_LDAP_WIN)
+    defined(USE_WIN32_LDAP)
 
 /*
  * Macros Curl_convert_UTF8_to_tchar(), Curl_convert_tchar_to_UTF8()
@@ -87,6 +87,6 @@ typedef union {
 
 #endif /* UNICODE */
 
-#endif /* USE_WIN32_IDN || USE_WINDOWS_SSPI || CURL_LDAP_WIN */
+#endif /* USE_WIN32_IDN || USE_WINDOWS_SSPI || USE_WIN32_LDAP */
 
 #endif /* HEADER_CURL_MULTIBYTE_H */
index c77f055..f9ddf50 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "curl_ntlm_wb.h"
 #include "curl_sasl.h"
 #include "url.h"
-#include "curl_memory.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 
 #if defined(USE_NSS)
 #include "vtls/nssg.h"
@@ -52,7 +49,8 @@
 #include "curl_sspi.h"
 #endif
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 #if DEBUG_ME
@@ -86,7 +84,11 @@ CURLcode Curl_input_ntlm(struct connectdata *conn,
       ntlm->state = NTLMSTATE_TYPE2; /* We got a type-2 message */
     }
     else {
-      if(ntlm->state == NTLMSTATE_TYPE3) {
+      if(ntlm->state == NTLMSTATE_LAST) {
+        infof(conn->data, "NTLM auth restarted\n");
+        Curl_http_ntlm_cleanup(conn);
+      }
+      else if(ntlm->state == NTLMSTATE_TYPE3) {
         infof(conn->data, "NTLM handshake rejected\n");
         Curl_http_ntlm_cleanup(conn);
         ntlm->state = NTLMSTATE_NONE;
@@ -175,7 +177,7 @@ CURLcode Curl_output_ntlm(struct connectdata *conn, bool proxy)
       return result;
 
     if(base64) {
-      Curl_safefree(*allocuserpwd);
+      free(*allocuserpwd);
       *allocuserpwd = aprintf("%sAuthorization: NTLM %s\r\n",
                               proxy ? "Proxy-" : "",
                               base64);
@@ -195,7 +197,7 @@ CURLcode Curl_output_ntlm(struct connectdata *conn, bool proxy)
       return result;
 
     if(base64) {
-      Curl_safefree(*allocuserpwd);
+      free(*allocuserpwd);
       *allocuserpwd = aprintf("%sAuthorization: NTLM %s\r\n",
                               proxy ? "Proxy-" : "",
                               base64);
@@ -213,6 +215,9 @@ CURLcode Curl_output_ntlm(struct connectdata *conn, bool proxy)
   case NTLMSTATE_TYPE3:
     /* connection is already authenticated,
      * don't send a header in future requests */
+    ntlm->state = NTLMSTATE_LAST;
+
+  case NTLMSTATE_LAST:
     Curl_safefree(*allocuserpwd);
     authp->done = TRUE;
     break;
index 2aaea4d..2e5b573 100644 (file)
@@ -33,7 +33,7 @@
 
 #if !defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO)
 
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
 
 #  ifdef USE_OPENSSL
 #    include <openssl/des.h>
 #include "urldata.h"
 #include "non-ascii.h"
 #include "rawstr.h"
-#include "curl_memory.h"
 #include "curl_ntlm_core.h"
 #include "curl_md5.h"
 #include "curl_hmac.h"
 #include "warnless.h"
 #include "curl_endian.h"
+#include "curl_des.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 #define NTLM_HMAC_MD5_LEN     (16)
@@ -133,7 +132,7 @@ static void extend_key_56_to_64(const unsigned char *key_56, char *key)
   key[7] = (unsigned char) ((key_56[6] << 1) & 0xFF);
 }
 
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
 /*
  * Turns a 56 bit key into the 64 bit, odd parity key and sets the key.  The
  * key schedule ks is also set.
@@ -143,8 +142,17 @@ static void setup_des_key(const unsigned char *key_56,
 {
   DES_cblock key;
 
+  /* Expand the 56-bit key to 64-bits */
   extend_key_56_to_64(key_56, (char *) key);
+
+  /* Set the key parity to odd */
+#if defined(HAVE_BORINGSSL)
+  Curl_des_set_odd_parity((unsigned char *) &key, sizeof(key));
+#else
   DES_set_odd_parity(&key);
+#endif
+
+  /* Set the key */
   DES_set_key(&key, ks);
 }
 
@@ -154,8 +162,15 @@ static void setup_des_key(const unsigned char *key_56,
                           struct des_ctx *des)
 {
   char key[8];
+
+  /* Expand the 56-bit key to 64-bits */
   extend_key_56_to_64(key_56, key);
-  des_set_key(des, (const uint8_t*)key);
+
+  /* Set the key parity to odd */
+  Curl_des_set_odd_parity((unsigned char *) key, sizeof(key));
+
+  /* Set the key */
+  des_set_key(des, (const uint8_t *) key);
 }
 
 #elif defined(USE_GNUTLS)
@@ -167,8 +182,15 @@ static void setup_des_key(const unsigned char *key_56,
                           gcry_cipher_hd_t *des)
 {
   char key[8];
+
+  /* Expand the 56-bit key to 64-bits */
   extend_key_56_to_64(key_56, key);
-  gcry_cipher_setkey(*des, key, 8);
+
+  /* Set the key parity to odd */
+  Curl_des_set_odd_parity((unsigned char *) key, sizeof(key));
+
+  /* Set the key */
+  gcry_cipher_setkey(*des, key, sizeof(key));
 }
 
 #elif defined(USE_NSS)
@@ -196,16 +218,21 @@ static bool encrypt_des(const unsigned char *in, unsigned char *out,
   if(!slot)
     return FALSE;
 
-  /* expand the 56 bit key to 64 bit and wrap by NSS */
+  /* Expand the 56-bit key to 64-bits */
   extend_key_56_to_64(key_56, key);
+
+  /* Set the key parity to odd */
+  Curl_des_set_odd_parity((unsigned char *) key, sizeof(key));
+
+  /* Import the key */
   key_item.data = (unsigned char *)key;
-  key_item.len = /* hard-wired */ 8;
+  key_item.len = sizeof(key);
   symkey = PK11_ImportSymKey(slot, mech, PK11_OriginUnwrap, CKA_ENCRYPT,
                              &key_item, NULL);
   if(!symkey)
     goto fail;
 
-  /* create DES encryption context */
+  /* Create the DES encryption context */
   param = PK11_ParamFromIV(mech, /* no IV in ECB mode */ NULL);
   if(!param)
     goto fail;
@@ -213,7 +240,7 @@ static bool encrypt_des(const unsigned char *in, unsigned char *out,
   if(!ctx)
     goto fail;
 
-  /* perform the encryption */
+  /* Perform the encryption */
   if(SECSuccess == PK11_CipherOp(ctx, out, &out_len, /* outbuflen */ 8,
                                  (unsigned char *)in, /* inbuflen */ 8)
       && SECSuccess == PK11_Finalize(ctx))
@@ -240,10 +267,17 @@ static bool encrypt_des(const unsigned char *in, unsigned char *out,
   size_t out_len;
   CCCryptorStatus err;
 
+  /* Expand the 56-bit key to 64-bits */
   extend_key_56_to_64(key_56, key);
+
+  /* Set the key parity to odd */
+  Curl_des_set_odd_parity((unsigned char *) key, sizeof(key));
+
+  /* Perform the encryption */
   err = CCCrypt(kCCEncrypt, kCCAlgorithmDES, kCCOptionECBMode, key,
                 kCCKeySizeDES, NULL, in, 8 /* inbuflen */, out,
                 8 /* outbuflen */, &out_len);
+
   return err == kCCSuccess;
 }
 
@@ -255,10 +289,19 @@ static bool encrypt_des(const unsigned char *in, unsigned char *out,
   char key[8];
   _CIPHER_Control_T ctl;
 
+  /* Setup the cipher control structure */
   ctl.Func_ID = ENCRYPT_ONLY;
-  ctl.Data_Len = 8;
+  ctl.Data_Len = sizeof(key);
+
+  /* Expand the 56-bit key to 64-bits */
   extend_key_56_to_64(key_56, ctl.Crypto_Key);
+
+  /* Set the key parity to odd */
+  Curl_des_set_odd_parity((unsigned char *) ctl.Crypto_Key, ctl.Data_Len);
+
+  /* Perform the encryption */
   _CIPHER((_SPCPTR *) &out, &ctl, (_SPCPTR *) &in);
+
   return TRUE;
 }
 
@@ -281,13 +324,19 @@ static bool encrypt_des(const unsigned char *in, unsigned char *out,
                           CRYPT_VERIFYCONTEXT))
     return FALSE;
 
+  /* Setup the key blob structure */
   memset(&blob, 0, sizeof(blob));
-  extend_key_56_to_64(key_56, blob.key);
   blob.hdr.bType = PLAINTEXTKEYBLOB;
   blob.hdr.bVersion = 2;
   blob.hdr.aiKeyAlg = CALG_DES;
   blob.len = sizeof(blob.key);
 
+  /* Expand the 56-bit key to 64-bits */
+  extend_key_56_to_64(key_56, blob.key);
+
+  /* Set the key parity to odd */
+  Curl_des_set_odd_parity((unsigned char *) blob.key, sizeof(blob.key));
+
   /* Import the key */
   if(!CryptImportKey(hprov, (BYTE *) &blob, sizeof(blob), 0, 0, &hkey)) {
     CryptReleaseContext(hprov, 0);
@@ -317,7 +366,7 @@ void Curl_ntlm_core_lm_resp(const unsigned char *keys,
                             const unsigned char *plaintext,
                             unsigned char *results)
 {
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
   DES_key_schedule ks;
 
   setup_des_key(keys, DESKEY(ks));
@@ -392,7 +441,7 @@ CURLcode Curl_ntlm_core_mk_lm_hash(struct SessionHandle *data,
   {
     /* Create LanManager hashed password. */
 
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
     DES_key_schedule ks;
 
     setup_des_key(pw, DESKEY(ks));
@@ -459,6 +508,7 @@ static void ascii_uppercase_to_unicode_le(unsigned char *dest,
 
 /*
  * Set up nt hashed passwords
+ * @unittest: 1600
  */
 CURLcode Curl_ntlm_core_mk_nt_hash(struct SessionHandle *data,
                                    const char *password,
@@ -482,7 +532,7 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct SessionHandle *data,
 
   {
     /* Create NT hashed password. */
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
     MD4_CTX MD4pw;
     MD4_Init(&MD4pw);
     MD4_Update(&MD4pw, pw, 2 * len);
@@ -568,7 +618,7 @@ CURLcode Curl_ntlm_core_mk_ntlmv2_hash(const char *user, size_t userlen,
   result = Curl_hmac_md5(ntlmhash, 16, identity, curlx_uztoui(identity_len),
                          ntlmv2hash);
 
-  Curl_safefree(identity);
+  free(identity);
 
   return result;
 }
@@ -655,8 +705,7 @@ CURLcode Curl_ntlm_core_mk_ntlmv2_resp(unsigned char *ntlmv2hash,
   result = Curl_hmac_md5(ntlmv2hash, NTLM_HMAC_MD5_LEN, ptr + 8,
                          NTLMv2_BLOB_LEN + 8, hmac_output);
   if(result) {
-    Curl_safefree(ptr);
-
+    free(ptr);
     return result;
   }
 
index c168966..3a76359 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -28,7 +28,7 @@
 
 #if !defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO)
 
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
 #  if !defined(OPENSSL_VERSION_NUMBER) && \
       !defined(HEADER_SSL_H) && !defined(HEADER_MD5_H)
 #    error "curl_ntlm_core.h shall not be included before OpenSSL headers."
index 865954d..7f07dec 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -41,7 +41,6 @@
 #include "curl_gethostname.h"
 #include "curl_multibyte.h"
 #include "warnless.h"
-#include "curl_memory.h"
 
 #include "vtls/vtls.h"
 
 #include "curl_ntlm_msgs.h"
 #include "curl_sasl.h"
 #include "curl_endian.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /* "NTLMSSP" signature is always in ASCII regardless of the platform */
@@ -593,11 +591,11 @@ CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data,
     memcpy(tmp, &ntlm->nonce[0], 8);
     memcpy(tmp + 8, entropy, 8);
 
-    Curl_ssl_md5sum(tmp, 16, md5sum, MD5_DIGEST_LENGTH);
-
-    /* We shall only use the first 8 bytes of md5sum, but the des
-       code in Curl_ntlm_core_lm_resp only encrypt the first 8 bytes */
-    result = Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer);
+    result = Curl_ssl_md5sum(tmp, 16, md5sum, MD5_DIGEST_LENGTH);
+    if(!result)
+      /* We shall only use the first 8 bytes of md5sum, but the des code in
+         Curl_ntlm_core_lm_resp only encrypt the first 8 bytes */
+      result = Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer);
     if(result)
       return result;
 
@@ -760,7 +758,7 @@ CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data,
     ntlm_print_hex(stderr, (char *)&ntlmbuf[ntrespoff], ntresplen);
   });
 
-  Curl_safefree(ntlmv2resp);/* Free the dynamic buffer allocated for NTLMv2 */
+  free(ntlmv2resp);/* Free the dynamic buffer allocated for NTLMv2 */
 
 #endif
 
index 5e2d79c..b2a5fb3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "curl_ntlm_wb.h"
 #include "url.h"
 #include "strerror.h"
-#include "curl_memory.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 #if DEBUG_ME
@@ -107,9 +105,9 @@ void Curl_ntlm_wb_cleanup(struct connectdata *conn)
     conn->ntlm_auth_hlpr_pid = 0;
   }
 
-  Curl_safefree(conn->challenge_header);
+  free(conn->challenge_header);
   conn->challenge_header = NULL;
-  Curl_safefree(conn->response_header);
+  free(conn->response_header);
   conn->response_header = NULL;
 }
 
@@ -246,13 +244,13 @@ static CURLcode ntlm_wb_init(struct connectdata *conn, const char *userp)
   sclose(sockfds[1]);
   conn->ntlm_auth_hlpr_socket = sockfds[0];
   conn->ntlm_auth_hlpr_pid = child_pid;
-  Curl_safefree(domain);
-  Curl_safefree(ntlm_auth_alloc);
+  free(domain);
+  free(ntlm_auth_alloc);
   return CURLE_OK;
 
 done:
-  Curl_safefree(domain);
-  Curl_safefree(ntlm_auth_alloc);
+  free(domain);
+  free(ntlm_auth_alloc);
   return CURLE_REMOTE_ACCESS_DENIED;
 }
 
@@ -308,7 +306,7 @@ static CURLcode ntlm_wb_response(struct connectdata *conn,
   if(state == NTLMSTATE_TYPE1 &&
      len_out == 3 &&
      buf[0] == 'P' && buf[1] == 'W')
-    return CURLE_REMOTE_ACCESS_DENIED;
+    goto done;
   /* invalid response */
   if(len_out < 4)
     goto done;
@@ -391,12 +389,12 @@ CURLcode Curl_output_ntlm_wb(struct connectdata *conn,
     if(res)
       return res;
 
-    Curl_safefree(*allocuserpwd);
+    free(*allocuserpwd);
     *allocuserpwd = aprintf("%sAuthorization: %s\r\n",
                             proxy ? "Proxy-" : "",
                             conn->response_header);
     DEBUG_OUT(fprintf(stderr, "**** Header %s\n ", *allocuserpwd));
-    Curl_safefree(conn->response_header);
+    free(conn->response_header);
     conn->response_header = NULL;
     break;
   case NTLMSTATE_TYPE2:
@@ -409,7 +407,7 @@ CURLcode Curl_output_ntlm_wb(struct connectdata *conn,
     if(res)
       return res;
 
-    Curl_safefree(*allocuserpwd);
+    free(*allocuserpwd);
     *allocuserpwd = aprintf("%sAuthorization: %s\r\n",
                             proxy ? "Proxy-" : "",
                             conn->response_header);
@@ -421,10 +419,8 @@ CURLcode Curl_output_ntlm_wb(struct connectdata *conn,
   case NTLMSTATE_TYPE3:
     /* connection is already authenticated,
      * don't send a header in future requests */
-    if(*allocuserpwd) {
-      free(*allocuserpwd);
-      *allocuserpwd=NULL;
-    }
+    free(*allocuserpwd);
+    *allocuserpwd=NULL;
     authp->done = TRUE;
     break;
   }
diff --git a/lib/curl_printf.h b/lib/curl_printf.h
new file mode 100644 (file)
index 0000000..086923f
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef HEADER_CURL_PRINTF_H
+#define HEADER_CURL_PRINTF_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at 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 header should be included by ALL code in libcurl that uses any
+ * *rintf() functions.
+ */
+
+#include <curl/mprintf.h>
+
+# undef printf
+# undef fprintf
+# undef snprintf
+# undef vprintf
+# undef vfprintf
+# undef vsnprintf
+# undef aprintf
+# undef vaprintf
+# define printf curl_mprintf
+# define fprintf curl_mfprintf
+# define snprintf curl_msnprintf
+# define vprintf curl_mvprintf
+# define vfprintf curl_mvfprintf
+# define vsnprintf curl_mvsnprintf
+# define aprintf curl_maprintf
+# define vaprintf curl_mvaprintf
+
+/* We define away the sprintf functions unconditonally since we don't want
+   internal code to be using them, intentionally or by mistake!*/
+# undef sprintf
+# undef vsprintf
+# define sprintf sprintf_was_used
+# define vsprintf vsprintf_was_used
+
+#endif /* HEADER_CURL_PRINTF_H */
index d1d79c3..2938972 100644 (file)
@@ -5,7 +5,7 @@
  *                | (__| |_| |  _ <| |___
  *                 \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com>
  *
  * This software is licensed as described in the file COPYING, which
 #include "warnless.h"
 #include <curl/curl.h>
 #include <librtmp/rtmp.h>
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -201,7 +197,7 @@ static CURLcode rtmp_setup_connection(struct connectdata *conn)
 static CURLcode rtmp_connect(struct connectdata *conn, bool *done)
 {
   RTMP *r = conn->proto.generic;
-  SET_RCVTIMEO(tv,10);
+  SET_RCVTIMEO(tv, 10);
 
   r->m_sb.sb_socket = conn->sock[FIRSTSOCKET];
 
index b944aa2..68646bc 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "curl_hmac.h"
 #include "curl_sasl.h"
 #include "warnless.h"
-#include "curl_memory.h"
 #include "strtok.h"
+#include "strequal.h"
 #include "rawstr.h"
+#include "sendf.h"
 #include "non-ascii.h" /* included for Curl_convert_... prototypes */
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
+/* Supported mechanisms */
+const struct {
+  const char   *name;  /* Name */
+  size_t        len;   /* Name length */
+  unsigned int  bit;   /* Flag bit */
+} mechtable[] = {
+  { "LOGIN",      5,  SASL_MECH_LOGIN },
+  { "PLAIN",      5,  SASL_MECH_PLAIN },
+  { "CRAM-MD5",   8,  SASL_MECH_CRAM_MD5 },
+  { "DIGEST-MD5", 10, SASL_MECH_DIGEST_MD5 },
+  { "GSSAPI",     6,  SASL_MECH_GSSAPI },
+  { "EXTERNAL",   8,  SASL_MECH_EXTERNAL },
+  { "NTLM",       4,  SASL_MECH_NTLM },
+  { "XOAUTH2",    7,  SASL_MECH_XOAUTH2 },
+  { ZERO_NULL,    0,  0 }
+};
+
 #if !defined(CURL_DISABLE_CRYPTO_AUTH) && !defined(USE_WINDOWS_SSPI)
 #define DIGEST_QOP_VALUE_AUTH             (1 << 0)
 #define DIGEST_QOP_VALUE_AUTH_INT         (1 << 1)
@@ -59,9 +76,6 @@
 #define DIGEST_QOP_VALUE_STRING_AUTH_INT  "auth-int"
 #define DIGEST_QOP_VALUE_STRING_AUTH_CONF "auth-conf"
 
-#define DIGEST_MAX_VALUE_LENGTH           256
-#define DIGEST_MAX_CONTENT_LENGTH         1024
-
 /* The CURL_OUTPUT_DIGEST_CONV macro below is for non-ASCII machines.
    It converts digest text to ASCII so the MD5 will be correct for
    what ultimately goes over the network.
     return result; \
   }
 
+#endif
+
+#if !defined(CURL_DISABLE_CRYPTO_AUTH)
 /*
- * Return 0 on success and then the buffers are filled in fine.
+ * Returns 0 on success and then the buffers are filled in fine.
  *
  * Non-zero means failure to parse.
  */
-static int sasl_digest_get_pair(const char *str, char *value, char *content,
-                                const char **endptr)
+int Curl_sasl_digest_get_pair(const char *str, char *value, char *content,
+                              const char **endptr)
 {
   int c;
   bool starts_with_quote = FALSE;
@@ -140,7 +157,9 @@ static int sasl_digest_get_pair(const char *str, char *value, char *content,
 
   return 0; /* all is fine! */
 }
+#endif
 
+#if !defined(CURL_DISABLE_CRYPTO_AUTH) && !defined(USE_WINDOWS_SSPI)
 /* Convert md5 chunk to RFC2617 (section 3.1.3) -suitable ascii string*/
 static void sasl_digest_md5_to_ascii(unsigned char *source, /* 16 bytes */
                                      unsigned char *dest) /* 33 bytes */
@@ -234,7 +253,7 @@ static CURLcode sasl_digest_get_qop_values(const char *options, int *value)
     token = strtok_r(NULL, ",", &tok_buf);
   }
 
-  Curl_safefree(tmp);
+  free(tmp);
 
   return CURLE_OK;
 }
@@ -248,7 +267,7 @@ static CURLcode sasl_digest_get_qop_values(const char *options, int *value)
  *
  * Parameters:
  *
- * serivce  [in] - The service type such as www, smtp, pop or imap.
+ * service  [in] - The service type such as www, smtp, pop or imap.
  * host     [in] - The host name or realm.
  *
  * Returns a pointer to the newly allocated SPN.
@@ -261,7 +280,7 @@ char *Curl_sasl_build_spn(const char *service, const char *host)
 #endif
 
 /*
- * Curl_sasl_create_plain_message()
+ * sasl_create_plain_message()
  *
  * This is used to generate an already encoded PLAIN message ready
  * for sending to the recipient.
@@ -277,10 +296,10 @@ char *Curl_sasl_build_spn(const char *service, const char *host)
  *
  * Returns CURLE_OK on success.
  */
-CURLcode Curl_sasl_create_plain_message(struct SessionHandle *data,
-                                        const char *userp,
-                                        const char *passwdp,
-                                        char **outptr, size_t *outlen)
+static CURLcode sasl_create_plain_message(struct SessionHandle *data,
+                                          const char *userp,
+                                          const char *passwdp,
+                                          char **outptr, size_t *outlen)
 {
   CURLcode result;
   char *plainauth;
@@ -307,12 +326,12 @@ CURLcode Curl_sasl_create_plain_message(struct SessionHandle *data,
   /* Base64 encode the reply */
   result = Curl_base64_encode(data, plainauth, 2 * ulen + plen + 2, outptr,
                               outlen);
-  Curl_safefree(plainauth);
+  free(plainauth);
   return result;
 }
 
 /*
- * Curl_sasl_create_login_message()
+ * sasl_create_login_message()
  *
  * This is used to generate an already encoded LOGIN message containing the
  * user name or password ready for sending to the recipient.
@@ -327,9 +346,9 @@ CURLcode Curl_sasl_create_plain_message(struct SessionHandle *data,
  *
  * Returns CURLE_OK on success.
  */
-CURLcode Curl_sasl_create_login_message(struct SessionHandle *data,
-                                        const char *valuep, char **outptr,
-                                        size_t *outlen)
+static CURLcode sasl_create_login_message(struct SessionHandle *data,
+                                          const char *valuep, char **outptr,
+                                          size_t *outlen)
 {
   size_t vlen = strlen(valuep);
 
@@ -349,9 +368,33 @@ CURLcode Curl_sasl_create_login_message(struct SessionHandle *data,
   return Curl_base64_encode(data, valuep, vlen, outptr, outlen);
 }
 
+/*
+ * sasl_create_external_message()
+ *
+ * This is used to generate an already encoded EXTERNAL message containing
+ * the user name ready for sending to the recipient.
+ *
+ * Parameters:
+ *
+ * data    [in]     - The session handle.
+ * user    [in]     - The user name.
+ * outptr  [in/out] - The address where a pointer to newly allocated memory
+ *                    holding the result will be stored upon completion.
+ * outlen  [out]    - The length of the output message.
+ *
+ * Returns CURLE_OK on success.
+ */
+static CURLcode sasl_create_external_message(struct SessionHandle *data,
+                                             const char *user, char **outptr,
+                                             size_t *outlen)
+{
+  /* This is the same formatting as the login message. */
+  return sasl_create_login_message(data, user, outptr, outlen);
+}
+
 #ifndef CURL_DISABLE_CRYPTO_AUTH
  /*
- * Curl_sasl_decode_cram_md5_message()
+ * sasl_decode_cram_md5_message()
  *
  * This is used to decode an already encoded CRAM-MD5 challenge message.
  *
@@ -364,8 +407,8 @@ CURLcode Curl_sasl_create_login_message(struct SessionHandle *data,
  *
  * Returns CURLE_OK on success.
  */
-CURLcode Curl_sasl_decode_cram_md5_message(const char *chlg64, char **outptr,
-                                           size_t *outlen)
+static CURLcode sasl_decode_cram_md5_message(const char *chlg64, char **outptr,
+                                             size_t *outlen)
 {
   CURLcode result = CURLE_OK;
   size_t chlg64len = strlen(chlg64);
@@ -381,7 +424,7 @@ CURLcode Curl_sasl_decode_cram_md5_message(const char *chlg64, char **outptr,
  }
 
  /*
- * Curl_sasl_create_cram_md5_message()
+ * sasl_create_cram_md5_message()
  *
  * This is used to generate an already encoded CRAM-MD5 response message ready
  * for sending to the recipient.
@@ -398,11 +441,11 @@ CURLcode Curl_sasl_decode_cram_md5_message(const char *chlg64, char **outptr,
  *
  * Returns CURLE_OK on success.
  */
-CURLcode Curl_sasl_create_cram_md5_message(struct SessionHandle *data,
-                                           const char *chlg,
-                                           const char *userp,
-                                           const char *passwdp,
-                                           char **outptr, size_t *outlen)
+static CURLcode sasl_create_cram_md5_message(struct SessionHandle *data,
+                                             const char *chlg,
+                                             const char *userp,
+                                             const char *passwdp,
+                                             char **outptr, size_t *outlen)
 {
   CURLcode result = CURLE_OK;
   size_t chlglen = 0;
@@ -440,7 +483,7 @@ CURLcode Curl_sasl_create_cram_md5_message(struct SessionHandle *data,
   /* Base64 encode the response */
   result = Curl_base64_encode(data, response, 0, outptr, outlen);
 
-  Curl_safefree(response);
+  free(response);
 
   return result;
 }
@@ -490,7 +533,7 @@ static CURLcode sasl_decode_digest_md5_message(const char *chlg64,
 
   /* Retrieve nonce string from the challenge */
   if(!sasl_digest_get_key_value((char *)chlg, "nonce=\"", nonce, nlen, '\"')) {
-    Curl_safefree(chlg);
+    free(chlg);
     return CURLE_BAD_CONTENT_ENCODING;
   }
 
@@ -502,17 +545,17 @@ static CURLcode sasl_decode_digest_md5_message(const char *chlg64,
 
   /* Retrieve algorithm string from the challenge */
   if(!sasl_digest_get_key_value((char *)chlg, "algorithm=", alg, alen, ',')) {
-    Curl_safefree(chlg);
+    free(chlg);
     return CURLE_BAD_CONTENT_ENCODING;
   }
 
   /* Retrieve qop-options string from the challenge */
   if(!sasl_digest_get_key_value((char *)chlg, "qop=\"", qop, qlen, '\"')) {
-    Curl_safefree(chlg);
+    free(chlg);
     return CURLE_BAD_CONTENT_ENCODING;
   }
 
-  Curl_safefree(chlg);
+  free(chlg);
 
   return CURLE_OK;
 }
@@ -634,7 +677,7 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
   /* Calculate H(A2) */
   ctxt = Curl_MD5_init(Curl_DIGEST_MD5);
   if(!ctxt) {
-    Curl_safefree(spn);
+    free(spn);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -652,7 +695,7 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
   /* Now calculate the response hash */
   ctxt = Curl_MD5_init(Curl_DIGEST_MD5);
   if(!ctxt) {
-    Curl_safefree(spn);
+    free(spn);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -685,14 +728,14 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
                      "qop=%s",
                      userp, realm, nonce,
                      cnonce, nonceCount, spn, resp_hash_hex, qop);
-  Curl_safefree(spn);
+  free(spn);
   if(!response)
     return CURLE_OUT_OF_MEMORY;
 
   /* Base64 encode the response */
   result = Curl_base64_encode(data, response, 0, outptr, outlen);
 
-  Curl_safefree(response);
+  free(response);
 
   return result;
 }
@@ -735,7 +778,7 @@ CURLcode Curl_sasl_decode_digest_http_message(const char *chlg,
       chlg++;
 
     /* Extract a value=content pair */
-    if(!sasl_digest_get_pair(chlg, value, content, &chlg)) {
+    if(!Curl_sasl_digest_get_pair(chlg, value, content, &chlg)) {
       if(Curl_raw_equal(value, "nonce")) {
         digest->nonce = strdup(content);
         if(!digest->nonce)
@@ -906,7 +949,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
 
   CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */
   Curl_md5it(md5buf, md5this);
-  Curl_safefree(md5this);
+  free(md5this);
   sasl_digest_md5_to_ascii(md5buf, ha1);
 
   if(digest->algo == CURLDIGESTALGO_MD5SESS) {
@@ -917,7 +960,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
 
     CURL_OUTPUT_DIGEST_CONV(data, tmp); /* convert on non-ASCII machines */
     Curl_md5it(md5buf, (unsigned char *)tmp);
-    Curl_safefree(tmp);
+    free(tmp);
     sasl_digest_md5_to_ascii(md5buf, ha1);
   }
 
@@ -941,7 +984,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
        TODO: replace md5 of empty string with entity-body for PUT/POST */
     unsigned char *md5this2 = (unsigned char *)
       aprintf("%s:%s", md5this, "d41d8cd98f00b204e9800998ecf8427e");
-    Curl_safefree(md5this);
+    free(md5this);
     md5this = md5this2;
   }
 
@@ -950,7 +993,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
 
   CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */
   Curl_md5it(md5buf, md5this);
-  Curl_safefree(md5this);
+  free(md5this);
   sasl_digest_md5_to_ascii(md5buf, ha2);
 
   if(digest->qop) {
@@ -974,7 +1017,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
 
   CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */
   Curl_md5it(md5buf, md5this);
-  Curl_safefree(md5this);
+  free(md5this);
   sasl_digest_md5_to_ascii(md5buf, request_digest);
 
   /* for test case 64 (snooped from a Mozilla 1.3a request)
@@ -1029,7 +1072,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
                        uripath,
                        request_digest);
   }
-  Curl_safefree(userp_quoted);
+  free(userp_quoted);
   if(!response)
     return CURLE_OUT_OF_MEMORY;
 
@@ -1110,7 +1153,7 @@ void Curl_sasl_ntlm_cleanup(struct ntlmdata *ntlm)
 #endif /* USE_NTLM && !USE_WINDOWS_SSPI*/
 
 /*
- * Curl_sasl_create_xoauth2_message()
+ * sasl_create_xoauth2_message()
  *
  * This is used to generate an already encoded OAuth 2.0 message ready for
  * sending to the recipient.
@@ -1126,10 +1169,10 @@ void Curl_sasl_ntlm_cleanup(struct ntlmdata *ntlm)
  *
  * Returns CURLE_OK on success.
  */
-CURLcode Curl_sasl_create_xoauth2_message(struct SessionHandle *data,
-                                          const char *user,
-                                          const char *bearer,
-                                          char **outptr, size_t *outlen)
+static CURLcode sasl_create_xoauth2_message(struct SessionHandle *data,
+                                            const char *user,
+                                            const char *bearer,
+                                            char **outptr, size_t *outlen)
 {
   CURLcode result = CURLE_OK;
   char *xoauth = NULL;
@@ -1142,7 +1185,7 @@ CURLcode Curl_sasl_create_xoauth2_message(struct SessionHandle *data,
   /* Base64 encode the reply */
   result = Curl_base64_encode(data, xoauth, strlen(xoauth), outptr, outlen);
 
-  Curl_safefree(xoauth);
+  free(xoauth);
 
   return result;
 }
@@ -1180,3 +1223,447 @@ void Curl_sasl_cleanup(struct connectdata *conn, unsigned int authused)
   (void)authused;
 #endif
 }
+
+/*
+ * Curl_sasl_decode_mech()
+ *
+ * Convert a SASL mechanism name into a token.
+ *
+ * Parameters:
+ *
+ * ptr    [in]     - The mechanism string.
+ * maxlen [in]     - Maximum mechanism string length.
+ * len    [out]    - If not NULL, effective name length.
+ *
+ * Returns the SASL mechanism token or 0 if no match.
+ */
+unsigned int Curl_sasl_decode_mech(const char *ptr, size_t maxlen, size_t *len)
+{
+  unsigned int i;
+  char c;
+
+  for(i = 0; mechtable[i].name; i++) {
+    if(maxlen >= mechtable[i].len &&
+       !memcmp(ptr, mechtable[i].name, mechtable[i].len)) {
+      if(len)
+        *len = mechtable[i].len;
+
+      if(maxlen == mechtable[i].len)
+        return mechtable[i].bit;
+
+      c = ptr[mechtable[i].len];
+      if(!ISUPPER(c) && !ISDIGIT(c) && c != '-' && c != '_')
+        return mechtable[i].bit;
+    }
+  }
+
+  return 0;
+}
+
+/*
+ * Curl_sasl_parse_url_auth_option()
+ *
+ * Parse the URL login options.
+ */
+CURLcode Curl_sasl_parse_url_auth_option(struct SASL *sasl,
+                                         const char *value, size_t len)
+{
+  CURLcode result = CURLE_OK;
+  unsigned int mechbit;
+  size_t mechlen;
+
+  if(!len)
+    return CURLE_URL_MALFORMAT;
+
+    if(sasl->resetprefs) {
+      sasl->resetprefs = FALSE;
+      sasl->prefmech = SASL_AUTH_NONE;
+    }
+
+    if(strnequal(value, "*", len))
+      sasl->prefmech = SASL_AUTH_DEFAULT;
+    else if((mechbit = Curl_sasl_decode_mech(value, len, &mechlen)) &&
+            mechlen == len)
+      sasl->prefmech |= mechbit;
+    else
+      result = CURLE_URL_MALFORMAT;
+
+  return result;
+}
+
+/*
+ * Curl_sasl_init()
+ *
+ * Initializes the SASL structure.
+ */
+void Curl_sasl_init(struct SASL *sasl, const struct SASLproto *params)
+{
+  sasl->params = params;           /* Set protocol dependent parameters */
+  sasl->state = SASL_STOP;         /* Not yet running */
+  sasl->authmechs = SASL_AUTH_NONE; /* No known authentication mechanism yet */
+  sasl->prefmech = SASL_AUTH_DEFAULT; /* Prefer all mechanisms */
+  sasl->authused = SASL_AUTH_NONE; /* No the authentication mechanism used */
+  sasl->resetprefs = TRUE;         /* Reset prefmech upon AUTH parsing. */
+  sasl->mutual_auth = FALSE;       /* No mutual authentication (GSSAPI only) */
+  sasl->force_ir = FALSE;          /* Respect external option */
+}
+
+/*
+ * state()
+ *
+ * This is the ONLY way to change SASL state!
+ */
+static void state(struct SASL *sasl, struct connectdata *conn,
+                  saslstate newstate)
+{
+#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
+  /* for debug purposes */
+  static const char * const names[]={
+    "STOP",
+    "PLAIN",
+    "LOGIN",
+    "LOGIN_PASSWD",
+    "EXTERNAL",
+    "CRAMMD5",
+    "DIGESTMD5",
+    "DIGESTMD5_RESP",
+    "NTLM",
+    "NTLM_TYPE2MSG",
+    "GSSAPI",
+    "GSSAPI_TOKEN",
+    "GSSAPI_NO_DATA",
+    "XOAUTH2",
+    "CANCEL",
+    "FINAL",
+    /* LAST */
+  };
+
+  if(sasl->state != newstate)
+    infof(conn->data, "SASL %p state change from %s to %s\n",
+          (void *)sasl, names[sasl->state], names[newstate]);
+#else
+  (void) conn;
+#endif
+
+  sasl->state = newstate;
+}
+
+/*
+ * Curl_sasl_can_authenticate()
+ *
+ * Check if we have enough auth data and capabilities to authenticate.
+ */
+bool Curl_sasl_can_authenticate(struct SASL *sasl, struct connectdata *conn)
+{
+  /* Have credentials been provided? */
+  if(conn->bits.user_passwd)
+    return TRUE;
+
+  /* EXTERNAL can authenticate without a user name and/or password */
+  if(sasl->authmechs & sasl->prefmech & SASL_MECH_EXTERNAL)
+    return TRUE;
+
+  return FALSE;
+}
+
+/*
+ * Curl_sasl_start()
+ *
+ * Calculate the required login details for SASL authentication.
+ */
+CURLcode Curl_sasl_start(struct SASL *sasl, struct connectdata *conn,
+                         bool force_ir, saslprogress *progress)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  unsigned int enabledmechs;
+  const char *mech = NULL;
+  char *resp = NULL;
+  size_t len = 0;
+  saslstate state1 = SASL_STOP;
+  saslstate state2 = SASL_FINAL;
+
+  sasl->force_ir = force_ir;    /* Latch for future use */
+  sasl->authused = 0;           /* No mechanism used yet */
+  enabledmechs = sasl->authmechs & sasl->prefmech;
+  *progress = SASL_IDLE;
+
+  /* Calculate the supported authentication mechanism, by decreasing order of
+     security, as well as the initial response where appropriate */
+  if((enabledmechs & SASL_MECH_EXTERNAL) && !conn->passwd[0]) {
+    mech = SASL_MECH_STRING_EXTERNAL;
+    state1 = SASL_EXTERNAL;
+    sasl->authused = SASL_MECH_EXTERNAL;
+
+    if(force_ir || data->set.sasl_ir)
+      result = sasl_create_external_message(data, conn->user, &resp, &len);
+  }
+  else if(conn->bits.user_passwd) {
+#if defined(USE_KERBEROS5)
+    if(enabledmechs & SASL_MECH_GSSAPI) {
+      sasl->mutual_auth = FALSE; /* TODO: Calculate mutual authentication */
+      mech = SASL_MECH_STRING_GSSAPI;
+      state1 = SASL_GSSAPI;
+      state2 = SASL_GSSAPI_TOKEN;
+      sasl->authused = SASL_MECH_GSSAPI;
+
+      if(force_ir || data->set.sasl_ir)
+        result = Curl_sasl_create_gssapi_user_message(data, conn->user,
+                                                      conn->passwd,
+                                                      sasl->params->service,
+                                                      sasl->mutual_auth,
+                                                      NULL, &conn->krb5,
+                                                      &resp, &len);
+    }
+    else
+#endif
+#ifndef CURL_DISABLE_CRYPTO_AUTH
+    if(enabledmechs & SASL_MECH_DIGEST_MD5) {
+      mech = SASL_MECH_STRING_DIGEST_MD5;
+      state1 = SASL_DIGESTMD5;
+      sasl->authused = SASL_MECH_DIGEST_MD5;
+    }
+    else if(enabledmechs & SASL_MECH_CRAM_MD5) {
+      mech = SASL_MECH_STRING_CRAM_MD5;
+      state1 = SASL_CRAMMD5;
+      sasl->authused = SASL_MECH_CRAM_MD5;
+    }
+    else
+#endif
+#ifdef USE_NTLM
+    if(enabledmechs & SASL_MECH_NTLM) {
+      mech = SASL_MECH_STRING_NTLM;
+      state1 = SASL_NTLM;
+      state2 = SASL_NTLM_TYPE2MSG;
+      sasl->authused = SASL_MECH_NTLM;
+
+      if(force_ir || data->set.sasl_ir)
+        result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
+                                                     &conn->ntlm, &resp, &len);
+      }
+    else
+#endif
+    if((enabledmechs & SASL_MECH_XOAUTH2) || conn->xoauth2_bearer) {
+      mech = SASL_MECH_STRING_XOAUTH2;
+      state1 = SASL_XOAUTH2;
+      sasl->authused = SASL_MECH_XOAUTH2;
+
+      if(force_ir || data->set.sasl_ir)
+        result = sasl_create_xoauth2_message(data, conn->user,
+                                             conn->xoauth2_bearer,
+                                             &resp, &len);
+    }
+    else if(enabledmechs & SASL_MECH_LOGIN) {
+      mech = SASL_MECH_STRING_LOGIN;
+      state1 = SASL_LOGIN;
+      state2 = SASL_LOGIN_PASSWD;
+      sasl->authused = SASL_MECH_LOGIN;
+
+      if(force_ir || data->set.sasl_ir)
+        result = sasl_create_login_message(data, conn->user, &resp, &len);
+    }
+    else if(enabledmechs & SASL_MECH_PLAIN) {
+      mech = SASL_MECH_STRING_PLAIN;
+      state1 = SASL_PLAIN;
+      sasl->authused = SASL_MECH_PLAIN;
+
+      if(force_ir || data->set.sasl_ir)
+        result = sasl_create_plain_message(data, conn->user, conn->passwd,
+                                           &resp, &len);
+    }
+  }
+
+  if(!result) {
+    if(resp && sasl->params->maxirlen &&
+       strlen(mech) + len > sasl->params->maxirlen) {
+      free(resp);
+      resp = NULL;
+    }
+
+    if(mech) {
+      result = sasl->params->sendauth(conn, mech, resp);
+      if(!result) {
+        *progress = SASL_INPROGRESS;
+        state(sasl, conn, resp? state2: state1);
+      }
+    }
+  }
+
+  free(resp);
+
+  return result;
+}
+
+/*
+ * Curl_sasl_continue()
+ *
+ * Continue the authentication.
+ */
+CURLcode Curl_sasl_continue(struct SASL *sasl, struct connectdata *conn,
+                            int code, saslprogress *progress)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  saslstate newstate = SASL_FINAL;
+  char *resp = NULL;
+#if !defined(CURL_DISABLE_CRYPTO_AUTH)
+  char *serverdata;
+  char *chlg = NULL;
+  size_t chlglen = 0;
+#endif
+  size_t len = 0;
+
+  *progress = SASL_INPROGRESS;
+
+  if(sasl->state == SASL_FINAL) {
+    if(code != sasl->params->finalcode)
+      result = CURLE_LOGIN_DENIED;
+    *progress = SASL_DONE;
+    state(sasl, conn, SASL_STOP);
+    return result;
+  }
+
+  if(sasl->state != SASL_CANCEL && code != sasl->params->contcode) {
+    *progress = SASL_DONE;
+    state(sasl, conn, SASL_STOP);
+    return CURLE_LOGIN_DENIED;
+  }
+
+  switch(sasl->state) {
+  case SASL_STOP:
+    *progress = SASL_DONE;
+    return result;
+  case SASL_PLAIN:
+    result = sasl_create_plain_message(data, conn->user, conn->passwd, &resp,
+                                       &len);
+    break;
+  case SASL_LOGIN:
+    result = sasl_create_login_message(data, conn->user, &resp, &len);
+    newstate = SASL_LOGIN_PASSWD;
+    break;
+  case SASL_LOGIN_PASSWD:
+    result = sasl_create_login_message(data, conn->passwd, &resp, &len);
+    break;
+  case SASL_EXTERNAL:
+    result = sasl_create_external_message(data, conn->user, &resp, &len);
+    break;
+
+#ifndef CURL_DISABLE_CRYPTO_AUTH
+  case SASL_CRAMMD5:
+    sasl->params->getmessage(data->state.buffer, &serverdata);
+    result = sasl_decode_cram_md5_message(serverdata, &chlg, &chlglen);
+    if(!result)
+      result = sasl_create_cram_md5_message(data, chlg, conn->user,
+                                            conn->passwd, &resp, &len);
+    free(chlg);
+    break;
+  case SASL_DIGESTMD5:
+    sasl->params->getmessage(data->state.buffer, &serverdata);
+    result = Curl_sasl_create_digest_md5_message(data, serverdata,
+                                                 conn->user, conn->passwd,
+                                                 sasl->params->service,
+                                                 &resp, &len);
+    newstate = SASL_DIGESTMD5_RESP;
+    break;
+  case SASL_DIGESTMD5_RESP:
+    if(!(resp = strdup("")))
+      result = CURLE_OUT_OF_MEMORY;
+    break;
+#endif
+
+#ifdef USE_NTLM
+  case SASL_NTLM:
+    /* Create the type-1 message */
+    result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
+                                                 &conn->ntlm, &resp, &len);
+    newstate = SASL_NTLM_TYPE2MSG;
+    break;
+  case SASL_NTLM_TYPE2MSG:
+    /* Decode the type-2 message */
+    sasl->params->getmessage(data->state.buffer, &serverdata);
+    result = Curl_sasl_decode_ntlm_type2_message(data, serverdata,
+                                                 &conn->ntlm);
+    if(!result)
+      result = Curl_sasl_create_ntlm_type3_message(data, conn->user,
+                                                   conn->passwd, &conn->ntlm,
+                                                   &resp, &len);
+    break;
+#endif
+
+#if defined(USE_KERBEROS5)
+  case SASL_GSSAPI:
+    result = Curl_sasl_create_gssapi_user_message(data, conn->user,
+                                                  conn->passwd,
+                                                  sasl->params->service,
+                                                  sasl->mutual_auth, NULL,
+                                                  &conn->krb5,
+                                                  &resp, &len);
+    newstate = SASL_GSSAPI_TOKEN;
+    break;
+  case SASL_GSSAPI_TOKEN:
+    sasl->params->getmessage(data->state.buffer, &serverdata);
+    if(sasl->mutual_auth) {
+      /* Decode the user token challenge and create the optional response
+         message */
+      result = Curl_sasl_create_gssapi_user_message(data, NULL, NULL, NULL,
+                                                    sasl->mutual_auth,
+                                                    serverdata, &conn->krb5,
+                                                    &resp, &len);
+      newstate = SASL_GSSAPI_NO_DATA;
+    }
+    else
+      /* Decode the security challenge and create the response message */
+      result = Curl_sasl_create_gssapi_security_message(data, serverdata,
+                                                        &conn->krb5,
+                                                        &resp, &len);
+    break;
+  case SASL_GSSAPI_NO_DATA:
+    sasl->params->getmessage(data->state.buffer, &serverdata);
+    /* Decode the security challenge and create the response message */
+    result = Curl_sasl_create_gssapi_security_message(data, serverdata,
+                                                      &conn->krb5,
+                                                      &resp, &len);
+    break;
+#endif
+
+  case SASL_XOAUTH2:
+    /* Create the authorisation message */
+    result = sasl_create_xoauth2_message(data, conn->user,
+                                         conn->xoauth2_bearer, &resp, &len);
+    break;
+  case SASL_CANCEL:
+    /* Remove the offending mechanism from the supported list */
+    sasl->authmechs ^= sasl->authused;
+
+    /* Start an alternative SASL authentication */
+    result = Curl_sasl_start(sasl, conn, sasl->force_ir, progress);
+    newstate = sasl->state;   /* Use state from Curl_sasl_start() */
+    break;
+  default:
+    failf(data, "Unsupported SASL authentication mechanism");
+    result = CURLE_UNSUPPORTED_PROTOCOL;  /* Should not happen */
+    break;
+  }
+
+  switch(result) {
+  case CURLE_BAD_CONTENT_ENCODING:
+    /* Cancel dialog */
+    result = sasl->params->sendcont(conn, "*");
+    newstate = SASL_CANCEL;
+    break;
+  case CURLE_OK:
+    if(resp)
+      result = sasl->params->sendcont(conn, resp);
+    break;
+  default:
+    newstate = SASL_STOP;    /* Stop on error */
+    *progress = SASL_DONE;
+    break;
+  }
+
+  free(resp);
+
+  state(sasl, conn, newstate);
+
+  return result;
+}
index 41ef859..117d60e 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -39,10 +39,6 @@ struct ntlmdata;
 struct kerberos5data;
 #endif
 
-/* Authentication mechanism values */
-#define SASL_AUTH_NONE          0
-#define SASL_AUTH_ANY           ~0U
-
 /* Authentication mechanism flags */
 #define SASL_MECH_LOGIN             (1 << 0)
 #define SASL_MECH_PLAIN             (1 << 1)
@@ -53,6 +49,12 @@ struct kerberos5data;
 #define SASL_MECH_NTLM              (1 << 6)
 #define SASL_MECH_XOAUTH2           (1 << 7)
 
+/* Authentication mechanism values */
+#define SASL_AUTH_NONE          0
+#define SASL_AUTH_ANY           ~0U
+#define SASL_AUTH_DEFAULT       (SASL_AUTH_ANY & \
+                                 ~(SASL_MECH_EXTERNAL | SASL_MECH_XOAUTH2))
+
 /* Authentication mechanism strings */
 #define SASL_MECH_STRING_LOGIN      "LOGIN"
 #define SASL_MECH_STRING_PLAIN      "PLAIN"
@@ -63,11 +65,70 @@ struct kerberos5data;
 #define SASL_MECH_STRING_NTLM       "NTLM"
 #define SASL_MECH_STRING_XOAUTH2    "XOAUTH2"
 
+#if !defined(CURL_DISABLE_CRYPTO_AUTH)
+#define DIGEST_MAX_VALUE_LENGTH           256
+#define DIGEST_MAX_CONTENT_LENGTH         1024
+#endif
+
 enum {
   CURLDIGESTALGO_MD5,
   CURLDIGESTALGO_MD5SESS
 };
 
+/* SASL machine states */
+typedef enum {
+  SASL_STOP,
+  SASL_PLAIN,
+  SASL_LOGIN,
+  SASL_LOGIN_PASSWD,
+  SASL_EXTERNAL,
+  SASL_CRAMMD5,
+  SASL_DIGESTMD5,
+  SASL_DIGESTMD5_RESP,
+  SASL_NTLM,
+  SASL_NTLM_TYPE2MSG,
+  SASL_GSSAPI,
+  SASL_GSSAPI_TOKEN,
+  SASL_GSSAPI_NO_DATA,
+  SASL_XOAUTH2,
+  SASL_CANCEL,
+  SASL_FINAL
+} saslstate;
+
+/* Progress indicator */
+typedef enum {
+  SASL_IDLE,
+  SASL_INPROGRESS,
+  SASL_DONE
+} saslprogress;
+
+/* Protocol dependent SASL parameters */
+struct SASLproto {
+  const char *service;     /* The service name */
+  int contcode;            /* Code to receive when continuation is expected */
+  int finalcode;           /* Code to receive upon authentication success */
+  size_t maxirlen;         /* Maximum initial response length */
+  CURLcode (*sendauth)(struct connectdata *conn,
+                       const char *mech, const char *ir);
+                           /* Send authentication command */
+  CURLcode (*sendcont)(struct connectdata *conn, const char *contauth);
+                           /* Send authentication continuation */
+  void (*getmessage)(char *buffer, char **outptr);
+                           /* Get SASL response message */
+};
+
+/* Per-connection parameters */
+struct SASL {
+  const struct SASLproto *params; /* Protocol dependent parameters */
+  saslstate state;         /* Current machine state */
+  unsigned int authmechs;  /* Accepted authentication mechanisms */
+  unsigned int prefmech;   /* Preferred authentication mechanism */
+  unsigned int authused;   /* Auth mechanism used for the connection */
+  bool resetprefs;         /* For URL auth option parsing. */
+  bool mutual_auth;        /* Mutual authentication enabled (GSSAPI only) */
+  bool force_ir;           /* Protocol always supports initial response */
+};
+
 /* This is used to test whether the line starts with the given mechanism */
 #define sasl_mech_equal(line, wordlen, mech) \
   (wordlen == (sizeof(mech) - 1) / sizeof(char) && \
@@ -80,29 +141,15 @@ char *Curl_sasl_build_spn(const char *service, const char *instance);
 TCHAR *Curl_sasl_build_spn(const char *service, const char *instance);
 #endif
 
-/* This is used to generate a base64 encoded PLAIN authentication message */
-CURLcode Curl_sasl_create_plain_message(struct SessionHandle *data,
-                                        const char *userp,
-                                        const char *passwdp,
-                                        char **outptr, size_t *outlen);
+/* This is used to extract the realm from a challenge message */
+int Curl_sasl_digest_get_pair(const char *str, char *value, char *content,
+                              const char **endptr);
 
-/* This is used to generate a base64 encoded LOGIN authentication message
-   containing either the user name or password details */
-CURLcode Curl_sasl_create_login_message(struct SessionHandle *data,
-                                        const char *valuep, char **outptr,
-                                        size_t *outlen);
+#if defined(HAVE_GSSAPI)
+char *Curl_sasl_build_gssapi_spn(const char *service, const char *host);
+#endif
 
 #ifndef CURL_DISABLE_CRYPTO_AUTH
-/* This is used to decode a base64 encoded CRAM-MD5 challange message */
-CURLcode Curl_sasl_decode_cram_md5_message(const char *chlg64, char **outptr,
-                                           size_t *outlen);
-
-/* This is used to generate a base64 encoded CRAM-MD5 response message */
-CURLcode Curl_sasl_create_cram_md5_message(struct SessionHandle *data,
-                                           const char *chlg,
-                                           const char *user,
-                                           const char *passwdp,
-                                           char **outptr, size_t *outlen);
 
 /* This is used to generate a base64 encoded DIGEST-MD5 response message */
 CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
@@ -178,15 +225,30 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
 void Curl_sasl_gssapi_cleanup(struct kerberos5data *krb5);
 #endif /* USE_KERBEROS5 */
 
-/* This is used to generate a base64 encoded XOAUTH2 authentication message
-   containing the user name and bearer token */
-CURLcode Curl_sasl_create_xoauth2_message(struct SessionHandle *data,
-                                          const char *user,
-                                          const char *bearer,
-                                          char **outptr, size_t *outlen);
-
 /* This is used to cleanup any libraries or curl modules used by the sasl
    functions */
 void Curl_sasl_cleanup(struct connectdata *conn, unsigned int authused);
 
+/* Convert a mechanism name to a token */
+unsigned int Curl_sasl_decode_mech(const char *ptr,
+                                   size_t maxlen, size_t *len);
+
+/* Parse the URL login options */
+CURLcode Curl_sasl_parse_url_auth_option(struct SASL *sasl,
+                                         const char *value, size_t len);
+
+/* Initializes an SASL structure */
+void Curl_sasl_init(struct SASL *sasl, const struct SASLproto *params);
+
+/* Check if we have enough auth data and capabilities to authenticate */
+bool Curl_sasl_can_authenticate(struct SASL *sasl, struct connectdata *conn);
+
+/* Calculate the required login details for SASL authentication  */
+CURLcode Curl_sasl_start(struct SASL *sasl, struct connectdata *conn,
+                         bool force_ir, saslprogress *progress);
+
+/* Continue an SASL authentication  */
+CURLcode Curl_sasl_continue(struct SASL *sasl, struct connectdata *conn,
+                            int code, saslprogress *progress);
+
 #endif /* HEADER_CURL_SASL_H */
index 6dda0e9..3c6f3ce 100644 (file)
@@ -5,7 +5,8 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2014, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2014 - 2015, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #if defined(HAVE_GSSAPI) && defined(USE_KERBEROS5)
 
-#ifdef HAVE_OLD_GSSMIT
-#define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
-#define NCOMPAT 1
-#endif
-
-#define GSSAUTH_P_NONE      1
-#define GSSAUTH_P_INTEGRITY 2
-#define GSSAUTH_P_PRIVACY   4
-
 #include <curl/curl.h>
 
 #include "curl_sasl.h"
 #include "urldata.h"
 #include "curl_base64.h"
 #include "curl_gssapi.h"
-#include "curl_memory.h"
 #include "sendf.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /*
@@ -62,7 +52,7 @@
 *
 * Returns a pointer to the newly allocated SPN.
 */
-static char *Curl_sasl_build_gssapi_spn(const char *service, const char *host)
+char *Curl_sasl_build_gssapi_spn(const char *service, const char *host)
 {
   /* Generate and return our SPN */
   return aprintf("%s@%s", service, host);
@@ -126,12 +116,16 @@ CURLcode Curl_sasl_create_gssapi_user_message(struct SessionHandle *data,
 
     /* Import the SPN */
     gss_major_status = gss_import_name(&gss_minor_status, &spn_token,
-                                       gss_nt_service_name, &krb5->spn);
+                                       GSS_C_NT_HOSTBASED_SERVICE, &krb5->spn);
     if(GSS_ERROR(gss_major_status)) {
       Curl_gss_log_error(data, gss_minor_status, "gss_import_name() failed: ");
 
+      free(spn);
+
       return CURLE_OUT_OF_MEMORY;
     }
+
+    free(spn);
   }
   else {
     /* Decode the base-64 encoded challenge message */
@@ -164,7 +158,7 @@ CURLcode Curl_sasl_create_gssapi_user_message(struct SessionHandle *data,
                                                mutual_auth,
                                                NULL);
 
-  Curl_safefree(input_token.value);
+  free(input_token.value);
 
   if(GSS_ERROR(gss_major_status)) {
     if(output_token.value)
@@ -250,7 +244,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
     Curl_gss_log_error(data, gss_minor_status,
                        "gss_inquire_context() failed: ");
 
-    Curl_safefree(chlg);
+    free(chlg);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -261,7 +255,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
   if(GSS_ERROR(gss_major_status)) {
     Curl_gss_log_error(data, gss_minor_status, "gss_display_name() failed: ");
 
-    Curl_safefree(chlg);
+    free(chlg);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -277,7 +271,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
     Curl_gss_log_error(data, gss_minor_status, "gss_unwrap() failed: ");
 
     gss_release_buffer(&gss_status, &username_token);
-    Curl_safefree(chlg);
+    free(chlg);
 
     return CURLE_BAD_CONTENT_ENCODING;
   }
@@ -287,7 +281,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
     infof(data, "GSSAPI handshake failure (invalid security data)\n");
 
     gss_release_buffer(&gss_status, &username_token);
-    Curl_safefree(chlg);
+    free(chlg);
 
     return CURLE_BAD_CONTENT_ENCODING;
   }
@@ -295,7 +289,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
   /* Copy the data out and free the challenge as it is not required anymore */
   memcpy(&indata, output_token.value, 4);
   gss_release_buffer(&gss_status, &output_token);
-  Curl_safefree(chlg);
+  free(chlg);
 
   /* Extract the security layer */
   sec_layer = indata & 0x000000FF;
@@ -350,7 +344,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
   if(GSS_ERROR(gss_major_status)) {
     Curl_gss_log_error(data, gss_minor_status, "gss_wrap() failed: ");
 
-    Curl_safefree(message);
+    free(message);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -363,7 +357,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
   gss_release_buffer(&gss_status, &output_token);
 
   /* Free the message buffer */
-  Curl_safefree(message);
+  free(message);
 
   return result;
 }
index 0509b75..b149530 100644 (file)
@@ -5,8 +5,8 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
+ * Copyright (C) 2014 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2014, Steve Holme, <steve_holme@hotmail.com>.
- * Copyright (C) 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "urldata.h"
 #include "curl_base64.h"
 #include "warnless.h"
-#include "curl_memory.h"
 #include "curl_multibyte.h"
 #include "sendf.h"
 #include "strdup.h"
+#include "curl_printf.h"
+#include "rawstr.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /*
@@ -80,7 +79,7 @@ TCHAR *Curl_sasl_build_spn(const char *service, const char *host)
   /* Allocate our TCHAR based SPN */
   tchar_spn = Curl_convert_UTF8_to_tchar(utf8_spn);
   if(!tchar_spn) {
-    Curl_safefree(utf8_spn);
+    free(utf8_spn);
 
     return NULL;
   }
@@ -156,7 +155,7 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
   status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_DIGEST),
                                               &SecurityPackage);
   if(status != SEC_E_OK) {
-    Curl_safefree(input_token);
+    free(input_token);
 
     return CURLE_NOT_BUILT_IN;
   }
@@ -169,7 +168,7 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
   /* Allocate our response buffer */
   output_token = malloc(token_max);
   if(!output_token) {
-    Curl_safefree(input_token);
+    free(input_token);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -177,8 +176,8 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
   /* Generate our SPN */
   spn = Curl_sasl_build_spn(service, data->easy_conn->host.name);
   if(!spn) {
-    Curl_safefree(output_token);
-    Curl_safefree(input_token);
+    free(output_token);
+    free(input_token);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -187,9 +186,9 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
     /* Populate our identity structure */
     result = Curl_create_sspi_identity(userp, passwdp, &identity);
     if(result) {
-      Curl_safefree(spn);
-      Curl_safefree(output_token);
-      Curl_safefree(input_token);
+      free(spn);
+      free(output_token);
+      free(input_token);
 
       return result;
     }
@@ -210,9 +209,9 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
 
   if(status != SEC_E_OK) {
     Curl_sspi_free_identity(p_identity);
-    Curl_safefree(spn);
-    Curl_safefree(output_token);
-    Curl_safefree(input_token);
+    free(spn);
+    free(output_token);
+    free(input_token);
 
     return CURLE_LOGIN_DENIED;
   }
@@ -245,9 +244,9 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
   else if(status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED) {
     s_pSecFn->FreeCredentialsHandle(&credentials);
     Curl_sspi_free_identity(p_identity);
-    Curl_safefree(spn);
-    Curl_safefree(output_token);
-    Curl_safefree(input_token);
+    free(spn);
+    free(output_token);
+    free(input_token);
 
     return CURLE_RECV_ERROR;
   }
@@ -264,18 +263,86 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
   Curl_sspi_free_identity(p_identity);
 
   /* Free the SPN */
-  Curl_safefree(spn);
+  free(spn);
 
   /* Free the response buffer */
-  Curl_safefree(output_token);
+  free(output_token);
 
   /* Free the decoded challenge message */
-  Curl_safefree(input_token);
+  free(input_token);
 
   return result;
 }
 
 /*
+* Curl_override_sspi_http_realm()
+*
+* This is used to populate the domain in a SSPI identity structure
+* The realm is extracted from the challenge message and used as the
+* domain if it is not already explicitly set.
+*
+* Parameters:
+*
+* chlg     [in]     - The challenge message.
+* identity [in/out] - The identity structure.
+*
+* Returns CURLE_OK on success.
+*/
+CURLcode Curl_override_sspi_http_realm(const char *chlg,
+                                       SEC_WINNT_AUTH_IDENTITY *identity)
+{
+  xcharp_u domain, dup_domain;
+
+  /* If domain is blank or unset, check challenge message for realm */
+  if(!identity->Domain || !identity->DomainLength) {
+    for(;;) {
+      char value[DIGEST_MAX_VALUE_LENGTH];
+      char content[DIGEST_MAX_CONTENT_LENGTH];
+
+      /* Pass all additional spaces here */
+      while(*chlg && ISSPACE(*chlg))
+        chlg++;
+
+      /* Extract a value=content pair */
+      if(!Curl_sasl_digest_get_pair(chlg, value, content, &chlg)) {
+        if(Curl_raw_equal(value, "realm")) {
+
+          /* Setup identity's domain and length */
+          domain.tchar_ptr = Curl_convert_UTF8_to_tchar((char *)content);
+          if(!domain.tchar_ptr)
+            return CURLE_OUT_OF_MEMORY;
+          dup_domain.tchar_ptr = _tcsdup(domain.tchar_ptr);
+          if(!dup_domain.tchar_ptr) {
+            Curl_unicodefree(domain.tchar_ptr);
+            return CURLE_OUT_OF_MEMORY;
+          }
+          identity->Domain = dup_domain.tbyte_ptr;
+          identity->DomainLength = curlx_uztoul(_tcslen(dup_domain.tchar_ptr));
+          dup_domain.tchar_ptr = NULL;
+
+          Curl_unicodefree(domain.tchar_ptr);
+        }
+        else {
+          /* unknown specifier, ignore it! */
+        }
+      }
+      else
+        break; /* we're done here */
+
+      /* Pass all additional spaces here */
+      while(*chlg && ISSPACE(*chlg))
+        chlg++;
+
+      /* Allow the list to be comma-separated */
+      if(',' == *chlg)
+        chlg++;
+    }
+  }
+
+  return CURLE_OK;
+}
+
+/*
  * Curl_sasl_decode_digest_http_message()
  *
  * This is used to decode a HTTP DIGEST challenge message into the seperate
@@ -376,6 +443,11 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
     if(Curl_create_sspi_identity(userp, passwdp, &identity))
       return CURLE_OUT_OF_MEMORY;
 
+    /* Populate our identity domain */
+    if(Curl_override_sspi_http_realm((const char*)digest->input_token,
+                                     &identity))
+      return CURLE_OUT_OF_MEMORY;
+
     /* Allow proper cleanup of the identity structure */
     p_identity = &identity;
   }
@@ -390,7 +462,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
                                               p_identity, NULL, NULL,
                                               &credentials, &expiry);
   if(status != SEC_E_OK) {
-    Curl_safefree(output_token);
+    free(output_token);
 
     return CURLE_LOGIN_DENIED;
   }
@@ -430,7 +502,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
   else if(status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED) {
     s_pSecFn->FreeCredentialsHandle(&credentials);
 
-    Curl_safefree(output_token);
+    free(output_token);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -440,7 +512,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
     s_pSecFn->DeleteSecurityContext(&context);
     s_pSecFn->FreeCredentialsHandle(&credentials);
 
-    Curl_safefree(output_token);
+    free(output_token);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -461,7 +533,7 @@ CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
   Curl_sspi_free_identity(p_identity);
 
   /* Free the response buffer */
-  Curl_safefree(output_token);
+  free(output_token);
 
   return CURLE_OK;
 }
@@ -912,7 +984,7 @@ CURLcode Curl_sasl_create_gssapi_user_message(struct SessionHandle *data,
                                                &expiry);
 
   if(status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED) {
-    Curl_safefree(chlg);
+    free(chlg);
 
     return CURLE_RECV_ERROR;
   }
@@ -930,7 +1002,7 @@ CURLcode Curl_sasl_create_gssapi_user_message(struct SessionHandle *data,
   }
 
   /* Free the decoded challenge */
-  Curl_safefree(chlg);
+  free(chlg);
 
   return result;
 }
@@ -1001,7 +1073,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
                                             SECPKG_ATTR_SIZES,
                                             &sizes);
   if(status != SEC_E_OK) {
-    Curl_safefree(chlg);
+    free(chlg);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -1011,7 +1083,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
                                                 SECPKG_CRED_ATTR_NAMES,
                                                 &names);
   if(status != SEC_E_OK) {
-    Curl_safefree(chlg);
+    free(chlg);
 
     return CURLE_RECV_ERROR;
   }
@@ -1032,7 +1104,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
   if(status != SEC_E_OK) {
     infof(data, "GSSAPI handshake failure (empty security message)\n");
 
-    Curl_safefree(chlg);
+    free(chlg);
 
     return CURLE_BAD_CONTENT_ENCODING;
   }
@@ -1041,7 +1113,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
   if(input_buf[1].cbBuffer != 4) {
     infof(data, "GSSAPI handshake failure (invalid security data)\n");
 
-    Curl_safefree(chlg);
+    free(chlg);
 
     return CURLE_BAD_CONTENT_ENCODING;
   }
@@ -1049,7 +1121,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
   /* Copy the data out and free the challenge as it is not required anymore */
   memcpy(&indata, input_buf[1].pvBuffer, 4);
   s_pSecFn->FreeContextBuffer(input_buf[1].pvBuffer);
-  Curl_safefree(chlg);
+  free(chlg);
 
   /* Extract the security layer */
   sec_layer = indata & 0x000000FF;
@@ -1076,7 +1148,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
   /* Convert the user name to UTF8 when operating with Unicode */
   user_name = Curl_convert_tchar_to_UTF8(names.sUserName);
   if(!user_name) {
-    Curl_safefree(trailer);
+    free(trailer);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -1085,7 +1157,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
   messagelen = sizeof(outdata) + strlen(user_name) + 1;
   message = malloc(messagelen);
   if(!message) {
-    Curl_safefree(trailer);
+    free(trailer);
     Curl_unicodefree(user_name);
 
     return CURLE_OUT_OF_MEMORY;
@@ -1104,8 +1176,8 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
   /* Allocate the padding */
   padding = malloc(sizes.cbBlockSize);
   if(!padding) {
-    Curl_safefree(message);
-    Curl_safefree(trailer);
+    free(message);
+    free(trailer);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -1128,9 +1200,9 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
   status = s_pSecFn->EncryptMessage(krb5->context, KERB_WRAP_NO_ENCRYPT,
                                     &wrap_desc, 0);
   if(status != SEC_E_OK) {
-    Curl_safefree(padding);
-    Curl_safefree(message);
-    Curl_safefree(trailer);
+    free(padding);
+    free(message);
+    free(trailer);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -1140,9 +1212,9 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
                wrap_buf[2].cbBuffer;
   appdata = malloc(appdatalen);
   if(!appdata) {
-    Curl_safefree(padding);
-    Curl_safefree(message);
-    Curl_safefree(trailer);
+    free(padding);
+    free(message);
+    free(trailer);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -1159,10 +1231,10 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
                               outlen);
 
   /* Free all of our local buffers */
-  Curl_safefree(appdata);
-  Curl_safefree(padding);
-  Curl_safefree(message);
-  Curl_safefree(trailer);
+  free(appdata);
+  free(padding);
+  free(message);
+  free(trailer);
 
   return result;
 }
index b046b77..ab0c139 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #  ifndef CURL_DISABLE_GOPHER
 #    define CURL_DISABLE_GOPHER
 #  endif
+#  ifndef CURL_DISABLE_SMB
+#    define CURL_DISABLE_SMB
+#  endif
 #endif
 
 /*
@@ -601,7 +604,7 @@ int netware_init(void);
 
 #define LIBIDN_REQUIRED_VERSION "0.4.1"
 
-#if defined(USE_GNUTLS) || defined(USE_SSLEAY) || defined(USE_NSS) || \
+#if defined(USE_GNUTLS) || defined(USE_OPENSSL) || defined(USE_NSS) || \
     defined(USE_POLARSSL) || defined(USE_AXTLS) || \
     defined(USE_CYASSL) || defined(USE_SCHANNEL) || \
     defined(USE_DARWINSSL) || defined(USE_GSKIT)
@@ -622,12 +625,17 @@ int netware_init(void);
 
 /* Single point where USE_NTLM definition might be defined */
 #if !defined(CURL_DISABLE_NTLM) && !defined(CURL_DISABLE_CRYPTO_AUTH)
-#if defined(USE_SSLEAY) || defined(USE_WINDOWS_SSPI) || \
+#if defined(USE_OPENSSL) || defined(USE_WINDOWS_SSPI) || \
     defined(USE_GNUTLS) || defined(USE_NSS) || defined(USE_DARWINSSL) || \
     defined(USE_OS400CRYPTO) || defined(USE_WIN32_CRYPTO)
+
+#ifdef HAVE_BORINGSSL /* BoringSSL is not NTLM capable */
+#undef USE_NTLM
+#else
 #define USE_NTLM
 #endif
 #endif
+#endif
 
 /* non-configure builds may define CURL_WANTS_CA_BUNDLE_ENV */
 #if defined(CURL_WANTS_CA_BUNDLE_ENV) && !defined(CURL_CA_BUNDLE)
@@ -699,4 +707,24 @@ int netware_init(void);
 #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
 #endif
 
+/* In Windows the default file mode is text but an application can override it.
+Therefore we specify it explicitly. https://github.com/bagder/curl/pull/258
+*/
+#if defined(WIN32) || defined(MSDOS)
+#define FOPEN_READTEXT "rt"
+#define FOPEN_WRITETEXT "wt"
+#elif defined(__CYGWIN__)
+/* Cygwin has specific behavior we need to address when WIN32 is not defined.
+https://cygwin.com/cygwin-ug-net/using-textbinary.html
+For write we want our output to have line endings of LF and be compatible with
+other Cygwin utilities. For read we want to handle input that may have line
+endings either CRLF or LF so 't' is appropriate.
+*/
+#define FOPEN_READTEXT "rt"
+#define FOPEN_WRITETEXT "w"
+#else
+#define FOPEN_READTEXT "r"
+#define FOPEN_WRITETEXT "w"
+#endif
+
 #endif /* HEADER_CURL_SETUP_H */
index f09d288..070424d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #ifdef USE_WINDOWS_SSPI
 
 #include <curl/curl.h>
-
 #include "curl_sspi.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-#include "curl_memory.h"
 #include "curl_multibyte.h"
 #include "warnless.h"
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /* We use our own typedef here since some headers might lack these */
@@ -98,20 +93,25 @@ CURLcode Curl_sspi_global_init(void)
        osver.dwPlatformId == platformId)
       securityDll = TRUE;
 #else
-    ULONGLONG majorVersionMask;
-    ULONGLONG platformIdMask;
+    ULONGLONG cm;
     OSVERSIONINFOEX osver;
 
     memset(&osver, 0, sizeof(osver));
     osver.dwOSVersionInfoSize = sizeof(osver);
     osver.dwMajorVersion = majorVersion;
     osver.dwPlatformId = platformId;
-    majorVersionMask = VerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL);
-    platformIdMask = VerSetConditionMask(0, VER_PLATFORMID, VER_EQUAL);
+
+    cm = VerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL);
+    cm = VerSetConditionMask(cm, VER_MINORVERSION, VER_GREATER_EQUAL);
+    cm = VerSetConditionMask(cm, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
+    cm = VerSetConditionMask(cm, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
+    cm = VerSetConditionMask(cm, VER_PLATFORMID, VER_EQUAL);
 
     /* Verify the major version number == 4 and platform id == WIN_NT */
-    if(VerifyVersionInfo(&osver, VER_MAJORVERSION, majorVersionMask) &&
-       VerifyVersionInfo(&osver, VER_PLATFORMID, platformIdMask))
+    if(VerifyVersionInfo(&osver, (VER_MAJORVERSION | VER_MINORVERSION |
+                                  VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR |
+                                  VER_PLATFORMID),
+                         cm))
       securityDll = TRUE;
 #endif
 
@@ -224,7 +224,7 @@ CURLcode Curl_create_sspi_identity(const char *userp, const char *passwdp,
 
   Curl_unicodefree(useranddomain.tchar_ptr);
 
-  /* Setup ntlm identity's password and length */
+  /* Setup the identity's password and length */
   passwd.tchar_ptr = Curl_convert_UTF8_to_tchar((char *)passwdp);
   if(!passwd.tchar_ptr)
     return CURLE_OUT_OF_MEMORY;
index 7fa308c..8655715 100644 (file)
 CURLcode Curl_sspi_global_init(void);
 void Curl_sspi_global_cleanup(void);
 
+/* This is used to populate the domain in a SSPI identity structure */
+CURLcode Curl_override_sspi_http_realm(const char *chlg,
+                                       SEC_WINNT_AUTH_IDENTITY *identity);
+
 /* This is used to generate an SSPI identity structure */
 CURLcode Curl_create_sspi_identity(const char *userp, const char *passwdp,
                                    SEC_WINNT_AUTH_IDENTITY *identity);
index 5b70139..f9b812e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #endif
 
 #include "curl_threads.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -77,8 +73,8 @@ curl_thread_t Curl_thread_create(unsigned int (*func) (void*), void *arg)
   return t;
 
 err:
-  Curl_safefree(t);
-  Curl_safefree(ac);
+  free(t);
+  free(ac);
   return curl_thread_t_null;
 }
 
index 9dc90a0..979e7d7 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -90,8 +90,7 @@
 #ifdef ENABLE_CURLX_PRINTF
 /* If this define is set, we define all "standard" printf() functions to use
    the curlx_* version instead. It makes the source code transparent and
-   easier to understand/patch. Undefine them first in case _MPRINTF_REPLACE
-   is set. */
+   easier to understand/patch. Undefine them first. */
 # undef printf
 # undef fprintf
 # undef sprintf
index 86ddfb9..06d7699 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "strequal.h"
 #include "dict.h"
 #include "rawstr.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -101,7 +97,7 @@ static char *unescape_word(struct SessionHandle *data, const char *inputbuff)
   char *dictp;
   char *ptr;
   int len;
-  char byte;
+  char ch;
   int olen=0;
 
   newp = curl_easy_unescape(data, inputbuff, 0, &len);
@@ -113,13 +109,13 @@ static char *unescape_word(struct SessionHandle *data, const char *inputbuff)
     /* According to RFC2229 section 2.2, these letters need to be escaped with
        \[letter] */
     for(ptr = newp;
-        (byte = *ptr) != 0;
+        (ch = *ptr) != 0;
         ptr++) {
-      if((byte <= 32) || (byte == 127) ||
-          (byte == '\'') || (byte == '\"') || (byte == '\\')) {
+      if((ch <= 32) || (ch == 127) ||
+          (ch == '\'') || (ch == '\"') || (ch == '\\')) {
         dictp[olen++] = '\\';
       }
-      dictp[olen++] = byte;
+      dictp[olen++] = ch;
     }
     dictp[olen]=0;
   }
index 619312b..316acb1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -60,7 +60,6 @@
 #include "hostip.h"
 #include "share.h"
 #include "strdup.h"
-#include "curl_memory.h"
 #include "progress.h"
 #include "easyif.h"
 #include "select.h"
 #include "multiif.h"
 #include "sigpipe.h"
 #include "ssh.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /* win32_cleanup() is for win32 socket cleanup functionality, the opposite
index 9923e64..24abb93 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include <curl/curl.h>
 
-#include "curl_memory.h"
 #include "urldata.h"
 #include "warnless.h"
 #include "non-ascii.h"
 #include "escape.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /* Portable character check (remember EBCDIC). Do not use isalnum() because
@@ -229,6 +227,5 @@ char *curl_easy_unescape(CURL *handle, const char *string, int length,
    the library's memory system */
 void curl_free(void *p)
 {
-  if(p)
-    free(p);
+  free(p);
 }
index dd2c564..175b107 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "getinfo.h"
 #include "transfer.h"
 #include "url.h"
-#include "curl_memory.h"
 #include "parsedate.h" /* for the week day and month names */
 #include "warnless.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 #if defined(WIN32) || defined(MSDOS) || defined(__EMX__) || \
@@ -317,8 +315,6 @@ static CURLcode file_upload(struct connectdata *conn)
    * Since FILE: doesn't do the full init, we need to provide some extra
    * assignments here.
    */
-  conn->fread_func = data->set.fread_func;
-  conn->fread_in = data->set.in;
   conn->data->req.upload_fromhere = buf;
 
   if(!dir)
index 8c8ee98..0904937 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2010-2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include "strdup.h"
 #include "fileinfo.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
index 14ac576..3f5fe75 100644 (file)
@@ -6,7 +6,7 @@
 # *                            | (__| |_| |  _ <| |___
 # *                             \___|\___/|_| \_\_____|
 # *
-# * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
+# * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 # *
 # * This software is licensed as described in the file COPYING, which
 # * you should have received as part of this distribution. The terms
@@ -24,7 +24,7 @@
 # It extracts all ca certs it finds in the local Firefox database and converts
 # them all into PEM format.
 #
-db=`ls -1d $HOME/.mozilla/firefox/*default`
+db=`ls -1d $HOME/.mozilla/firefox/*default*`
 out=$1
 
 if test -z "$out"; then
index 73d3b6d..9e8ce4e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "formdata.h"
 #include "vtls/vtls.h"
 #include "strequal.h"
-#include "curl_memory.h"
 #include "sendf.h"
 #include "strdup.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 #ifndef HAVE_BASENAME
@@ -417,7 +415,7 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
               else {
                 form = AddFormInfo(fname, NULL, current_form);
                 if(!form) {
-                  Curl_safefree(fname);
+                  free(fname);
                   return_value = CURL_FORMADD_MEMORY;
                 }
                 else {
@@ -506,7 +504,7 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
               else {
                 form = AddFormInfo(NULL, type, current_form);
                 if(!form) {
-                  Curl_safefree(type);
+                  free(type);
                   return_value = CURL_FORMADD_MEMORY;
                 }
                 else {
@@ -713,7 +711,7 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
      now by the httppost linked list */
   while(first_form) {
     FormInfo *ptr = first_form->more;
-    Curl_safefree(first_form);
+    free(first_form);
     first_form = ptr;
   }
 
@@ -758,7 +756,7 @@ curl_off_t VmsRealFileSize(const char * name,
   int ret_stat;
   FILE * file;
 
-  file = fopen(name, "r");
+  file = fopen(name, "r"); /* VMS */
   if(file == NULL)
     return 0;
 
@@ -971,19 +969,16 @@ void curl_formfree(struct curl_httppost *form)
     next=form->next;  /* the following form line */
 
     /* recurse to sub-contents */
-    if(form->more)
-      curl_formfree(form->more);
+    curl_formfree(form->more);
 
-    if(!(form->flags & HTTPPOST_PTRNAME) && form->name)
+    if(!(form->flags & HTTPPOST_PTRNAME))
       free(form->name); /* free the name */
     if(!(form->flags &
-         (HTTPPOST_PTRCONTENTS|HTTPPOST_BUFFER|HTTPPOST_CALLBACK)) &&
-       form->contents)
+         (HTTPPOST_PTRCONTENTS|HTTPPOST_BUFFER|HTTPPOST_CALLBACK))
+      )
       free(form->contents); /* free the contents */
-    if(form->contenttype)
-      free(form->contenttype); /* free the content type */
-    if(form->showfilename)
-      free(form->showfilename); /* free the faked file name */
+    free(form->contenttype); /* free the content type */
+    free(form->showfilename); /* free the faked file name */
     free(form);       /* free the struct */
 
   } while((form = next) != NULL); /* continue */
@@ -1073,7 +1068,7 @@ static CURLcode formdata_add_filename(const struct curl_httppost *file,
     /* filename need be escaped */
     filename_escaped = malloc(strlen(filename)*2+1);
     if(!filename_escaped) {
-      Curl_safefree(filebasename);
+      free(filebasename);
       return CURLE_OUT_OF_MEMORY;
     }
     p0 = filename_escaped;
@@ -1089,8 +1084,8 @@ static CURLcode formdata_add_filename(const struct curl_httppost *file,
   result = AddFormDataf(form, size,
                         "; filename=\"%s\"",
                         filename);
-  Curl_safefree(filename_escaped);
-  Curl_safefree(filebasename);
+  free(filename_escaped);
+  free(filebasename);
   return result;
 }
 
@@ -1140,7 +1135,7 @@ CURLcode Curl_getformdata(struct SessionHandle *data,
                         boundary);
 
   if(result) {
-    Curl_safefree(boundary);
+    free(boundary);
     return result;
   }
   /* we DO NOT include that line in the total size of the POST, since it'll be
@@ -1183,7 +1178,7 @@ CURLcode Curl_getformdata(struct SessionHandle *data,
       /* If used, this is a link to more file names, we must then do
          the magic to include several files with the same field name */
 
-      Curl_safefree(fileboundary);
+      free(fileboundary);
       fileboundary = formboundary(data);
       if(!fileboundary) {
         result = CURLE_OUT_OF_MEMORY;
@@ -1336,15 +1331,15 @@ CURLcode Curl_getformdata(struct SessionHandle *data,
 
   if(result) {
     Curl_formclean(&firstform);
-    Curl_safefree(fileboundary);
-    Curl_safefree(boundary);
+    free(fileboundary);
+    free(boundary);
     return result;
   }
 
   *sizep = size;
 
-  Curl_safefree(fileboundary);
-  Curl_safefree(boundary);
+  free(fileboundary);
+  free(boundary);
 
   *finalform = firstform;
 
@@ -1390,7 +1385,7 @@ static FILE * vmsfopenread(const char *file, const char *mode) {
   case FAB$C_VAR:
   case FAB$C_VFC:
   case FAB$C_STMCR:
-    return fopen(file, "r");
+    return fopen(file, "r"); /* VMS */
     break;
   default:
     return fopen(file, "r", "rfm=stmlf", "ctx=stm");
index 2f4351e..fade092 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -77,9 +77,7 @@
 #include "warnless.h"
 #include "http_proxy.h"
 #include "non-ascii.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 
 #include "curl_memory.h"
 /* The last #include file should be: */
@@ -285,19 +283,17 @@ static void freedirs(struct ftp_conn *ftpc)
   int i;
   if(ftpc->dirs) {
     for(i=0; i < ftpc->dirdepth; i++) {
-      if(ftpc->dirs[i]) {
-        free(ftpc->dirs[i]);
-        ftpc->dirs[i]=NULL;
-      }
+      free(ftpc->dirs[i]);
+      ftpc->dirs[i]=NULL;
     }
     free(ftpc->dirs);
     ftpc->dirs = NULL;
     ftpc->dirdepth = 0;
   }
-  if(ftpc->file) {
-    free(ftpc->file);
-    ftpc->file = NULL;
-  }
+  Curl_safefree(ftpc->file);
+
+  /* no longer of any use */
+  Curl_safefree(ftpc->newhost);
 }
 
 /* Returns non-zero if the given string contains CR (\r) or LF (\n),
@@ -1105,7 +1101,7 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
     if(getsockname(conn->sock[FIRSTSOCKET], sa, &sslen)) {
       failf(data, "getsockname() failed: %s",
           Curl_strerror(conn, SOCKERRNO) );
-      Curl_safefree(addr);
+      free(addr);
       return CURLE_FTP_PORT_FAILED;
     }
     switch(sa->sa_family) {
@@ -1137,11 +1133,11 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
 
   if(res == NULL) {
     failf(data, "failed to resolve the address provided to PORT: %s", host);
-    Curl_safefree(addr);
+    free(addr);
     return CURLE_FTP_PORT_FAILED;
   }
 
-  Curl_safefree(addr);
+  free(addr);
   host = NULL;
 
   /* step 2, create a socket for the requested address */
@@ -1495,13 +1491,13 @@ static CURLcode ftp_state_list(struct connectdata *conn)
      The other ftp_filemethods will CWD into dir/dir/ first and
      then just do LIST (in that case: nothing to do here)
   */
-  char *cmd,*lstArg,*slashPos;
+  char *cmd, *lstArg, *slashPos;
 
   lstArg = NULL;
   if((data->set.ftp_filemethod == FTPFILE_NOCWD) &&
      data->state.path &&
      data->state.path[0] &&
-     strchr(data->state.path,'/')) {
+     strchr(data->state.path, '/')) {
 
     lstArg = strdup(data->state.path);
     if(!lstArg)
@@ -1511,7 +1507,7 @@ static CURLcode ftp_state_list(struct connectdata *conn)
     if(lstArg[strlen(lstArg) - 1] != '/')  {
 
       /* chop off the file part if format is dir/dir/file */
-      slashPos = strrchr(lstArg,'/');
+      slashPos = strrchr(lstArg, '/');
       if(slashPos)
         *(slashPos+1) = '\0';
     }
@@ -1525,16 +1521,13 @@ static CURLcode ftp_state_list(struct connectdata *conn)
                  lstArg? lstArg: "" );
 
   if(!cmd) {
-    if(lstArg)
-      free(lstArg);
+    free(lstArg);
     return CURLE_OUT_OF_MEMORY;
   }
 
   result = Curl_pp_sendf(&conn->proto.ftpc.pp, "%s", cmd);
 
-  if(lstArg)
-    free(lstArg);
-
+  free(lstArg);
   free(cmd);
 
   if(result)
@@ -1677,8 +1670,8 @@ static CURLcode ftp_state_ul_setup(struct connectdata *conn,
             BUFSIZE : curlx_sotouz(data->state.resume_from - passed);
 
           size_t actuallyread =
-            conn->fread_func(data->state.buffer, 1, readthisamountnow,
-                             conn->fread_in);
+            data->set.fread_func(data->state.buffer, 1, readthisamountnow,
+                                 data->set.in);
 
           passed += actuallyread;
           if((actuallyread == 0) || (actuallyread > readthisamountnow)) {
@@ -1815,6 +1808,13 @@ static CURLcode ftp_state_quote(struct connectdata *conn,
 static CURLcode ftp_epsv_disable(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
+
+  if(conn->bits.ipv6) {
+    /* We can't disable EPSV when doing IPv6, so this is instead a fail */
+    failf(conn->data, "Failed EPSV attempt, exiting\n");
+    return CURLE_FTP_WEIRD_SERVER_REPLY;
+  }
+
   infof(conn->data, "Failed EPSV attempt. Disabling EPSV\n");
   /* disable it for next transfer */
   conn->bits.ftp_use_epsv = FALSE;
@@ -1887,7 +1887,7 @@ static CURLcode proxy_magic(struct connectdata *conn,
     memset(&http_proxy, 0, sizeof(http_proxy));
     data->req.protop = &http_proxy;
 
-    result = Curl_proxyCONNECT(conn, SECONDARYSOCKET, newhost, newport);
+    result = Curl_proxyCONNECT(conn, SECONDARYSOCKET, newhost, newport, TRUE);
 
     data->req.protop = ftp_save;
 
@@ -1906,6 +1906,22 @@ static CURLcode proxy_magic(struct connectdata *conn,
   return result;
 }
 
+static char *control_address(struct connectdata *conn)
+{
+  /* Returns the control connection IP address.
+     If a proxy tunnel is used, returns the original host name instead, because
+     the effective control connection address is the proxy address,
+     not the ftp host. */
+  if(conn->bits.tunnel_proxy ||
+     conn->proxytype == CURLPROXY_SOCKS5 ||
+     conn->proxytype == CURLPROXY_SOCKS5_HOSTNAME ||
+     conn->proxytype == CURLPROXY_SOCKS4 ||
+     conn->proxytype == CURLPROXY_SOCKS4A)
+    return conn->host.name;
+
+  return conn->ip_addr_str;
+}
+
 static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
                                     int ftpcode)
 {
@@ -1917,6 +1933,9 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
   unsigned short connectport; /* the local port connect() should use! */
   char *str=&data->state.buffer[4];  /* start on the first letter */
 
+  /* if we come here again, make sure the former name is cleared */
+  Curl_safefree(ftpc->newhost);
+
   if((ftpc->count1 == 0) &&
      (ftpcode == 229)) {
     /* positive EPSV response */
@@ -1925,12 +1944,12 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
       unsigned int num;
       char separator[4];
       ptr++;
-      if(5  == sscanf(ptr, "%c%c%c%u%c",
-                      &separator[0],
-                      &separator[1],
-                      &separator[2],
-                      &num,
-                      &separator[3])) {
+      if(5 == sscanf(ptr, "%c%c%c%u%c",
+                     &separator[0],
+                     &separator[1],
+                     &separator[2],
+                     &num,
+                     &separator[3])) {
         const char sep1 = separator[0];
         int i;
 
@@ -1948,19 +1967,9 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
         }
         if(ptr) {
           ftpc->newport = (unsigned short)(num & 0xffff);
-
-          if(conn->bits.tunnel_proxy ||
-             conn->proxytype == CURLPROXY_SOCKS5 ||
-             conn->proxytype == CURLPROXY_SOCKS5_HOSTNAME ||
-             conn->proxytype == CURLPROXY_SOCKS4 ||
-             conn->proxytype == CURLPROXY_SOCKS4A)
-            /* proxy tunnel -> use other host info because ip_addr_str is the
-               proxy address not the ftp host */
-            snprintf(ftpc->newhost, sizeof(ftpc->newhost), "%s",
-                     conn->host.name);
-          else
-            /* use the same IP we are already connected to */
-            snprintf(ftpc->newhost, NEWHOST_BUFSIZE, "%s", conn->ip_addr_str);
+          ftpc->newhost = strdup(control_address(conn));
+          if(!ftpc->newhost)
+            return CURLE_OUT_OF_MEMORY;
         }
       }
       else
@@ -1988,8 +1997,8 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
      */
     while(*str) {
       if(6 == sscanf(str, "%d,%d,%d,%d,%d,%d",
-                      &ip[0], &ip[1], &ip[2], &ip[3],
-                      &port[0], &port[1]))
+                     &ip[0], &ip[1], &ip[2], &ip[3],
+                     &port[0], &port[1]))
         break;
       str++;
     }
@@ -2001,26 +2010,19 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
 
     /* we got OK from server */
     if(data->set.ftp_skip_ip) {
-      /* told to ignore the remotely given IP but instead use the one we used
+      /* told to ignore the remotely given IP but instead use the host we used
          for the control connection */
-      infof(data, "Skips %d.%d.%d.%d for data connection, uses %s instead\n",
+      infof(data, "Skip %d.%d.%d.%d for data connection, re-use %s instead\n",
             ip[0], ip[1], ip[2], ip[3],
-            conn->ip_addr_str);
-      if(conn->bits.tunnel_proxy ||
-         conn->proxytype == CURLPROXY_SOCKS5 ||
-         conn->proxytype == CURLPROXY_SOCKS5_HOSTNAME ||
-         conn->proxytype == CURLPROXY_SOCKS4 ||
-         conn->proxytype == CURLPROXY_SOCKS4A)
-        /* proxy tunnel -> use other host info because ip_addr_str is the
-           proxy address not the ftp host */
-        snprintf(ftpc->newhost, sizeof(ftpc->newhost), "%s", conn->host.name);
-      else
-        snprintf(ftpc->newhost, sizeof(ftpc->newhost), "%s",
-                 conn->ip_addr_str);
+            conn->host.name);
+      ftpc->newhost = strdup(control_address(conn));
     }
     else
-      snprintf(ftpc->newhost, sizeof(ftpc->newhost),
-               "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
+      ftpc->newhost = aprintf("%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
+
+    if(!ftpc->newhost)
+      return CURLE_OUT_OF_MEMORY;
+
     ftpc->newport = (unsigned short)(((port[0]<<8) + port[1]) & 0xffff);
   }
   else if(ftpc->count1 == 0) {
@@ -2071,9 +2073,8 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
   conn->bits.tcpconnect[SECONDARYSOCKET] = FALSE;
   result = Curl_connecthost(conn, addr);
 
-  Curl_resolv_unlock(data, addr); /* we're done using this address */
-
   if(result) {
+    Curl_resolv_unlock(data, addr); /* we're done using this address */
     if(ftpc->count1 == 0 && ftpcode == 229)
       return ftp_epsv_disable(conn);
 
@@ -2089,8 +2090,9 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
 
   if(data->set.verbose)
     /* this just dumps information about this second connection */
-    ftp_pasv_verbose(conn, conn->ip_addr, ftpc->newhost, connectport);
+    ftp_pasv_verbose(conn, addr->addr, ftpc->newhost, connectport);
 
+  Curl_resolv_unlock(data, addr); /* we're done using this address */
   conn->bits.do_more = TRUE;
   state(conn, FTP_STOP); /* this phase is completed */
 
@@ -2105,7 +2107,9 @@ static CURLcode ftp_state_port_resp(struct connectdata *conn,
   ftpport fcmd = (ftpport)ftpc->count1;
   CURLcode result = CURLE_OK;
 
-  if(ftpcode != 200) {
+  /* The FTP spec tells a positive response should have code 200.
+     Be more permissive here to tolerate deviant servers. */
+  if(ftpcode / 100 != 2) {
     /* the command failed */
 
     if(EPRT == fcmd) {
@@ -3269,8 +3273,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
   }
 
   /* now store a copy of the directory we are in */
-  if(ftpc->prevpath)
-    free(ftpc->prevpath);
+  free(ftpc->prevpath);
 
   if(data->set.wildcardmatch) {
     if(data->set.chunk_end && ftpc->file) {
@@ -3319,7 +3322,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
   /* shut down the socket to inform the server we're done */
 
 #ifdef _WIN32_WCE
-  shutdown(conn->sock[SECONDARYSOCKET],2);  /* SD_BOTH */
+  shutdown(conn->sock[SECONDARYSOCKET], 2);  /* SD_BOTH */
 #endif
 
   if(conn->sock[SECONDARYSOCKET] != CURL_SOCKET_BAD) {
@@ -3642,7 +3645,7 @@ static CURLcode ftp_do_more(struct connectdata *conn, int *completep)
     if(conn->tunnel_state[SECONDARYSOCKET] == TUNNEL_CONNECT) {
       /* As we're in TUNNEL_CONNECT state now, we know the proxy name and port
          aren't used so we blank their arguments. TODO: make this nicer */
-      result = Curl_proxyCONNECT(conn, SECONDARYSOCKET, NULL, 0);
+      result = Curl_proxyCONNECT(conn, SECONDARYSOCKET, NULL, 0, FALSE);
 
       return result;
     }
@@ -3816,7 +3819,7 @@ static void wc_data_dtor(void *ptr)
   struct ftp_wc_tmpdata *tmp = ptr;
   if(tmp)
     Curl_ftp_parselist_data_free(&tmp->parser);
-  Curl_safefree(tmp);
+  free(tmp);
 }
 
 static CURLcode init_wc_data(struct connectdata *conn)
@@ -3870,7 +3873,7 @@ static CURLcode init_wc_data(struct connectdata *conn)
   ftp_tmp->parser = Curl_ftp_parselist_data_alloc();
   if(!ftp_tmp->parser) {
     Curl_safefree(wildcard->pattern);
-    Curl_safefree(ftp_tmp);
+    free(ftp_tmp);
     return CURLE_OUT_OF_MEMORY;
   }
 
@@ -4096,7 +4099,7 @@ CURLcode Curl_ftpsendf(struct connectdata *conn,
   result = Curl_convert_to_network(conn->data, s, write_len);
   /* Curl_convert_to_network calls failf if unsuccessful */
   if(result)
-    return(result);
+    return result;
 
   for(;;) {
 #ifdef HAVE_GSSAPI
@@ -4195,14 +4198,10 @@ static CURLcode ftp_disconnect(struct connectdata *conn, bool dead_connection)
   }
 
   freedirs(ftpc);
-  if(ftpc->prevpath) {
-    free(ftpc->prevpath);
-    ftpc->prevpath = NULL;
-  }
-  if(ftpc->server_os) {
-    free(ftpc->server_os);
-    ftpc->server_os = NULL;
-  }
+  free(ftpc->prevpath);
+  ftpc->prevpath = NULL;
+  free(ftpc->server_os);
+  ftpc->server_os = NULL;
 
   Curl_pp_disconnect(pp);
 
index b6bfc02..833447b 100644 (file)
--- a/lib/ftp.h
+++ b/lib/ftp.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -147,11 +147,10 @@ struct ftp_conn {
   curl_off_t known_filesize; /* file size is different from -1, if wildcard
                                 LIST parsing was done and wc_statemach set
                                 it */
-  /* newhost must be able to hold a full IP-style address in ASCII, which
-     in the IPv6 case means 5*8-1 = 39 letters */
-#define NEWHOST_BUFSIZE 48
-  char newhost[NEWHOST_BUFSIZE]; /* this is the pair to connect the DATA... */
-  unsigned short newport;        /* connection to */
+  /* newhost is the (allocated) IP addr or host name to connect the data
+     connection to */
+  char *newhost;          /* this is the pair to connect the DATA... */
+  unsigned short newport; /* connection to */
 
 };
 
index 9aacad9..17e0a66 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "ftp.h"
 #include "ftplistparser.h"
 #include "curl_fnmatch.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -191,8 +187,7 @@ struct ftp_parselist_data *Curl_ftp_parselist_data_alloc(void)
 
 void Curl_ftp_parselist_data_free(struct ftp_parselist_data **pl_data)
 {
-  if(*pl_data)
-    free(*pl_data);
+  free(*pl_data);
   *pl_data = NULL;
 }
 
index 0ffdd74..910f520 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "urldata.h"
 #include "getinfo.h"
 
-#include "curl_memory.h"
 #include "vtls/vtls.h"
 #include "connect.h" /* Curl_getconnectinfo() */
 #include "progress.h"
 
-/* Make this the last #include */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /*
@@ -58,8 +58,7 @@ CURLcode Curl_initinfo(struct SessionHandle *data)
   info->filetime = -1; /* -1 is an illegal time and thus means unknown */
   info->timecond = FALSE;
 
-  if(info->contenttype)
-    free(info->contenttype);
+  free(info->contenttype);
   info->contenttype = NULL;
 
   info->header_size = 0;
@@ -306,7 +305,7 @@ static CURLcode getinfo_slist(struct SessionHandle *data, CURLINFO info,
         break; /* no SSL session found */
 
       /* Return the TLS session information from the relevant backend */
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
       internals = conn->ssl[sockindex].ctx;
 #endif
 #ifdef USE_GNUTLS
index f3fd065..954cad8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "select.h"
 #include "url.h"
 #include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -124,7 +120,7 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
     if(!result) { /* Which may not have written it all! */
       result = Curl_client_write(conn, CLIENTWRITE_HEADER, sel, amount);
       if(result) {
-        Curl_safefree(sel_org);
+        free(sel_org);
         return result;
       }
       k -= amount;
@@ -134,7 +130,7 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
     }
     else {
       failf(data, "Failed sending Gopher request");
-      Curl_safefree(sel_org);
+      free(sel_org);
       return result;
     }
     /* Don't busyloop. The entire loop thing is a work-around as it causes a
@@ -149,7 +145,7 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
     Curl_socket_ready(CURL_SOCKET_BAD, sockfd, 100);
   }
 
-  Curl_safefree(sel_org);
+  free(sel_org);
 
   /* We can use Curl_sendf to send the terminal \r\n relatively safely and
      save allocing another string/doing another _write loop. */
index 4a12e1a..c46760a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include "hash.h"
 #include "llist.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -93,32 +89,6 @@ Curl_hash_init(struct curl_hash *h,
   }
 }
 
-struct curl_hash *
-Curl_hash_alloc(int slots,
-                hash_function hfunc,
-                comp_function comparator,
-                curl_hash_dtor dtor)
-{
-  struct curl_hash *h;
-
-  if(!slots || !hfunc || !comparator ||!dtor) {
-    return NULL; /* failure */
-  }
-
-  h = malloc(sizeof(struct curl_hash));
-  if(h) {
-    if(Curl_hash_init(h, slots, hfunc, comparator, dtor)) {
-      /* failure */
-      free(h);
-      h = NULL;
-    }
-  }
-
-  return h;
-}
-
-
-
 static struct curl_hash_element *
 mk_hash_element(const void *key, size_t key_len, const void *p)
 {
@@ -242,8 +212,11 @@ Curl_hash_apply(curl_hash *h, void *user,
 }
 #endif
 
+/* Destroys all the entries in the given hash and resets its attributes,
+ * prepping the given hash for [static|dynamic] deallocation.
+ */
 void
-Curl_hash_clean(struct curl_hash *h)
+Curl_hash_destroy(struct curl_hash *h)
 {
   int i;
 
@@ -257,6 +230,17 @@ Curl_hash_clean(struct curl_hash *h)
   h->slots = 0;
 }
 
+/* Removes all the entries in the given hash.
+ *
+ * @unittest: 1602
+ */
+void
+Curl_hash_clean(struct curl_hash *h)
+{
+  Curl_hash_clean_with_criterium(h, NULL, NULL);
+}
+
+/* Cleans all entries that pass the comp function criteria. */
 void
 Curl_hash_clean_with_criterium(struct curl_hash *h, void *user,
                                int (*comp)(void *, void *))
@@ -276,7 +260,7 @@ Curl_hash_clean_with_criterium(struct curl_hash *h, void *user,
       struct curl_hash_element *he = le->ptr;
       lnext = le->next;
       /* ask the callback function if we shall remove this entry or not */
-      if(comp(user, he->ptr)) {
+      if(comp == NULL || comp(user, he->ptr)) {
         Curl_llist_remove(list, le, (void *) h);
         --h->size; /* one less entry in the hash now */
       }
@@ -285,17 +269,6 @@ Curl_hash_clean_with_criterium(struct curl_hash *h, void *user,
   }
 }
 
-void
-Curl_hash_destroy(struct curl_hash *h)
-{
-  if(!h)
-    return;
-
-  Curl_hash_clean(h);
-
-  free(h);
-}
-
 size_t Curl_hash_str(void* key, size_t key_length, size_t slots_num)
 {
   const char* key_str = (const char *) key;
@@ -310,16 +283,11 @@ size_t Curl_hash_str(void* key, size_t key_length, size_t slots_num)
   return (h % slots_num);
 }
 
-size_t Curl_str_key_compare(void*k1, size_t key1_len, void*k2, size_t key2_len)
+size_t Curl_str_key_compare(void *k1, size_t key1_len,
+                            void *k2, size_t key2_len)
 {
-  char *key1 = (char *)k1;
-  char *key2 = (char *)k2;
-
-  if(key1_len == key2_len &&
-      *key1 == *key2 &&
-      memcmp(key1, key2, key1_len) == 0) {
+  if((key1_len == key2_len) && !memcmp(k1, k2, key1_len))
     return 1;
-  }
 
   return 0;
 }
index aa935d4..b13a236 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -74,22 +74,16 @@ int Curl_hash_init(struct curl_hash *h,
                    comp_function comparator,
                    curl_hash_dtor dtor);
 
-struct curl_hash *Curl_hash_alloc(int slots,
-                                  hash_function hfunc,
-                                  comp_function comparator,
-                                  curl_hash_dtor dtor);
-
 void *Curl_hash_add(struct curl_hash *h, void *key, size_t key_len, void *p);
 int Curl_hash_delete(struct curl_hash *h, void *key, size_t key_len);
 void *Curl_hash_pick(struct curl_hash *, void * key, size_t key_len);
 void Curl_hash_apply(struct curl_hash *h, void *user,
                      void (*cb)(void *user, void *ptr));
 int Curl_hash_count(struct curl_hash *h);
+void Curl_hash_destroy(struct curl_hash *h);
 void Curl_hash_clean(struct curl_hash *h);
 void Curl_hash_clean_with_criterium(struct curl_hash *h, void *user,
                                     int (*comp)(void *, void *));
-void Curl_hash_destroy(struct curl_hash *h);
-
 size_t Curl_hash_str(void* key, size_t key_length, size_t slots_num);
 size_t Curl_str_key_compare(void*k1, size_t key1_len, void*k2,
                             size_t key2_len);
index dace820..0d2d5f4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #ifndef CURL_DISABLE_CRYPTO_AUTH
 
 #include "curl_hmac.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
index 3cf8004..17b8be0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "share.h"
 #include "strerror.h"
 #include "url.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -123,21 +119,21 @@ CURLcode Curl_addrinfo_callback(struct connectdata *conn,
 CURLcode Curl_async_resolved(struct connectdata *conn,
                              bool *protocol_done)
 {
-  CURLcode code;
+  CURLcode result;
 
   if(conn->async.dns) {
     conn->dns_entry = conn->async.dns;
     conn->async.dns = NULL;
   }
 
-  code = Curl_setup_conn(conn, protocol_done);
+  result = Curl_setup_conn(conn, protocol_done);
 
-  if(code)
+  if(result)
     /* We're not allowed to return failure with memory left allocated
        in the connectdata struct, free those here */
     Curl_disconnect(conn, FALSE); /* close the connection */
 
-  return code;
+  return result;
 }
 
 /*
index 21af8fa..62a26e4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,7 +22,7 @@
 
 #include "curl_setup.h"
 
-#if defined(USE_SSLEAY) || defined(USE_AXTLS) || defined(USE_GSKIT)
+#if defined(USE_OPENSSL) || defined(USE_AXTLS) || defined(USE_GSKIT)
 /* these backends use functions from this file */
 
 #ifdef HAVE_NETINET_IN_H
@@ -144,4 +144,4 @@ int Curl_cert_hostcheck(const char *match_pattern, const char *hostname)
   return res;
 }
 
-#endif /* SSLEAY or AXTLS or GSKIT */
+#endif /* OPENSSL or AXTLS or GSKIT */
index 2ea0ab6..82f3897 100644 (file)
 #include "url.h"
 #include "inet_ntop.h"
 #include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -140,11 +137,7 @@ struct curl_hash *Curl_global_host_cache_init(void)
 void Curl_global_host_cache_dtor(void)
 {
   if(host_cache_initialized) {
-    /* first make sure that any custom "CURLOPT_RESOLVE" names are
-       cleared off */
-    Curl_hostcache_clean(NULL, &hostname_cache);
-    /* then free the remaining hash completely */
-    Curl_hash_clean(&hostname_cache);
+    Curl_hash_destroy(&hostname_cache);
     host_cache_initialized = 0;
   }
 }
@@ -237,7 +230,8 @@ hostcache_timestamp_remove(void *datap, void *hc)
     (struct hostcache_prune_data *) datap;
   struct Curl_dns_entry *c = (struct Curl_dns_entry *) hc;
 
-  return !c->inuse && (data->now - c->timestamp >= data->cache_timeout);
+  return (0 != c->timestamp)
+    && (data->now - c->timestamp >= data->cache_timeout);
 }
 
 /*
@@ -283,40 +277,54 @@ void Curl_hostcache_prune(struct SessionHandle *data)
     Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
 }
 
-/*
- * Check if the entry should be pruned. Assumes a locked cache.
- */
-static int
-remove_entry_if_stale(struct SessionHandle *data, struct Curl_dns_entry *dns)
+#ifdef HAVE_SIGSETJMP
+/* Beware this is a global and unique instance. This is used to store the
+   return address that we can jump back to from inside a signal handler. This
+   is not thread-safe stuff. */
+sigjmp_buf curl_jmpenv;
+#endif
+
+/* lookup address, returns entry if found and not stale */
+static struct Curl_dns_entry *
+fetch_addr(struct connectdata *conn,
+                const char *hostname,
+                int port)
 {
-  struct hostcache_prune_data user;
+  char *entry_id = NULL;
+  struct Curl_dns_entry *dns = NULL;
+  size_t entry_len;
+  struct SessionHandle *data = conn->data;
 
-  if(!dns || (data->set.dns_cache_timeout == -1) || !data->dns.hostcache ||
-     dns->inuse)
-    /* cache forever means never prune, and NULL hostcache means we can't do
-       it, if it still is in use then we leave it */
-    return 0;
+  /* Create an entry id, based upon the hostname and port */
+  entry_id = create_hostcache_id(hostname, port);
+  /* If we can't create the entry id, fail */
+  if(!entry_id)
+    return dns;
 
-  time(&user.now);
-  user.cache_timeout = data->set.dns_cache_timeout;
+  entry_len = strlen(entry_id);
 
-  if(!hostcache_timestamp_remove(&user,dns) )
-    return 0;
+  /* See if its already in our dns cache */
+  dns = Curl_hash_pick(data->dns.hostcache, entry_id, entry_len+1);
 
-  Curl_hash_clean_with_criterium(data->dns.hostcache,
-                                 (void *) &user,
-                                 hostcache_timestamp_remove);
+  if(dns && (data->set.dns_cache_timeout != -1))  {
+    /* See whether the returned entry is stale. Done before we release lock */
+    struct hostcache_prune_data user;
 
-  return 1;
-}
+    time(&user.now);
+    user.cache_timeout = data->set.dns_cache_timeout;
 
+    if(hostcache_timestamp_remove(&user, dns)) {
+      infof(data, "Hostname in DNS cache was stale, zapped\n");
+      dns = NULL; /* the memory deallocation is being handled by the hash */
+      Curl_hash_delete(data->dns.hostcache, entry_id, entry_len+1);
+    }
+  }
 
-#ifdef HAVE_SIGSETJMP
-/* Beware this is a global and unique instance. This is used to store the
-   return address that we can jump back to from inside a signal handler. This
-   is not thread-safe stuff. */
-sigjmp_buf curl_jmpenv;
-#endif
+  /* free the allocated entry_id again */
+  free(entry_id);
+
+  return dns;
+}
 
 /*
  * Curl_fetch_addr() fetches a 'Curl_dns_entry' already in the DNS cache.
@@ -328,38 +336,27 @@ sigjmp_buf curl_jmpenv;
  * lookups for the same hostname requested by different handles.
  *
  * Returns the Curl_dns_entry entry pointer or NULL if not in the cache.
+ *
+ * The returned data *MUST* be "unlocked" with Curl_resolv_unlock() after
+ * use, or we'll leak memory!
  */
 struct Curl_dns_entry *
 Curl_fetch_addr(struct connectdata *conn,
                 const char *hostname,
                 int port)
 {
-  char *entry_id = NULL;
-  struct Curl_dns_entry *dns = NULL;
-  size_t entry_len;
   struct SessionHandle *data = conn->data;
-  int stale;
-
-  /* Create an entry id, based upon the hostname and port */
-  entry_id = create_hostcache_id(hostname, port);
-  /* If we can't create the entry id, fail */
-  if(!entry_id)
-    return dns;
+  struct Curl_dns_entry *dns = NULL;
 
-  entry_len = strlen(entry_id);
+  if(data->share)
+    Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
 
-  /* See if its already in our dns cache */
-  dns = Curl_hash_pick(data->dns.hostcache, entry_id, entry_len+1);
+  dns = fetch_addr(conn, hostname, port);
 
-  /* free the allocated entry_id again */
-  free(entry_id);
+  if(dns) dns->inuse++; /* we use it! */
 
-  /* See whether the returned entry is stale. Done before we release lock */
-  stale = remove_entry_if_stale(data, dns);
-  if(stale) {
-    infof(data, "Hostname in DNS cache was stale, zapped\n");
-    dns = NULL; /* the memory deallocation is being handled by the hash */
-  }
+  if(data->share)
+    Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
 
   return dns;
 }
@@ -398,11 +395,11 @@ Curl_cache_addr(struct SessionHandle *data,
     return NULL;
   }
 
-  dns->inuse = 0;   /* init to not used */
+  dns->inuse = 1;   /* the cache has the first reference */
   dns->addr = addr; /* this is the address(es) */
   time(&dns->timestamp);
   if(dns->timestamp == 0)
-    dns->timestamp = 1;   /* zero indicates that entry isn't in hash table */
+    dns->timestamp = 1;   /* zero indicates CURLOPT_RESOLVE entry */
 
   /* Store the resolved data in our DNS cache. */
   dns2 = Curl_hash_add(data->dns.hostcache, entry_id, entry_len+1,
@@ -458,7 +455,7 @@ int Curl_resolv(struct connectdata *conn,
   if(data->share)
     Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
 
-  dns = Curl_fetch_addr(conn, hostname, port);
+  dns = fetch_addr(conn, hostname, port);
 
   if(dns) {
     infof(data, "Hostname %s was found in DNS cache\n", hostname);
@@ -610,32 +607,6 @@ int Curl_resolv_timeout(struct connectdata *conn,
        we want to wait less than one second we must bail out already now. */
     return CURLRESOLV_TIMEDOUT;
 
-  /*************************************************************
-   * Set signal handler to catch SIGALRM
-   * Store the old value to be able to set it back later!
-   *************************************************************/
-#ifdef HAVE_SIGACTION
-  sigaction(SIGALRM, NULL, &sigact);
-  keep_sigact = sigact;
-  keep_copysig = TRUE; /* yes, we have a copy */
-  sigact.sa_handler = alarmfunc;
-#ifdef SA_RESTART
-  /* HPUX doesn't have SA_RESTART but defaults to that behaviour! */
-  sigact.sa_flags &= ~SA_RESTART;
-#endif
-  /* now set the new struct */
-  sigaction(SIGALRM, &sigact, NULL);
-#else /* HAVE_SIGACTION */
-  /* no sigaction(), revert to the much lamer signal() */
-#ifdef HAVE_SIGNAL
-  keep_sigact = signal(SIGALRM, alarmfunc);
-#endif
-#endif /* HAVE_SIGACTION */
-
-  /* alarm() makes a signal get sent when the timeout fires off, and that
-     will abort system calls */
-  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.
      This technique has problems (see alarmfunc).
@@ -648,6 +619,33 @@ int Curl_resolv_timeout(struct connectdata *conn,
     rc = CURLRESOLV_ERROR;
     goto clean_up;
   }
+  else {
+    /*************************************************************
+     * Set signal handler to catch SIGALRM
+     * Store the old value to be able to set it back later!
+     *************************************************************/
+#ifdef HAVE_SIGACTION
+    sigaction(SIGALRM, NULL, &sigact);
+    keep_sigact = sigact;
+    keep_copysig = TRUE; /* yes, we have a copy */
+    sigact.sa_handler = alarmfunc;
+#ifdef SA_RESTART
+    /* HPUX doesn't have SA_RESTART but defaults to that behaviour! */
+    sigact.sa_flags &= ~SA_RESTART;
+#endif
+    /* now set the new struct */
+    sigaction(SIGALRM, &sigact, NULL);
+#else /* HAVE_SIGACTION */
+    /* no sigaction(), revert to the much lamer signal() */
+#ifdef HAVE_SIGNAL
+    keep_sigact = signal(SIGALRM, alarmfunc);
+#endif
+#endif /* HAVE_SIGACTION */
+
+    /* alarm() makes a signal get sent when the timeout fires off, and that
+       will abort system calls */
+    prev_alarm = alarm(curlx_sltoui(timeout/1000L));
+  }
 
 #else
 #ifndef CURLRES_ASYNCH
@@ -719,54 +717,37 @@ clean_up:
  */
 void Curl_resolv_unlock(struct SessionHandle *data, struct Curl_dns_entry *dns)
 {
-  DEBUGASSERT(dns && (dns->inuse>0));
-
   if(data && data->share)
     Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
 
-  dns->inuse--;
-  /* only free if nobody is using AND it is not in hostcache (timestamp ==
-     0) */
-  if(dns->inuse == 0 && dns->timestamp == 0) {
-    Curl_freeaddrinfo(dns->addr);
-    free(dns);
-  }
+  freednsentry(dns);
 
   if(data && data->share)
     Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
 }
 
 /*
- * File-internal: free a cache dns entry.
+ * File-internal: release cache dns entry reference, free if inuse drops to 0
  */
 static void freednsentry(void *freethis)
 {
-  struct Curl_dns_entry *p = (struct Curl_dns_entry *) freethis;
+  struct Curl_dns_entry *dns = (struct Curl_dns_entry *) freethis;
+  DEBUGASSERT(dns && (dns->inuse>0));
 
-  /* mark the entry as not in hostcache */
-  p->timestamp = 0;
-  if(p->inuse == 0) {
-    Curl_freeaddrinfo(p->addr);
-    free(p);
+  dns->inuse--;
+  if(dns->inuse == 0) {
+    Curl_freeaddrinfo(dns->addr);
+    free(dns);
   }
 }
 
 /*
- * Curl_mk_dnscache() creates a new DNS cache and returns the handle for it.
+ * Curl_mk_dnscache() inits a new DNS cache and returns success/failure.
  */
-struct curl_hash *Curl_mk_dnscache(void)
+int Curl_mk_dnscache(struct curl_hash *hash)
 {
-  return Curl_hash_alloc(7, Curl_hash_str, Curl_str_key_compare, freednsentry);
-}
-
-static int hostcache_inuse(void *data, void *hc)
-{
-  struct Curl_dns_entry *c = (struct Curl_dns_entry *) hc;
-
-  if(c->inuse == 1)
-    Curl_resolv_unlock(data, c);
-
-  return 1; /* free all entries */
+  return Curl_hash_init(hash, 7, Curl_hash_str, Curl_str_key_compare,
+                        freednsentry);
 }
 
 /*
@@ -779,11 +760,13 @@ static int hostcache_inuse(void *data, void *hc)
 void Curl_hostcache_clean(struct SessionHandle *data,
                           struct curl_hash *hash)
 {
-  /* Entries added to the hostcache with the CURLOPT_RESOLVE function are
-   * still present in the cache with the inuse counter set to 1. Detect them
-   * and cleanup!
-   */
-  Curl_hash_clean_with_criterium(hash, data, hostcache_inuse);
+  if(data && data->share)
+    Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
+
+  Curl_hash_clean(hash);
+
+  if(data && data->share)
+    Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
 }
 
 
@@ -798,18 +781,52 @@ CURLcode Curl_loadhostpairs(struct SessionHandle *data)
     if(!hostp->data)
       continue;
     if(hostp->data[0] == '-') {
-      /* TODO: mark an entry for removal */
+      char *entry_id;
+      size_t entry_len;
+
+      if(2 != sscanf(hostp->data + 1, "%255[^:]:%d", hostname, &port)) {
+        infof(data, "Couldn't parse CURLOPT_RESOLVE removal entry '%s'!\n",
+              hostp->data);
+        continue;
+      }
+
+      /* Create an entry id, based upon the hostname and port */
+      entry_id = create_hostcache_id(hostname, port);
+      /* If we can't create the entry id, fail */
+      if(!entry_id) {
+        return CURLE_OUT_OF_MEMORY;
+      }
+
+      entry_len = strlen(entry_id);
+
+      if(data->share)
+        Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
+
+      /* delete entry, ignore if it didn't exist */
+      Curl_hash_delete(data->dns.hostcache, entry_id, entry_len+1);
+
+      if(data->share)
+        Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
+
+      /* free the allocated entry_id again */
+      free(entry_id);
     }
-    else if(3 == sscanf(hostp->data, "%255[^:]:%d:%255s", hostname, &port,
-                        address)) {
+    else {
       struct Curl_dns_entry *dns;
       Curl_addrinfo *addr;
       char *entry_id;
       size_t entry_len;
 
+      if(3 != sscanf(hostp->data, "%255[^:]:%d:%255s", hostname, &port,
+                     address)) {
+        infof(data, "Couldn't parse CURLOPT_RESOLVE entry '%s'!\n",
+              hostp->data);
+        continue;
+      }
+
       addr = Curl_str2addr(address, port);
       if(!addr) {
-        infof(data, "Resolve %s found illegal!\n", hostp->data);
+        infof(data, "Address in '%s' found illegal!\n", hostp->data);
         continue;
       }
 
@@ -832,9 +849,16 @@ CURLcode Curl_loadhostpairs(struct SessionHandle *data)
       /* free the allocated entry_id again */
       free(entry_id);
 
-      if(!dns)
+      if(!dns) {
         /* if not in the cache already, put this host in the cache */
         dns = Curl_cache_addr(data, addr, hostname, port);
+        if(dns) {
+          dns->timestamp = 0; /* mark as added by CURLOPT_RESOLVE */
+          /* release the returned reference; the cache itself will keep the
+           * entry alive: */
+          dns->inuse--;
+        }
+      }
       else
         /* this is a duplicate, free it again */
         Curl_freeaddrinfo(addr);
index e1e880e..d5b44bc 100644 (file)
@@ -65,11 +65,10 @@ void Curl_global_host_cache_dtor(void);
 
 struct Curl_dns_entry {
   Curl_addrinfo *addr;
-  /* timestamp == 0 -- entry not in hostcache
-     timestamp != 0 -- entry is in hostcache */
+  /* timestamp == 0 -- CURLOPT_RESOLVE entry, doesn't timeout */
   time_t timestamp;
-  long inuse;      /* use-counter, make very sure you decrease this
-                      when you're done using the address you received */
+  /* use-counter, use Curl_resolv_unlock to release reference */
+  long inuse;
 };
 
 /*
@@ -125,8 +124,8 @@ void Curl_resolv_unlock(struct SessionHandle *data,
 /* for debugging purposes only: */
 void Curl_scan_cache_used(void *user, void *ptr);
 
-/* make a new dns cache and return the handle */
-struct curl_hash *Curl_mk_dnscache(void);
+/* init a new dns cache and return success */
+int Curl_mk_dnscache(struct curl_hash *hash);
 
 /* prune old entries from the DNS cache */
 void Curl_hostcache_prune(struct SessionHandle *data);
@@ -175,6 +174,9 @@ const char *Curl_printable_address(const Curl_addrinfo *ip,
  * Curl_fetch_addr() fetches a 'Curl_dns_entry' already in the DNS cache.
  *
  * Returns the Curl_dns_entry entry pointer or NULL if not in the cache.
+ *
+ * The returned data *MUST* be "unlocked" with Curl_resolv_unlock() after
+ * use, or we'll leak memory!
  */
 struct Curl_dns_entry *
 Curl_fetch_addr(struct connectdata *conn,
index 3a05d10..37b0369 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "strerror.h"
 #include "url.h"
 #include "inet_pton.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
index bb72391..6ab131a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "url.h"
 #include "inet_pton.h"
 #include "connect.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
index 4ad3c63..fb1de35 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "share.h"
 #include "strerror.h"
 #include "url.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
index ee0a9a4..9817d72 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -63,7 +63,6 @@
 #include "share.h"
 #include "hostip.h"
 #include "http.h"
-#include "curl_memory.h"
 #include "select.h"
 #include "parsedate.h" /* for the week day and month names */
 #include "strtoofft.h"
 #include "http_proxy.h"
 #include "warnless.h"
 #include "non-ascii.h"
-#include "bundles.h"
+#include "conncache.h"
 #include "pipeline.h"
 #include "http2.h"
 #include "connect.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /*
@@ -155,12 +153,18 @@ CURLcode Curl_http_setup_conn(struct connectdata *conn)
 {
   /* allocate the HTTP-specific struct for the SessionHandle, only to survive
      during this request */
+  struct HTTP *http;
   DEBUGASSERT(conn->data->req.protop == NULL);
 
-  conn->data->req.protop = calloc(1, sizeof(struct HTTP));
-  if(!conn->data->req.protop)
+  http = calloc(1, sizeof(struct HTTP));
+  if(!http)
     return CURLE_OUT_OF_MEMORY;
 
+  conn->data->req.protop = http;
+
+  Curl_http2_setup_conn(conn);
+  Curl_http2_setup_req(conn->data);
+
   return CURLE_OK;
 }
 
@@ -303,7 +307,7 @@ static CURLcode http_output_basic(struct connectdata *conn, bool proxy)
   if(!authorization)
     return CURLE_REMOTE_ACCESS_DENIED;
 
-  Curl_safefree(*userp);
+  free(*userp);
   *userp = aprintf("%sAuthorization: Basic %s\r\n",
                    proxy?"Proxy-":"",
                    authorization);
@@ -347,82 +351,6 @@ static bool pickoneauth(struct auth *pick)
   return picked;
 }
 
-/* whether to complete request (for authentication) in current connection */
-static bool complete_request(struct connectdata *conn,
-                             curl_off_t remaining_bytes)
-{
-#if defined(USE_NTLM) || defined(USE_SPNEGO)
-  struct SessionHandle *data = conn->data;
-  bool have_ntlm_or_negotiate = FALSE;
-  bool auth_started = FALSE;
-
-  /* don't reset connection when we're in NTLM or Negotiate authentication;
-   * those authenticate the connection - creating a new connection breaks the
-   * authentication.
-   */
-
-#if defined(USE_NTLM)
-  /* proxy NTLM authentication */
-  if((data->state.authproxy.picked == CURLAUTH_NTLM) ||
-      (data->state.authproxy.picked == CURLAUTH_NTLM_WB)) {
-    have_ntlm_or_negotiate = TRUE;
-    auth_started = auth_started
-                 || (conn->proxyntlm.state != NTLMSTATE_NONE);
-  }
-
-  /* normal NTLM authentication */
-  if((data->state.authhost.picked == CURLAUTH_NTLM) ||
-      (data->state.authhost.picked == CURLAUTH_NTLM_WB)) {
-    have_ntlm_or_negotiate = TRUE;
-    auth_started = auth_started
-                 || (conn->ntlm.state != NTLMSTATE_NONE);
-  }
-#endif
-
-#if defined(USE_SPNEGO)
-  /* proxy Negotiate authentication */
-  if(data->state.authproxy.picked == CURLAUTH_NEGOTIATE) {
-    have_ntlm_or_negotiate = TRUE;
-    auth_started = auth_started
-                 || (data->state.proxyneg.state != GSS_AUTHNONE);
-  }
-
-  /* normal Negotiate authentication */
-  if(data->state.authhost.picked == CURLAUTH_NEGOTIATE) {
-    have_ntlm_or_negotiate = TRUE;
-    auth_started = auth_started
-                 || (data->state.negotiate.state != GSS_AUTHNONE);
-  }
-#endif
-
-  if(have_ntlm_or_negotiate) {
-    if(remaining_bytes < 2000 || auth_started) {
-      /* NTLM/Negotiation has started *OR* there is just a little (<2K)
-       * data left to send, keep on sending.
-       */
-
-      /* rewind data when completely done sending! */
-      if(!conn->bits.authneg) {
-        conn->bits.rewindaftersend = TRUE;
-        infof(data, "Rewind stream after send\n");
-      }
-
-      return TRUE;
-    }
-
-    infof(data, "NTLM/Negotiate send, close instead of sending %"
-          CURL_FORMAT_CURL_OFF_T " bytes\n",
-          remaining_bytes);
-  }
-#else
-  /* unused parameters: */
-  (void)conn;
-  (void)remaining_bytes;
-#endif
-
-  return FALSE;
-}
-
 /*
  * Curl_http_perhapsrewind()
  *
@@ -481,8 +409,8 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
     /* figure out how much data we are expected to send */
     switch(data->set.httpreq) {
     case HTTPREQ_POST:
-      if(data->set.postfieldsize != -1)
-        expectsend = data->set.postfieldsize;
+      if(data->state.infilesize != -1)
+        expectsend = data->state.infilesize;
       else if(data->set.postfields)
         expectsend = (curl_off_t)strlen(data->set.postfields);
       break;
@@ -501,12 +429,36 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
   conn->bits.rewindaftersend = FALSE; /* default */
 
   if((expectsend == -1) || (expectsend > bytessent)) {
-    if(conn->bits.close)
-      /* this is already marked to get closed */
-      return CURLE_OK;
+#if defined(USE_NTLM)
+    /* There is still data left to send */
+    if((data->state.authproxy.picked == CURLAUTH_NTLM) ||
+       (data->state.authhost.picked == CURLAUTH_NTLM) ||
+       (data->state.authproxy.picked == CURLAUTH_NTLM_WB) ||
+       (data->state.authhost.picked == CURLAUTH_NTLM_WB)) {
+      if(((expectsend - bytessent) < 2000) ||
+         (conn->ntlm.state != NTLMSTATE_NONE) ||
+         (conn->proxyntlm.state != NTLMSTATE_NONE)) {
+        /* The NTLM-negotiation has started *OR* there is just a little (<2K)
+           data left to send, keep on sending. */
+
+        /* rewind data when completely done sending! */
+        if(!conn->bits.authneg) {
+          conn->bits.rewindaftersend = TRUE;
+          infof(data, "Rewind stream after send\n");
+        }
 
-    if(complete_request(conn, (curl_off_t)(expectsend - bytessent)))
-      return CURLE_OK;
+        return CURLE_OK;
+      }
+
+      if(conn->bits.close)
+        /* this is already marked to get closed */
+        return CURLE_OK;
+
+      infof(data, "NTLM send, close instead of sending %"
+            CURL_FORMAT_CURL_OFF_T " bytes\n",
+            (curl_off_t)(expectsend - bytessent));
+    }
+#endif
 
     /* This is not NTLM or many bytes left to send: close */
     connclose(conn, "Mid-auth HTTP and much data left to send");
@@ -517,7 +469,7 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
   }
 
   if(bytessent)
-    /* we rewind now at once since we already sent something */
+    /* we rewind now at once since if we already sent something */
     return Curl_readrewind(conn);
 
   return CURLE_OK;
@@ -733,7 +685,7 @@ Curl_http_output_auth(struct connectdata *conn,
 
   if((conn->bits.httpproxy && conn->bits.proxy_user_passwd) ||
      conn->bits.user_passwd)
-    /* continue please */ ;
+    /* continue please */;
   else {
     authhost->done = TRUE;
     authproxy->done = TRUE;
@@ -834,14 +786,13 @@ CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
   while(*auth) {
 #ifdef USE_SPNEGO
     if(checkprefix("Negotiate", auth)) {
-      int neg;
       *availp |= CURLAUTH_NEGOTIATE;
       authp->avail |= CURLAUTH_NEGOTIATE;
 
       if(authp->picked == CURLAUTH_NEGOTIATE) {
         if(negdata->state == GSS_AUTHSENT || negdata->state == GSS_AUTHNONE) {
-          neg = Curl_input_negotiate(conn, proxy, auth);
-          if(neg == 0) {
+          CURLcode result = Curl_input_negotiate(conn, proxy, auth);
+          if(!result) {
             DEBUGASSERT(!data->req.newurl);
             data->req.newurl = strdup(data->change.url);
             if(!data->req.newurl)
@@ -1050,8 +1001,8 @@ static size_t readmoredata(char *buffer,
       /* move backup data into focus and continue on that */
       http->postdata = http->backup.postdata;
       http->postsize = http->backup.postsize;
-      conn->fread_func = http->backup.fread_func;
-      conn->fread_in = http->backup.fread_in;
+      conn->data->set.fread_func = http->backup.fread_func;
+      conn->data->set.in = http->backup.fread_in;
 
       http->sending++; /* move one step up */
 
@@ -1082,6 +1033,16 @@ Curl_send_buffer *Curl_add_buffer_init(void)
 }
 
 /*
+ * Curl_add_buffer_free() frees all associated resources.
+ */
+void Curl_add_buffer_free(Curl_send_buffer *buff)
+{
+  if(buff) /* deal with NULL input */
+    free(buff->buffer);
+  free(buff);
+}
+
+/*
  * Curl_add_buffer_send() sends a header buffer and frees all associated
  * memory.  Body data may be appended to the header data if desired.
  *
@@ -1127,9 +1088,7 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer *in,
   /* Curl_convert_to_network calls failf if unsuccessful */
   if(result) {
     /* conversion failed, free memory and return to the caller */
-    if(in->buffer)
-      free(in->buffer);
-    free(in);
+    Curl_add_buffer_free(in);
     return result;
   }
 
@@ -1198,14 +1157,14 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer *in,
         ptr = in->buffer + amount;
 
         /* backup the currently set pointers */
-        http->backup.fread_func = conn->fread_func;
-        http->backup.fread_in = conn->fread_in;
+        http->backup.fread_func = conn->data->set.fread_func;
+        http->backup.fread_in = conn->data->set.in;
         http->backup.postdata = http->postdata;
         http->backup.postsize = http->postsize;
 
         /* set the new pointers for the request-sending */
-        conn->fread_func = (curl_read_callback)readmoredata;
-        conn->fread_in = (void *)conn;
+        conn->data->set.fread_func = (curl_read_callback)readmoredata;
+        conn->data->set.in = (void *)conn;
         http->postdata = ptr;
         http->postsize = (curl_off_t)size;
 
@@ -1228,12 +1187,10 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer *in,
         */
         return CURLE_SEND_ERROR;
       else
-        conn->writechannel_inuse = FALSE;
+        Curl_pipeline_leave_write(conn);
     }
   }
-  if(in->buffer)
-    free(in->buffer);
-  free(in);
+  Curl_add_buffer_free(in);
 
   return result;
 }
@@ -1256,8 +1213,7 @@ CURLcode Curl_add_bufferf(Curl_send_buffer *in, const char *fmt, ...)
     return result;
   }
   /* If we failed, we cleanup the whole buffer and return error */
-  if(in->buffer)
-    free(in->buffer);
+  free(in->buffer);
   free(in);
   return CURLE_OUT_OF_MEMORY;
 }
@@ -1437,7 +1393,7 @@ static CURLcode https_connecting(struct connectdata *conn, bool *done)
 }
 #endif
 
-#if defined(USE_SSLEAY) || defined(USE_GNUTLS) || defined(USE_SCHANNEL) || \
+#if defined(USE_OPENSSL) || defined(USE_GNUTLS) || defined(USE_SCHANNEL) || \
     defined(USE_DARWINSSL) || defined(USE_POLARSSL) || defined(USE_NSS)
 /* This function is for OpenSSL, GnuTLS, darwinssl, schannel and polarssl only.
    It should be made to query the generic SSL layer instead. */
@@ -1476,7 +1432,7 @@ static int https_getsock(struct connectdata *conn,
   return GETSOCK_BLANK;
 }
 #endif /* USE_SSL */
-#endif /* USE_SSLEAY || USE_GNUTLS || USE_SCHANNEL */
+#endif /* USE_OPENSSL || USE_GNUTLS || USE_SCHANNEL */
 
 /*
  * Curl_http_done() gets called from Curl_done() after a single HTTP request
@@ -1487,19 +1443,26 @@ CURLcode Curl_http_done(struct connectdata *conn,
                         CURLcode status, bool premature)
 {
   struct SessionHandle *data = conn->data;
-  struct HTTP *http =data->req.protop;
+  struct HTTP *http = data->req.protop;
+#ifdef USE_NGHTTP2
+  struct http_conn *httpc = &conn->proto.httpc;
+#endif
 
   Curl_unencode_cleanup(conn);
 
 #ifdef USE_SPNEGO
   if(data->state.proxyneg.state == GSS_AUTHSENT ||
-      data->state.negotiate.state == GSS_AUTHSENT)
+     data->state.negotiate.state == GSS_AUTHSENT) {
+    /* add forbid re-use if http-code != 401/407 as a WA only needed for
+     * 401/407 that signal auth failure (empty) otherwise state will be RECV
+     * with current code */
+    if((data->req.httpcode != 401) && (data->req.httpcode != 407))
+      connclose(conn, "Negotiate transfer completed");
     Curl_cleanup_negotiate(data);
+  }
 #endif
 
   /* set the proper values (possibly modified on POST) */
-  conn->fread_func = data->set.fread_func; /* restore */
-  conn->fread_in = data->set.in; /* restore */
   conn->seek_func = data->set.seek_func; /* restore */
   conn->seek_client = data->set.seek_client; /* restore */
 
@@ -1507,13 +1470,27 @@ CURLcode Curl_http_done(struct connectdata *conn,
     return CURLE_OK;
 
   if(http->send_buffer) {
-    Curl_send_buffer *buff = http->send_buffer;
-
-    free(buff->buffer);
-    free(buff);
+    Curl_add_buffer_free(http->send_buffer);
     http->send_buffer = NULL; /* clear the pointer */
   }
 
+#ifdef USE_NGHTTP2
+  if(http->header_recvbuf) {
+    DEBUGF(infof(data, "free header_recvbuf!!\n"));
+    Curl_add_buffer_free(http->header_recvbuf);
+    http->header_recvbuf = NULL; /* clear the pointer */
+    for(; http->push_headers_used > 0; --http->push_headers_used) {
+      free(http->push_headers[http->push_headers_used - 1]);
+    }
+    free(http->push_headers);
+    http->push_headers = NULL;
+  }
+  if(http->stream_id) {
+    nghttp2_session_set_stream_user_data(httpc->h2, http->stream_id, 0);
+    http->stream_id = 0;
+  }
+#endif
+
   if(HTTPREQ_POST_FORM == data->set.httpreq) {
     data->req.bytecount = http->readbytecount + http->writebytecount;
 
@@ -1576,10 +1553,11 @@ static CURLcode expect100(struct SessionHandle *data,
   const char *ptr;
   data->state.expect100header = FALSE; /* default to false unless it is set
                                           to TRUE below */
-  if(use_http_1_1plus(data, conn)) {
-    /* if not doing HTTP 1.0 or disabled explicitly, we add a Expect:
-       100-continue to the headers which actually speeds up post operations
-       (as there is one packet coming back from the web server) */
+  if(use_http_1_1plus(data, conn) &&
+     (conn->httpversion != 20)) {
+    /* if not doing HTTP 1.0 or version 2, or disabled explicitly, we add an
+       Expect: 100-continue to the headers which actually speeds up post
+       operations (as there is one packet coming back from the web server) */
     ptr = Curl_checkheaders(conn, "Expect:");
     if(ptr) {
       data->state.expect100header =
@@ -1798,7 +1776,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
   if(conn->httpversion < 20) { /* unless the connection is re-used and already
                                   http2 */
     switch(conn->negnpn) {
-    case NPN_HTTP2:
+    case CURL_HTTP_VERSION_2_0:
+      conn->httpversion = 20; /* we know we're on HTTP/2 now */
       result = Curl_http2_init(conn);
       if(result)
         return result;
@@ -1811,7 +1790,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
       if(result)
         return result;
       break;
-    case NPN_HTTP1_1:
+    case CURL_HTTP_VERSION_1_1:
       /* continue with HTTP/1.1 when explicitly requested */
       break;
     default:
@@ -1829,10 +1808,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
   http = data->req.protop;
 
   if(!data->state.this_is_a_follow) {
-    /* this is not a followed location, get the original host name */
-    if(data->state.first_host)
-      /* Free to avoid leaking memory on multiple requests*/
-      free(data->state.first_host);
+    /* Free to avoid leaking memory on multiple requests*/
+    free(data->state.first_host);
 
     data->state.first_host = strdup(conn->host.name);
     if(!data->state.first_host)
@@ -1876,7 +1853,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
      it might have been used in the proxy connect, but if we have got a header
      with the user-agent string specified, we erase the previously made string
      here. */
-  if(Curl_checkheaders(conn, "User-Agent:") && conn->allocptr.uagent) {
+  if(Curl_checkheaders(conn, "User-Agent:")) {
     free(conn->allocptr.uagent);
     conn->allocptr.uagent=NULL;
   }
@@ -2019,7 +1996,14 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
     }
 #endif
 
-    conn->allocptr.host = NULL;
+    if(strcmp("Host:", ptr)) {
+      conn->allocptr.host = aprintf("%s\r\n", ptr);
+      if(!conn->allocptr.host)
+        return CURLE_OUT_OF_MEMORY;
+    }
+    else
+      /* when clearing the header */
+      conn->allocptr.host = NULL;
   }
   else {
     /* When building Host: headers, we must put the host name within
@@ -2214,8 +2198,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
     if(((httpreq == HTTPREQ_GET) || (httpreq == HTTPREQ_HEAD)) &&
        !Curl_checkheaders(conn, "Range:")) {
       /* if a line like this was already allocated, free the previous one */
-      if(conn->allocptr.rangeline)
-        free(conn->allocptr.rangeline);
+      free(conn->allocptr.rangeline);
       conn->allocptr.rangeline = aprintf("Range: bytes=%s\r\n",
                                          data->state.range);
     }
@@ -2223,8 +2206,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
             !Curl_checkheaders(conn, "Content-Range:")) {
 
       /* if a line like this was already allocated, free the previous one */
-      if(conn->allocptr.rangeline)
-        free(conn->allocptr.rangeline);
+      free(conn->allocptr.rangeline);
 
       if(data->set.set_resume_from < 0) {
         /* Upload resume was asked for, but we don't know the size of the
@@ -2288,11 +2270,11 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
     Curl_add_bufferf(req_buffer,
                      "%s" /* ftp typecode (;type=x) */
                      " HTTP/%s\r\n" /* HTTP version */
+                     "%s" /* host */
                      "%s" /* proxyuserpwd */
                      "%s" /* userpwd */
                      "%s" /* range */
                      "%s" /* user agent */
-                     "%s" /* host */
                      "%s" /* accept */
                      "%s" /* TE: */
                      "%s" /* accept-encoding */
@@ -2302,6 +2284,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
 
                      ftp_typecode,
                      httpstring,
+                     (conn->allocptr.host?conn->allocptr.host:""),
                      conn->allocptr.proxyuserpwd?
                      conn->allocptr.proxyuserpwd:"",
                      conn->allocptr.userpwd?conn->allocptr.userpwd:"",
@@ -2311,7 +2294,6 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
                       *data->set.str[STRING_USERAGENT] &&
                       conn->allocptr.uagent)?
                      conn->allocptr.uagent:"",
-                     (conn->allocptr.host?conn->allocptr.host:""),
                      http->p_accept?http->p_accept:"",
                      conn->allocptr.te?conn->allocptr.te:"",
                      (data->set.str[STRING_ENCODING] &&
@@ -2327,20 +2309,12 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
                      te
       );
 
-  /*
-   * Free userpwd for Negotiate/NTLM. Cannot reuse as it is associated with
-   * the connection and shouldn't be repeated over it either.
-   */
-  switch (data->state.authhost.picked) {
-  case CURLAUTH_NEGOTIATE:
-  case CURLAUTH_NTLM:
-  case CURLAUTH_NTLM_WB:
-    Curl_safefree(conn->allocptr.userpwd);
-    break;
-  }
+  /* clear userpwd to avoid re-using credentials from re-used connections */
+  Curl_safefree(conn->allocptr.userpwd);
 
   /*
-   * Same for proxyuserpwd
+   * Free proxyuserpwd for Negotiate/NTLM. Cannot reuse as it is associated
+   * with the connection and shouldn't be repeated over it either.
    */
   switch (data->state.authproxy.picked) {
   case CURLAUTH_NEGOTIATE:
@@ -2460,14 +2434,14 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
 
     /* Get the currently set callback function pointer and store that in the
        form struct since we might want the actual user-provided callback later
-       on. The conn->fread_func pointer itself will be changed for the
+       on. The data->set.fread_func pointer itself will be changed for the
        multipart case to the function that returns a multipart formatted
        stream. */
-    http->form.fread_func = conn->fread_func;
+    http->form.fread_func = data->set.fread_func;
 
     /* Set the read function to read from the generated form data */
-    conn->fread_func = (curl_read_callback)Curl_FormReader;
-    conn->fread_in = &http->form;
+    data->set.fread_func = (curl_read_callback)Curl_FormReader;
+    data->set.in = &http->form;
 
     http->sending = HTTPSEND_BODY;
 
@@ -2587,8 +2561,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
       postsize = 0;
     else {
       /* figure out the size of the postfields */
-      postsize = (data->set.postfieldsize != -1)?
-        data->set.postfieldsize:
+      postsize = (data->state.infilesize != -1)?
+        data->state.infilesize:
         (data->set.postfields? (curl_off_t)strlen(data->set.postfields):-1);
     }
 
@@ -2685,8 +2659,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
 
         http->sending = HTTPSEND_BODY;
 
-        conn->fread_func = (curl_read_callback)readmoredata;
-        conn->fread_in = (void *)conn;
+        data->set.fread_func = (curl_read_callback)readmoredata;
+        data->set.in = (void *)conn;
 
         /* set the upload size to the progress meter */
         Curl_pgrsSetUploadSize(data, http->postsize);
@@ -2711,7 +2685,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
           return result;
       }
 
-      else if(data->set.postfieldsize) {
+      else if(data->state.infilesize) {
         /* set the upload size to the progress meter */
         Curl_pgrsSetUploadSize(data, postsize?postsize:-1);
 
@@ -3102,6 +3076,19 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
         }
       }
 
+      /* At this point we have some idea about the fate of the connection.
+         If we are closing the connection it may result auth failure. */
+#if defined(USE_NTLM)
+      if(conn->bits.close &&
+         (((data->req.httpcode == 401) &&
+           (conn->ntlm.state == NTLMSTATE_TYPE2)) ||
+          ((data->req.httpcode == 407) &&
+           (conn->proxyntlm.state == NTLMSTATE_TYPE2)))) {
+        infof(data, "Connection closure while negotiating auth (HTTP 1.0?)\n");
+        data->state.authproblem = TRUE;
+      }
+#endif
+
       /*
        * When all the headers have been parsed, see if we should give
        * up and return an error.
@@ -3379,28 +3366,23 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
         }
         else if(conn->httpversion == 20 ||
                 (k->upgr101 == UPGR101_REQUESTED && k->httpcode == 101)) {
-          /* Don't enable pipelining for HTTP/2 or upgraded connection. For
-             HTTP/2, we do not support multiplexing. In general, requests
-             cannot be pipelined in upgraded connection, since it is now
-             different protocol. */
-          DEBUGF(infof(data,
-                       "HTTP 2 or upgraded connection do not support "
-                       "pipelining for now\n"));
+          DEBUGF(infof(data, "HTTP/2 found, allow multiplexing\n"));
+
+          /* HTTP/2 cannot blacklist multiplexing since it is a core
+             functionality of the protocol */
+          conn->bundle->multiuse = BUNDLE_MULTIPLEX;
         }
         else if(conn->httpversion >= 11 &&
                 !conn->bits.close) {
-          struct connectbundle *cb_ptr;
-
           /* If HTTP version is >= 1.1 and connection is persistent
              server supports pipelining. */
           DEBUGF(infof(data,
                        "HTTP 1.1 or later with persistent connection, "
                        "pipelining supported\n"));
           /* Activate pipelining if needed */
-          cb_ptr = conn->bundle;
-          if(cb_ptr) {
+          if(conn->bundle) {
             if(!Curl_pipeline_site_blacklisted(data, conn))
-              cb_ptr->server_supports_pipelining = TRUE;
+              conn->bundle->multiuse = BUNDLE_PIPELINING;
           }
         }
 
@@ -3479,14 +3461,17 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
       }
     }
     else if(checkprefix("Server:", k->p)) {
-      char *server_name = Curl_copy_header_value(k->p);
-
-      /* Turn off pipelining if the server version is blacklisted */
-      if(conn->bundle && conn->bundle->server_supports_pipelining) {
-        if(Curl_pipeline_server_blacklisted(data, server_name))
-          conn->bundle->server_supports_pipelining = FALSE;
+      if(conn->httpversion < 20) {
+        /* only do this for non-h2 servers */
+        char *server_name = Curl_copy_header_value(k->p);
+
+        /* Turn off pipelining if the server version is blacklisted  */
+        if(conn->bundle && (conn->bundle->multiuse == BUNDLE_PIPELINING)) {
+          if(Curl_pipeline_server_blacklisted(data, server_name))
+            conn->bundle->multiuse = BUNDLE_NO_MULTIUSE;
+        }
+        free(server_name);
       }
-      Curl_safefree(server_name);
     }
     else if((conn->httpversion == 10) &&
             conn->bits.httpproxy &&
@@ -3583,14 +3568,6 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
           k->auto_decoding = GZIP;
           start += 6;
         }
-        else if(checkprefix("compress", start)) {
-          k->auto_decoding = COMPRESS;
-          start += 8;
-        }
-        else if(checkprefix("x-compress", start)) {
-          k->auto_decoding = COMPRESS;
-          start += 10;
-        }
         else
           /* unknown! */
           break;
@@ -3623,9 +3600,6 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
       else if(checkprefix("gzip", start)
               || checkprefix("x-gzip", start))
         k->auto_decoding = GZIP;
-      else if(checkprefix("compress", start)
-              || checkprefix("x-compress", start))
-        k->auto_decoding = COMPRESS;
     }
     else if(checkprefix("Content-Range:", k->p)) {
       /* Content-Range: bytes [num]-
@@ -3691,7 +3665,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
 
       result = Curl_http_input_auth(conn, proxy, auth);
 
-      Curl_safefree(auth);
+      free(auth);
 
       if(result)
         return result;
index 907755a..fe4f39b 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -60,6 +60,7 @@ struct Curl_send_buffer {
 typedef struct Curl_send_buffer Curl_send_buffer;
 
 Curl_send_buffer *Curl_add_buffer_init(void);
+void Curl_add_buffer_free(Curl_send_buffer *buff);
 CURLcode Curl_add_bufferf(Curl_send_buffer *in, const char *fmt, ...);
 CURLcode Curl_add_buffer(Curl_send_buffer *in, const void *inptr, size_t size);
 CURLcode Curl_add_buffer_send(Curl_send_buffer *in,
@@ -152,42 +153,69 @@ struct HTTP {
 
   void *send_buffer; /* used if the request couldn't be sent in one chunk,
                         points to an allocated send_buffer struct */
+
+#ifdef USE_NGHTTP2
+  /*********** for HTTP/2 we store stream-local data here *************/
+  int32_t stream_id; /* stream we are interested in */
+
+  bool bodystarted;
+  /* We store non-final and final response headers here, per-stream */
+  Curl_send_buffer *header_recvbuf;
+  size_t nread_header_recvbuf; /* number of bytes in header_recvbuf fed into
+                                  upper layer */
+  int status_code; /* HTTP status code */
+  const uint8_t *pausedata; /* pointer to data received in on_data_chunk */
+  size_t pauselen; /* the number of bytes left in data */
+  bool closed; /* TRUE on HTTP2 stream close */
+  uint32_t error_code; /* HTTP/2 error code */
+
+  char *mem;     /* points to a buffer in memory to store received data */
+  size_t len;    /* size of the buffer 'mem' points to */
+  size_t memlen; /* size of data copied to mem */
+
+  const uint8_t *upload_mem; /* points to a buffer to read from */
+  size_t upload_len; /* size of the buffer 'upload_mem' points to */
+  curl_off_t upload_left; /* number of bytes left to upload */
+
+  char **push_headers;       /* allocated array */
+  size_t push_headers_used;  /* number of entries filled in */
+  size_t push_headers_alloc; /* number of entries allocated */
+#endif
 };
 
 typedef int (*sending)(void); /* Curl_send */
 typedef int (*recving)(void); /* Curl_recv */
 
+#ifdef USE_NGHTTP2
+/* h2 settings for this connection */
+struct h2settings {
+  uint32_t max_concurrent_streams;
+  bool enable_push;
+};
+#endif
+
+
 struct http_conn {
 #ifdef USE_NGHTTP2
 #define H2_BINSETTINGS_LEN 80
   nghttp2_session *h2;
   uint8_t binsettings[H2_BINSETTINGS_LEN];
   size_t  binlen; /* length of the binsettings data */
-  char *mem;     /* points to a buffer in memory to store */
-  size_t len;    /* size of the buffer 'mem' points to */
-  bool bodystarted;
   sending send_underlying; /* underlying send Curl_send callback */
   recving recv_underlying; /* underlying recv Curl_recv callback */
-  bool closed; /* TRUE on HTTP2 stream close */
-  Curl_send_buffer *header_recvbuf; /* store response headers.  We
-                                       store non-final and final
-                                       response headers into it. */
-  size_t nread_header_recvbuf; /* number of bytes in header_recvbuf
-                                  fed into upper layer */
-  int32_t stream_id; /* stream we are interested in */
-  const uint8_t *data; /* pointer to data chunk, received in
-                          on_data_chunk */
-  size_t datalen; /* the number of bytes left in data */
   char *inbuf; /* buffer to receive data from underlying socket */
+  size_t inbuflen; /* number of bytes filled in inbuf */
+  size_t nread_inbuf; /* number of bytes read from in inbuf */
   /* We need separate buffer for transmission and reception because we
      may call nghttp2_session_send() after the
      nghttp2_session_mem_recv() but mem buffer is still not full. In
      this case, we wrongly sends the content of mem buffer if we share
      them for both cases. */
-  const uint8_t *upload_mem; /* points to a buffer to read from */
-  size_t upload_len; /* size of the buffer 'upload_mem' points to */
-  size_t upload_left; /* number of bytes left to upload */
-  int status_code; /* HTTP status code */
+  int32_t pause_stream_id; /* stream ID which paused
+                              nghttp2_session_mem_recv */
+
+  /* this is a hash of all individual streams (SessionHandle structs) */
+  struct h2settings settings;
 #else
   int unused; /* prevent a compiler warning */
 #endif
index dac9ab4..0024add 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "curl_setup.h"
 
 #ifdef USE_NGHTTP2
-#define _MPRINTF_REPLACE
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include <nghttp2/nghttp2.h>
 #include "urldata.h"
 #include "http2.h"
 #include "http.h"
 #include "sendf.h"
 #include "curl_base64.h"
-#include "curl_memory.h"
 #include "rawstr.h"
 #include "multiif.h"
+#include "conncache.h"
+#include "url.h"
 
-/* include memdebug.h last */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
+#define MIN(x,y) ((x)<(y)?(x):(y))
+
 #if (NGHTTP2_VERSION_NUM < 0x000600)
 #error too old nghttp2 version, upgrade!
 #endif
@@ -50,7 +52,7 @@ static int http2_perform_getsock(const struct connectdata *conn,
                                                          sockets */
                                  int numsocks)
 {
-  const struct http_conn *httpc = &conn->proto.httpc;
+  const struct http_conn *c = &conn->proto.httpc;
   int bitmap = GETSOCK_BLANK;
   (void)numsocks;
 
@@ -58,10 +60,10 @@ static int http2_perform_getsock(const struct connectdata *conn,
      because of renegotiation. */
   sock[0] = conn->sock[FIRSTSOCKET];
 
-  if(nghttp2_session_want_read(httpc->h2))
+  if(nghttp2_session_want_read(c->h2))
     bitmap |= GETSOCK_READSOCK(FIRSTSOCKET);
 
-  if(nghttp2_session_want_write(httpc->h2))
+  if(nghttp2_session_want_write(c->h2))
     bitmap |= GETSOCK_WRITESOCK(FIRSTSOCKET);
 
   return bitmap;
@@ -78,23 +80,54 @@ static int http2_getsock(struct connectdata *conn,
 static CURLcode http2_disconnect(struct connectdata *conn,
                                  bool dead_connection)
 {
-  struct http_conn *httpc = &conn->proto.httpc;
+  struct HTTP *http = conn->data->req.protop;
+  struct http_conn *c = &conn->proto.httpc;
   (void)dead_connection;
 
-  infof(conn->data, "HTTP/2 DISCONNECT starts now\n");
-
-  nghttp2_session_del(httpc->h2);
+  DEBUGF(infof(conn->data, "HTTP/2 DISCONNECT starts now\n"));
 
-  Curl_safefree(httpc->header_recvbuf->buffer);
-  Curl_safefree(httpc->header_recvbuf);
+  nghttp2_session_del(c->h2);
+  Curl_safefree(c->inbuf);
 
-  Curl_safefree(httpc->inbuf);
+  if(http) {
+    Curl_add_buffer_free(http->header_recvbuf);
+    http->header_recvbuf = NULL; /* clear the pointer */
+    for(; http->push_headers_used > 0; --http->push_headers_used) {
+      free(http->push_headers[http->push_headers_used - 1]);
+    }
+    free(http->push_headers);
+    http->push_headers = NULL;
+  }
 
-  infof(conn->data, "HTTP/2 DISCONNECT done\n");
+  DEBUGF(infof(conn->data, "HTTP/2 DISCONNECT done\n"));
 
   return CURLE_OK;
 }
 
+/* called from Curl_http_setup_conn */
+void Curl_http2_setup_req(struct SessionHandle *data)
+{
+  struct HTTP *http = data->req.protop;
+
+  http->nread_header_recvbuf = 0;
+  http->bodystarted = FALSE;
+  http->status_code = -1;
+  http->pausedata = NULL;
+  http->pauselen = 0;
+  http->error_code = NGHTTP2_NO_ERROR;
+  http->closed = FALSE;
+  http->mem = data->state.buffer;
+  http->len = BUFSIZE;
+  http->memlen = 0;
+}
+
+/* called from Curl_http_setup_conn */
+void Curl_http2_setup_conn(struct connectdata *conn)
+{
+  conn->proto.httpc.settings.max_concurrent_streams =
+    DEFAULT_MAX_CONCURRENT_STREAMS;
+}
+
 /*
  * HTTP2 handler interface. This isn't added to the general list of protocols
  * but will be used at run-time when the protocol is dynamically switched from
@@ -104,7 +137,7 @@ const struct Curl_handler Curl_handler_http2 = {
   "HTTP2",                              /* scheme */
   ZERO_NULL,                            /* setup_connection */
   Curl_http,                            /* do_it */
-  ZERO_NULL,                            /* done */
+  Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
   ZERO_NULL,                            /* connect_it */
   ZERO_NULL,                            /* connecting */
@@ -124,7 +157,7 @@ const struct Curl_handler Curl_handler_http2_ssl = {
   "HTTP2",                              /* scheme */
   ZERO_NULL,                            /* setup_connection */
   Curl_http,                            /* do_it */
-  ZERO_NULL,                            /* done */
+  Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
   ZERO_NULL,                            /* connect_it */
   ZERO_NULL,                            /* connecting */
@@ -160,15 +193,15 @@ static ssize_t send_callback(nghttp2_session *h2,
                              void *userp)
 {
   struct connectdata *conn = (struct connectdata *)userp;
-  struct http_conn *httpc = &conn->proto.httpc;
+  struct http_conn *c = &conn->proto.httpc;
   ssize_t written;
   CURLcode result = CURLE_OK;
 
   (void)h2;
   (void)flags;
 
-  written = ((Curl_send*)httpc->send_underlying)(conn, FIRSTSOCKET,
-                                                 data, length, &result);
+  written = ((Curl_send*)c->send_underlying)(conn, FIRSTSOCKET,
+                                             data, length, &result);
 
   if(result == CURLE_AGAIN) {
     return NGHTTP2_ERR_WOULDBLOCK;
@@ -185,25 +218,205 @@ static ssize_t send_callback(nghttp2_session *h2,
   return written;
 }
 
+
+/* We pass a pointer to this struct in the push callback, but the contents of
+   the struct are hidden from the user. */
+struct curl_pushheaders {
+  struct SessionHandle *data;
+  const nghttp2_push_promise *frame;
+};
+
+/*
+ * push header access function. Only to be used from within the push callback
+ */
+char *curl_pushheader_bynum(struct curl_pushheaders *h, size_t num)
+{
+  /* Verify that we got a good easy handle in the push header struct, mostly to
+     detect rubbish input fast(er). */
+  if(!h || !GOOD_EASY_HANDLE(h->data))
+    return NULL;
+  else {
+    struct HTTP *stream = h->data->req.protop;
+    if(num < stream->push_headers_used)
+      return stream->push_headers[num];
+  }
+  return NULL;
+}
+
+/*
+ * push header access function. Only to be used from within the push callback
+ */
+char *curl_pushheader_byname(struct curl_pushheaders *h, const char *header)
+{
+  /* Verify that we got a good easy handle in the push header struct,
+     mostly to detect rubbish input fast(er). Also empty header name
+     is just a rubbish too. We have to allow ":" at the beginning of
+     the header, but header == ":" must be rejected. If we have ':' in
+     the middle of header, it could be matched in middle of the value,
+     this is because we do prefix match.*/
+  if(!h || !GOOD_EASY_HANDLE(h->data) || !header || !header[0] ||
+     Curl_raw_equal(header, ":") || strchr(header + 1, ':'))
+    return NULL;
+  else {
+    struct HTTP *stream = h->data->req.protop;
+    size_t len = strlen(header);
+    size_t i;
+    for(i=0; i<stream->push_headers_used; i++) {
+      if(!strncmp(header, stream->push_headers[i], len)) {
+        /* sub-match, make sure that it us followed by a colon */
+        if(stream->push_headers[i][len] != ':')
+          continue;
+        return &stream->push_headers[i][len+1];
+      }
+    }
+  }
+  return NULL;
+}
+
+static CURL *duphandle(struct SessionHandle *data)
+{
+  struct SessionHandle *second = curl_easy_duphandle(data);
+  if(second) {
+    /* setup the request struct */
+    struct HTTP *http = calloc(1, sizeof(struct HTTP));
+    if(!http) {
+      (void)Curl_close(second);
+      second = NULL;
+    }
+    else {
+      second->req.protop = http;
+      http->header_recvbuf = Curl_add_buffer_init();
+      if(!http->header_recvbuf) {
+        free(http);
+        (void)Curl_close(second);
+        second = NULL;
+      }
+      else
+        Curl_http2_setup_req(second);
+    }
+  }
+  return second;
+}
+
+
+static int push_promise(struct SessionHandle *data,
+                        struct connectdata *conn,
+                        const nghttp2_push_promise *frame)
+{
+  int rv;
+  DEBUGF(infof(data, "PUSH_PROMISE received, stream %u!\n",
+               frame->promised_stream_id));
+  if(data->multi->push_cb) {
+    struct HTTP *stream;
+    struct curl_pushheaders heads;
+    CURLMcode rc;
+    struct http_conn *httpc;
+    size_t i;
+    /* clone the parent */
+    CURL *newhandle = duphandle(data);
+    if(!newhandle) {
+      infof(data, "failed to duplicate handle\n");
+      rv = 1; /* FAIL HARD */
+      goto fail;
+    }
+
+    heads.data = data;
+    heads.frame = frame;
+    /* ask the application */
+    DEBUGF(infof(data, "Got PUSH_PROMISE, ask application!\n"));
+
+    stream = data->req.protop;
+    if(!stream) {
+      failf(data, "Internal NULL stream!\n");
+      rv = 1;
+      goto fail;
+    }
+
+    rv = data->multi->push_cb(data, newhandle,
+                              stream->push_headers_used, &heads,
+                              data->multi->push_userp);
+
+    /* free the headers again */
+    for(i=0; i<stream->push_headers_used; i++)
+      free(stream->push_headers[i]);
+    free(stream->push_headers);
+    stream->push_headers = NULL;
+
+    if(rv) {
+      /* denied, kill off the new handle again */
+      (void)Curl_close(newhandle);
+      goto fail;
+    }
+
+    /* approved, add to the multi handle and immediately switch to PERFORM
+       state with the given connection !*/
+    rc = Curl_multi_add_perform(data->multi, newhandle, conn);
+    if(rc) {
+      infof(data, "failed to add handle to multi\n");
+      Curl_close(newhandle);
+      rv = 1;
+      goto fail;
+    }
+
+    httpc = &conn->proto.httpc;
+    nghttp2_session_set_stream_user_data(httpc->h2,
+                                         frame->promised_stream_id, newhandle);
+  }
+  else {
+    DEBUGF(infof(data, "Got PUSH_PROMISE, ignore it!\n"));
+    rv = 1;
+  }
+  fail:
+  return rv;
+}
+
 static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
                          void *userp)
 {
-  struct connectdata *conn = (struct connectdata *)userp;
-  struct http_conn *c = &conn->proto.httpc;
+  struct connectdata *conn = NULL;
+  struct http_conn *httpc = NULL;
+  struct SessionHandle *data_s = NULL;
+  struct HTTP *stream = NULL;
+  static int lastStream = -1;
   int rv;
   size_t left, ncopy;
+  int32_t stream_id = frame->hd.stream_id;
 
-  (void)session;
-  (void)frame;
-  infof(conn->data, "on_frame_recv() was called with header %x\n",
-        frame->hd.type);
+  (void)userp;
+
+  if(!stream_id) {
+    /* stream ID zero is for connection-oriented stuff */
+    return 0;
+  }
+  data_s = nghttp2_session_get_stream_user_data(session,
+                                                frame->hd.stream_id);
+  if(lastStream != frame->hd.stream_id) {
+    lastStream = frame->hd.stream_id;
+  }
+  if(!data_s) {
+    DEBUGF(infof(conn->data,
+                 "No SessionHandle associated with stream: %x\n",
+                 stream_id));
+    return 0;
+  }
+
+  stream = data_s->req.protop;
+  if(!stream)
+    return NGHTTP2_ERR_CALLBACK_FAILURE;
+
+  DEBUGF(infof(data_s, "on_frame_recv() header %x stream %x\n",
+               frame->hd.type, stream_id));
+
+  conn = data_s->easy_conn;
+  assert(conn);
+  assert(conn->data == data_s);
+  httpc = &conn->proto.httpc;
   switch(frame->hd.type) {
   case NGHTTP2_DATA:
-    /* If body started, then receiving DATA is illegal. */
-    if(!c->bodystarted) {
+    /* If body started on this stream, then receiving DATA is illegal. */
+    if(!stream->bodystarted) {
       rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
-                                     frame->hd.stream_id,
-                                     NGHTTP2_PROTOCOL_ERROR);
+                                     stream_id, NGHTTP2_PROTOCOL_ERROR);
 
       if(nghttp2_is_fatal(rv)) {
         return NGHTTP2_ERR_CALLBACK_FAILURE;
@@ -214,74 +427,96 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
     if(frame->headers.cat == NGHTTP2_HCAT_REQUEST)
       break;
 
-    if(c->bodystarted) {
-      /* Only valid HEADERS after body started is trailer header,
-         which is not fully supported in this code.  If HEADERS is not
-         trailer, then it is a PROTOCOL_ERROR. */
-      if((frame->hd.flags & NGHTTP2_FLAG_END_STREAM) == 0) {
-        rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
-                                       frame->hd.stream_id,
-                                       NGHTTP2_PROTOCOL_ERROR);
-
-        if(nghttp2_is_fatal(rv)) {
-          return NGHTTP2_ERR_CALLBACK_FAILURE;
-        }
-      }
+    if(stream->bodystarted) {
+      /* Only valid HEADERS after body started is trailer HEADERS.  We
+         ignores trailer HEADERS for now.  nghttp2 guarantees that it
+         has END_STREAM flag set. */
       break;
     }
 
-    if(c->status_code == -1) {
-      /* No :status header field means PROTOCOL_ERROR. */
-      rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
-                                     frame->hd.stream_id,
-                                     NGHTTP2_PROTOCOL_ERROR);
-
-      if(nghttp2_is_fatal(rv)) {
-        return NGHTTP2_ERR_CALLBACK_FAILURE;
-      }
-
-      break;
-    }
+    /* nghttp2 guarantees that :status is received, and we store it to
+       stream->status_code */
+    DEBUGASSERT(stream->status_code != -1);
 
     /* Only final status code signals the end of header */
-    if(c->status_code / 100 != 1) {
-      c->bodystarted = TRUE;
+    if(stream->status_code / 100 != 1) {
+      stream->bodystarted = TRUE;
+      stream->status_code = -1;
     }
 
-    c->status_code = -1;
+    Curl_add_buffer(stream->header_recvbuf, "\r\n", 2);
+
+    left = stream->header_recvbuf->size_used - stream->nread_header_recvbuf;
+    ncopy = MIN(stream->len, left);
 
-    Curl_add_buffer(c->header_recvbuf, "\r\n", 2);
+    memcpy(&stream->mem[stream->memlen],
+           stream->header_recvbuf->buffer + stream->nread_header_recvbuf,
+           ncopy);
+    stream->nread_header_recvbuf += ncopy;
 
-    left = c->header_recvbuf->size_used - c->nread_header_recvbuf;
-    ncopy = c->len < left ? c->len : left;
+    DEBUGF(infof(data_s, "Store %zu bytes headers from stream %u at %p\n",
+                 ncopy, stream_id, stream->mem));
 
-    memcpy(c->mem, c->header_recvbuf->buffer + c->nread_header_recvbuf, ncopy);
-    c->nread_header_recvbuf += ncopy;
+    stream->len -= ncopy;
+    stream->memlen += ncopy;
 
-    c->mem += ncopy;
-    c->len -= ncopy;
+    data_s->state.drain++;
+    Curl_expire(data_s, 1);
     break;
   case NGHTTP2_PUSH_PROMISE:
-    rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
-                                   frame->push_promise.promised_stream_id,
-                                   NGHTTP2_CANCEL);
-    if(nghttp2_is_fatal(rv)) {
-      return rv;
+    rv = push_promise(data_s, conn, &frame->push_promise);
+    if(rv) { /* deny! */
+      rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
+                                     frame->push_promise.promised_stream_id,
+                                     NGHTTP2_CANCEL);
+      if(nghttp2_is_fatal(rv)) {
+        return rv;
+      }
     }
     break;
+  case NGHTTP2_SETTINGS:
+  {
+    uint32_t max_conn = httpc->settings.max_concurrent_streams;
+    DEBUGF(infof(conn->data, "Got SETTINGS for stream %u!\n", stream_id));
+    httpc->settings.max_concurrent_streams =
+      nghttp2_session_get_remote_settings(
+        session, NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS);
+    httpc->settings.enable_push =
+      nghttp2_session_get_remote_settings(
+        session, NGHTTP2_SETTINGS_ENABLE_PUSH);
+    DEBUGF(infof(conn->data, "MAX_CONCURRENT_STREAMS == %d\n",
+                 httpc->settings.max_concurrent_streams));
+    DEBUGF(infof(conn->data, "ENABLE_PUSH == %s\n",
+                 httpc->settings.enable_push?"TRUE":"false"));
+    if(max_conn != httpc->settings.max_concurrent_streams) {
+      /* only signal change if the value actually changed */
+      infof(conn->data,
+            "Connection state changed (MAX_CONCURRENT_STREAMS updated)!\n");
+      Curl_multi_connchanged(conn->data->multi);
+    }
+  }
+  break;
+  default:
+    DEBUGF(infof(conn->data, "Got frame type %x for stream %u!\n",
+                 frame->hd.type, stream_id));
+    break;
   }
   return 0;
 }
 
 static int on_invalid_frame_recv(nghttp2_session *session,
                                  const nghttp2_frame *frame,
-                                 uint32_t error_code, void *userp)
+                                 int lib_error_code, void *userp)
 {
-  struct connectdata *conn = (struct connectdata *)userp;
-  (void)session;
-  (void)frame;
-  infof(conn->data, "on_invalid_frame_recv() was called, error_code = %d\n",
-        error_code);
+  struct SessionHandle *data_s = NULL;
+  (void)userp;
+
+  data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
+  if(data_s) {
+    DEBUGF(infof(data_s,
+                 "on_invalid_frame_recv() was called, error=%d:%s\n",
+                 lib_error_code, nghttp2_strerror(lib_error_code)));
+  }
   return 0;
 }
 
@@ -289,30 +524,50 @@ static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
                               int32_t stream_id,
                               const uint8_t *data, size_t len, void *userp)
 {
-  struct connectdata *conn = (struct connectdata *)userp;
-  struct http_conn *c = &conn->proto.httpc;
+  struct HTTP *stream;
+  struct SessionHandle *data_s;
   size_t nread;
   (void)session;
   (void)flags;
   (void)data;
-  infof(conn->data, "on_data_chunk_recv() "
-        "len = %u, stream = %x\n", len, stream_id);
+  (void)userp;
 
-  if(stream_id != c->stream_id) {
-    return 0;
-  }
+  DEBUGASSERT(stream_id); /* should never be a zero stream ID here */
 
-  nread = c->len < len ? c->len : len;
-  memcpy(c->mem, data, nread);
+  /* get the stream from the hash based on Stream ID */
+  data_s = nghttp2_session_get_stream_user_data(session, stream_id);
+  if(!data_s)
+    /* Receiving a Stream ID not in the hash should not happen, this is an
+       internal error more than anything else! */
+    return NGHTTP2_ERR_CALLBACK_FAILURE;
+
+  stream = data_s->req.protop;
+  if(!stream)
+    return NGHTTP2_ERR_CALLBACK_FAILURE;
+
+  nread = MIN(stream->len, len);
+  memcpy(&stream->mem[stream->memlen], data, nread);
+
+  stream->len -= nread;
+  stream->memlen += nread;
 
-  c->mem += nread;
-  c->len -= nread;
+  data_s->state.drain++;
+  Curl_expire(data_s, 1); /* TODO: fix so that this can be set to 0 for
+                             immediately? */
 
-  infof(conn->data, "%zu data written\n", nread);
+  DEBUGF(infof(data_s, "%zu data received for stream %u "
+               "(%zu left in buffer %p, total %zu)\n",
+               nread, stream_id,
+               stream->len, stream->mem,
+               stream->memlen));
 
   if(nread < len) {
-    c->data = data + nread;
-    c->datalen = len - nread;
+    stream->pausedata = data + nread;
+    stream->pauselen = len - nread;
+    DEBUGF(infof(data_s, "NGHTTP2_ERR_PAUSE - %zu bytes out of buffer"
+                 ", stream %u\n",
+                 len - nread, stream_id));
+    data_s->easy_conn->proto.httpc.pause_stream_id = stream_id;
     return NGHTTP2_ERR_PAUSE;
   }
   return 0;
@@ -322,59 +577,89 @@ static int before_frame_send(nghttp2_session *session,
                              const nghttp2_frame *frame,
                              void *userp)
 {
-  struct connectdata *conn = (struct connectdata *)userp;
-  (void)session;
-  (void)frame;
-  infof(conn->data, "before_frame_send() was called\n");
+  struct SessionHandle *data_s;
+  (void)userp;
+
+  data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
+  if(data_s) {
+    DEBUGF(infof(data_s, "before_frame_send() was called\n"));
+  }
+
   return 0;
 }
 static int on_frame_send(nghttp2_session *session,
                          const nghttp2_frame *frame,
                          void *userp)
 {
-  struct connectdata *conn = (struct connectdata *)userp;
-  (void)session;
-  (void)frame;
-  infof(conn->data, "on_frame_send() was called\n");
+  struct SessionHandle *data_s;
+  (void)userp;
+
+  data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
+  if(data_s) {
+    DEBUGF(infof(data_s, "on_frame_send() was called, length = %zd\n",
+                 frame->hd.length));
+  }
   return 0;
 }
 static int on_frame_not_send(nghttp2_session *session,
                              const nghttp2_frame *frame,
                              int lib_error_code, void *userp)
 {
-  struct connectdata *conn = (struct connectdata *)userp;
-  (void)session;
-  (void)frame;
-  infof(conn->data, "on_frame_not_send() was called, lib_error_code = %d\n",
-        lib_error_code);
+  struct SessionHandle *data_s;
+  (void)userp;
+
+  data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
+  if(data_s) {
+    DEBUGF(infof(data_s,
+                 "on_frame_not_send() was called, lib_error_code = %d\n",
+                 lib_error_code));
+  }
   return 0;
 }
 static int on_stream_close(nghttp2_session *session, int32_t stream_id,
                            uint32_t error_code, void *userp)
 {
-  struct connectdata *conn = (struct connectdata *)userp;
-  struct http_conn *c = &conn->proto.httpc;
+  struct SessionHandle *data_s;
+  struct HTTP *stream;
   (void)session;
   (void)stream_id;
-  infof(conn->data, "on_stream_close() was called, error_code = %d\n",
-        error_code);
-
-  if(stream_id != c->stream_id) {
-    return 0;
-  }
+  (void)userp;
+
+  if(stream_id) {
+    /* get the stream from the hash based on Stream ID, stream ID zero is for
+       connection-oriented stuff */
+    data_s = nghttp2_session_get_stream_user_data(session, stream_id);
+    if(!data_s) {
+      /* We could get stream ID not in the hash.  For example, if we
+         decided to reject stream (e.g., PUSH_PROMISE). */
+      return 0;
+    }
+    DEBUGF(infof(data_s, "on_stream_close(), error_code = %d, stream %u\n",
+                 error_code, stream_id));
+    stream = data_s->req.protop;
+    if(!stream)
+      return NGHTTP2_ERR_CALLBACK_FAILURE;
 
-  c->closed = TRUE;
+    stream->error_code = error_code;
+    stream->closed = TRUE;
 
+    /* remove the entry from the hash as the stream is now gone */
+    nghttp2_session_set_stream_user_data(session, stream_id, 0);
+    DEBUGF(infof(data_s, "Removed stream %u hash!\n", stream_id));
+  }
   return 0;
 }
 
 static int on_begin_headers(nghttp2_session *session,
                             const nghttp2_frame *frame, void *userp)
 {
-  struct connectdata *conn = (struct connectdata *)userp;
-  (void)session;
-  (void)frame;
-  infof(conn->data, "on_begin_headers() was called\n");
+  struct SessionHandle *data_s = NULL;
+  (void)userp;
+
+  data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
+  if(data_s) {
+    DEBUGF(infof(data_s, "on_begin_headers() was called\n"));
+  }
   return 0;
 }
 
@@ -405,8 +690,6 @@ static int decode_status_code(const uint8_t *value, size_t len)
   return res;
 }
 
-static const char STATUS[] = ":status";
-
 /* frame->hd.type is either NGHTTP2_HEADERS or NGHTTP2_PUSH_PROMISE */
 static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
                      const uint8_t *name, size_t namelen,
@@ -414,93 +697,94 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
                      uint8_t flags,
                      void *userp)
 {
-  struct connectdata *conn = (struct connectdata *)userp;
-  struct http_conn *c = &conn->proto.httpc;
-  int rv;
-  int goodname;
-  int goodheader;
+  struct HTTP *stream;
+  struct SessionHandle *data_s;
+  int32_t stream_id = frame->hd.stream_id;
 
-  (void)session;
-  (void)frame;
   (void)flags;
+  (void)userp;
 
-  if(frame->hd.stream_id != c->stream_id) {
-    return 0;
+  DEBUGASSERT(stream_id); /* should never be a zero stream ID here */
+
+  /* get the stream from the hash based on Stream ID */
+  data_s = nghttp2_session_get_stream_user_data(session, stream_id);
+  if(!data_s)
+    /* Receiving a Stream ID not in the hash should not happen, this is an
+       internal error more than anything else! */
+    return NGHTTP2_ERR_CALLBACK_FAILURE;
+
+  stream = data_s->req.protop;
+  if(!stream) {
+    failf(data_s, "Internal NULL stream! 5\n");
+    return NGHTTP2_ERR_CALLBACK_FAILURE;
   }
 
-  if(c->bodystarted) {
+  if(stream->bodystarted)
     /* Ignore trailer or HEADERS not mapped to HTTP semantics.  The
        consequence is handled in on_frame_recv(). */
     return 0;
-  }
-
-  goodname = nghttp2_check_header_name(name, namelen);
-  goodheader = nghttp2_check_header_value(value, valuelen);
-
-  if(!goodname || !goodheader) {
 
-    infof(conn->data, "Detected bad incoming header %s%s, reset stream!\n",
-          goodname?"":"name",
-          goodheader?"":"value");
+  /* Store received PUSH_PROMISE headers to be used when the subsequent
+     PUSH_PROMISE callback comes */
+  if(frame->hd.type == NGHTTP2_PUSH_PROMISE) {
+    char *h;
 
-    rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
-                                   frame->hd.stream_id,
-                                   NGHTTP2_PROTOCOL_ERROR);
-
-    if(nghttp2_is_fatal(rv)) {
-      return NGHTTP2_ERR_CALLBACK_FAILURE;
+    if(!stream->push_headers) {
+      stream->push_headers_alloc = 10;
+      stream->push_headers = malloc(stream->push_headers_alloc *
+                                    sizeof(char *));
+      stream->push_headers_used = 0;
     }
-
-    return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
-  }
-
-  if(namelen == sizeof(":status") - 1 &&
-     memcmp(STATUS, name, namelen) == 0) {
-
-    /* :status must appear exactly once. */
-    if(c->status_code != -1 ||
-       (c->status_code = decode_status_code(value, valuelen)) == -1) {
-
-      rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
-                                     frame->hd.stream_id,
-                                     NGHTTP2_PROTOCOL_ERROR);
-      if(nghttp2_is_fatal(rv)) {
-        return NGHTTP2_ERR_CALLBACK_FAILURE;
+    else if(stream->push_headers_used ==
+            stream->push_headers_alloc) {
+      char **headp;
+      stream->push_headers_alloc *= 2;
+      headp = realloc(stream->push_headers,
+                      stream->push_headers_alloc * sizeof(char *));
+      if(!headp) {
+        free(stream->push_headers);
+        stream->push_headers = NULL;
+        return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
       }
-
-      return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
+      stream->push_headers = headp;
     }
-
-    Curl_add_buffer(c->header_recvbuf, "HTTP/2.0 ", 9);
-    Curl_add_buffer(c->header_recvbuf, value, valuelen);
-    Curl_add_buffer(c->header_recvbuf, "\r\n", 2);
-
+    h = aprintf("%s:%s", name, value);
+    if(h)
+      stream->push_headers[stream->push_headers_used++] = h;
     return 0;
   }
-  else {
-    /* Here we are sure that namelen > 0 because of
-       nghttp2_check_header_name().  Pseudo header other than :status
-       is illegal. */
-    if(c->status_code == -1 || name[0] == ':') {
-      rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
-                                     frame->hd.stream_id,
-                                     NGHTTP2_PROTOCOL_ERROR);
-      if(nghttp2_is_fatal(rv)) {
-        return NGHTTP2_ERR_CALLBACK_FAILURE;
-      }
 
-      return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
-    }
+  if(namelen == sizeof(":status") - 1 &&
+     memcmp(":status", name, namelen) == 0) {
+    /* nghttp2 guarantees :status is received first and only once, and
+       value is 3 digits status code, and decode_status_code always
+       succeeds. */
+    stream->status_code = decode_status_code(value, valuelen);
+    DEBUGASSERT(stream->status_code != -1);
+
+    Curl_add_buffer(stream->header_recvbuf, "HTTP/2.0 ", 9);
+    Curl_add_buffer(stream->header_recvbuf, value, valuelen);
+    Curl_add_buffer(stream->header_recvbuf, "\r\n", 2);
+    data_s->state.drain++;
+    Curl_expire(data_s, 1);
+
+    DEBUGF(infof(data_s, "h2 status: HTTP/2 %03d\n",
+                 stream->status_code));
+    return 0;
+  }
 
-    /* convert to a HTTP1-style header */
-    Curl_add_buffer(c->header_recvbuf, name, namelen);
-    Curl_add_buffer(c->header_recvbuf, ":", 1);
-    Curl_add_buffer(c->header_recvbuf, value, valuelen);
-    Curl_add_buffer(c->header_recvbuf, "\r\n", 2);
+  /* nghttp2 guarantees that namelen > 0, and :status was already
+     received, and this is not pseudo-header field . */
+  /* convert to a HTTP1-style header */
+  Curl_add_buffer(stream->header_recvbuf, name, namelen);
+  Curl_add_buffer(stream->header_recvbuf, ":", 1);
+  Curl_add_buffer(stream->header_recvbuf, value, valuelen);
+  Curl_add_buffer(stream->header_recvbuf, "\r\n", 2);
+  data_s->state.drain++;
+  Curl_expire(data_s, 1);
 
-    infof(conn->data, "got http2 header: %.*s: %.*s\n",
-          namelen, name, valuelen, value);
-  }
+  DEBUGF(infof(data_s, "h2 header: %.*s: %.*s\n", namelen, name, valuelen,
+               value));
 
   return 0; /* 0 is successful */
 }
@@ -512,26 +796,45 @@ static ssize_t data_source_read_callback(nghttp2_session *session,
                                          nghttp2_data_source *source,
                                          void *userp)
 {
-  struct connectdata *conn = (struct connectdata *)userp;
-  struct http_conn *c = &conn->proto.httpc;
+  struct SessionHandle *data_s;
+  struct HTTP *stream = NULL;
   size_t nread;
-  (void)session;
-  (void)stream_id;
   (void)source;
+  (void)userp;
+
+  if(stream_id) {
+    /* get the stream from the hash based on Stream ID, stream ID zero is for
+       connection-oriented stuff */
+    data_s = nghttp2_session_get_stream_user_data(session, stream_id);
+    if(!data_s)
+      /* Receiving a Stream ID not in the hash should not happen, this is an
+         internal error more than anything else! */
+      return NGHTTP2_ERR_CALLBACK_FAILURE;
+
+    stream = data_s->req.protop;
+    if(!stream)
+      return NGHTTP2_ERR_CALLBACK_FAILURE;
+  }
+  else
+    return NGHTTP2_ERR_INVALID_ARGUMENT;
 
-  nread = c->upload_len < length ? c->upload_len : length;
+  nread = MIN(stream->upload_len, length);
   if(nread > 0) {
-    memcpy(buf, c->upload_mem, nread);
-    c->upload_mem += nread;
-    c->upload_len -= nread;
-    c->upload_left -= nread;
+    memcpy(buf, stream->upload_mem, nread);
+    stream->upload_mem += nread;
+    stream->upload_len -= nread;
+    stream->upload_left -= nread;
   }
 
-  if(c->upload_left == 0)
+  if(stream->upload_left == 0)
     *data_flags = 1;
   else if(nread == 0)
     return NGHTTP2_ERR_DEFERRED;
 
+  DEBUGF(infof(data_s, "data_source_read_callback: "
+               "returns %zu bytes stream %u\n",
+               nread, stream_id));
+
   return nread;
 }
 
@@ -543,7 +846,7 @@ static nghttp2_settings_entry settings[] = {
   { NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE, NGHTTP2_INITIAL_WINDOW_SIZE },
 };
 
-#define H2_BUFSIZE 4096
+#define H2_BUFSIZE 32768
 
 /*
  * Initialize nghttp2 for a Curl connection
@@ -595,8 +898,7 @@ CURLcode Curl_http2_init(struct connectdata *conn)
     nghttp2_session_callbacks_set_on_header_callback(callbacks, on_header);
 
     /* The nghttp2 session is not yet setup, do it */
-    rc = nghttp2_session_client_new(&conn->proto.httpc.h2,
-                                    callbacks, conn);
+    rc = nghttp2_session_client_new(&conn->proto.httpc.h2, callbacks, conn);
 
     nghttp2_session_callbacks_del(callbacks);
 
@@ -604,6 +906,11 @@ CURLcode Curl_http2_init(struct connectdata *conn)
       failf(conn->data, "Couldn't initialize nghttp2!");
       return CURLE_OUT_OF_MEMORY; /* most likely at least */
     }
+
+    if(rc) {
+      failf(conn->data, "Couldn't init stream hash!");
+      return CURLE_OUT_OF_MEMORY; /* most likely at least */
+    }
   }
   return CURLE_OK;
 }
@@ -630,14 +937,6 @@ CURLcode Curl_http2_request_upgrade(Curl_send_buffer *req,
   struct SingleRequest *k = &conn->data->req;
   uint8_t *binsettings = conn->proto.httpc.binsettings;
 
-  result = Curl_http2_init(conn);
-  if(result)
-    return result;
-
-  result = Curl_http2_setup(conn);
-  if(result)
-    return result;
-
   /* As long as we have a fixed set of settings, we don't have to dynamically
    * figure out the base64 strings since it'll always be the same. However,
    * the settings will likely not be fixed every time in the future.
@@ -663,13 +962,32 @@ CURLcode Curl_http2_request_upgrade(Curl_send_buffer *req,
                             "Upgrade: %s\r\n"
                             "HTTP2-Settings: %s\r\n",
                             NGHTTP2_CLEARTEXT_PROTO_VERSION_ID, base64);
-  Curl_safefree(base64);
+  free(base64);
 
   k->upgr101 = UPGR101_REQUESTED;
 
   return result;
 }
 
+static ssize_t http2_handle_stream_close(struct http_conn *httpc,
+                                         struct SessionHandle *data,
+                                         struct HTTP *stream, CURLcode *err) {
+  if(httpc->pause_stream_id == stream->stream_id) {
+    httpc->pause_stream_id = 0;
+  }
+  /* Reset to FALSE to prevent infinite loop in readwrite_data
+   function. */
+  stream->closed = FALSE;
+  if(stream->error_code != NGHTTP2_NO_ERROR) {
+    failf(data, "HTTP/2 stream %u was not closed cleanly: error_code = %d",
+          stream->stream_id, stream->error_code);
+    *err = CURLE_HTTP2;
+    return -1;
+  }
+  DEBUGF(infof(data, "http2_recv returns 0, http2_handle_stream_close\n"));
+  return 0;
+}
+
 /*
  * If the read would block (EWOULDBLOCK) we return -1. Otherwise we return
  * a regular CURLcode value.
@@ -681,103 +999,184 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,
   ssize_t rv;
   ssize_t nread;
   struct http_conn *httpc = &conn->proto.httpc;
+  struct SessionHandle *data = conn->data;
+  struct HTTP *stream = data->req.protop;
 
   (void)sockindex; /* we always do HTTP2 on sockindex 0 */
 
-  if(httpc->closed) {
-    /* Reset to FALSE to prevent infinite loop in readwrite_data
-       function. */
-    httpc->closed = FALSE;
-    return 0;
+  /* If stream is closed, return 0 to signal the http routine to close
+     the connection.  We need to handle stream closure here,
+     otherwise, we may be going to read from underlying connection,
+     and gets EAGAIN, and we will get stuck there. */
+  if(stream->memlen == 0 && stream->closed) {
+    return http2_handle_stream_close(httpc, data, stream, err);
   }
 
   /* Nullify here because we call nghttp2_session_send() and they
      might refer to the old buffer. */
-  httpc->upload_mem = NULL;
-  httpc->upload_len = 0;
+  stream->upload_mem = NULL;
+  stream->upload_len = 0;
 
-  if(httpc->bodystarted &&
-     httpc->nread_header_recvbuf < httpc->header_recvbuf->size_used) {
+  /*
+   * At this point 'stream' is just in the SessionHandle the connection
+   * identifies as its owner at this time.
+   */
+
+  if(stream->bodystarted &&
+     stream->nread_header_recvbuf < stream->header_recvbuf->size_used) {
+    /* If there is body data pending for this stream to return, do that */
     size_t left =
-      httpc->header_recvbuf->size_used - httpc->nread_header_recvbuf;
-    size_t ncopy = len < left ? len : left;
-    memcpy(mem, httpc->header_recvbuf->buffer + httpc->nread_header_recvbuf,
+      stream->header_recvbuf->size_used - stream->nread_header_recvbuf;
+    size_t ncopy = MIN(len, left);
+    memcpy(mem, stream->header_recvbuf->buffer + stream->nread_header_recvbuf,
            ncopy);
-    httpc->nread_header_recvbuf += ncopy;
+    stream->nread_header_recvbuf += ncopy;
+
+    infof(data, "http2_recv: Got %d bytes from header_recvbuf\n",
+          (int)ncopy);
     return ncopy;
   }
 
-  if(httpc->data) {
-    nread = len < httpc->datalen ? len : httpc->datalen;
-    memcpy(mem, httpc->data, nread);
-
-    httpc->data += nread;
-    httpc->datalen -= nread;
-
-    infof(conn->data, "%zu data written\n", nread);
-    if(httpc->datalen == 0) {
-      httpc->data = NULL;
-      httpc->datalen = 0;
+  infof(data, "http2_recv: %d bytes buffer at %p (stream %u)\n",
+        len, mem, stream->stream_id);
+
+  if((data->state.drain) && stream->memlen) {
+    DEBUGF(infof(data, "http2_recv: DRAIN %zu bytes stream %u!! (%p => %p)\n",
+                 stream->memlen, stream->stream_id,
+                 stream->mem, mem));
+    if(mem != stream->mem) {
+      /* if we didn't get the same buffer this time, we must move the data to
+         the beginning */
+      memmove(mem, stream->mem, stream->memlen);
+      stream->len = len - stream->memlen;
+      stream->mem = mem;
     }
-    return nread;
   }
+  else if(stream->pausedata) {
+    nread = MIN(len, stream->pauselen);
+    memcpy(mem, stream->pausedata, nread);
 
-  conn->proto.httpc.mem = mem;
-  conn->proto.httpc.len = len;
+    stream->pausedata += nread;
+    stream->pauselen -= nread;
 
-  infof(conn->data, "http2_recv: %d bytes buffer\n",
-        conn->proto.httpc.len);
+    infof(data, "%zu data bytes written\n", nread);
+    if(stream->pauselen == 0) {
+      DEBUGF(infof(data, "Unpaused by stream %u\n", stream->stream_id));
+      assert(httpc->pause_stream_id == stream->stream_id);
+      httpc->pause_stream_id = 0;
 
-  nread = ((Curl_recv*)httpc->recv_underlying)(conn, FIRSTSOCKET,
-                                               httpc->inbuf, H2_BUFSIZE,
-                                               &result);
-  if(result == CURLE_AGAIN) {
-    *err = result;
+      stream->pausedata = NULL;
+      stream->pauselen = 0;
+    }
+    infof(data, "http2_recv: returns unpaused %zd bytes on stream %u\n",
+          nread, stream->stream_id);
+    return nread;
+  }
+  else if(httpc->pause_stream_id) {
+    /* If a stream paused nghttp2_session_mem_recv previously, and has
+       not processed all data, it still refers to the buffer in
+       nghttp2_session.  If we call nghttp2_session_mem_recv(), we may
+       overwrite that buffer.  To avoid that situation, just return
+       here with CURLE_AGAIN.  This could be busy loop since data in
+       socket is not read.  But it seems that usually streams are
+       notified with its drain property, and socket is read again
+       quickly. */
+    *err = CURLE_AGAIN;
     return -1;
   }
+  else {
+    char *inbuf;
+    /* remember where to store incoming data for this stream and how big the
+       buffer is */
+    stream->mem = mem;
+    stream->len = len;
+    stream->memlen = 0;
+
+    if(httpc->inbuflen == 0) {
+      nread = ((Curl_recv *)httpc->recv_underlying)(
+          conn, FIRSTSOCKET, httpc->inbuf, H2_BUFSIZE, &result);
+
+      if(result == CURLE_AGAIN) {
+        *err = result;
+        return -1;
+      }
 
-  if(nread == -1) {
-    failf(conn->data, "Failed receiving HTTP2 data");
-    *err = result;
-    return 0;
-  }
+      if(nread == -1) {
+        failf(data, "Failed receiving HTTP2 data");
+        *err = result;
+        return 0;
+      }
 
-  infof(conn->data, "nread=%zd\n", nread);
+      if(nread == 0) {
+        failf(data, "Unexpected EOF");
+        *err = CURLE_RECV_ERROR;
+        return -1;
+      }
 
-  if(nread == 0) {
-    failf(conn->data, "EOF");
-    return 0;
-  }
+      DEBUGF(infof(data, "nread=%zd\n", nread));
 
-  rv = nghttp2_session_mem_recv(httpc->h2,
-                                (const uint8_t *)httpc->inbuf, nread);
+      httpc->inbuflen = nread;
+      inbuf = httpc->inbuf;
+    }
+    else {
+      nread = httpc->inbuflen - httpc->nread_inbuf;
+      inbuf = httpc->inbuf + httpc->nread_inbuf;
 
-  if(nghttp2_is_fatal((int)rv)) {
-    failf(conn->data, "nghttp2_session_mem_recv() returned %d:%s\n",
-          rv, nghttp2_strerror((int)rv));
-    *err = CURLE_RECV_ERROR;
-    return 0;
-  }
-  infof(conn->data, "nghttp2_session_mem_recv() returns %zd\n", rv);
-  /* Always send pending frames in nghttp2 session, because
-     nghttp2_session_mem_recv() may queue new frame */
-  rv = nghttp2_session_send(httpc->h2);
-  if(rv != 0) {
-    *err = CURLE_SEND_ERROR;
-    return 0;
+      DEBUGF(infof(data, "Use data left in connection buffer, nread=%zd\n",
+                   nread));
+    }
+    rv = nghttp2_session_mem_recv(httpc->h2, (const uint8_t *)inbuf, nread);
+
+    if(nghttp2_is_fatal((int)rv)) {
+      failf(data, "nghttp2_session_mem_recv() returned %d:%s\n",
+            rv, nghttp2_strerror((int)rv));
+      *err = CURLE_RECV_ERROR;
+      return 0;
+    }
+    DEBUGF(infof(data, "nghttp2_session_mem_recv() returns %zd\n", rv));
+    if(nread == rv) {
+      DEBUGF(infof(data, "All data in connection buffer processed\n"));
+      httpc->inbuflen = 0;
+      httpc->nread_inbuf = 0;
+    }
+    else {
+      httpc->nread_inbuf += rv;
+      DEBUGF(infof(data, "%zu bytes left in connection buffer\n",
+                   httpc->inbuflen - httpc->nread_inbuf));
+    }
+    /* Always send pending frames in nghttp2 session, because
+       nghttp2_session_mem_recv() may queue new frame */
+    rv = nghttp2_session_send(httpc->h2);
+    if(rv != 0) {
+      *err = CURLE_SEND_ERROR;
+      return 0;
+    }
   }
-  if(len != httpc->len) {
-    return len - conn->proto.httpc.len;
+  if(stream->memlen) {
+    ssize_t retlen = stream->memlen;
+    infof(data, "http2_recv: returns %zd for stream %u\n",
+          retlen, stream->stream_id);
+    stream->memlen = 0;
+
+    if(httpc->pause_stream_id == stream->stream_id) {
+      /* data for this stream is returned now, but this stream caused a pause
+         already so we need it called again asap */
+      DEBUGF(infof(data, "Data returned for PAUSED stream %u\n",
+                   stream->stream_id));
+    }
+    else
+      data->state.drain = 0; /* this stream is hereby drained */
+
+    return retlen;
   }
   /* If stream is closed, return 0 to signal the http routine to close
      the connection */
-  if(httpc->closed) {
-    /* Reset to FALSE to prevent infinite loop in readwrite_data
-       function. */
-    httpc->closed = FALSE;
-    return 0;
+  if(stream->closed) {
+    return http2_handle_stream_close(httpc, data, stream, err);
   }
   *err = CURLE_AGAIN;
+  DEBUGF(infof(data, "http2_recv returns AGAIN for stream %u\n",
+               stream->stream_id));
   return -1;
 }
 
@@ -796,6 +1195,7 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
    */
   int rv;
   struct http_conn *httpc = &conn->proto.httpc;
+  struct HTTP *stream = conn->data->req.protop;
   nghttp2_nv *nva;
   size_t nheader;
   size_t i;
@@ -804,23 +1204,41 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
   char *end;
   nghttp2_data_provider data_prd;
   int32_t stream_id;
+  nghttp2_session *h2 = httpc->h2;
 
   (void)sockindex;
 
-  infof(conn->data, "http2_send len=%zu\n", len);
+  DEBUGF(infof(conn->data, "http2_send len=%zu\n", len));
 
-  if(httpc->stream_id != -1) {
+  if(stream->stream_id != -1) {
     /* If stream_id != -1, we have dispatched request HEADERS, and now
        are going to send or sending request body in DATA frame */
-    httpc->upload_mem = mem;
-    httpc->upload_len = len;
-    nghttp2_session_resume_data(httpc->h2, httpc->stream_id);
-    rv = nghttp2_session_send(httpc->h2);
+    stream->upload_mem = mem;
+    stream->upload_len = len;
+    nghttp2_session_resume_data(h2, stream->stream_id);
+    rv = nghttp2_session_send(h2);
     if(nghttp2_is_fatal(rv)) {
       *err = CURLE_SEND_ERROR;
       return -1;
     }
-    return len - httpc->upload_len;
+    len -= stream->upload_len;
+
+    /* Nullify here because we call nghttp2_session_send() and they
+       might refer to the old buffer. */
+    stream->upload_mem = NULL;
+    stream->upload_len = 0;
+
+    if(stream->upload_left) {
+      /* we are sure that we have more data to send here.  Calling the
+         following API will make nghttp2_session_want_write() return
+         nonzero if remote window allows it, which then libcurl checks
+         socket is writable or not.  See http2_perform_getsock(). */
+      nghttp2_session_resume_data(h2, stream->stream_id);
+    }
+
+    DEBUGF(infof(conn->data, "http2_send returns %zu for stream %u\n", len,
+                 stream->stream_id));
+    return len;
   }
 
   /* Calculate number of headers contained in [mem, mem + len) */
@@ -843,6 +1261,8 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
   }
   /* Extract :method, :path from request line */
   end = strchr(hdbuf, ' ');
+  if(!end)
+    goto fail;
   nva[0].name = (unsigned char *)":method";
   nva[0].namelen = (uint16_t)strlen((char *)nva[0].name);
   nva[0].value = (unsigned char *)hdbuf;
@@ -852,6 +1272,8 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
   hdbuf = end + 1;
 
   end = strchr(hdbuf, ' ');
+  if(!end)
+    goto fail;
   nva[1].name = (unsigned char *)":path";
   nva[1].namelen = (uint16_t)strlen((char *)nva[1].name);
   nva[1].value = (unsigned char *)hdbuf;
@@ -868,13 +1290,16 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
   nva[2].flags = NGHTTP2_NV_FLAG_NONE;
 
   hdbuf = strchr(hdbuf, 0x0a);
+  if(!hdbuf)
+    goto fail;
   ++hdbuf;
 
   authority_idx = 0;
 
   for(i = 3; i < nheader; ++i) {
     end = strchr(hdbuf, ':');
-    assert(end);
+    if(!end)
+      goto fail;
     if(end - hdbuf == 4 && Curl_raw_nequal("host", hdbuf, 4)) {
       authority_idx = i;
       nva[i].name = (unsigned char *)":authority";
@@ -887,7 +1312,8 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
     hdbuf = end + 1;
     for(; *hdbuf == ' '; ++hdbuf);
     end = strchr(hdbuf, 0x0d);
-    assert(end);
+    if(!end)
+      goto fail;
     nva[i].value = (unsigned char *)hdbuf;
     nva[i].valuelen = (uint16_t)(end - hdbuf);
     nva[i].flags = NGHTTP2_NV_FLAG_NONE;
@@ -899,11 +1325,15 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
     if(nva[i].namelen == 14 &&
        Curl_raw_nequal("content-length", (char*)nva[i].name, 14)) {
       size_t j;
+      stream->upload_left = 0;
       for(j = 0; j < nva[i].valuelen; ++j) {
-        httpc->upload_left *= 10;
-        httpc->upload_left += nva[i].value[j] - '0';
+        stream->upload_left *= 10;
+        stream->upload_left += nva[i].value[j] - '0';
       }
-      infof(conn->data, "request content-length=%zu\n", httpc->upload_left);
+      DEBUGF(infof(conn->data,
+                   "request content-length=%"
+                   CURL_FORMAT_CURL_OFF_T
+                   "\n", stream->upload_left));
     }
   }
 
@@ -922,31 +1352,34 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
   case HTTPREQ_PUT:
     data_prd.read_callback = data_source_read_callback;
     data_prd.source.ptr = NULL;
-    stream_id = nghttp2_submit_request(httpc->h2, NULL, nva, nheader,
-                                       &data_prd, NULL);
+    stream_id = nghttp2_submit_request(h2, NULL, nva, nheader,
+                                       &data_prd, conn->data);
     break;
   default:
-    stream_id = nghttp2_submit_request(httpc->h2, NULL, nva, nheader,
-                                       NULL, NULL);
+    stream_id = nghttp2_submit_request(h2, NULL, nva, nheader,
+                                       NULL, conn->data);
   }
 
   Curl_safefree(nva);
 
   if(stream_id < 0) {
+    DEBUGF(infof(conn->data, "http2_send() send error\n"));
     *err = CURLE_SEND_ERROR;
     return -1;
   }
 
-  httpc->stream_id = stream_id;
+  infof(conn->data, "Using Stream ID: %x (easy handle %p)\n",
+        stream_id, conn->data);
+  stream->stream_id = stream_id;
 
-  rv = nghttp2_session_send(httpc->h2);
+  rv = nghttp2_session_send(h2);
 
   if(rv != 0) {
     *err = CURLE_SEND_ERROR;
     return -1;
   }
 
-  if(httpc->stream_id != -1) {
+  if(stream->stream_id != -1) {
     /* If whole HEADERS frame was sent off to the underlying socket,
        the nghttp2 library calls data_source_read_callback. But only
        it found that no data available, so it deferred the DATA
@@ -955,36 +1388,59 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
        writable socket check is performed. To workaround this, we
        issue nghttp2_session_resume_data() here to bring back DATA
        transmission from deferred state. */
-    nghttp2_session_resume_data(httpc->h2, httpc->stream_id);
+    nghttp2_session_resume_data(h2, stream->stream_id);
   }
 
   return len;
+
+  fail:
+  free(nva);
+  *err = CURLE_SEND_ERROR;
+  return -1;
 }
 
 CURLcode Curl_http2_setup(struct connectdata *conn)
 {
+  CURLcode result;
   struct http_conn *httpc = &conn->proto.httpc;
+  struct HTTP *stream = conn->data->req.protop;
+
+  stream->stream_id = -1;
+
+  if(!stream->header_recvbuf)
+    stream->header_recvbuf = Curl_add_buffer_init();
+
+  if((conn->handler == &Curl_handler_http2_ssl) ||
+     (conn->handler == &Curl_handler_http2))
+    return CURLE_OK; /* already done */
+
   if(conn->handler->flags & PROTOPT_SSL)
     conn->handler = &Curl_handler_http2_ssl;
   else
     conn->handler = &Curl_handler_http2;
 
-  infof(conn->data, "Using HTTP2\n");
-  httpc->bodystarted = FALSE;
-  httpc->closed = FALSE;
-  httpc->header_recvbuf = Curl_add_buffer_init();
-  httpc->nread_header_recvbuf = 0;
-  httpc->data = NULL;
-  httpc->datalen = 0;
-  httpc->upload_left = 0;
-  httpc->upload_mem = NULL;
-  httpc->upload_len = 0;
-  httpc->stream_id = -1;
-  httpc->status_code = -1;
+  result = Curl_http2_init(conn);
+  if(result)
+    return result;
+
+  infof(conn->data, "Using HTTP2, server supports multi-use\n");
+  stream->upload_left = 0;
+  stream->upload_mem = NULL;
+  stream->upload_len = 0;
 
+  httpc->inbuflen = 0;
+  httpc->nread_inbuf = 0;
+
+  httpc->pause_stream_id = 0;
+
+  conn->bits.multiplex = TRUE; /* at least potentially multiplexed */
   conn->httpversion = 20;
+  conn->bundle->multiuse = BUNDLE_MULTIPLEX;
 
-  return 0;
+  infof(conn->data, "Connection state changed (HTTP/2 confirmed)\n");
+  Curl_multi_connchanged(conn->data->multi);
+
+  return CURLE_OK;
 }
 
 CURLcode Curl_http2_switched(struct connectdata *conn,
@@ -993,30 +1449,22 @@ CURLcode Curl_http2_switched(struct connectdata *conn,
   CURLcode result;
   struct http_conn *httpc = &conn->proto.httpc;
   int rv;
+  ssize_t nproc;
   struct SessionHandle *data = conn->data;
+  struct HTTP *stream = conn->data->req.protop;
+
+  result = Curl_http2_setup(conn);
+  if(result)
+    return result;
 
   httpc->recv_underlying = (recving)conn->recv[FIRSTSOCKET];
   httpc->send_underlying = (sending)conn->send[FIRSTSOCKET];
   conn->recv[FIRSTSOCKET] = http2_recv;
   conn->send[FIRSTSOCKET] = http2_send;
 
-  rv = (int) ((Curl_send*)httpc->send_underlying)
-    (conn, FIRSTSOCKET,
-     NGHTTP2_CLIENT_CONNECTION_PREFACE,
-     NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN,
-     &result);
-  if(result)
-    /* TODO: This may get CURLE_AGAIN */
-    return result;
-
-  if(rv != 24) {
-    failf(data, "Only sent partial HTTP2 packet");
-    return CURLE_SEND_ERROR;
-  }
-
   if(conn->data->req.upgr101 == UPGR101_RECEIVED) {
     /* stream 1 is opened implicitly on upgrade */
-    httpc->stream_id = 1;
+    stream->stream_id = 1;
     /* queue SETTINGS frame (again) */
     rv = nghttp2_session_upgrade(httpc->h2, httpc->binsettings,
                                  httpc->binlen, NULL);
@@ -1025,10 +1473,14 @@ CURLcode Curl_http2_switched(struct connectdata *conn,
             nghttp2_strerror(rv), rv);
       return CURLE_HTTP2;
     }
+
+    nghttp2_session_set_stream_user_data(httpc->h2,
+                                         stream->stream_id,
+                                         conn->data);
   }
   else {
     /* stream ID is unknown at this point */
-    httpc->stream_id = -1;
+    stream->stream_id = -1;
     rv = nghttp2_submit_settings(httpc->h2, NGHTTP2_FLAG_NONE, NULL, 0);
     if(rv != 0) {
       failf(data, "nghttp2_submit_settings() failed: %s(%d)",
@@ -1037,10 +1489,48 @@ CURLcode Curl_http2_switched(struct connectdata *conn,
     }
   }
 
-  rv = (int)nghttp2_session_mem_recv(httpc->h2, (const uint8_t*)mem, nread);
+  /* we are going to copy mem to httpc->inbuf.  This is required since
+     mem is part of buffer pointed by stream->mem, and callbacks
+     called by nghttp2_session_mem_recv() will write stream specific
+     data into stream->mem, overwriting data already there. */
+  if(H2_BUFSIZE < nread) {
+    failf(data, "connection buffer size is too small to store data following "
+                "HTTP Upgrade response header: buflen=%zu, datalen=%zu",
+          H2_BUFSIZE, nread);
+    return CURLE_HTTP2;
+  }
+
+  infof(conn->data, "Copying HTTP/2 data in stream buffer to connection buffer"
+                    " after upgrade: len=%zu\n",
+        nread);
+
+  memcpy(httpc->inbuf, mem, nread);
+  httpc->inbuflen = nread;
 
-  if(rv != (int)nread) {
+  nproc = nghttp2_session_mem_recv(httpc->h2, (const uint8_t *)httpc->inbuf,
+                                   httpc->inbuflen);
+
+  if(nghttp2_is_fatal((int)nproc)) {
     failf(data, "nghttp2_session_mem_recv() failed: %s(%d)",
+          nghttp2_strerror((int)nproc), (int)nproc);
+    return CURLE_HTTP2;
+  }
+
+  DEBUGF(infof(data, "nghttp2_session_mem_recv() returns %zd\n", nproc));
+
+  if((ssize_t)nread == nproc) {
+    httpc->inbuflen = 0;
+    httpc->nread_inbuf = 0;
+  }
+  else {
+    httpc->nread_inbuf += nproc;
+  }
+
+  /* Try to send some frames since we may read SETTINGS already. */
+  rv = nghttp2_session_send(httpc->h2);
+
+  if(rv != 0) {
+    failf(data, "nghttp2_session_send() failed: %s(%d)",
           nghttp2_strerror(rv), rv);
     return CURLE_HTTP2;
   }
@@ -1048,4 +1538,25 @@ CURLcode Curl_http2_switched(struct connectdata *conn,
   return CURLE_OK;
 }
 
-#endif
+#else /* !USE_NGHTTP2 */
+
+/* Satisfy external references even if http2 is not compiled in. */
+
+#define CURL_DISABLE_TYPECHECK
+#include <curl/curl.h>
+
+char *curl_pushheader_bynum(struct curl_pushheaders *h, size_t num)
+{
+  (void) h;
+  (void) num;
+  return NULL;
+}
+
+char *curl_pushheader_byname(struct curl_pushheaders *h, const char *header)
+{
+  (void) h;
+  (void) header;
+  return NULL;
+}
+
+#endif /* USE_NGHTTP2 */
index a2e4eb7..bb7ad9c 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #ifdef USE_NGHTTP2
 #include "http.h"
+
+/* value for MAX_CONCURRENT_STREAMS we use until we get an updated setting
+   from the peer */
+#define DEFAULT_MAX_CONCURRENT_STREAMS 13
+
 /*
  * Store nghttp2 version info in this buffer, Prefix with a space.  Return
  * total length written.
@@ -39,12 +44,17 @@ CURLcode Curl_http2_request_upgrade(Curl_send_buffer *req,
 CURLcode Curl_http2_setup(struct connectdata *conn);
 CURLcode Curl_http2_switched(struct connectdata *conn,
                              const char *data, size_t nread);
+/* called from Curl_http_setup_conn */
+void Curl_http2_setup_conn(struct connectdata *conn);
+void Curl_http2_setup_req(struct SessionHandle *data);
 #else /* USE_NGHTTP2 */
 #define Curl_http2_init(x) CURLE_UNSUPPORTED_PROTOCOL
 #define Curl_http2_send_request(x) CURLE_UNSUPPORTED_PROTOCOL
 #define Curl_http2_request_upgrade(x,y) CURLE_UNSUPPORTED_PROTOCOL
 #define Curl_http2_setup(x) CURLE_UNSUPPORTED_PROTOCOL
 #define Curl_http2_switched(x,y,z) CURLE_UNSUPPORTED_PROTOCOL
+#define Curl_http2_setup_conn(x)
+#define Curl_http2_setup_req(x)
 #endif
 
 #endif /* HEADER_CURL_HTTP2_H */
index 61a6098..7e91b37 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include "content_encoding.h"
 #include "http.h"
-#include "curl_memory.h"
 #include "non-ascii.h" /* for Curl_convert_to_network prototype */
 #include "strtoofft.h"
 #include "warnless.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /*
@@ -158,7 +155,7 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
         if(result) {
           /* Curl_convert_from_network calls failf if unsuccessful */
           /* Treat it as a bad hex character */
-          return CHUNKE_ILLEGAL_HEX ;
+          return CHUNKE_ILLEGAL_HEX;
         }
 
         ch->datasize=curlx_strtoofft(ch->hexbuffer, &endptr, 16);
@@ -221,7 +218,6 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
                                           (ssize_t)piece);
         break;
 
-      case COMPRESS:
       default:
         failf (conn->data,
                "Unrecognized content encoding type. "
index ba59e5d..929e2c6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "rawstr.h"
 #include "curl_sasl.h"
 #include "http_digest.h"
-#include "curl_memory.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /* Test example headers:
index 97d0cb7..a1baf29 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include "curl_setup.h"
 
-#ifdef HAVE_GSSAPI
-
-#if !defined(CURL_DISABLE_HTTP) && defined(USE_SPNEGO)
-
-#ifdef HAVE_OLD_GSSMIT
-#define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
-#define NCOMPAT 1
-#endif
+#if defined(HAVE_GSSAPI) && !defined(CURL_DISABLE_HTTP) && defined(USE_SPNEGO)
 
 #include "urldata.h"
 #include "sendf.h"
 #include "rawstr.h"
 #include "curl_base64.h"
 #include "http_negotiate.h"
-#include "curl_memory.h"
+#include "curl_sasl.h"
 #include "url.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
-static int
-get_gss_name(struct connectdata *conn, bool proxy, gss_name_t *server)
-{
-  OM_uint32 major_status, minor_status;
-  gss_buffer_desc token = GSS_C_EMPTY_BUFFER;
-  char name[2048];
-  const char* service = "HTTP";
-
-  token.length = strlen(service) + 1 + strlen(proxy ? conn->proxy.name :
-                                              conn->host.name) + 1;
-  if(token.length + 1 > sizeof(name))
-    return EMSGSIZE;
-
-  snprintf(name, sizeof(name), "%s@%s", service, proxy ? conn->proxy.name :
-           conn->host.name);
-
-  token.value = (void *) name;
-  major_status = gss_import_name(&minor_status,
-                                 &token,
-                                 GSS_C_NT_HOSTBASED_SERVICE,
-                                 server);
-
-  return GSS_ERROR(major_status) ? -1 : 0;
-}
-
-/* returning zero (0) means success, everything else is treated as "failure"
-   with no care exactly what the failure was */
-int Curl_input_negotiate(struct connectdata *conn, bool proxy,
-                         const char *header)
+CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
+                              const char *header)
 {
   struct SessionHandle *data = conn->data;
   struct negotiatedata *neg_ctx = proxy?&data->state.proxyneg:
     &data->state.negotiate;
   OM_uint32 major_status, minor_status, discard_st;
+  gss_buffer_desc spn_token = GSS_C_EMPTY_BUFFER;
   gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
   gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
-  int ret;
   size_t len;
   size_t rawlen = 0;
   CURLcode result;
@@ -92,12 +57,36 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
      * rejected it (since we're again here). Exit with an error since we
      * can't invent anything better */
     Curl_cleanup_negotiate(data);
-    return -1;
+    return CURLE_LOGIN_DENIED;
   }
 
-  if(neg_ctx->server_name == NULL &&
-      (ret = get_gss_name(conn, proxy, &neg_ctx->server_name)))
-    return ret;
+  if(!neg_ctx->server_name) {
+    /* Generate our SPN */
+    char *spn = Curl_sasl_build_gssapi_spn(
+      proxy ? data->set.str[STRING_PROXY_SERVICE_NAME] :
+      data->set.str[STRING_SERVICE_NAME],
+      proxy ? conn->proxy.name : conn->host.name);
+    if(!spn)
+      return CURLE_OUT_OF_MEMORY;
+
+    /* Populate the SPN structure */
+    spn_token.value = spn;
+    spn_token.length = strlen(spn);
+
+    /* Import the SPN */
+    major_status = gss_import_name(&minor_status, &spn_token,
+                                   GSS_C_NT_HOSTBASED_SERVICE,
+                                   &neg_ctx->server_name);
+    if(GSS_ERROR(major_status)) {
+      Curl_gss_log_error(data, minor_status, "gss_import_name() failed: ");
+
+      free(spn);
+
+      return CURLE_OUT_OF_MEMORY;
+    }
+
+    free(spn);
+  }
 
   header += strlen("Negotiate");
   while(*header && ISSPACE(*header))
@@ -107,8 +96,15 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
   if(len > 0) {
     result = Curl_base64_decode(header, (unsigned char **)&input_token.value,
                                 &rawlen);
-    if(result || rawlen == 0)
-      return -1;
+    if(result)
+      return result;
+
+    if(!rawlen) {
+      infof(data, "Negotiate handshake failure (empty challenge message)\n");
+
+      return CURLE_BAD_CONTENT_ENCODING;
+    }
+
     input_token.length = rawlen;
 
     DEBUGASSERT(input_token.value != NULL);
@@ -132,19 +128,19 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
       gss_release_buffer(&discard_st, &output_token);
     Curl_gss_log_error(conn->data, minor_status,
                        "gss_init_sec_context() failed: ");
-    return -1;
+    return CURLE_OUT_OF_MEMORY;
   }
 
   if(!output_token.value || !output_token.length) {
     if(output_token.value)
       gss_release_buffer(&discard_st, &output_token);
-    return -1;
+    return CURLE_OUT_OF_MEMORY;
   }
 
   neg_ctx->output_token = output_token;
-  return 0;
-}
 
+  return CURLE_OK;
+}
 
 CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
 {
@@ -185,7 +181,7 @@ CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
     conn->allocptr.userpwd = userp;
   }
 
-  Curl_safefree(encoded);
+  free(encoded);
 
   return (userp == NULL) ? CURLE_OUT_OF_MEMORY : CURLE_OK;
 }
@@ -211,6 +207,4 @@ void Curl_cleanup_negotiate(struct SessionHandle *data)
   cleanup(&data->state.proxyneg);
 }
 
-#endif /* !CURL_DISABLE_HTTP && USE_SPNEGO */
-
-#endif /* HAVE_GSSAPI */
+#endif /* HAVE_GSSAPI && !CURL_DISABLE_HTTP && USE_SPNEGO */
index f7efe8c..a8eb980 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -25,8 +25,8 @@
 #ifdef USE_SPNEGO
 
 /* this is for Negotiate header input */
-int Curl_input_negotiate(struct connectdata *conn, bool proxy,
-                         const char *header);
+CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
+                              const char *header);
 
 /* this is for creating Negotiate header output */
 CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy);
index d651ac9..a50ea96 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "curl_base64.h"
 #include "curl_sasl.h"
 #include "http_negotiate.h"
-#include "curl_memory.h"
 #include "curl_multibyte.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
-/* returning zero (0) means success, everything else is treated as "failure"
-   with no care exactly what the failure was */
-int Curl_input_negotiate(struct connectdata *conn, bool proxy,
-                         const char *header)
+CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
+                              const char *header)
 {
+  struct SessionHandle *data = conn->data;
   BYTE              *input_token = NULL;
   SecBufferDesc     out_buff_desc;
   SecBuffer         out_sec_buff;
   SecBufferDesc     in_buff_desc;
   SecBuffer         in_sec_buff;
-  unsigned long     context_attributes;
-  TimeStamp         expiry;
-  int ret;
+  SECURITY_STATUS   status;
+  unsigned long     attrs;
+  TimeStamp         expiry; /* For Windows 9x compatibility of SSPI calls */
   size_t len = 0, input_token_len = 0;
-  CURLcode error;
+  CURLcode result;
 
   /* Point to the username and password */
   const char *userp;
@@ -68,12 +65,12 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
   if(proxy) {
     userp = conn->proxyuser;
     passwdp = conn->proxypasswd;
-    neg_ctx = &conn->data->state.proxyneg;
+    neg_ctx = &data->state.proxyneg;
   }
   else {
     userp = conn->user;
     passwdp = conn->passwd;
-    neg_ctx = &conn->data->state.negotiate;
+    neg_ctx = &data->state.negotiate;
   }
 
   /* Not set means empty */
@@ -87,29 +84,31 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
     /* We finished successfully our part of authentication, but server
      * rejected it (since we're again here). Exit with an error since we
      * can't invent anything better */
-    Curl_cleanup_negotiate(conn->data);
-    return -1;
+    Curl_cleanup_negotiate(data);
+    return CURLE_LOGIN_DENIED;
   }
 
   if(!neg_ctx->server_name) {
     /* Check proxy auth requested but no given proxy name */
     if(proxy && !conn->proxy.name)
-      return -1;
+      return CURLE_BAD_FUNCTION_ARGUMENT;
 
     /* Generate our SPN */
-    neg_ctx->server_name = Curl_sasl_build_spn("HTTP",
-                                                proxy ? conn->proxy.name :
-                                                        conn->host.name);
+    neg_ctx->server_name = Curl_sasl_build_spn(
+      proxy ? data->set.str[STRING_PROXY_SERVICE_NAME] :
+      data->set.str[STRING_SERVICE_NAME],
+      proxy ? conn->proxy.name : conn->host.name);
     if(!neg_ctx->server_name)
-      return -1;
+      return CURLE_OUT_OF_MEMORY;
   }
 
   if(!neg_ctx->output_token) {
     PSecPkgInfo SecurityPackage;
-    ret = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_NEGOTIATE),
-                                             &SecurityPackage);
-    if(ret != SEC_E_OK)
-      return -1;
+    status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *)
+                                                TEXT(SP_NAME_NEGOTIATE),
+                                                &SecurityPackage);
+    if(status != SEC_E_OK)
+      return CURLE_NOT_BUILT_IN;
 
     /* Allocate input and output buffers according to the max token size
        as indicated by the security package */
@@ -129,7 +128,7 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
     if(neg_ctx->context) {
       /* The server rejected our authentication and hasn't suppled any more
          negotiation mechanisms */
-      return -1;
+      return CURLE_LOGIN_DENIED;
     }
 
     /* We have to acquire credentials and allocate memory for the context */
@@ -137,13 +136,13 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
     neg_ctx->context = malloc(sizeof(CtxtHandle));
 
     if(!neg_ctx->credentials || !neg_ctx->context)
-      return -1;
+      return CURLE_OUT_OF_MEMORY;
 
     if(userp && *userp) {
       /* Populate our identity structure */
-      error = Curl_create_sspi_identity(userp, passwdp, &neg_ctx->identity);
-      if(error)
-        return -1;
+      result = Curl_create_sspi_identity(userp, passwdp, &neg_ctx->identity);
+      if(result)
+        return result;
 
       /* Allow proper cleanup of the identity structure */
       neg_ctx->p_identity = &neg_ctx->identity;
@@ -160,14 +159,21 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
                                          neg_ctx->p_identity, NULL, NULL,
                                          neg_ctx->credentials, &expiry);
     if(neg_ctx->status != SEC_E_OK)
-      return -1;
+      return CURLE_LOGIN_DENIED;
   }
   else {
-    error = Curl_base64_decode(header,
-                               (unsigned char **)&input_token,
-                               &input_token_len);
-    if(error || !input_token_len)
-      return -1;
+    result = Curl_base64_decode(header,
+                                (unsigned char **)&input_token,
+                                &input_token_len);
+    if(result)
+      return result;
+
+    if(!input_token_len) {
+      infof(data,
+            "Negotiate handshake failure (empty challenge message)\n");
+
+      return CURLE_BAD_CONTENT_ENCODING;
+    }
   }
 
   /* Setup the "output" security buffer */
@@ -200,28 +206,27 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
     0,
     neg_ctx->context,
     &out_buff_desc,
-    &context_attributes,
+    &attrs,
     &expiry);
 
-  Curl_safefree(input_token);
+  free(input_token);
 
   if(GSS_ERROR(neg_ctx->status))
-    return -1;
+    return CURLE_OUT_OF_MEMORY;
 
   if(neg_ctx->status == SEC_I_COMPLETE_NEEDED ||
      neg_ctx->status == SEC_I_COMPLETE_AND_CONTINUE) {
     neg_ctx->status = s_pSecFn->CompleteAuthToken(neg_ctx->context,
                                                   &out_buff_desc);
     if(GSS_ERROR(neg_ctx->status))
-      return -1;
+      return CURLE_RECV_ERROR;
   }
 
   neg_ctx->output_token_length = out_sec_buff.cbBuffer;
 
-  return 0;
+  return CURLE_OK;
 }
 
-
 CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
 {
   struct negotiatedata *neg_ctx = proxy?&conn->data->state.proxyneg:
index 72123ed..4373d62 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "progress.h"
 #include "non-ascii.h"
 #include "connect.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curlx.h"
 
 #include "curl_memory.h"
@@ -71,10 +68,11 @@ CURLcode Curl_proxy_connect(struct connectdata *conn)
     conn->data->req.protop = &http_proxy;
     connkeep(conn, "HTTP proxy CONNECT");
     result = Curl_proxyCONNECT(conn, FIRSTSOCKET,
-                               conn->host.name, conn->remote_port);
+                               conn->host.name, conn->remote_port, FALSE);
     conn->data->req.protop = prot_save;
     if(CURLE_OK != result)
       return result;
+    Curl_safefree(conn->allocptr.proxyuserpwd);
 #else
     return CURLE_NOT_BUILT_IN;
 #endif
@@ -87,12 +85,16 @@ CURLcode Curl_proxy_connect(struct connectdata *conn)
  * Curl_proxyCONNECT() requires that we're connected to a HTTP proxy. This
  * function will issue the necessary commands to get a seamless tunnel through
  * this proxy. After that, the socket can be used just as a normal socket.
+ *
+ * 'blocking' set to TRUE means that this function will do the entire CONNECT
+ * + response in a blocking fashion. Should be avoided!
  */
 
 CURLcode Curl_proxyCONNECT(struct connectdata *conn,
                            int sockindex,
                            const char *hostname,
-                           int remote_port)
+                           int remote_port,
+                           bool blocking)
 {
   int subversion=0;
   struct SessionHandle *data=conn->data;
@@ -123,13 +125,11 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
       infof(data, "Establish HTTP proxy tunnel to %s:%hu\n",
             hostname, remote_port);
 
-      if(data->req.newurl) {
         /* This only happens if we've looped here due to authentication
            reasons, and we don't really use the newly cloned URL here
            then. Just free() it. */
-        free(data->req.newurl);
-        data->req.newurl = NULL;
-      }
+      free(data->req.newurl);
+      data->req.newurl = NULL;
 
       /* initialize a dynamic send-buffer */
       req_buffer = Curl_add_buffer_init();
@@ -139,7 +139,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
 
       host_port = aprintf("%s:%hu", hostname, remote_port);
       if(!host_port) {
-        free(req_buffer);
+        Curl_add_buffer_free(req_buffer);
         return CURLE_OUT_OF_MEMORY;
       }
 
@@ -159,7 +159,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
                   hostname, conn->bits.ipv6_ip?"]":"",
                   remote_port);
         if(!hostheader) {
-          free(req_buffer);
+          Curl_add_buffer_free(req_buffer);
           return CURLE_OUT_OF_MEMORY;
         }
 
@@ -167,7 +167,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
           host = aprintf("Host: %s\r\n", hostheader);
           if(!host) {
             free(hostheader);
-            free(req_buffer);
+            Curl_add_buffer_free(req_buffer);
             return CURLE_OUT_OF_MEMORY;
           }
         }
@@ -216,7 +216,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
           failf(data, "Failed sending CONNECT to proxy");
       }
 
-      Curl_safefree(req_buffer);
+      Curl_add_buffer_free(req_buffer);
       if(result)
         return result;
 
@@ -229,12 +229,14 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
       return CURLE_RECV_ERROR;
     }
 
-    if(0 == Curl_socket_ready(tunnelsocket, CURL_SOCKET_BAD, 0))
-      /* return so we'll be called again polling-style */
-      return CURLE_OK;
-    else {
-      DEBUGF(infof(data,
-                   "Read response immediately from proxy CONNECT\n"));
+    if(!blocking) {
+      if(0 == Curl_socket_ready(tunnelsocket, CURL_SOCKET_BAD, 0))
+        /* return so we'll be called again polling-style */
+        return CURLE_OK;
+      else {
+        DEBUGF(infof(data,
+               "Read response immediately from proxy CONNECT\n"));
+      }
     }
 
     /* at this point, the tunnel_connecting phase is over. */
@@ -285,7 +287,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
               /* proxy auth was requested and there was proxy auth available,
                  then deem this as "mere" proxy disconnect */
               conn->bits.proxy_connect_closed = TRUE;
-              infof(data, "Proxy CONNECT connection closed");
+              infof(data, "Proxy CONNECT connection closed\n");
             }
             else {
               error = SELECT_ERROR;
@@ -467,7 +469,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
 
                     result = Curl_http_input_auth(conn, proxy, auth);
 
-                    Curl_safefree(auth);
+                    free(auth);
 
                     if(result)
                       return result;
@@ -554,11 +556,8 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
       infof(data, "Connect me again please\n");
     }
     else {
-      if(data->req.newurl) {
-        /* this won't be used anymore for the CONNECT so free it now */
-        free(data->req.newurl);
-        data->req.newurl = NULL;
-      }
+      free(data->req.newurl);
+      data->req.newurl = NULL;
       /* failure, close this connection to avoid re-use */
       connclose(conn, "proxy CONNECT failure");
       Curl_closesocket(conn, conn->sock[sockindex]);
index 2b5e9c9..9c4f020 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -26,7 +26,8 @@
 /* ftp can use this as well */
 CURLcode Curl_proxyCONNECT(struct connectdata *conn,
                            int tunnelsocket,
-                           const char *hostname, int remote_port);
+                           const char *hostname, int remote_port,
+                           bool blocking);
 
 /* Default proxy timeout in milliseconds */
 #define PROXY_TIMEOUT (3600*1000)
@@ -34,7 +35,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
 CURLcode Curl_proxy_connect(struct connectdata *conn);
 
 #else
-#define Curl_proxyCONNECT(x,y,z,w) CURLE_NOT_BUILT_IN
+#define Curl_proxyCONNECT(x,y,z,w,v) CURLE_NOT_BUILT_IN
 #define Curl_proxy_connect(x) CURLE_OK
 #endif
 
index 389feed..6e6f969 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -53,9 +53,7 @@
 #include "inet_ntop.h"
 #include "strequal.h"
 #include "if2ip.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 
 #include "curl_memory.h"
 /* The last #include file should be: */
index 767ac80..e6d83f2 100644 (file)
@@ -80,9 +80,7 @@
 #include "rawstr.h"
 #include "curl_sasl.h"
 #include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 
 #include "curl_memory.h"
 /* The last #include file should be: */
@@ -105,10 +103,12 @@ static CURLcode imap_sendf(struct connectdata *conn, const char *fmt, ...);
 static CURLcode imap_parse_url_options(struct connectdata *conn);
 static CURLcode imap_parse_url_path(struct connectdata *conn);
 static CURLcode imap_parse_custom_request(struct connectdata *conn);
-static CURLcode imap_calc_sasl_details(struct connectdata *conn,
-                                       const char **mech,
-                                       char **initresp, size_t *len,
-                                       imapstate *state1, imapstate *state2);
+static CURLcode imap_perform_authenticate(struct connectdata *conn,
+                                          const char *mech,
+                                          const char *initresp);
+static CURLcode imap_continue_authenticate(struct connectdata *conn,
+                                           const char *resp);
+static void imap_get_message(char *buffer, char** outptr);
 
 /*
  * IMAP protocol handler.
@@ -131,7 +131,7 @@ const struct Curl_handler Curl_handler_imap = {
   ZERO_NULL,                        /* readwrite */
   PORT_IMAP,                        /* defport */
   CURLPROTO_IMAP,                   /* protocol */
-  PROTOPT_CLOSEACTION | PROTOPT_NEEDSPWD  /* flags */
+  PROTOPT_CLOSEACTION               /* flags */
 };
 
 #ifdef USE_SSL
@@ -156,8 +156,7 @@ const struct Curl_handler Curl_handler_imaps = {
   ZERO_NULL,                        /* readwrite */
   PORT_IMAPS,                       /* defport */
   CURLPROTO_IMAPS,                  /* protocol */
-  PROTOPT_CLOSEACTION | PROTOPT_SSL |
-  PROTOPT_NEEDSPWD                  /* flags */
+  PROTOPT_CLOSEACTION | PROTOPT_SSL /* flags */
 };
 #endif
 
@@ -213,6 +212,18 @@ static const struct Curl_handler Curl_handler_imaps_proxy = {
 #endif
 #endif
 
+/* SASL parameters for the imap protocol */
+static const struct SASLproto saslimap = {
+  "imap",                     /* The service name */
+  '+',                        /* Code received when continuation is expected */
+  'O',                        /* Code to receive upon authentication success */
+  0,                          /* Maximum initial response length (no max) */
+  imap_perform_authenticate,  /* Send authentication command */
+  imap_continue_authenticate, /* Send authentication continuation */
+  imap_get_message            /* Get SASL response message */
+};
+
+
 #ifdef USE_SSL
 static void imap_to_imaps(struct connectdata *conn)
 {
@@ -353,16 +364,7 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
      (len >= 2 && !memcmp("+ ", line, 2))) {
     switch(imapc->state) {
       /* States which are interested in continuation responses */
-      case IMAP_AUTHENTICATE_PLAIN:
-      case IMAP_AUTHENTICATE_LOGIN:
-      case IMAP_AUTHENTICATE_LOGIN_PASSWD:
-      case IMAP_AUTHENTICATE_CRAMMD5:
-      case IMAP_AUTHENTICATE_DIGESTMD5:
-      case IMAP_AUTHENTICATE_DIGESTMD5_RESP:
-      case IMAP_AUTHENTICATE_NTLM:
-      case IMAP_AUTHENTICATE_NTLM_TYPE2MSG:
-      case IMAP_AUTHENTICATE_XOAUTH2:
-      case IMAP_AUTHENTICATE_FINAL:
+      case IMAP_AUTHENTICATE:
       case IMAP_APPEND:
         *resp = '+';
         break;
@@ -425,20 +427,7 @@ static void state(struct connectdata *conn, imapstate newstate)
     "CAPABILITY",
     "STARTTLS",
     "UPGRADETLS",
-    "AUTHENTICATE_PLAIN",
-    "AUTHENTICATE_LOGIN",
-    "AUTHENTICATE_LOGIN_PASSWD",
-    "AUTHENTICATE_CRAMMD5",
-    "AUTHENTICATE_DIGESTMD5",
-    "AUTHENTICATE_DIGESTMD5_RESP",
-    "AUTHENTICATE_NTLM",
-    "AUTHENTICATE_NTLM_TYPE2MSG",
-    "AUTHENTICATE_GSSAPI",
-    "AUTHENTICATE_GSSAPI_TOKEN",
-    "AUTHENTICATE_GSSAPI_NO_DATA",
-    "AUTHENTICATE_XOAUTH2",
-    "AUTHENTICATE_CANCEL",
-    "AUTHENTICATE_FINAL",
+    "AUTHENTICATE",
     "LOGIN",
     "LIST",
     "SELECT",
@@ -471,9 +460,9 @@ static CURLcode imap_perform_capability(struct connectdata *conn)
   CURLcode result = CURLE_OK;
   struct imap_conn *imapc = &conn->proto.imapc;
 
-  imapc->authmechs = 0;         /* No known authentication mechanisms yet */
-  imapc->authused = 0;          /* Clear the authentication mechanism used */
-  imapc->tls_supported = FALSE; /* Clear the TLS capability */
+  imapc->sasl.authmechs = SASL_AUTH_NONE; /* No known auth. mechanisms yet */
+  imapc->sasl.authused = SASL_AUTH_NONE;  /* Clear the auth. mechanism used */
+  imapc->tls_supported = FALSE;           /* Clear the TLS capability */
 
   /* Send the CAPABILITY command */
   result = imap_sendf(conn, "CAPABILITY");
@@ -558,8 +547,8 @@ static CURLcode imap_perform_login(struct connectdata *conn)
   result = imap_sendf(conn, "LOGIN %s %s", user ? user : "",
                       passwd ? passwd : "");
 
-  Curl_safefree(user);
-  Curl_safefree(passwd);
+  free(user);
+  free(passwd);
 
   if(!result)
     state(conn, IMAP_LOGIN);
@@ -576,24 +565,17 @@ static CURLcode imap_perform_login(struct connectdata *conn)
  */
 static CURLcode imap_perform_authenticate(struct connectdata *conn,
                                           const char *mech,
-                                          const char *initresp,
-                                          imapstate state1, imapstate state2)
+                                          const char *initresp)
 {
   CURLcode result = CURLE_OK;
 
   if(initresp) {
     /* Send the AUTHENTICATE command with the initial response */
     result = imap_sendf(conn, "AUTHENTICATE %s %s", mech, initresp);
-
-    if(!result)
-      state(conn, state2);
   }
   else {
     /* Send the AUTHENTICATE command */
     result = imap_sendf(conn, "AUTHENTICATE %s", mech);
-
-    if(!result)
-      state(conn, state1);
   }
 
   return result;
@@ -601,6 +583,20 @@ static CURLcode imap_perform_authenticate(struct connectdata *conn,
 
 /***********************************************************************
  *
+ * imap_continue_authenticate()
+ *
+ * Sends SASL continuation data or cancellation.
+ */
+static CURLcode imap_continue_authenticate(struct connectdata *conn,
+                                           const char *resp)
+{
+  struct imap_conn *imapc = &conn->proto.imapc;
+
+  return Curl_pp_sendf(&imapc->pp, "%s", resp);
+}
+
+/***********************************************************************
+ *
  * imap_perform_authentication()
  *
  * Initiates the authentication sequence, with the appropriate SASL
@@ -611,31 +607,22 @@ static CURLcode imap_perform_authentication(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct imap_conn *imapc = &conn->proto.imapc;
-  const char *mech = NULL;
-  char *initresp = NULL;
-  size_t len = 0;
-  imapstate state1 = IMAP_STOP;
-  imapstate state2 = IMAP_STOP;
+  saslprogress progress;
 
-  /* Check we have a username and password to authenticate with and end the
+  /* Check we have enough data to authenticate with and end the
      connect phase if we don't */
-  if(!conn->bits.user_passwd) {
+  if(!Curl_sasl_can_authenticate(&imapc->sasl, conn)) {
     state(conn, IMAP_STOP);
-
     return result;
   }
 
   /* Calculate the SASL login details */
-  result = imap_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
-                                  &state2);
+  result = Curl_sasl_start(&imapc->sasl, conn, imapc->ir_supported, &progress);
 
   if(!result) {
-    if(mech && (imapc->preftype & IMAP_TYPE_SASL)) {
-      /* Perform SASL based authentication */
-      result = imap_perform_authenticate(conn, mech, initresp, state1, state2);
-    }
-    else if((!imapc->login_disabled) &&
-            (imapc->preftype & IMAP_TYPE_CLEARTEXT))
+    if(progress == SASL_INPROGRESS)
+      state(conn, IMAP_AUTHENTICATE);
+    else if(!imapc->login_disabled && (imapc->preftype & IMAP_TYPE_CLEARTEXT))
       /* Perform clear text authentication */
       result = imap_perform_login(conn);
     else {
@@ -645,8 +632,6 @@ static CURLcode imap_perform_authentication(struct connectdata *conn)
     }
   }
 
-  Curl_safefree(initresp);
-
   return result;
 }
 
@@ -676,7 +661,7 @@ static CURLcode imap_perform_list(struct connectdata *conn)
     /* Send the LIST command */
     result = imap_sendf(conn, "LIST \"%s\" *", mailbox);
 
-    Curl_safefree(mailbox);
+    free(mailbox);
   }
 
   if(!result)
@@ -717,7 +702,7 @@ static CURLcode imap_perform_select(struct connectdata *conn)
   /* Send the SELECT command */
   result = imap_sendf(conn, "SELECT %s", mailbox);
 
-  Curl_safefree(mailbox);
+  free(mailbox);
 
   if(!result)
     state(conn, IMAP_SELECT);
@@ -792,7 +777,7 @@ static CURLcode imap_perform_append(struct connectdata *conn)
   result = imap_sendf(conn, "APPEND %s (\\Seen) {%" CURL_FORMAT_CURL_OFF_T "}",
                       mailbox, conn->data->state.infilesize);
 
-  Curl_safefree(mailbox);
+  free(mailbox);
 
   if(!result)
     state(conn, IMAP_APPEND);
@@ -914,26 +899,16 @@ static CURLcode imap_state_capability_resp(struct connectdata *conn,
 
       /* Do we have a SASL based authentication mechanism? */
       else if(wordlen > 5 && !memcmp(line, "AUTH=", 5)) {
+        size_t llen;
+        unsigned int mechbit;
+
         line += 5;
         wordlen -= 5;
 
         /* Test the word for a matching authentication mechanism */
-        if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_LOGIN))
-          imapc->authmechs |= SASL_MECH_LOGIN;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_PLAIN))
-          imapc->authmechs |= SASL_MECH_PLAIN;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_CRAM_MD5))
-          imapc->authmechs |= SASL_MECH_CRAM_MD5;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_DIGEST_MD5))
-          imapc->authmechs |= SASL_MECH_DIGEST_MD5;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_GSSAPI))
-          imapc->authmechs |= SASL_MECH_GSSAPI;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_EXTERNAL))
-          imapc->authmechs |= SASL_MECH_EXTERNAL;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_NTLM))
-          imapc->authmechs |= SASL_MECH_NTLM;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_XOAUTH2))
-          imapc->authmechs |= SASL_MECH_XOAUTH2;
+        if((mechbit = Curl_sasl_decode_mech(line, wordlen, &llen)) &&
+           llen == wordlen)
+          imapc->sasl.authmechs |= mechbit;
       }
 
       line += wordlen;
@@ -986,569 +961,36 @@ static CURLcode imap_state_starttls_resp(struct connectdata *conn,
   return result;
 }
 
-/* For AUTHENTICATE PLAIN (without initial response) responses */
-static CURLcode imap_state_auth_plain_resp(struct connectdata *conn,
-                                           int imapcode,
-                                           imapstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *plainauth = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(imapcode != '+') {
-    failf(data, "Access denied. %c", imapcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the authorisation message */
-    result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
-                                            &plainauth, &len);
-    if(!result && plainauth) {
-      /* Send the message */
-      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", plainauth);
-
-      if(!result)
-        state(conn, IMAP_AUTHENTICATE_FINAL);
-    }
-  }
-
-  Curl_safefree(plainauth);
-
-  return result;
-}
-
-/* For AUTHENTICATE LOGIN (without initial response) responses */
-static CURLcode imap_state_auth_login_resp(struct connectdata *conn,
-                                           int imapcode,
-                                           imapstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *authuser = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(imapcode != '+') {
-    failf(data, "Access denied: %d", imapcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the user message */
-    result = Curl_sasl_create_login_message(data, conn->user,
-                                            &authuser, &len);
-    if(!result && authuser) {
-      /* Send the user */
-      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", authuser);
-
-      if(!result)
-        state(conn, IMAP_AUTHENTICATE_LOGIN_PASSWD);
-    }
-  }
-
-  Curl_safefree(authuser);
-
-  return result;
-}
-
-/* For AUTHENTICATE LOGIN user entry responses */
-static CURLcode imap_state_auth_login_password_resp(struct connectdata *conn,
-                                                    int imapcode,
-                                                    imapstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *authpasswd = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(imapcode != '+') {
-    failf(data, "Access denied: %d", imapcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the password message */
-    result = Curl_sasl_create_login_message(data, conn->passwd,
-                                            &authpasswd, &len);
-    if(!result && authpasswd) {
-      /* Send the password */
-      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", authpasswd);
-
-      if(!result)
-        state(conn, IMAP_AUTHENTICATE_FINAL);
-    }
-  }
-
-  Curl_safefree(authpasswd);
-
-  return result;
-}
-
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-/* For AUTHENTICATE CRAM-MD5 responses */
-static CURLcode imap_state_auth_cram_resp(struct connectdata *conn,
-                                          int imapcode,
-                                          imapstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  char *chlg = NULL;
-  char *chlg64 = NULL;
-  char *rplyb64 = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(imapcode != '+') {
-    failf(data, "Access denied: %d", imapcode);
-    return CURLE_LOGIN_DENIED;
-  }
-
-  /* Get the challenge message */
-  imap_get_message(data->state.buffer, &chlg64);
-
-  /* Decode the challenge message */
-  result = Curl_sasl_decode_cram_md5_message(chlg64, &chlg, &len);
-  if(result) {
-    /* Send the cancellation */
-    result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
-
-    if(!result)
-      state(conn, IMAP_AUTHENTICATE_CANCEL);
-  }
-  else {
-    /* Create the response message */
-    result = Curl_sasl_create_cram_md5_message(data, chlg, conn->user,
-                                               conn->passwd, &rplyb64, &len);
-    if(!result && rplyb64) {
-      /* Send the response */
-      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", rplyb64);
-
-      if(!result)
-        state(conn, IMAP_AUTHENTICATE_FINAL);
-    }
-  }
-
-  Curl_safefree(chlg);
-  Curl_safefree(rplyb64);
-
-  return result;
-}
-
-/* For AUTHENTICATE DIGEST-MD5 challenge responses */
-static CURLcode imap_state_auth_digest_resp(struct connectdata *conn,
-                                            int imapcode,
-                                            imapstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  char *chlg64 = NULL;
-  char *rplyb64 = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(imapcode != '+') {
-    failf(data, "Access denied: %d", imapcode);
-    return CURLE_LOGIN_DENIED;
-  }
-
-  /* Get the challenge message */
-  imap_get_message(data->state.buffer, &chlg64);
-
-  /* Create the response message */
-  result = Curl_sasl_create_digest_md5_message(data, chlg64,
-                                               conn->user, conn->passwd,
-                                               "imap", &rplyb64, &len);
-  if(result) {
-    if(result == CURLE_BAD_CONTENT_ENCODING) {
-      /* Send the cancellation */
-      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
-
-      if(!result)
-        state(conn, IMAP_AUTHENTICATE_CANCEL);
-    }
-  }
-  else {
-    /* Send the response */
-    result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", rplyb64);
-
-    if(!result)
-      state(conn, IMAP_AUTHENTICATE_DIGESTMD5_RESP);
-  }
-
-  Curl_safefree(rplyb64);
-
-  return result;
-}
-
-/* For AUTHENTICATE DIGEST-MD5 challenge-response responses */
-static CURLcode imap_state_auth_digest_resp_resp(struct connectdata *conn,
-                                                 int imapcode,
-                                                 imapstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-
-  (void)instate; /* no use for this yet */
-
-  if(imapcode != '+') {
-    failf(data, "Authentication failed: %d", imapcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Send an empty response */
-    result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "");
-
-    if(!result)
-      state(conn, IMAP_AUTHENTICATE_FINAL);
-  }
-
-  return result;
-}
-#endif
-
-#ifdef USE_NTLM
-/* For AUTHENTICATE NTLM (without initial response) responses */
-static CURLcode imap_state_auth_ntlm_resp(struct connectdata *conn,
-                                          int imapcode,
-                                          imapstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *type1msg = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(imapcode != '+') {
-    failf(data, "Access denied: %d", imapcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the type-1 message */
-    result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
-                                                 &conn->ntlm,
-                                                 &type1msg, &len);
-    if(!result && type1msg) {
-      /* Send the message */
-      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", type1msg);
-
-      if(!result)
-        state(conn, IMAP_AUTHENTICATE_NTLM_TYPE2MSG);
-    }
-  }
-
-  Curl_safefree(type1msg);
-
-  return result;
-}
-
-/* For NTLM type-2 responses (sent in reponse to our type-1 message) */
-static CURLcode imap_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
-                                                   int imapcode,
-                                                   imapstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  char *type2msg = NULL;
-  char *type3msg = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(imapcode != '+') {
-    failf(data, "Access denied: %d", imapcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Get the challenge message */
-    imap_get_message(data->state.buffer, &type2msg);
-
-    /* Decode the type-2 message */
-    result = Curl_sasl_decode_ntlm_type2_message(data, type2msg, &conn->ntlm);
-    if(result) {
-      /* Send the cancellation */
-      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
-
-      if(!result)
-        state(conn, IMAP_AUTHENTICATE_CANCEL);
-    }
-    else {
-      /* Create the type-3 message */
-      result = Curl_sasl_create_ntlm_type3_message(data, conn->user,
-                                                   conn->passwd, &conn->ntlm,
-                                                   &type3msg, &len);
-      if(!result && type3msg) {
-        /* Send the message */
-        result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", type3msg);
-
-        if(!result)
-          state(conn, IMAP_AUTHENTICATE_FINAL);
-      }
-    }
-  }
-
-  Curl_safefree(type3msg);
-
-  return result;
-}
-#endif
-
-#if defined(USE_KERBEROS5)
-/* For AUTHENTICATE GSSAPI (without initial response) responses */
-static CURLcode imap_state_auth_gssapi_resp(struct connectdata *conn,
-                                            int imapcode,
-                                            imapstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  struct imap_conn *imapc = &conn->proto.imapc;
-  size_t len = 0;
-  char *respmsg = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(imapcode != '+') {
-    failf(data, "Access denied: %d", imapcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the initial response message */
-    result = Curl_sasl_create_gssapi_user_message(data, conn->user,
-                                                  conn->passwd, "imap",
-                                                  imapc->mutual_auth,
-                                                  NULL, &conn->krb5,
-                                                  &respmsg, &len);
-    if(!result && respmsg) {
-      /* Send the message */
-      result = Curl_pp_sendf(&imapc->pp, "%s", respmsg);
-
-      if(!result)
-        state(conn, IMAP_AUTHENTICATE_GSSAPI_TOKEN);
-    }
-  }
-
-  Curl_safefree(respmsg);
-
-  return result;
-}
-
-/* For AUTHENTICATE GSSAPI user token responses */
-static CURLcode imap_state_auth_gssapi_token_resp(struct connectdata *conn,
-                                                  int imapcode,
-                                                  imapstate instate)
+/* For SASL authentication responses */
+static CURLcode imap_state_auth_resp(struct connectdata *conn,
+                                     int imapcode,
+                                     imapstate instate)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
   struct imap_conn *imapc = &conn->proto.imapc;
-  char *chlgmsg = NULL;
-  char *respmsg = NULL;
-  size_t len = 0;
+  saslprogress progress;
 
   (void)instate; /* no use for this yet */
 
-  if(imapcode != '+') {
-    failf(data, "Access denied: %d", imapcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Get the challenge message */
-    imap_get_message(data->state.buffer, &chlgmsg);
-
-    if(imapc->mutual_auth)
-      /* Decode the user token challenge and create the optional response
-         message */
-      result = Curl_sasl_create_gssapi_user_message(data, NULL, NULL, NULL,
-                                                    imapc->mutual_auth,
-                                                    chlgmsg, &conn->krb5,
-                                                    &respmsg, &len);
-    else
-      /* Decode the security challenge and create the response message */
-      result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
-                                                        &conn->krb5,
-                                                        &respmsg, &len);
-
-    if(result) {
-      if(result == CURLE_BAD_CONTENT_ENCODING) {
-        /* Send the cancellation */
-        result = Curl_pp_sendf(&imapc->pp, "%s", "*");
-
-        if(!result)
-          state(conn, IMAP_AUTHENTICATE_CANCEL);
-      }
-    }
-    else {
-      /* Send the response */
-      if(respmsg)
-        result = Curl_pp_sendf(&imapc->pp, "%s", respmsg);
-      else
-        result = Curl_pp_sendf(&imapc->pp, "%s", "");
-
-      if(!result)
-        state(conn, (imapc->mutual_auth ? IMAP_AUTHENTICATE_GSSAPI_NO_DATA :
-                                          IMAP_AUTHENTICATE_FINAL));
-    }
-  }
-
-  Curl_safefree(respmsg);
-
-  return result;
-}
-
-/* For AUTHENTICATE GSSAPI no data responses */
-static CURLcode imap_state_auth_gssapi_no_data_resp(struct connectdata *conn,
-                                                    int imapcode,
-                                                    imapstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  char *chlgmsg = NULL;
-  char *respmsg = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(imapcode != '+') {
-    failf(data, "Access denied: %d", imapcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Get the challenge message */
-    imap_get_message(data->state.buffer, &chlgmsg);
-
-    /* Decode the security challenge and create the response message */
-    result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
-                                                      &conn->krb5,
-                                                      &respmsg, &len);
-    if(result) {
-      if(result == CURLE_BAD_CONTENT_ENCODING) {
-        /* Send the cancellation */
-        result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
-
-        if(!result)
-          state(conn, IMAP_AUTHENTICATE_CANCEL);
-      }
-    }
-    else {
-      /* Send the response */
-      if(respmsg) {
-        result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", respmsg);
-
-        if(!result)
-          state(conn, IMAP_AUTHENTICATE_FINAL);
+  result = Curl_sasl_continue(&imapc->sasl, conn, imapcode, &progress);
+  if(!result)
+    switch(progress) {
+    case SASL_DONE:
+      state(conn, IMAP_STOP);  /* Authenticated */
+      break;
+    case SASL_IDLE:            /* No mechanism left after cancellation */
+      if((!imapc->login_disabled) && (imapc->preftype & IMAP_TYPE_CLEARTEXT))
+        /* Perform clear text authentication */
+        result = imap_perform_login(conn);
+      else {
+        failf(data, "Authentication cancelled");
+        result = CURLE_LOGIN_DENIED;
       }
+      break;
+    default:
+      break;
     }
-  }
-
-  Curl_safefree(respmsg);
-
-  return result;
-}
-#endif
-
-/* For AUTHENTICATE XOAUTH2 (without initial response) responses */
-static CURLcode imap_state_auth_xoauth2_resp(struct connectdata *conn,
-                                             int imapcode,
-                                             imapstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *xoauth = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(imapcode != '+') {
-    failf(data, "Access denied: %d", imapcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the authorisation message */
-    result = Curl_sasl_create_xoauth2_message(conn->data, conn->user,
-                                              conn->xoauth2_bearer,
-                                              &xoauth, &len);
-    if(!result && xoauth) {
-      /* Send the message */
-      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", xoauth);
-
-      if(!result)
-        state(conn, IMAP_AUTHENTICATE_FINAL);
-    }
-  }
-
-  Curl_safefree(xoauth);
-
-  return result;
-}
-
-/* For AUTHENTICATE cancellation responses */
-static CURLcode imap_state_auth_cancel_resp(struct connectdata *conn,
-                                            int imapcode,
-                                            imapstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  struct imap_conn *imapc = &conn->proto.imapc;
-  const char *mech = NULL;
-  char *initresp = NULL;
-  size_t len = 0;
-  imapstate state1 = IMAP_STOP;
-  imapstate state2 = IMAP_STOP;
-
-  (void)imapcode;
-  (void)instate; /* no use for this yet */
-
-  /* Remove the offending mechanism from the supported list */
-  imapc->authmechs ^= imapc->authused;
-
-  /* Calculate alternative SASL login details */
-  result = imap_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
-                                  &state2);
-
-  if(!result) {
-    /* Do we have any mechanisms left or can we fallback to clear text? */
-    if(mech) {
-      /* Retry SASL based authentication */
-      result = imap_perform_authenticate(conn, mech, initresp, state1, state2);
-
-      Curl_safefree(initresp);
-    }
-    else if((!imapc->login_disabled) &&
-            (imapc->preftype & IMAP_TYPE_CLEARTEXT))
-      /* Perform clear text authentication */
-      result = imap_perform_login(conn);
-    else {
-      failf(data, "Authentication cancelled");
-
-      result = CURLE_LOGIN_DENIED;
-    }
-  }
-
-  return result;
-}
-
-/* For final responses in the AUTHENTICATE sequence */
-static CURLcode imap_state_auth_final_resp(struct connectdata *conn,
-                                           int imapcode,
-                                           imapstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-
-  (void)instate; /* no use for this yet */
-
-  if(imapcode != 'O') {
-    failf(data, "Authentication failed: %d", imapcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else
-    /* End of connect phase */
-    state(conn, IMAP_STOP);
 
   return result;
 }
@@ -1872,69 +1314,8 @@ static CURLcode imap_statemach_act(struct connectdata *conn)
       result = imap_state_starttls_resp(conn, imapcode, imapc->state);
       break;
 
-    case IMAP_AUTHENTICATE_PLAIN:
-      result = imap_state_auth_plain_resp(conn, imapcode, imapc->state);
-      break;
-
-    case IMAP_AUTHENTICATE_LOGIN:
-      result = imap_state_auth_login_resp(conn, imapcode, imapc->state);
-      break;
-
-    case IMAP_AUTHENTICATE_LOGIN_PASSWD:
-      result = imap_state_auth_login_password_resp(conn, imapcode,
-                                                   imapc->state);
-      break;
-
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-    case IMAP_AUTHENTICATE_CRAMMD5:
-      result = imap_state_auth_cram_resp(conn, imapcode, imapc->state);
-      break;
-
-    case IMAP_AUTHENTICATE_DIGESTMD5:
-      result = imap_state_auth_digest_resp(conn, imapcode, imapc->state);
-      break;
-
-    case IMAP_AUTHENTICATE_DIGESTMD5_RESP:
-      result = imap_state_auth_digest_resp_resp(conn, imapcode, imapc->state);
-      break;
-#endif
-
-#ifdef USE_NTLM
-    case IMAP_AUTHENTICATE_NTLM:
-      result = imap_state_auth_ntlm_resp(conn, imapcode, imapc->state);
-      break;
-
-    case IMAP_AUTHENTICATE_NTLM_TYPE2MSG:
-      result = imap_state_auth_ntlm_type2msg_resp(conn, imapcode,
-                                                  imapc->state);
-      break;
-#endif
-
-#if defined(USE_KERBEROS5)
-    case IMAP_AUTHENTICATE_GSSAPI:
-      result = imap_state_auth_gssapi_resp(conn, imapcode, imapc->state);
-      break;
-
-    case IMAP_AUTHENTICATE_GSSAPI_TOKEN:
-      result = imap_state_auth_gssapi_token_resp(conn, imapcode, imapc->state);
-      break;
-
-    case IMAP_AUTHENTICATE_GSSAPI_NO_DATA:
-      result = imap_state_auth_gssapi_no_data_resp(conn, imapcode,
-                                                   imapc->state);
-      break;
-#endif
-
-    case IMAP_AUTHENTICATE_XOAUTH2:
-      result = imap_state_auth_xoauth2_resp(conn, imapcode, imapc->state);
-      break;
-
-    case IMAP_AUTHENTICATE_CANCEL:
-      result = imap_state_auth_cancel_resp(conn, imapcode, imapc->state);
-      break;
-
-    case IMAP_AUTHENTICATE_FINAL:
-      result = imap_state_auth_final_resp(conn, imapcode, imapc->state);
+    case IMAP_AUTHENTICATE:
+      result = imap_state_auth_resp(conn, imapcode, imapc->state);
       break;
 
     case IMAP_LOGIN:
@@ -2061,7 +1442,7 @@ static CURLcode imap_connect(struct connectdata *conn, bool *done)
 
   /* Set the default preferred authentication type and mechanism */
   imapc->preftype = IMAP_TYPE_ANY;
-  imapc->prefmech = SASL_AUTH_ANY;
+  Curl_sasl_init(&imapc->sasl, &saslimap);
 
   /* Initialise the pingpong layer */
   Curl_pp_init(pp);
@@ -2274,7 +1655,7 @@ static CURLcode imap_disconnect(struct connectdata *conn, bool dead_connection)
   Curl_pp_disconnect(&imapc->pp);
 
   /* Cleanup the SASL module */
-  Curl_sasl_cleanup(conn, imapc->authused);
+  Curl_sasl_cleanup(conn, imapc->sasl.authused);
 
   /* Cleanup our connection based variables */
   Curl_safefree(imapc->mailbox);
@@ -2419,7 +1800,7 @@ static CURLcode imap_sendf(struct connectdata *conn, const char *fmt, ...)
   result = Curl_pp_vsendf(&imapc->pp, taggedfmt, ap);
   va_end(ap);
 
-  Curl_safefree(taggedfmt);
+  free(taggedfmt);
 
   return result;
 }
@@ -2548,69 +1929,42 @@ static CURLcode imap_parse_url_options(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct imap_conn *imapc = &conn->proto.imapc;
-  const char *options = conn->options;
-  const char *ptr = options;
-  bool reset = TRUE;
+  const char *ptr = conn->options;
+
+  imapc->sasl.resetprefs = TRUE;
 
-  while(ptr && *ptr) {
+  while(!result && ptr && *ptr) {
     const char *key = ptr;
+    const char *value;
 
     while(*ptr && *ptr != '=')
         ptr++;
 
-    if(strnequal(key, "AUTH", 4)) {
-      size_t len = 0;
-      const char *value = ++ptr;
+    value = ptr + 1;
 
-      if(reset) {
-        reset = FALSE;
-        imapc->preftype = IMAP_TYPE_NONE;
-        imapc->prefmech = SASL_AUTH_NONE;
-      }
-
-      while(*ptr && *ptr != ';') {
-        ptr++;
-        len++;
-      }
-
-      if(strnequal(value, "*", len)) {
-        imapc->preftype = IMAP_TYPE_ANY;
-        imapc->prefmech = SASL_AUTH_ANY;
-      }
-      else if(strnequal(value, SASL_MECH_STRING_LOGIN, len)) {
-        imapc->preftype = IMAP_TYPE_SASL;
-        imapc->prefmech |= SASL_MECH_LOGIN;
-      }
-      else if(strnequal(value, SASL_MECH_STRING_PLAIN, len)) {
-        imapc->preftype = IMAP_TYPE_SASL;
-        imapc->prefmech |= SASL_MECH_PLAIN;
-      }
-      else if(strnequal(value, SASL_MECH_STRING_CRAM_MD5, len)) {
-        imapc->preftype = IMAP_TYPE_SASL;
-        imapc->prefmech |= SASL_MECH_CRAM_MD5;
-      }
-      else if(strnequal(value, SASL_MECH_STRING_DIGEST_MD5, len)) {
-        imapc->preftype = IMAP_TYPE_SASL;
-        imapc->prefmech |= SASL_MECH_DIGEST_MD5;
-      }
-      else if(strnequal(value, SASL_MECH_STRING_GSSAPI, len)) {
-        imapc->preftype = IMAP_TYPE_SASL;
-        imapc->prefmech |= SASL_MECH_GSSAPI;
-      }
-      else if(strnequal(value, SASL_MECH_STRING_NTLM, len)) {
-        imapc->preftype = IMAP_TYPE_SASL;
-        imapc->prefmech |= SASL_MECH_NTLM;
-      }
-      else if(strnequal(value, SASL_MECH_STRING_XOAUTH2, len)) {
-        imapc->preftype = IMAP_TYPE_SASL;
-        imapc->prefmech |= SASL_MECH_XOAUTH2;
-      }
+    while(*ptr && *ptr != ';')
+      ptr++;
 
-      if(*ptr == ';')
-        ptr++;
-    }
+    if(strnequal(key, "AUTH=", 5))
+      result = Curl_sasl_parse_url_auth_option(&imapc->sasl,
+                                               value, ptr - value);
     else
       result = CURLE_URL_MALFORMAT;
+
+    if(*ptr == ';')
+      ptr++;
+  }
+
+  switch(imapc->sasl.prefmech) {
+  case SASL_AUTH_NONE:
+    imapc->preftype = IMAP_TYPE_NONE;
+    break;
+  case SASL_AUTH_DEFAULT:
+    imapc->preftype = IMAP_TYPE_ANY;
+    break;
+  default:
+    imapc->preftype = IMAP_TYPE_SASL;
+    break;
   }
 
   return result;
@@ -2677,7 +2031,7 @@ static CURLcode imap_parse_url_path(struct connectdata *conn)
     /* Decode the value parameter */
     result = Curl_urldecode(data, begin, ptr - begin, &value, &valuelen, TRUE);
     if(result) {
-      Curl_safefree(name);
+      free(name);
       return result;
     }
 
@@ -2716,14 +2070,14 @@ static CURLcode imap_parse_url_path(struct connectdata *conn)
       value = NULL;
     }
     else {
-      Curl_safefree(name);
-      Curl_safefree(value);
+      free(name);
+      free(value);
 
       return CURLE_URL_MALFORMAT;
     }
 
-    Curl_safefree(name);
-    Curl_safefree(value);
+    free(name);
+    free(value);
   }
 
   /* Does the URL contain a query parameter? Only valid when we have a mailbox
@@ -2785,108 +2139,4 @@ static CURLcode imap_parse_custom_request(struct connectdata *conn)
   return result;
 }
 
-/***********************************************************************
- *
- * imap_calc_sasl_details()
- *
- * Calculate the required login details for SASL authentication.
- */
-static CURLcode imap_calc_sasl_details(struct connectdata *conn,
-                                       const char **mech,
-                                       char **initresp, size_t *len,
-                                       imapstate *state1, imapstate *state2)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  struct imap_conn *imapc = &conn->proto.imapc;
-
-  /* Calculate the supported authentication mechanism, by decreasing order of
-     security, as well as the initial response where appropriate */
-#if defined(USE_KERBEROS5)
-    if((imapc->authmechs & SASL_MECH_GSSAPI) &&
-       (imapc->prefmech & SASL_MECH_GSSAPI)) {
-    imapc->mutual_auth = FALSE; /* TODO: Calculate mutual authentication */
-
-    *mech = SASL_MECH_STRING_GSSAPI;
-    *state1 = IMAP_AUTHENTICATE_GSSAPI;
-    *state2 = IMAP_AUTHENTICATE_GSSAPI_TOKEN;
-    imapc->authused = SASL_MECH_GSSAPI;
-
-    if(imapc->ir_supported || data->set.sasl_ir)
-      result = Curl_sasl_create_gssapi_user_message(data, conn->user,
-                                                    conn->passwd, "imap",
-                                                    imapc->mutual_auth,
-                                                    NULL, &conn->krb5,
-                                                    initresp, len);
-  }
-  else
-#endif
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-  if((imapc->authmechs & SASL_MECH_DIGEST_MD5) &&
-     (imapc->prefmech & SASL_MECH_DIGEST_MD5)) {
-    *mech = SASL_MECH_STRING_DIGEST_MD5;
-    *state1 = IMAP_AUTHENTICATE_DIGESTMD5;
-    imapc->authused = SASL_MECH_DIGEST_MD5;
-  }
-  else if((imapc->authmechs & SASL_MECH_CRAM_MD5) &&
-          (imapc->prefmech & SASL_MECH_CRAM_MD5)) {
-    *mech = SASL_MECH_STRING_CRAM_MD5;
-    *state1 = IMAP_AUTHENTICATE_CRAMMD5;
-    imapc->authused = SASL_MECH_CRAM_MD5;
-  }
-  else
-#endif
-#ifdef USE_NTLM
-    if((imapc->authmechs & SASL_MECH_NTLM) &&
-       (imapc->prefmech & SASL_MECH_NTLM)) {
-    *mech = SASL_MECH_STRING_NTLM;
-    *state1 = IMAP_AUTHENTICATE_NTLM;
-    *state2 = IMAP_AUTHENTICATE_NTLM_TYPE2MSG;
-    imapc->authused = SASL_MECH_NTLM;
-
-    if(imapc->ir_supported || data->set.sasl_ir)
-      result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
-                                                   &conn->ntlm,
-                                                   initresp, len);
-  }
-  else
-#endif
-  if(((imapc->authmechs & SASL_MECH_XOAUTH2) &&
-      (imapc->prefmech & SASL_MECH_XOAUTH2) &&
-      (imapc->prefmech != SASL_AUTH_ANY)) || conn->xoauth2_bearer) {
-    *mech = SASL_MECH_STRING_XOAUTH2;
-    *state1 = IMAP_AUTHENTICATE_XOAUTH2;
-    *state2 = IMAP_AUTHENTICATE_FINAL;
-    imapc->authused = SASL_MECH_XOAUTH2;
-
-    if(imapc->ir_supported || data->set.sasl_ir)
-      result = Curl_sasl_create_xoauth2_message(data, conn->user,
-                                                conn->xoauth2_bearer,
-                                                initresp, len);
-  }
-  else if((imapc->authmechs & SASL_MECH_LOGIN) &&
-          (imapc->prefmech & SASL_MECH_LOGIN)) {
-    *mech = SASL_MECH_STRING_LOGIN;
-    *state1 = IMAP_AUTHENTICATE_LOGIN;
-    *state2 = IMAP_AUTHENTICATE_LOGIN_PASSWD;
-    imapc->authused = SASL_MECH_LOGIN;
-
-    if(imapc->ir_supported || data->set.sasl_ir)
-      result = Curl_sasl_create_login_message(data, conn->user, initresp, len);
-  }
-  else if((imapc->authmechs & SASL_MECH_PLAIN) &&
-          (imapc->prefmech & SASL_MECH_PLAIN)) {
-    *mech = SASL_MECH_STRING_PLAIN;
-    *state1 = IMAP_AUTHENTICATE_PLAIN;
-    *state2 = IMAP_AUTHENTICATE_FINAL;
-    imapc->authused = SASL_MECH_PLAIN;
-
-    if(imapc->ir_supported || data->set.sasl_ir)
-      result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
-                                              initresp, len);
-  }
-
-  return result;
-}
-
 #endif /* CURL_DISABLE_IMAP */
index 768fc4b..3189daa 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2009 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2009 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,6 +23,7 @@
  ***************************************************************************/
 
 #include "pingpong.h"
+#include "curl_sasl.h"
 
 /****************************************************************************
  * IMAP unique setup
@@ -35,20 +36,7 @@ typedef enum {
   IMAP_STARTTLS,
   IMAP_UPGRADETLS,   /* asynchronously upgrade the connection to SSL/TLS
                        (multi mode only) */
-  IMAP_AUTHENTICATE_PLAIN,
-  IMAP_AUTHENTICATE_LOGIN,
-  IMAP_AUTHENTICATE_LOGIN_PASSWD,
-  IMAP_AUTHENTICATE_CRAMMD5,
-  IMAP_AUTHENTICATE_DIGESTMD5,
-  IMAP_AUTHENTICATE_DIGESTMD5_RESP,
-  IMAP_AUTHENTICATE_NTLM,
-  IMAP_AUTHENTICATE_NTLM_TYPE2MSG,
-  IMAP_AUTHENTICATE_GSSAPI,
-  IMAP_AUTHENTICATE_GSSAPI_TOKEN,
-  IMAP_AUTHENTICATE_GSSAPI_NO_DATA,
-  IMAP_AUTHENTICATE_XOAUTH2,
-  IMAP_AUTHENTICATE_CANCEL,
-  IMAP_AUTHENTICATE_FINAL,
+  IMAP_AUTHENTICATE,
   IMAP_LOGIN,
   IMAP_LIST,
   IMAP_SELECT,
@@ -83,16 +71,13 @@ struct imap_conn {
   struct pingpong pp;
   imapstate state;            /* Always use imap.c:state() to change state! */
   bool ssldone;               /* Is connect() over SSL done? */
-  unsigned int authmechs;     /* Accepted authentication mechanisms */
+  struct SASL sasl;           /* SASL-related parameters */
   unsigned int preftype;      /* Preferred authentication type */
-  unsigned int prefmech;      /* Preferred authentication mechanism */
-  unsigned int authused;      /* Auth mechanism used for the connection */
   int cmdid;                  /* Last used command ID */
   char resptag[5];            /* Response tag to wait for */
   bool tls_supported;         /* StartTLS capability supported by server */
   bool login_disabled;        /* LOGIN command disabled by server */
   bool ir_supported;          /* Initial response supported by server */
-  bool mutual_auth;           /* Mutual authentication enabled (GSSAPI only) */
   char *mailbox;              /* The last selected mailbox */
   char *mailbox_uidvalidity;  /* UIDVALIDITY parsed from select response */
 };
index c327150..da9a3ab 100644 (file)
@@ -32,8 +32,7 @@
 #include <arpa/inet.h>
 #endif
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 
 #include "inet_ntop.h"
 
index db28ed8..cc4bdbb 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -31,7 +31,7 @@ char *Curl_inet_ntop(int af, const void *addr, char *buf, size_t size);
 #include <arpa/inet.h>
 #endif
 #define Curl_inet_ntop(af,addr,buf,size) \
-        inet_ntop(af,addr,buf,(curl_socklen_t)size)
+        inet_ntop(af, addr, buf, (curl_socklen_t)size)
 #endif
 
 #endif /* HEADER_CURL_INET_NTOP_H */
index a0d7bb4..ad7dd67 100644 (file)
@@ -1,8 +1,8 @@
 /* GSSAPI/krb5 support for FTP - loosely based on old krb4.c
  *
- * Copyright (c) 1995, 1996, 1997, 1998, 1999, 2013 Kungliga Tekniska Högskolan
+ * Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan
  * (Royal Institute of Technology, Stockholm, Sweden).
- * Copyright (c) 2004 - 2014 Daniel Stenberg
+ * Copyright (c) 2004 - 2015 Daniel Stenberg
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 
 #include "curl_setup.h"
 
-#ifndef CURL_DISABLE_FTP
-#ifdef HAVE_GSSAPI
-
-#ifdef HAVE_OLD_GSSMIT
-#define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
-#define NCOMPAT 1
-#endif
+#if defined(HAVE_GSSAPI) && !defined(CURL_DISABLE_FTP)
 
 #ifdef HAVE_NETDB_H
 #include <netdb.h>
 #include "curl_gssapi.h"
 #include "sendf.h"
 #include "curl_sec.h"
-#include "curl_memory.h"
 #include "warnless.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 #define LOCAL_ADDR (&conn->local_addr)
@@ -254,7 +246,8 @@ krb5_auth(void *app_data, struct connectdata *conn)
         result = Curl_base64_encode(data, (char *)output_buffer.value,
                                     output_buffer.length, &p, &base64_sz);
         if(result) {
-          Curl_infof(data,"base64-encoding: %s\n", curl_easy_strerror(result));
+          Curl_infof(data, "base64-encoding: %s\n",
+                     curl_easy_strerror(result));
           ret = AUTH_CONTINUE;
           break;
         }
@@ -286,7 +279,8 @@ krb5_auth(void *app_data, struct connectdata *conn)
                                       (unsigned char **)&_gssresp.value,
                                       &_gssresp.length);
           if(result) {
-            Curl_failf(data,"base64-decoding: %s", curl_easy_strerror(result));
+            Curl_failf(data, "base64-decoding: %s",
+                       curl_easy_strerror(result));
             ret = AUTH_CONTINUE;
             break;
           }
@@ -335,5 +329,4 @@ struct Curl_sec_client_mech Curl_krb5_client_mech = {
     krb5_decode
 };
 
-#endif /* HAVE_GSSAPI */
-#endif /* CURL_DISABLE_FTP */
+#endif /* HAVE_GSSAPI && !CURL_DISABLE_FTP */
index f27fa90..4d91282 100644 (file)
@@ -35,7 +35,7 @@
  * OpenLDAP library versions, USE_OPENLDAP shall not be defined.
  */
 
-#ifdef CURL_LDAP_WIN            /* Use Windows LDAP implementation. */
+#ifdef USE_WIN32_LDAP           /* Use Windows LDAP implementation. */
 # include <winldap.h>
 # ifndef LDAP_VENDOR_NAME
 #  error Your Platform SDK is NOT sufficient for LDAP support! \
 # endif /* HAVE_LDAP_SSL && HAVE_LDAP_SSL_H */
 #endif
 
+/* These are macros in both <wincrypt.h> (in above <winldap.h>) and typedefs
+ * in BoringSSL's <openssl/x509.h>
+ */
+#ifdef HAVE_BORINGSSL
+# undef X509_NAME
+# undef X509_CERT_PAIR
+# undef X509_EXTENSIONS
+#endif
+
 #include "urldata.h"
 #include <curl/curl.h>
 #include "sendf.h"
 #include "strequal.h"
 #include "strtok.h"
 #include "curl_ldap.h"
-#include "curl_memory.h"
 #include "curl_multibyte.h"
 #include "curl_base64.h"
 #include "rawstr.h"
 #include "connect.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 #ifndef HAVE_LDAP_URL_PARSE
@@ -81,7 +89,7 @@
 typedef struct {
   char   *lud_host;
   int     lud_port;
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
   TCHAR  *lud_dn;
   TCHAR **lud_attrs;
 #else
@@ -89,7 +97,7 @@ typedef struct {
   char  **lud_attrs;
 #endif
   int     lud_scope;
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
   TCHAR  *lud_filter;
 #else
   char   *lud_filter;
@@ -192,9 +200,9 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
   size_t val_b64_sz = 0;
   curl_off_t dlsize = 0;
 #ifdef LDAP_OPT_NETWORK_TIMEOUT
-  struct timeval ldap_timeout = {10,0}; /* 10 sec connection/search timeout */
+  struct timeval ldap_timeout = {10, 0}; /* 10 sec connection/search timeout */
 #endif
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
   TCHAR *host = NULL;
   TCHAR *user = NULL;
   TCHAR *passwd = NULL;
@@ -226,7 +234,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
   infof(data, "LDAP local: trying to establish %s connection\n",
           ldap_ssl ? "encrypted" : "cleartext");
 
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
   host = Curl_convert_UTF8_to_tchar(conn->host.name);
   if(!host) {
     result = CURLE_OUT_OF_MEMORY;
@@ -259,7 +267,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
 
   if(ldap_ssl) {
 #ifdef HAVE_LDAP_SSL
-#ifdef CURL_LDAP_WIN
+#ifdef USE_WIN32_LDAP
     /* Win32 LDAP SDK doesn't support insecure mode without CA! */
     server = ldap_sslinit(host, (int)conn->port, 1);
     ldap_set_option(server, LDAP_OPT_SSL, LDAP_OPT_ON);
@@ -392,7 +400,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
       goto quit;
     }
   }
-#ifdef CURL_LDAP_WIN
+#ifdef USE_WIN32_LDAP
   ldap_set_option(server, LDAP_OPT_PROTOCOL_VERSION, &ldap_proto);
 #endif
 
@@ -421,7 +429,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
       entryIterator;
       entryIterator = ldap_next_entry(server, entryIterator), num++) {
     BerElement *ber = NULL;
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
     TCHAR *attribute;
 #else
     char  *attribute;       /*! suspicious that this isn't 'const' */
@@ -432,7 +440,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
     {
       char *name;
       size_t name_len;
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
       TCHAR *dn = ldap_get_dn(server, entryIterator);
       name = Curl_convert_tchar_to_UTF8(dn);
       if(!name) {
@@ -449,7 +457,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
 
       result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"DN: ", 4);
       if(result) {
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
         Curl_unicodefree(name);
 #endif
         ldap_memfree(dn);
@@ -460,7 +468,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
       result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *) name,
                                  name_len);
       if(result) {
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
         Curl_unicodefree(name);
 #endif
         ldap_memfree(dn);
@@ -470,7 +478,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
 
       result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);
       if(result) {
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
         Curl_unicodefree(name);
 #endif
         ldap_memfree(dn);
@@ -480,7 +488,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
 
       dlsize += name_len + 5;
 
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
       Curl_unicodefree(name);
 #endif
       ldap_memfree(dn);
@@ -492,7 +500,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
         attribute = ldap_next_attribute(server, entryIterator, ber)) {
       BerValue **vals;
       size_t attr_len;
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
       char *attr = Curl_convert_tchar_to_UTF8(attribute);
       if(!attr) {
         if(ber)
@@ -513,7 +521,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
           result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1);
           if(result) {
             ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
             Curl_unicodefree(attr);
 #endif
             ldap_memfree(attribute);
@@ -527,7 +535,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
                                      (char *) attr, attr_len);
           if(result) {
             ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
             Curl_unicodefree(attr);
 #endif
             ldap_memfree(attribute);
@@ -540,7 +548,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
           result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)": ", 2);
           if(result) {
             ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
             Curl_unicodefree(attr);
 #endif
             ldap_memfree(attribute);
@@ -562,7 +570,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
                                         &val_b64_sz);
             if(result) {
               ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
               Curl_unicodefree(attr);
 #endif
               ldap_memfree(attribute);
@@ -578,7 +586,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
               free(val_b64);
               if(result) {
                 ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
                 Curl_unicodefree(attr);
 #endif
                 ldap_memfree(attribute);
@@ -596,7 +604,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
                                        vals[i]->bv_len);
             if(result) {
               ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
               Curl_unicodefree(attr);
 #endif
               ldap_memfree(attribute);
@@ -612,7 +620,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
           result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);
           if(result) {
             ldap_value_free_len(vals);
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
             Curl_unicodefree(attr);
 #endif
             ldap_memfree(attribute);
@@ -630,7 +638,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
       }
 
       /* Free the attribute as we are done with it */
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
       Curl_unicodefree(attr);
 #endif
       ldap_memfree(attribute);
@@ -662,7 +670,7 @@ quit:
     ldapssl_client_deinit();
 #endif /* HAVE_LDAP_SSL && CURL_HAS_NOVELL_LDAPSDK */
 
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
   Curl_unicodefree(passwd);
   Curl_unicodefree(user);
   Curl_unicodefree(host);
@@ -802,7 +810,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
       goto quit;
     }
 
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
     /* Convert the unescaped string to a tchar */
     ludp->lud_dn = Curl_convert_UTF8_to_tchar(unescaped);
 
@@ -840,13 +848,13 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
     }
 
     /* Allocate our array (+1 for the NULL entry) */
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
     ludp->lud_attrs = calloc(count + 1, sizeof(TCHAR *));
 #else
     ludp->lud_attrs = calloc(count + 1, sizeof(char *));
 #endif
     if(!ludp->lud_attrs) {
-      Curl_safefree(attributes);
+      free(attributes);
 
       rc = LDAP_NO_MEMORY;
 
@@ -861,14 +869,14 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
       /* Unescape the attribute */
       unescaped = curl_easy_unescape(conn->data, attributes[i], 0, NULL);
       if(!unescaped) {
-        Curl_safefree(attributes);
+        free(attributes);
 
         rc = LDAP_NO_MEMORY;
 
         goto quit;
       }
 
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
       /* Convert the unescaped string to a tchar */
       ludp->lud_attrs[i] = Curl_convert_UTF8_to_tchar(unescaped);
 
@@ -876,7 +884,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
       Curl_unicodefree(unescaped);
 
       if(!ludp->lud_attrs[i]) {
-        Curl_safefree(attributes);
+        free(attributes);
 
         rc = LDAP_NO_MEMORY;
 
@@ -889,7 +897,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
       ludp->lud_attrs_dups++;
     }
 
-    Curl_safefree(attributes);
+    free(attributes);
   }
 
   p = q;
@@ -934,7 +942,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
       goto quit;
     }
 
-#if defined(CURL_LDAP_WIN)
+#if defined(USE_WIN32_LDAP)
     /* Convert the unescaped string to a tchar */
     ludp->lud_filter = Curl_convert_UTF8_to_tchar(unescaped);
 
@@ -959,7 +967,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
   }
 
 quit:
-  Curl_safefree(path);
+  free(path);
 
   return rc;
 }
@@ -990,11 +998,8 @@ static void _ldap_free_urldesc (LDAPURLDesc *ludp)
   if(!ludp)
     return;
 
-  if(ludp->lud_dn)
-    free(ludp->lud_dn);
-
-  if(ludp->lud_filter)
-    free(ludp->lud_filter);
+  free(ludp->lud_dn);
+  free(ludp->lud_filter);
 
   if(ludp->lud_attrs) {
     for(i = 0; i < ludp->lud_attrs_dups; i++)
index cb60271..bc66d19 100644 (file)
@@ -15,7 +15,7 @@
        <string>se.haxx.curl.libcurl</string>
 
        <key>CFBundleVersion</key>
-       <string>7.40.0</string>
+       <string>7.44.0</string>
 
        <key>CFBundleName</key>
        <string>libcurl</string>
@@ -27,9 +27,9 @@
        <string>????</string>
 
        <key>CFBundleShortVersionString</key>
-       <string>libcurl 7.40.0</string>
+       <string>libcurl 7.44.0</string>
 
        <key>CFBundleGetInfoString</key>
-       <string>libcurl.plist 7.40.0</string>
+       <string>libcurl.plist 7.44.0</string>
 </dict>
 </plist>
index fd0c6d4..60f73a2 100644 (file)
--- a/lib/md4.c
+++ b/lib/md4.c
@@ -1,23 +1,38 @@
-/*-
-   Copyright (C) 1990-2, RSA Data Security, Inc. All rights reserved.
-
-   License to copy and use this software is granted provided that it
-   is identified as the "RSA Data Security, Inc. MD4 Message-Digest
-   Algorithm" in all material mentioning or referencing this software
-   or this function.
-
-   License is also granted to make and use derivative works provided
-   that such works are identified as "derived from the RSA Data
-   Security, Inc. MD4 Message-Digest Algorithm" in all material
-   mentioning or referencing the derived work.
-
-   RSA Data Security, Inc. makes no representations concerning either
-   the merchantability of this software or the suitability of this
-   software for any particular purpose. It is provided "as is"
-   without express or implied warranty of any kind.
-
-   These notices must be retained in any copies of any part of this
-   documentation and/or software.
+/*
+ * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.
+ * MD4 Message-Digest Algorithm (RFC 1320).
+ *
+ * Homepage:
+ http://openwall.info/wiki/people/solar/software/public-domain-source-code/md4
+ *
+ * Author:
+ * Alexander Peslyak, better known as Solar Designer <solar at openwall.com>
+ *
+ * This software was written by Alexander Peslyak in 2001.  No copyright is
+ * claimed, and the software is hereby placed in the public domain.  In case
+ * this attempt to disclaim copyright and place the software in the public
+ * domain is deemed null and void, then the software is Copyright (c) 2001
+ * Alexander Peslyak and it is hereby released to the general public under the
+ * following terms:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted.
+ *
+ * There's ABSOLUTELY NO WARRANTY, express or implied.
+ *
+ * (This is a heavily cut-down "BSD license".)
+ *
+ * This differs from Colin Plumb's older public domain implementation in that
+ * no exactly 32-bit integer data type is required (any 32-bit or wider
+ * unsigned integer data type will do), there's no compile-time endianness
+ * configuration, and the function prototypes match OpenSSL's.  No code from
+ * Colin Plumb's implementation has been reused; this comment merely compares
+ * the properties of the two independent implementations.
+ *
+ * The primary goals of this implementation are portability and ease of use.
+ * It is meant to be fast, but not as fast as possible.  Some known
+ * optimizations are not included to reduce source code size and avoid
+ * compile-time configuration.
  */
 
 #include "curl_setup.h"
 #include "curl_md4.h"
 #include "warnless.h"
 
-typedef unsigned int UINT4;
+#ifndef HAVE_OPENSSL
 
-typedef struct MD4Context {
-  UINT4 state[4];               /* state (ABCD) */
-  UINT4 count[2];               /* number of bits, modulo 2^64 (lsb first) */
-  unsigned char buffer[64];     /* input buffer */
+#include <string.h>
+
+/* Any 32-bit or wider unsigned integer data type will do */
+typedef unsigned int MD4_u32plus;
+
+typedef struct {
+  MD4_u32plus lo, hi;
+  MD4_u32plus a, b, c, d;
+  unsigned char buffer[64];
+  MD4_u32plus block[16];
 } MD4_CTX;
 
-/* Constants for MD4Transform routine.
- */
-#define S11 3
-#define S12 7
-#define S13 11
-#define S14 19
-#define S21 3
-#define S22 5
-#define S23 9
-#define S24 13
-#define S31 3
-#define S32 9
-#define S33 11
-#define S34 15
-
-static void MD4Transform(UINT4 [4], const unsigned char [64]);
-static void Encode(unsigned char *, UINT4 *, unsigned int);
-static void Decode(UINT4 *, const unsigned char *, unsigned int);
-
-static unsigned char PADDING[64] = {
-  0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-/* F, G and H are basic MD4 functions.
- */
-#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
-#define G(x, y, z) (((x) & (y)) | ((x) & (z)) | ((y) & (z)))
-#define H(x, y, z) ((x) ^ (y) ^ (z))
+static void MD4_Init(MD4_CTX *ctx);
+static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size);
+static void MD4_Final(unsigned char *result, MD4_CTX *ctx);
 
-/* ROTATE_LEFT rotates x left n bits.
+/*
+ * The basic MD4 functions.
+ *
+ * F and G are optimized compared to their RFC 1320 definitions, with the
+ * optimization for F borrowed from Colin Plumb's MD5 implementation.
  */
-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
-
-/* FF, GG and HH are transformations for rounds 1, 2 and 3 */
-/* Rotation is separate from addition to prevent recomputation */
-#define FF(a, b, c, d, x, s) { \
-    (a) += F ((b), (c), (d)) + (x); \
-    (a) = ROTATE_LEFT ((a), (s)); \
-  }
-#define GG(a, b, c, d, x, s) { \
-    (a) += G ((b), (c), (d)) + (x) + (UINT4)0x5a827999; \
-    (a) = ROTATE_LEFT ((a), (s)); \
-  }
-#define HH(a, b, c, d, x, s) { \
-    (a) += H ((b), (c), (d)) + (x) + (UINT4)0x6ed9eba1; \
-    (a) = ROTATE_LEFT ((a), (s)); \
-  }
+#define F(x, y, z)                      ((z) ^ ((x) & ((y) ^ (z))))
+#define G(x, y, z)                      (((x) & ((y) | (z))) | ((y) & (z)))
+#define H(x, y, z)                      ((x) ^ (y) ^ (z))
 
-/* MD4 initialization. Begins an MD4 operation, writing a new context.
+/*
+ * The MD4 transformation for all three rounds.
  */
-static void MD4Init(MD4_CTX *context)
+#define STEP(f, a, b, c, d, x, s) \
+        (a) += f((b), (c), (d)) + (x); \
+        (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s))));
+
+/*
+ * SET reads 4 input bytes in little-endian byte order and stores them
+ * in a properly aligned word in host byte order.
+ *
+ * The check for little-endian architectures that tolerate unaligned
+ * memory accesses is just an optimization.  Nothing will break if it
+ * doesn't work.
+ */
+#if defined(__i386__) || defined(__x86_64__) || defined(__vax__)
+#define SET(n) \
+        (*(MD4_u32plus *)&ptr[(n) * 4])
+#define GET(n) \
+        SET(n)
+#else
+#define SET(n) \
+        (ctx->block[(n)] = \
+        (MD4_u32plus)ptr[(n) * 4] | \
+        ((MD4_u32plus)ptr[(n) * 4 + 1] << 8) | \
+        ((MD4_u32plus)ptr[(n) * 4 + 2] << 16) | \
+        ((MD4_u32plus)ptr[(n) * 4 + 3] << 24))
+#define GET(n) \
+        (ctx->block[(n)])
+#endif
+
+/*
+ * This processes one or more 64-byte data blocks, but does NOT update
+ * the bit counters.  There are no alignment requirements.
+ */
+static const void *body(MD4_CTX *ctx, const void *data, unsigned long size)
 {
-  context->count[0] = context->count[1] = 0;
-
-  /* Load magic initialization constants.
-   */
-  context->state[0] = 0x67452301;
-  context->state[1] = 0xefcdab89;
-  context->state[2] = 0x98badcfe;
-  context->state[3] = 0x10325476;
+  const unsigned char *ptr;
+  MD4_u32plus a, b, c, d;
+  MD4_u32plus saved_a, saved_b, saved_c, saved_d;
+
+  ptr = (const unsigned char *)data;
+
+  a = ctx->a;
+  b = ctx->b;
+  c = ctx->c;
+  d = ctx->d;
+
+  do {
+    saved_a = a;
+    saved_b = b;
+    saved_c = c;
+    saved_d = d;
+
+/* Round 1 */
+    STEP(F, a, b, c, d, SET(0), 3)
+      STEP(F, d, a, b, c, SET(1), 7)
+      STEP(F, c, d, a, b, SET(2), 11)
+      STEP(F, b, c, d, a, SET(3), 19)
+      STEP(F, a, b, c, d, SET(4), 3)
+      STEP(F, d, a, b, c, SET(5), 7)
+      STEP(F, c, d, a, b, SET(6), 11)
+      STEP(F, b, c, d, a, SET(7), 19)
+      STEP(F, a, b, c, d, SET(8), 3)
+      STEP(F, d, a, b, c, SET(9), 7)
+      STEP(F, c, d, a, b, SET(10), 11)
+      STEP(F, b, c, d, a, SET(11), 19)
+      STEP(F, a, b, c, d, SET(12), 3)
+      STEP(F, d, a, b, c, SET(13), 7)
+      STEP(F, c, d, a, b, SET(14), 11)
+      STEP(F, b, c, d, a, SET(15), 19)
+
+/* Round 2 */
+      STEP(G, a, b, c, d, GET(0) + 0x5a827999, 3)
+      STEP(G, d, a, b, c, GET(4) + 0x5a827999, 5)
+      STEP(G, c, d, a, b, GET(8) + 0x5a827999, 9)
+      STEP(G, b, c, d, a, GET(12) + 0x5a827999, 13)
+      STEP(G, a, b, c, d, GET(1) + 0x5a827999, 3)
+      STEP(G, d, a, b, c, GET(5) + 0x5a827999, 5)
+      STEP(G, c, d, a, b, GET(9) + 0x5a827999, 9)
+      STEP(G, b, c, d, a, GET(13) + 0x5a827999, 13)
+      STEP(G, a, b, c, d, GET(2) + 0x5a827999, 3)
+      STEP(G, d, a, b, c, GET(6) + 0x5a827999, 5)
+      STEP(G, c, d, a, b, GET(10) + 0x5a827999, 9)
+      STEP(G, b, c, d, a, GET(14) + 0x5a827999, 13)
+      STEP(G, a, b, c, d, GET(3) + 0x5a827999, 3)
+      STEP(G, d, a, b, c, GET(7) + 0x5a827999, 5)
+      STEP(G, c, d, a, b, GET(11) + 0x5a827999, 9)
+      STEP(G, b, c, d, a, GET(15) + 0x5a827999, 13)
+
+/* Round 3 */
+      STEP(H, a, b, c, d, GET(0) + 0x6ed9eba1, 3)
+      STEP(H, d, a, b, c, GET(8) + 0x6ed9eba1, 9)
+      STEP(H, c, d, a, b, GET(4) + 0x6ed9eba1, 11)
+      STEP(H, b, c, d, a, GET(12) + 0x6ed9eba1, 15)
+      STEP(H, a, b, c, d, GET(2) + 0x6ed9eba1, 3)
+      STEP(H, d, a, b, c, GET(10) + 0x6ed9eba1, 9)
+      STEP(H, c, d, a, b, GET(6) + 0x6ed9eba1, 11)
+      STEP(H, b, c, d, a, GET(14) + 0x6ed9eba1, 15)
+      STEP(H, a, b, c, d, GET(1) + 0x6ed9eba1, 3)
+      STEP(H, d, a, b, c, GET(9) + 0x6ed9eba1, 9)
+      STEP(H, c, d, a, b, GET(5) + 0x6ed9eba1, 11)
+      STEP(H, b, c, d, a, GET(13) + 0x6ed9eba1, 15)
+      STEP(H, a, b, c, d, GET(3) + 0x6ed9eba1, 3)
+      STEP(H, d, a, b, c, GET(11) + 0x6ed9eba1, 9)
+      STEP(H, c, d, a, b, GET(7) + 0x6ed9eba1, 11)
+      STEP(H, b, c, d, a, GET(15) + 0x6ed9eba1, 15)
+
+      a += saved_a;
+    b += saved_b;
+    c += saved_c;
+    d += saved_d;
+
+    ptr += 64;
+  } while(size -= 64);
+
+  ctx->a = a;
+  ctx->b = b;
+  ctx->c = c;
+  ctx->d = d;
+
+  return ptr;
 }
 
-/* MD4 block update operation. Continues an MD4 message-digest
-     operation, processing another message block, and updating the
-     context.
- */
-static void MD4Update(MD4_CTX *context, const unsigned char *input,
-                      unsigned int inputLen)
+static void MD4_Init(MD4_CTX *ctx)
 {
-  unsigned int i, bufindex, partLen;
-
-  /* Compute number of bytes mod 64 */
-  bufindex = (unsigned int)((context->count[0] >> 3) & 0x3F);
-  /* Update number of bits */
-  if((context->count[0] += ((UINT4)inputLen << 3))
-     < ((UINT4)inputLen << 3))
-    context->count[1]++;
-  context->count[1] += ((UINT4)inputLen >> 29);
-
-  partLen = 64 - bufindex;
-  /* Transform as many times as possible.
-   */
-  if(inputLen >= partLen) {
-    memcpy(&context->buffer[bufindex], input, partLen);
-    MD4Transform (context->state, context->buffer);
-
-    for(i = partLen; i + 63 < inputLen; i += 64)
-      MD4Transform (context->state, &input[i]);
-
-    bufindex = 0;
-  }
-  else
-    i = 0;
+  ctx->a = 0x67452301;
+  ctx->b = 0xefcdab89;
+  ctx->c = 0x98badcfe;
+  ctx->d = 0x10325476;
 
-  /* Buffer remaining input */
-  memcpy(&context->buffer[bufindex], &input[i], inputLen-i);
+  ctx->lo = 0;
+  ctx->hi = 0;
 }
 
-/* MD4 padding. */
-static void MD4Pad(MD4_CTX *context)
+static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size)
 {
-  unsigned char bits[8];
-  unsigned int bufindex, padLen;
+  MD4_u32plus saved_lo;
+  unsigned long used, available;
 
-  /* Save number of bits */
-  Encode (bits, context->count, 8);
+  saved_lo = ctx->lo;
+  if((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo)
+    ctx->hi++;
+  ctx->hi += (MD4_u32plus)size >> 29;
 
-  /* Pad out to 56 mod 64.
-   */
-  bufindex = (unsigned int)((context->count[0] >> 3) & 0x3f);
-  padLen = (bufindex < 56) ? (56 - bufindex) : (120 - bufindex);
-  MD4Update (context, PADDING, padLen);
+  used = saved_lo & 0x3f;
 
-  /* Append length (before padding) */
-  MD4Update (context, bits, 8);
-}
+  if(used) {
+    available = 64 - used;
 
-/* MD4 finalization. Ends an MD4 message-digest operation, writing the
-     the message digest and zeroizing the context.
- */
-static void MD4Final (unsigned char digest[16], MD4_CTX *context)
-{
-  /* Do padding */
-  MD4Pad (context);
+    if(size < available) {
+      memcpy(&ctx->buffer[used], data, size);
+      return;
+    }
 
-  /* Store state in digest */
-  Encode (digest, context->state, 16);
+    memcpy(&ctx->buffer[used], data, available);
+    data = (const unsigned char *)data + available;
+    size -= available;
+    body(ctx, ctx->buffer, 64);
+  }
 
-  /* Zeroize sensitive information.
-   */
-  memset(context, 0, sizeof(*context));
-}
+  if(size >= 64) {
+    data = body(ctx, data, size & ~(unsigned long)0x3f);
+    size &= 0x3f;
+  }
 
-/* MD4 basic transformation. Transforms state based on block.
- */
-static void MD4Transform (UINT4 state[4], const unsigned char block[64])
-{
-  UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
-
-  Decode (x, block, 64);
-
-  /* Round 1 */
-  FF (a, b, c, d, x[ 0], S11); /* 1 */
-  FF (d, a, b, c, x[ 1], S12); /* 2 */
-  FF (c, d, a, b, x[ 2], S13); /* 3 */
-  FF (b, c, d, a, x[ 3], S14); /* 4 */
-  FF (a, b, c, d, x[ 4], S11); /* 5 */
-  FF (d, a, b, c, x[ 5], S12); /* 6 */
-  FF (c, d, a, b, x[ 6], S13); /* 7 */
-  FF (b, c, d, a, x[ 7], S14); /* 8 */
-  FF (a, b, c, d, x[ 8], S11); /* 9 */
-  FF (d, a, b, c, x[ 9], S12); /* 10 */
-  FF (c, d, a, b, x[10], S13); /* 11 */
-  FF (b, c, d, a, x[11], S14); /* 12 */
-  FF (a, b, c, d, x[12], S11); /* 13 */
-  FF (d, a, b, c, x[13], S12); /* 14 */
-  FF (c, d, a, b, x[14], S13); /* 15 */
-  FF (b, c, d, a, x[15], S14); /* 16 */
-
-  /* Round 2 */
-  GG (a, b, c, d, x[ 0], S21); /* 17 */
-  GG (d, a, b, c, x[ 4], S22); /* 18 */
-  GG (c, d, a, b, x[ 8], S23); /* 19 */
-  GG (b, c, d, a, x[12], S24); /* 20 */
-  GG (a, b, c, d, x[ 1], S21); /* 21 */
-  GG (d, a, b, c, x[ 5], S22); /* 22 */
-  GG (c, d, a, b, x[ 9], S23); /* 23 */
-  GG (b, c, d, a, x[13], S24); /* 24 */
-  GG (a, b, c, d, x[ 2], S21); /* 25 */
-  GG (d, a, b, c, x[ 6], S22); /* 26 */
-  GG (c, d, a, b, x[10], S23); /* 27 */
-  GG (b, c, d, a, x[14], S24); /* 28 */
-  GG (a, b, c, d, x[ 3], S21); /* 29 */
-  GG (d, a, b, c, x[ 7], S22); /* 30 */
-  GG (c, d, a, b, x[11], S23); /* 31 */
-  GG (b, c, d, a, x[15], S24); /* 32 */
-
-  /* Round 3 */
-  HH (a, b, c, d, x[ 0], S31); /* 33 */
-  HH (d, a, b, c, x[ 8], S32); /* 34 */
-  HH (c, d, a, b, x[ 4], S33); /* 35 */
-  HH (b, c, d, a, x[12], S34); /* 36 */
-  HH (a, b, c, d, x[ 2], S31); /* 37 */
-  HH (d, a, b, c, x[10], S32); /* 38 */
-  HH (c, d, a, b, x[ 6], S33); /* 39 */
-  HH (b, c, d, a, x[14], S34); /* 40 */
-  HH (a, b, c, d, x[ 1], S31); /* 41 */
-  HH (d, a, b, c, x[ 9], S32); /* 42 */
-  HH (c, d, a, b, x[ 5], S33); /* 43 */
-  HH (b, c, d, a, x[13], S34); /* 44 */
-  HH (a, b, c, d, x[ 3], S31); /* 45 */
-  HH (d, a, b, c, x[11], S32); /* 46 */
-  HH (c, d, a, b, x[ 7], S33); /* 47 */
-  HH (b, c, d, a, x[15], S34); /* 48 */
-
-  state[0] += a;
-  state[1] += b;
-  state[2] += c;
-  state[3] += d;
-
-  /* Zeroize sensitive information.
-   */
-  memset(x, 0, sizeof(x));
+  memcpy(ctx->buffer, data, size);
 }
 
-/* Encodes input (UINT4) into output (unsigned char). Assumes len is
-     a multiple of 4.
- */
-static void Encode(unsigned char *output, UINT4 *input, unsigned int len)
+static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
 {
-  unsigned int i, j;
+  unsigned long used, available;
 
-  for(i = 0, j = 0; j < len; i++, j += 4) {
-    output[j] = (unsigned char)(input[i] & 0xff);
-    output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
-    output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
-    output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
-  }
-}
+  used = ctx->lo & 0x3f;
 
-/* Decodes input (unsigned char) into output (UINT4). Assumes len is
-     a multiple of 4.
- */
-static void Decode (UINT4 *output, const unsigned char *input,
-                    unsigned int len)
-{
-  unsigned int i, j;
+  ctx->buffer[used++] = 0x80;
+
+  available = 64 - used;
 
-  for(i = 0, j = 0; j < len; i++, j += 4)
-    output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
-      (((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
+  if(available < 8) {
+    memset(&ctx->buffer[used], 0, available);
+    body(ctx, ctx->buffer, 64);
+    used = 0;
+    available = 64;
+  }
+
+  memset(&ctx->buffer[used], 0, available - 8);
+
+  ctx->lo <<= 3;
+  ctx->buffer[56] = curlx_ultouc((ctx->lo)&0xff);
+  ctx->buffer[57] = curlx_ultouc((ctx->lo >> 8)&0xff);
+  ctx->buffer[58] = curlx_ultouc((ctx->lo >> 16)&0xff);
+  ctx->buffer[59] = curlx_ultouc((ctx->lo >> 24)&0xff);
+  ctx->buffer[60] = curlx_ultouc((ctx->hi)&0xff);
+  ctx->buffer[61] = curlx_ultouc((ctx->hi >> 8)&0xff);
+  ctx->buffer[62] = curlx_ultouc((ctx->hi >> 16)&0xff);
+  ctx->buffer[63] = curlx_ultouc(ctx->hi >> 24);
+
+  body(ctx, ctx->buffer, 64);
+
+  result[0] = curlx_ultouc((ctx->a)&0xff);
+  result[1] = curlx_ultouc((ctx->a >> 8)&0xff);
+  result[2] = curlx_ultouc((ctx->a >> 16)&0xff);
+  result[3] = curlx_ultouc(ctx->a >> 24);
+  result[4] = curlx_ultouc((ctx->b)&0xff);
+  result[5] = curlx_ultouc((ctx->b >> 8)&0xff);
+  result[6] = curlx_ultouc((ctx->b >> 16)&0xff);
+  result[7] = curlx_ultouc(ctx->b >> 24);
+  result[8] = curlx_ultouc((ctx->c)&0xff);
+  result[9] = curlx_ultouc((ctx->c >> 8)&0xff);
+  result[10] = curlx_ultouc((ctx->c >> 16)&0xff);
+  result[11] = curlx_ultouc(ctx->c >> 24);
+  result[12] = curlx_ultouc((ctx->d)&0xff);
+  result[13] = curlx_ultouc((ctx->d >> 8)&0xff);
+  result[14] = curlx_ultouc((ctx->d >> 16)&0xff);
+  result[15] = curlx_ultouc(ctx->d >> 24);
+
+  memset(ctx, 0, sizeof(*ctx));
 }
 
+#endif
+
 void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len)
 {
   MD4_CTX ctx;
-  MD4Init(&ctx);
-  MD4Update(&ctx, input, curlx_uztoui(len));
-  MD4Final(output, &ctx);
+  MD4_Init(&ctx);
+  MD4_Update(&ctx, input, curlx_uztoui(len));
+  MD4_Final(output, &ctx);
 }
 #endif /* defined(USE_NSS) || defined(USE_OS400CRYPTO) */
index af39fd4..b604c10 100644 (file)
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "curl_hmac.h"
 #include "warnless.h"
 
-#include "curl_memory.h"
-
 #if defined(USE_GNUTLS_NETTLE)
 
 #include <nettle/md5.h>
+#include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
 
@@ -58,6 +57,7 @@ static void MD5_Final(unsigned char digest[16], MD5_CTX * ctx)
 #elif defined(USE_GNUTLS)
 
 #include <gcrypt.h>
+#include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
 
@@ -81,14 +81,12 @@ static void MD5_Final(unsigned char digest[16], MD5_CTX * ctx)
   gcry_md_close(*ctx);
 }
 
-#elif defined(USE_SSLEAY)
+#elif defined(USE_OPENSSL)
 /* When OpenSSL is available we use the MD5-function from OpenSSL */
-
-#  ifdef USE_OPENSSL
-#    include <openssl/md5.h>
-#  else
-#    include <md5.h>
-#  endif
+#include <openssl/md5.h>
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
 
 #elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
               (__MAC_OS_X_VERSION_MAX_ALLOWED >= 1040)) || \
@@ -103,6 +101,9 @@ static void MD5_Final(unsigned char digest[16], MD5_CTX * ctx)
    reliable than defining COMMON_DIGEST_FOR_OPENSSL on older cats. */
 #  include <CommonCrypto/CommonDigest.h>
 #  define MD5_CTX CC_MD5_CTX
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
 
 static void MD5_Init(MD5_CTX *ctx)
 {
@@ -124,6 +125,9 @@ static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
 #elif defined(_WIN32)
 
 #include <wincrypt.h>
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
 
 typedef struct {
   HCRYPTPROV hCryptProv;
@@ -157,314 +161,326 @@ static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
     CryptReleaseContext(ctx->hCryptProv, 0);
 }
 
+#elif defined(USE_AXTLS)
+#include <axTLS/config.h>
+#include <axTLS/os_int.h>
+#include <axTLS/crypto.h>
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
 #else
 /* When no other crypto library is available we use this code segment */
-
-/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
-
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
-
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
+/*
+ * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.
+ * MD5 Message-Digest Algorithm (RFC 1321).
+ *
+ * Homepage:
+ http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
+ *
+ * Author:
+ * Alexander Peslyak, better known as Solar Designer <solar at openwall.com>
+ *
+ * This software was written by Alexander Peslyak in 2001.  No copyright is
+ * claimed, and the software is hereby placed in the public domain.
+ * In case this attempt to disclaim copyright and place the software in the
+ * public domain is deemed null and void, then the software is
+ * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
+ * general public under the following terms:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted.
+ *
+ * There's ABSOLUTELY NO WARRANTY, express or implied.
+ *
+ * (This is a heavily cut-down "BSD license".)
+ *
+ * This differs from Colin Plumb's older public domain implementation in that
+ * no exactly 32-bit integer data type is required (any 32-bit or wider
+ * unsigned integer data type will do), there's no compile-time endianness
+ * configuration, and the function prototypes match OpenSSL's.  No code from
+ * Colin Plumb's implementation has been reused; this comment merely compares
+ * the properties of the two independent implementations.
+ *
+ * The primary goals of this implementation are portability and ease of use.
+ * It is meant to be fast, but not as fast as possible.  Some known
+ * optimizations are not included to reduce source code size and avoid
+ * compile-time configuration.
  */
 
-/* UINT4 defines a four byte word */
-typedef unsigned int UINT4;
+#include <string.h>
 
-/* MD5 context. */
-struct md5_ctx {
-  UINT4 state[4];                                   /* state (ABCD) */
-  UINT4 count[2];        /* number of bits, modulo 2^64 (lsb first) */
-  unsigned char buffer[64];                         /* input buffer */
-};
-
-typedef struct md5_ctx MD5_CTX;
+/* The last #include files should be: */
+#include "curl_memory.h"
+#include "memdebug.h"
 
-static void MD5_Init(struct md5_ctx *);
-static void MD5_Update(struct md5_ctx *, const unsigned char *, unsigned int);
-static void MD5_Final(unsigned char [16], struct md5_ctx *);
+/* Any 32-bit or wider unsigned integer data type will do */
+typedef unsigned int MD5_u32plus;
 
-/* Constants for MD5Transform routine.
- */
+typedef struct {
+  MD5_u32plus lo, hi;
+  MD5_u32plus a, b, c, d;
+  unsigned char buffer[64];
+  MD5_u32plus block[16];
+} MD5_CTX;
 
-#define S11 7
-#define S12 12
-#define S13 17
-#define S14 22
-#define S21 5
-#define S22 9
-#define S23 14
-#define S24 20
-#define S31 4
-#define S32 11
-#define S33 16
-#define S34 23
-#define S41 6
-#define S42 10
-#define S43 15
-#define S44 21
-
-static void MD5Transform(UINT4 [4], const unsigned char [64]);
-static void Encode(unsigned char *, UINT4 *, unsigned int);
-static void Decode(UINT4 *, const unsigned char *, unsigned int);
-
-static const unsigned char PADDING[64] = {
-  0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
+static void MD5_Init(MD5_CTX *ctx);
+static void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size);
+static void MD5_Final(unsigned char *result, MD5_CTX *ctx);
 
-/* F, G, H and I are basic MD5 functions.
+/*
+ * The basic MD5 functions.
+ *
+ * F and G are optimized compared to their RFC 1321 definitions for
+ * architectures that lack an AND-NOT instruction, just like in Colin Plumb's
+ * implementation.
  */
-#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
-#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
-#define H(x, y, z) ((x) ^ (y) ^ (z))
-#define I(x, y, z) ((y) ^ ((x) | (~z)))
-
-/* ROTATE_LEFT rotates x left n bits.
+#define F(x, y, z)                      ((z) ^ ((x) & ((y) ^ (z))))
+#define G(x, y, z)                      ((y) ^ ((z) & ((x) ^ (y))))
+#define H(x, y, z)                      (((x) ^ (y)) ^ (z))
+#define H2(x, y, z)                     ((x) ^ ((y) ^ (z)))
+#define I(x, y, z)                      ((y) ^ ((x) | ~(z)))
+
+/*
+ * The MD5 transformation for all four rounds.
  */
-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
-
-/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
-Rotation is separate from addition to prevent recomputation.
+#define STEP(f, a, b, c, d, x, t, s) \
+        (a) += f((b), (c), (d)) + (x) + (t); \
+        (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
+        (a) += (b);
+
+/*
+ * SET reads 4 input bytes in little-endian byte order and stores them
+ * in a properly aligned word in host byte order.
+ *
+ * The check for little-endian architectures that tolerate unaligned
+ * memory accesses is just an optimization.  Nothing will break if it
+ * doesn't work.
  */
-#define FF(a, b, c, d, x, s, ac) { \
- (a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
-  }
-#define GG(a, b, c, d, x, s, ac) { \
- (a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
-  }
-#define HH(a, b, c, d, x, s, ac) { \
- (a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
-  }
-#define II(a, b, c, d, x, s, ac) { \
- (a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
-  }
-
-/* MD5 initialization. Begins an MD5 operation, writing a new context.
+#if defined(__i386__) || defined(__x86_64__) || defined(__vax__)
+#define SET(n) \
+        (*(MD5_u32plus *)&ptr[(n) * 4])
+#define GET(n) \
+        SET(n)
+#else
+#define SET(n) \
+        (ctx->block[(n)] = \
+        (MD5_u32plus)ptr[(n) * 4] | \
+        ((MD5_u32plus)ptr[(n) * 4 + 1] << 8) | \
+        ((MD5_u32plus)ptr[(n) * 4 + 2] << 16) | \
+        ((MD5_u32plus)ptr[(n) * 4 + 3] << 24))
+#define GET(n) \
+        (ctx->block[(n)])
+#endif
+
+/*
+ * This processes one or more 64-byte data blocks, but does NOT update
+ * the bit counters.  There are no alignment requirements.
  */
-static void MD5_Init(struct md5_ctx *context)
+static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
 {
-  context->count[0] = context->count[1] = 0;
-  /* Load magic initialization constants. */
-  context->state[0] = 0x67452301;
-  context->state[1] = 0xefcdab89;
-  context->state[2] = 0x98badcfe;
-  context->state[3] = 0x10325476;
+  const unsigned char *ptr;
+  MD5_u32plus a, b, c, d;
+  MD5_u32plus saved_a, saved_b, saved_c, saved_d;
+
+  ptr = (const unsigned char *)data;
+
+  a = ctx->a;
+  b = ctx->b;
+  c = ctx->c;
+  d = ctx->d;
+
+  do {
+    saved_a = a;
+    saved_b = b;
+    saved_c = c;
+    saved_d = d;
+
+/* Round 1 */
+    STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7)
+      STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12)
+      STEP(F, c, d, a, b, SET(2), 0x242070db, 17)
+      STEP(F, b, c, d, a, SET(3), 0xc1bdceee, 22)
+      STEP(F, a, b, c, d, SET(4), 0xf57c0faf, 7)
+      STEP(F, d, a, b, c, SET(5), 0x4787c62a, 12)
+      STEP(F, c, d, a, b, SET(6), 0xa8304613, 17)
+      STEP(F, b, c, d, a, SET(7), 0xfd469501, 22)
+      STEP(F, a, b, c, d, SET(8), 0x698098d8, 7)
+      STEP(F, d, a, b, c, SET(9), 0x8b44f7af, 12)
+      STEP(F, c, d, a, b, SET(10), 0xffff5bb1, 17)
+      STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22)
+      STEP(F, a, b, c, d, SET(12), 0x6b901122, 7)
+      STEP(F, d, a, b, c, SET(13), 0xfd987193, 12)
+      STEP(F, c, d, a, b, SET(14), 0xa679438e, 17)
+      STEP(F, b, c, d, a, SET(15), 0x49b40821, 22)
+
+/* Round 2 */
+      STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5)
+      STEP(G, d, a, b, c, GET(6), 0xc040b340, 9)
+      STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14)
+      STEP(G, b, c, d, a, GET(0), 0xe9b6c7aa, 20)
+      STEP(G, a, b, c, d, GET(5), 0xd62f105d, 5)
+      STEP(G, d, a, b, c, GET(10), 0x02441453, 9)
+      STEP(G, c, d, a, b, GET(15), 0xd8a1e681, 14)
+      STEP(G, b, c, d, a, GET(4), 0xe7d3fbc8, 20)
+      STEP(G, a, b, c, d, GET(9), 0x21e1cde6, 5)
+      STEP(G, d, a, b, c, GET(14), 0xc33707d6, 9)
+      STEP(G, c, d, a, b, GET(3), 0xf4d50d87, 14)
+      STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20)
+      STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5)
+      STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9)
+      STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14)
+      STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20)
+
+/* Round 3 */
+      STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4)
+      STEP(H2, d, a, b, c, GET(8), 0x8771f681, 11)
+      STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16)
+      STEP(H2, b, c, d, a, GET(14), 0xfde5380c, 23)
+      STEP(H, a, b, c, d, GET(1), 0xa4beea44, 4)
+      STEP(H2, d, a, b, c, GET(4), 0x4bdecfa9, 11)
+      STEP(H, c, d, a, b, GET(7), 0xf6bb4b60, 16)
+      STEP(H2, b, c, d, a, GET(10), 0xbebfbc70, 23)
+      STEP(H, a, b, c, d, GET(13), 0x289b7ec6, 4)
+      STEP(H2, d, a, b, c, GET(0), 0xeaa127fa, 11)
+      STEP(H, c, d, a, b, GET(3), 0xd4ef3085, 16)
+      STEP(H2, b, c, d, a, GET(6), 0x04881d05, 23)
+      STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4)
+      STEP(H2, d, a, b, c, GET(12), 0xe6db99e5, 11)
+      STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16)
+      STEP(H2, b, c, d, a, GET(2), 0xc4ac5665, 23)
+
+/* Round 4 */
+      STEP(I, a, b, c, d, GET(0), 0xf4292244, 6)
+      STEP(I, d, a, b, c, GET(7), 0x432aff97, 10)
+      STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15)
+      STEP(I, b, c, d, a, GET(5), 0xfc93a039, 21)
+      STEP(I, a, b, c, d, GET(12), 0x655b59c3, 6)
+      STEP(I, d, a, b, c, GET(3), 0x8f0ccc92, 10)
+      STEP(I, c, d, a, b, GET(10), 0xffeff47d, 15)
+      STEP(I, b, c, d, a, GET(1), 0x85845dd1, 21)
+      STEP(I, a, b, c, d, GET(8), 0x6fa87e4f, 6)
+      STEP(I, d, a, b, c, GET(15), 0xfe2ce6e0, 10)
+      STEP(I, c, d, a, b, GET(6), 0xa3014314, 15)
+      STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21)
+      STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6)
+      STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10)
+      STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15)
+      STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21)
+
+      a += saved_a;
+    b += saved_b;
+    c += saved_c;
+    d += saved_d;
+
+    ptr += 64;
+  } while(size -= 64);
+
+  ctx->a = a;
+  ctx->b = b;
+  ctx->c = c;
+  ctx->d = d;
+
+  return ptr;
 }
 
-/* MD5 block update operation. Continues an MD5 message-digest
-  operation, processing another message block, and updating the
-  context.
- */
-static void MD5_Update (struct md5_ctx *context,    /* context */
-                        const unsigned char *input, /* input block */
-                        unsigned int inputLen)      /* length of input block */
+static void MD5_Init(MD5_CTX *ctx)
 {
-  unsigned int i, bufindex, partLen;
+  ctx->a = 0x67452301;
+  ctx->b = 0xefcdab89;
+  ctx->c = 0x98badcfe;
+  ctx->d = 0x10325476;
 
-  /* Compute number of bytes mod 64 */
-  bufindex = (unsigned int)((context->count[0] >> 3) & 0x3F);
+  ctx->lo = 0;
+  ctx->hi = 0;
+}
 
-  /* Update number of bits */
-  if((context->count[0] += ((UINT4)inputLen << 3))
-      < ((UINT4)inputLen << 3))
-    context->count[1]++;
-  context->count[1] += ((UINT4)inputLen >> 29);
+static void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size)
+{
+  MD5_u32plus saved_lo;
+  unsigned long used, available;
+
+  saved_lo = ctx->lo;
+  if((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo)
+    ctx->hi++;
+  ctx->hi += (MD5_u32plus)size >> 29;
 
-  partLen = 64 - bufindex;
+  used = saved_lo & 0x3f;
 
-  /* Transform as many times as possible. */
-  if(inputLen >= partLen) {
-    memcpy(&context->buffer[bufindex], input, partLen);
-    MD5Transform(context->state, context->buffer);
+  if(used) {
+    available = 64 - used;
 
-    for(i = partLen; i + 63 < inputLen; i += 64)
-      MD5Transform(context->state, &input[i]);
+    if(size < available) {
+      memcpy(&ctx->buffer[used], data, size);
+      return;
+    }
+
+    memcpy(&ctx->buffer[used], data, available);
+    data = (const unsigned char *)data + available;
+    size -= available;
+    body(ctx, ctx->buffer, 64);
+  }
 
-    bufindex = 0;
+  if(size >= 64) {
+    data = body(ctx, data, size & ~(unsigned long)0x3f);
+    size &= 0x3f;
   }
-  else
-    i = 0;
 
-  /* Buffer remaining input */
-  memcpy(&context->buffer[bufindex], &input[i], inputLen-i);
+  memcpy(ctx->buffer, data, size);
 }
 
-/* MD5 finalization. Ends an MD5 message-digest operation, writing the
-   the message digest and zeroizing the context.
-*/
-static void MD5_Final(unsigned char digest[16], /* message digest */
-                      struct md5_ctx *context) /* context */
+static void MD5_Final(unsigned char *result, MD5_CTX *ctx)
 {
-  unsigned char bits[8];
-  unsigned int count, padLen;
+  unsigned long used, available;
 
-  /* Save number of bits */
-  Encode (bits, context->count, 8);
+  used = ctx->lo & 0x3f;
 
-  /* Pad out to 56 mod 64. */
-  count = (unsigned int)((context->count[0] >> 3) & 0x3f);
-  padLen = (count < 56) ? (56 - count) : (120 - count);
-  MD5_Update (context, PADDING, padLen);
+  ctx->buffer[used++] = 0x80;
 
-  /* Append length (before padding) */
-  MD5_Update (context, bits, 8);
+  available = 64 - used;
 
-  /* Store state in digest */
-  Encode (digest, context->state, 16);
-
-  /* Zeroize sensitive information. */
-  memset ((void *)context, 0, sizeof (*context));
-}
-
-/* MD5 basic transformation. Transforms state based on block. */
-static void MD5Transform(UINT4 state[4],
-                         const unsigned char block[64])
-{
-  UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
-
-  Decode (x, block, 64);
-
-  /* Round 1 */
-  FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
-  FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
-  FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
-  FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
-  FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
-  FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
-  FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
-  FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
-  FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
-  FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
-  FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
-  FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
-  FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
-  FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
-  FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
-  FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
-
- /* Round 2 */
-  GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
-  GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
-  GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
-  GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
-  GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
-  GG (d, a, b, c, x[10], S22,  0x2441453); /* 22 */
-  GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
-  GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
-  GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
-  GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
-  GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
-  GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
-  GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
-  GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
-  GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
-  GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
-
-  /* Round 3 */
-  HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
-  HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
-  HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
-  HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
-  HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
-  HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
-  HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
-  HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
-  HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
-  HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
-  HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
-  HH (b, c, d, a, x[ 6], S34,  0x4881d05); /* 44 */
-  HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
-  HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
-  HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
-  HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
-
-  /* Round 4 */
-  II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
-  II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
-  II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
-  II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
-  II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
-  II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
-  II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
-  II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
-  II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
-  II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
-  II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
-  II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
-  II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
-  II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
-  II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
-  II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
-
-  state[0] += a;
-  state[1] += b;
-  state[2] += c;
-  state[3] += d;
-
-  /* Zeroize sensitive information. */
-  memset((void *)x, 0, sizeof (x));
-}
-
-/* Encodes input (UINT4) into output (unsigned char). Assumes len is
-  a multiple of 4.
- */
-static void Encode (unsigned char *output,
-                    UINT4 *input,
-                    unsigned int len)
-{
-  unsigned int i, j;
-
-  for(i = 0, j = 0; j < len; i++, j += 4) {
-    output[j] = (unsigned char)(input[i] & 0xff);
-    output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
-    output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
-    output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
+  if(available < 8) {
+    memset(&ctx->buffer[used], 0, available);
+    body(ctx, ctx->buffer, 64);
+    used = 0;
+    available = 64;
   }
-}
-
-/* Decodes input (unsigned char) into output (UINT4). Assumes len is
-   a multiple of 4.
-*/
-static void Decode (UINT4 *output,
-                    const unsigned char *input,
-                    unsigned int len)
-{
-  unsigned int i, j;
 
-  for(i = 0, j = 0; j < len; i++, j += 4)
-    output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
-      (((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
+  memset(&ctx->buffer[used], 0, available - 8);
+
+  ctx->lo <<= 3;
+  ctx->buffer[56] = curlx_ultouc((ctx->lo)&0xff);
+  ctx->buffer[57] = curlx_ultouc((ctx->lo >> 8)&0xff);
+  ctx->buffer[58] = curlx_ultouc((ctx->lo >> 16)&0xff);
+  ctx->buffer[59] = curlx_ultouc(ctx->lo >> 24);
+  ctx->buffer[60] = curlx_ultouc((ctx->hi)&0xff);
+  ctx->buffer[61] = curlx_ultouc((ctx->hi >> 8)&0xff);
+  ctx->buffer[62] = curlx_ultouc((ctx->hi >> 16)&0xff);
+  ctx->buffer[63] = curlx_ultouc(ctx->hi >> 24);
+
+  body(ctx, ctx->buffer, 64);
+
+  result[0] = curlx_ultouc((ctx->a)&0xff);
+  result[1] = curlx_ultouc((ctx->a >> 8)&0xff);
+  result[2] = curlx_ultouc((ctx->a >> 16)&0xff);
+  result[3] = curlx_ultouc(ctx->a >> 24);
+  result[4] = curlx_ultouc((ctx->b)&0xff);
+  result[5] = curlx_ultouc((ctx->b >> 8)&0xff);
+  result[6] = curlx_ultouc((ctx->b >> 16)&0xff);
+  result[7] = curlx_ultouc(ctx->b >> 24);
+  result[8] = curlx_ultouc((ctx->c)&0xff);
+  result[9] = curlx_ultouc((ctx->c >> 8)&0xff);
+  result[10] = curlx_ultouc((ctx->c >> 16)&0xff);
+  result[11] = curlx_ultouc(ctx->c >> 24);
+  result[12] = curlx_ultouc((ctx->d)&0xff);
+  result[13] = curlx_ultouc((ctx->d >> 8)&0xff);
+  result[14] = curlx_ultouc((ctx->d >> 16)&0xff);
+  result[15] = curlx_ultouc(ctx->d >> 24);
+
+  memset(ctx, 0, sizeof(*ctx));
 }
 
 #endif /* CRYPTO LIBS */
 
-/* The last #include file should be: */
-#include "memdebug.h"
-
 const HMAC_params Curl_HMAC_MD5[] = {
   {
     (HMAC_hinit_func) MD5_Init,           /* Hash initialization function. */
@@ -486,6 +502,9 @@ const MD5_params Curl_DIGEST_MD5[] = {
   }
 };
 
+/*
+ * @unittest: 1601
+ */
 void Curl_md5it(unsigned char *outbuffer, /* 16 bytes */
                 const unsigned char *input)
 {
index 4afa620..dd8889b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -26,8 +26,7 @@
 
 #include <curl/curl.h>
 
-#define _MPRINTF_REPLACE
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 #include "urldata.h"
 
 #define MEMDEBUG_NODEFINES /* don't redefine the standard functions */
@@ -113,7 +112,7 @@ void curl_memdebug(const char *logname)
 {
   if(!logfile) {
     if(logname && *logname)
-      logfile = fopen(logname, "w");
+      logfile = fopen(logname, FOPEN_WRITETEXT);
     else
       logfile = stderr;
 #ifdef MEMDEBUG_LOG_SYNC
@@ -343,10 +342,10 @@ curl_socket_t curl_socket(int domain, int type, int protocol,
                           int line, const char *source)
 {
   const char *fmt = (sizeof(curl_socket_t) == sizeof(int)) ?
-                    "FD %s:%d socket() = %d\n" :
-                    (sizeof(curl_socket_t) == sizeof(long)) ?
-                    "FD %s:%d socket() = %ld\n" :
-                    "FD %s:%d socket() = %zd\n" ;
+    "FD %s:%d socket() = %d\n" :
+    (sizeof(curl_socket_t) == sizeof(long)) ?
+    "FD %s:%d socket() = %ld\n" :
+    "FD %s:%d socket() = %zd\n";
 
   curl_socket_t sockfd = socket(domain, type, protocol);
 
@@ -362,10 +361,10 @@ int curl_socketpair(int domain, int type, int protocol,
                     int line, const char *source)
 {
   const char *fmt = (sizeof(curl_socket_t) == sizeof(int)) ?
-                    "FD %s:%d socketpair() = %d %d\n" :
-                    (sizeof(curl_socket_t) == sizeof(long)) ?
-                    "FD %s:%d socketpair() = %ld %ld\n" :
-                    "FD %s:%d socketpair() = %zd %zd\n" ;
+    "FD %s:%d socketpair() = %d %d\n" :
+    (sizeof(curl_socket_t) == sizeof(long)) ?
+    "FD %s:%d socketpair() = %ld %ld\n" :
+    "FD %s:%d socketpair() = %zd %zd\n";
 
   int res = socketpair(domain, type, protocol, socket_vector);
 
@@ -380,10 +379,10 @@ curl_socket_t curl_accept(curl_socket_t s, void *saddr, void *saddrlen,
                           int line, const char *source)
 {
   const char *fmt = (sizeof(curl_socket_t) == sizeof(int)) ?
-                    "FD %s:%d accept() = %d\n" :
-                    (sizeof(curl_socket_t) == sizeof(long)) ?
-                    "FD %s:%d accept() = %ld\n" :
-                    "FD %s:%d accept() = %zd\n" ;
+    "FD %s:%d accept() = %d\n" :
+    (sizeof(curl_socket_t) == sizeof(long)) ?
+    "FD %s:%d accept() = %ld\n" :
+    "FD %s:%d accept() = %zd\n";
 
   struct sockaddr *addr = (struct sockaddr *)saddr;
   curl_socklen_t *addrlen = (curl_socklen_t *)saddrlen;
@@ -400,10 +399,10 @@ curl_socket_t curl_accept(curl_socket_t s, void *saddr, void *saddrlen,
 void curl_mark_sclose(curl_socket_t sockfd, int line, const char *source)
 {
   const char *fmt = (sizeof(curl_socket_t) == sizeof(int)) ?
-                    "FD %s:%d sclose(%d)\n" :
-                    (sizeof(curl_socket_t) == sizeof(long)) ?
-                    "FD %s:%d sclose(%ld)\n" :
-                    "FD %s:%d sclose(%zd)\n" ;
+    "FD %s:%d sclose(%d)\n":
+    (sizeof(curl_socket_t) == sizeof(long)) ?
+    "FD %s:%d sclose(%ld)\n":
+    "FD %s:%d sclose(%zd)\n";
 
   if(source)
     curl_memlog(fmt, source, line, sockfd);
index bd565c8..cfac1e0 100644 (file)
@@ -8,7 +8,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -104,13 +104,13 @@ CURL_EXTERN int curl_fclose(FILE *file, int line, const char *source);
 #endif
 
 #define socket(domain,type,protocol)\
- curl_socket(domain,type,protocol,__LINE__,__FILE__)
+ curl_socket(domain, type, protocol, __LINE__, __FILE__)
 #undef accept /* for those with accept as a macro */
 #define accept(sock,addr,len)\
- curl_accept(sock,addr,len,__LINE__,__FILE__)
+ curl_accept(sock, addr, len, __LINE__, __FILE__)
 #ifdef HAVE_SOCKETPAIR
 #define socketpair(domain,type,protocol,socket_vector)\
- curl_socketpair(domain,type,protocol,socket_vector,__LINE__,__FILE__)
+ curl_socketpair(domain, type, protocol, socket_vector, __LINE__, __FILE__)
 #endif
 
 #ifdef HAVE_GETADDRINFO
@@ -119,25 +119,25 @@ CURL_EXTERN int curl_fclose(FILE *file, int line, const char *source);
    our macro as for other platforms. Instead, we redefine the new name they
    define getaddrinfo to become! */
 #define ogetaddrinfo(host,serv,hint,res) \
-  curl_dogetaddrinfo(host,serv,hint,res,__LINE__,__FILE__)
+  curl_dogetaddrinfo(host, serv, hint, res, __LINE__, __FILE__)
 #else
 #undef getaddrinfo
 #define getaddrinfo(host,serv,hint,res) \
-  curl_dogetaddrinfo(host,serv,hint,res,__LINE__,__FILE__)
+  curl_dogetaddrinfo(host, serv, hint, res, __LINE__, __FILE__)
 #endif
 #endif /* HAVE_GETADDRINFO */
 
 #ifdef HAVE_GETNAMEINFO
 #undef getnameinfo
 #define getnameinfo(sa,salen,host,hostlen,serv,servlen,flags) \
-  curl_dogetnameinfo(sa,salen,host,hostlen,serv,servlen,flags, __LINE__, \
-  __FILE__)
+  curl_dogetnameinfo(sa, salen, host, hostlen, serv, servlen, flags, \
+                     __LINE__, __FILE__)
 #endif /* HAVE_GETNAMEINFO */
 
 #ifdef HAVE_FREEADDRINFO
 #undef freeaddrinfo
 #define freeaddrinfo(data) \
-  curl_dofreeaddrinfo(data,__LINE__,__FILE__)
+  curl_dofreeaddrinfo(data, __LINE__, __FILE__)
 #endif /* HAVE_FREEADDRINFO */
 
 /* sclose is probably already defined, redefine it! */
@@ -171,6 +171,6 @@ CURL_EXTERN int curl_fclose(FILE *file, int line, const char *source);
  */
 
 #define Curl_safefree(ptr) \
-  do {if((ptr)) {free((ptr)); (ptr) = NULL;}} WHILE_FALSE
+  do { free((ptr)); (ptr) = NULL;} WHILE_FALSE
 
 #endif /* HEADER_CURL_MEMDEBUG_H */
index 0b13318..c2080e9 100755 (executable)
@@ -185,6 +185,12 @@ sub VERSION_MESSAGE() {
 warning_message() unless ($opt_q || $url =~ m/^(ht|f)tps:/i );
 HELP_MESSAGE() if ($opt_h);
 
+sub report($@) {
+  my $output = shift;
+
+  print STDERR $output . "\n" unless $opt_q;
+}
+
 sub is_in_list($@) {
   my $target = shift;
 
@@ -278,20 +284,20 @@ my $fetched;
 
 my $oldsha1 = oldsha1($crt);
 
-print STDERR "SHA1 of old file: $oldsha1\n" if (!$opt_q);
+report "SHA1 of old file: $oldsha1";
 
-print STDERR "Downloading '$txt' ...\n" if (!$opt_q);
+report "Downloading '$txt' ...";
 
 if($curl && !$opt_n) {
   my $https = $url;
   $https =~ s/^http:/https:/;
-  print STDERR "Get certdata over HTTPS with curl!\n" if (!$opt_q);
+  report "Get certdata over HTTPS with curl!";
   my $quiet = $opt_q ? "-s" : "";
   my @out = `curl -w %{response_code} $quiet -O $https`;
   if(@out && $out[0] == 200) {
     $fetched = 1;
   } else {
-    print STDERR "Failed downloading HTTPS with curl, trying HTTP with LWP\n" if (!$opt_q);
+    report "Failed downloading HTTPS with curl, trying HTTP with LWP";
   }
 }
 
@@ -300,15 +306,14 @@ unless ($fetched || ($opt_n and -e $txt)) {
   $ua->env_proxy();
   $resp = $ua->mirror($url, $txt);
   if ($resp && $resp->code eq '304') {
-    print STDERR "Not modified\n" unless $opt_q;
+    report "Not modified";
     exit 0 if -e $crt && !$opt_f;
   } else {
       $fetched = 1;
   }
   if( !$resp || $resp->code !~ /^(?:200|304)$/ ) {
-      print STDERR "Unable to download latest data: "
-        . ($resp? $resp->code . ' - ' . $resp->message : "LWP failed") . "\n"
-        unless $opt_q;
+      report "Unable to download latest data: "
+        . ($resp? $resp->code . ' - ' . $resp->message : "LWP failed");
       exit 1 if -e $crt || ! -r $txt;
   }
 }
@@ -325,11 +330,11 @@ if(!$filedate) {
 my $newsha1= sha1($txt);
 
 if(!$opt_f && $oldsha1 eq $newsha1) {
-    print STDERR "Downloaded file identical to previous run\'s source file. Exiting\n";
+    report "Downloaded file identical to previous run\'s source file. Exiting";
     exit;
 }
 
-print STDERR "SHA1 of new file: $newsha1\n";
+report "SHA1 of new file: $newsha1";
 
 my $currentdate = scalar gmtime($filedate);
 
@@ -361,7 +366,7 @@ print CRT <<EOT;
 
 EOT
 
-print STDERR "Processing  '$txt' ...\n" if (!$opt_q);
+report "Processing  '$txt' ...";
 my $caname;
 my $certnum = 0;
 my $skipnum = 0;
@@ -413,9 +418,9 @@ while (<TXT>) {
       last if (/^#/);
       if (/^CKA_TRUST_([A-Z_]+)\s+CK_TRUST\s+CKT_NSS_([A-Z_]+)\s*$/) {
         if ( !is_in_list($1,@valid_mozilla_trust_purposes) ) {
-          print STDERR "Warning: Unrecognized trust purpose for cert: $caname. Trust purpose: $1. Trust Level: $2\n" if (!$opt_q);
+          report "Warning: Unrecognized trust purpose for cert: $caname. Trust purpose: $1. Trust Level: $2";
         } elsif ( !is_in_list($2,@valid_mozilla_trust_levels) ) {
-          print STDERR "Warning: Unrecognized trust level for cert: $caname. Trust purpose: $1. Trust Level: $2\n" if (!$opt_q);
+          report "Warning: Unrecognized trust level for cert: $caname. Trust purpose: $1. Trust Level: $2";
         } else {
           push @{$trust_purposes_by_level{$2}}, $1;
         }
@@ -470,7 +475,7 @@ while (<TXT>) {
           open(CRT, ">>$crt.~") or die "Couldn't open $crt.~: $!";
         }
       }
-      print STDERR "Parsing: $caname\n" if ($opt_v);
+      report "Parsing: $caname" if ($opt_v);
       $certnum ++;
       $start_of_cert = 0;
     }
@@ -491,4 +496,4 @@ unless( $stdout ) {
     rename "$crt.~", $crt or die "Failed to rename $crt.~ to $crt: $!\n";
 }
 unlink $txt if ($opt_u);
-print STDERR "Done ($certnum CA certs processed, $skipnum skipped).\n" if (!$opt_q);
+report "Done ($certnum CA certs processed, $skipnum skipped).";
index 97c9e65..0052087 100644 (file)
 #include "warnless.h"
 #include "speedcheck.h"
 #include "conncache.h"
-#include "bundles.h"
 #include "multihandle.h"
 #include "pipeline.h"
 #include "sigpipe.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
 
 #define GOOD_MULTI_HANDLE(x) \
   ((x) && (((struct Curl_multi *)(x))->type == CURL_MULTI_HANDLE))
-#define GOOD_EASY_HANDLE(x) \
-  ((x) && (((struct SessionHandle *)(x))->magic == CURLEASY_MAGIC_NUMBER))
 
 static void singlesocket(struct Curl_multi *multi,
                          struct SessionHandle *data);
 static int update_timer(struct Curl_multi *multi);
 
-static bool isHandleAtHead(struct SessionHandle *handle,
-                           struct curl_llist *pipeline);
 static CURLMcode add_next_timeout(struct timeval now,
                                   struct Curl_multi *multi,
                                   struct SessionHandle *d);
@@ -89,6 +81,7 @@ static const char * const statename[]={
   "WAITRESOLVE",
   "WAITCONNECT",
   "WAITPROXYCONNECT",
+  "SENDPROTOCONNECT",
   "PROTOCONNECT",
   "WAITDO",
   "DO",
@@ -157,7 +150,6 @@ static void mstate(struct SessionHandle *data, CURLMstate state
 
 struct Curl_sh_entry {
   struct SessionHandle *easy;
-  time_t timestamp;
   int action;  /* what action READ/WRITE this socket waits for */
   curl_socket_t socket; /* mainly to ease debugging */
   void *socketp; /* settable by users with curl_multi_assign() */
@@ -219,8 +211,7 @@ static void sh_freeentry(void *freethis)
 {
   struct Curl_sh_entry *p = (struct Curl_sh_entry *) freethis;
 
-  if(p)
-    free(p);
+  free(p);
 }
 
 static size_t fd_key_compare(void *k1, size_t k1_len, void *k2, size_t k2_len)
@@ -256,10 +247,10 @@ static size_t hash_fd(void *key, size_t key_length, size_t slots_num)
  * per call."
  *
  */
-static struct curl_hash *sh_init(int hashsize)
+static int sh_init(struct curl_hash *hash, int hashsize)
 {
-  return Curl_hash_alloc(hashsize, hash_fd, fd_key_compare,
-                         sh_freeentry);
+  return Curl_hash_init(hash, hashsize, hash_fd, fd_key_compare,
+                        sh_freeentry);
 }
 
 /*
@@ -298,16 +289,13 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
 
   multi->type = CURL_MULTI_HANDLE;
 
-  multi->hostcache = Curl_mk_dnscache();
-  if(!multi->hostcache)
+  if(Curl_mk_dnscache(&multi->hostcache))
     goto error;
 
-  multi->sockhash = sh_init(hashsize);
-  if(!multi->sockhash)
+  if(sh_init(&multi->sockhash, hashsize))
     goto error;
 
-  multi->conn_cache = Curl_conncache_init(chashsize);
-  if(!multi->conn_cache)
+  if(Curl_conncache_init(&multi->conn_cache, chashsize))
     goto error;
 
   multi->msglist = Curl_llist_alloc(multi_freeamsg);
@@ -324,7 +312,7 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
     goto error;
 
   multi->closure_handle->multi = multi;
-  multi->closure_handle->state.conn_cache = multi->conn_cache;
+  multi->closure_handle->state.conn_cache = &multi->conn_cache;
 
   multi->max_pipeline_length = 5;
 
@@ -334,12 +322,9 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
 
   error:
 
-  Curl_hash_destroy(multi->sockhash);
-  multi->sockhash = NULL;
-  Curl_hash_destroy(multi->hostcache);
-  multi->hostcache = NULL;
-  Curl_conncache_destroy(multi->conn_cache);
-  multi->conn_cache = NULL;
+  Curl_hash_destroy(&multi->sockhash);
+  Curl_hash_destroy(&multi->hostcache);
+  Curl_conncache_destroy(&multi->conn_cache);
   Curl_close(multi->closure_handle);
   multi->closure_handle = NULL;
   Curl_llist_destroy(multi->msglist, NULL);
@@ -408,14 +393,12 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle,
      easy handle's one is currently not set. */
   else if(!data->dns.hostcache ||
      (data->dns.hostcachetype == HCACHE_NONE)) {
-    data->dns.hostcache = multi->hostcache;
+    data->dns.hostcache = &multi->hostcache;
     data->dns.hostcachetype = HCACHE_MULTI;
   }
 
   /* Point to the multi's connection cache */
-  data->state.conn_cache = multi->conn_cache;
-
-  data->state.infilesize = data->set.filesize;
+  data->state.conn_cache = &multi->conn_cache;
 
   /* This adds the new entry at the 'end' of the doubly-linked circular
      list of SessionHandle structs to try and maintain a FIFO queue so
@@ -431,8 +414,7 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle,
     multi->easylp = data; /* the new last node */
   }
   else {
-    /* first node, make both prev and next be NULL! */
-    data->next = NULL;
+    /* first node, make prev NULL! */
     data->prev = NULL;
     multi->easylp = multi->easyp = data; /* both first and last */
   }
@@ -508,18 +490,22 @@ CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
   if(!data->multi)
     return CURLM_OK; /* it is already removed so let's say it is fine! */
 
-
   premature = (data->mstate < CURLM_STATE_COMPLETED) ? TRUE : FALSE;
   easy_owns_conn = (data->easy_conn && (data->easy_conn->data == easy)) ?
     TRUE : FALSE;
 
   /* If the 'state' is not INIT or COMPLETED, we might need to do something
      nice to put the easy_handle in a good known state when this returns. */
-  if(premature)
+  if(premature) {
     /* this handle is "alive" so we need to count down the total number of
        alive connections when this is removed */
     multi->num_alive--;
 
+    /* When this handle gets removed, other handles may be able to get the
+       connection */
+    Curl_multi_process_pending_handles(multi);
+  }
+
   if(data->easy_conn &&
      data->mstate > CURLM_STATE_DO &&
      data->mstate < CURLM_STATE_COMPLETED) {
@@ -621,9 +607,10 @@ CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
   return CURLM_OK;
 }
 
-bool Curl_multi_pipeline_enabled(const struct Curl_multi *multi)
+/* Return TRUE if the application asked for a certain set of pipelining */
+bool Curl_pipeline_wanted(const struct Curl_multi *multi, int bits)
 {
-  return (multi && multi->pipelining_enabled) ? TRUE : FALSE;
+  return (multi && (multi->pipelining & bits)) ? TRUE : FALSE;
 }
 
 void Curl_multi_handlePipeBreak(struct SessionHandle *data)
@@ -649,14 +636,24 @@ static int waitconnect_getsock(struct connectdata *conn,
     }
   }
 
+  return rc;
+}
+
+static int waitproxyconnect_getsock(struct connectdata *conn,
+                                    curl_socket_t *sock,
+                                    int numsocks)
+{
+  if(!numsocks)
+    return GETSOCK_BLANK;
+
+  sock[0] = conn->sock[FIRSTSOCKET];
+
   /* when we've sent a CONNECT to a proxy, we should rather wait for the
      socket to become readable to be able to get the response headers */
-  if(conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT) {
-    sock[0] = conn->sock[FIRSTSOCKET];
-    rc = GETSOCK_READSOCK(0);
-  }
+  if(conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT)
+    return GETSOCK_READSOCK(0);
 
-  return rc;
+  return GETSOCK_WRITESOCK(0);
 }
 
 static int domore_getsock(struct connectdata *conn,
@@ -709,6 +706,7 @@ static int multi_getsock(struct SessionHandle *data,
     return Curl_resolver_getsock(data->easy_conn, socks, numsocks);
 
   case CURLM_STATE_PROTOCONNECT:
+  case CURLM_STATE_SENDPROTOCONNECT:
     return Curl_protocol_getsock(data->easy_conn, socks, numsocks);
 
   case CURLM_STATE_DO:
@@ -716,6 +714,8 @@ static int multi_getsock(struct SessionHandle *data,
     return Curl_doing_getsock(data->easy_conn, socks, numsocks);
 
   case CURLM_STATE_WAITPROXYCONNECT:
+    return waitproxyconnect_getsock(data->easy_conn, socks, numsocks);
+
   case CURLM_STATE_WAITCONNECT:
     return waitconnect_getsock(data->easy_conn, socks, numsocks);
 
@@ -916,12 +916,62 @@ CURLMcode curl_multi_wait(CURLM *multi_handle,
   else
     i = 0;
 
-  Curl_safefree(ufds);
+  free(ufds);
   if(ret)
     *ret = i;
   return CURLM_OK;
 }
 
+/*
+ * Curl_multi_connchanged() is called to tell that there is a connection in
+ * this multi handle that has changed state (pipelining become possible, the
+ * number of allowed streams changed or similar), and a subsequent use of this
+ * multi handle should move CONNECT_PEND handles back to CONNECT to have them
+ * retry.
+ */
+void Curl_multi_connchanged(struct Curl_multi *multi)
+{
+  multi->recheckstate = TRUE;
+}
+
+/*
+ * multi_ischanged() is called
+ *
+ * Returns TRUE/FALSE whether the state is changed to trigger a CONNECT_PEND
+ * => CONNECT action.
+ *
+ * Set 'clear' to TRUE to have it also clear the state variable.
+ */
+static bool multi_ischanged(struct Curl_multi *multi, bool clear)
+{
+  bool retval = multi->recheckstate;
+  if(clear)
+    multi->recheckstate = FALSE;
+  return retval;
+}
+
+CURLMcode Curl_multi_add_perform(struct Curl_multi *multi,
+                                 struct SessionHandle *data,
+                                 struct connectdata *conn)
+{
+  CURLMcode rc;
+
+  rc = curl_multi_add_handle(multi, data);
+  if(!rc) {
+    struct SingleRequest *k = &data->req;
+
+    /* pass in NULL for 'conn' here since we don't want to init the
+       connection, only this transfer */
+    Curl_init_do(data, NULL);
+
+    /* take this handle to the perform state right away */
+    multistate(data, CURLM_STATE_PERFORM);
+    data->easy_conn = conn;
+    k->keepon |= KEEP_RECV; /* setup to receive! */
+  }
+  return rc;
+}
+
 static CURLMcode multi_runsingle(struct Curl_multi *multi,
                                  struct timeval now,
                                  struct SessionHandle *data)
@@ -973,6 +1023,11 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
       return CURLM_INTERNAL_ERROR;
     }
 
+    if(multi_ischanged(multi, TRUE)) {
+      DEBUGF(infof(data, "multi changed, check CONNECT_PEND queue!\n"));
+      Curl_multi_process_pending_handles(multi);
+    }
+
     if(data->easy_conn && data->mstate > CURLM_STATE_CONNECT &&
        data->mstate < CURLM_STATE_COMPLETED)
       /* Make sure we set the connection's current owner */
@@ -1019,6 +1074,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
           disconnect_conn = TRUE;
         }
         result = CURLE_OPERATION_TIMEDOUT;
+        (void)Curl_done(&data->easy_conn, result, TRUE);
         /* Skip the statemachine and go directly to error handling section. */
         goto statemachine_end;
       }
@@ -1076,7 +1132,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
             rc = CURLM_CALL_MULTI_PERFORM;
 
             if(protocol_connect)
-              multistate(data, multi->pipelining_enabled?
+              multistate(data, Curl_pipeline_wanted(multi, CURLPIPE_HTTP1)?
                          CURLM_STATE_WAITDO:CURLM_STATE_DO);
             else {
 #ifndef CURL_DISABLE_HTTP
@@ -1098,13 +1154,9 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
       struct connectdata *conn = data->easy_conn;
 
       /* check if we have the name resolved by now */
-      if(data->share)
-        Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
-
       dns = Curl_fetch_addr(conn, conn->host.name, (int)conn->port);
 
       if(dns) {
-        dns->inuse++; /* we use it! */
 #ifdef CURLRES_ASYNCH
         conn->async.dns = dns;
         conn->async.done = TRUE;
@@ -1113,9 +1165,6 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
         infof(data, "Hostname was found in DNS cache\n");
       }
 
-      if(data->share)
-        Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
-
       if(!dns)
         result = Curl_resolver_is_resolved(data->easy_conn, &dns);
 
@@ -1140,7 +1189,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
           /* call again please so that we get the next socket setup */
           rc = CURLM_CALL_MULTI_PERFORM;
           if(protocol_connect)
-            multistate(data, multi->pipelining_enabled?
+            multistate(data, Curl_pipeline_wanted(multi, CURLPIPE_HTTP1)?
                        CURLM_STATE_WAITDO:CURLM_STATE_DO);
           else {
 #ifndef CURL_DISABLE_HTTP
@@ -1166,40 +1215,29 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
       /* this is HTTP-specific, but sending CONNECT to a proxy is HTTP... */
       result = Curl_http_connect(data->easy_conn, &protocol_connect);
 
+      rc = CURLM_CALL_MULTI_PERFORM;
       if(data->easy_conn->bits.proxy_connect_closed) {
         /* connect back to proxy again */
         result = CURLE_OK;
-        rc = CURLM_CALL_MULTI_PERFORM;
+        Curl_done(&data->easy_conn, CURLE_OK, FALSE);
         multistate(data, CURLM_STATE_CONNECT);
       }
       else if(!result) {
         if(data->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_COMPLETE)
-          multistate(data, CURLM_STATE_WAITCONNECT);
+          /* initiate protocol connect phase */
+          multistate(data, CURLM_STATE_SENDPROTOCONNECT);
       }
       break;
 #endif
 
     case CURLM_STATE_WAITCONNECT:
-      /* awaiting a completion of an asynch connect */
-      result = Curl_is_connected(data->easy_conn,
-                                 FIRSTSOCKET,
-                                 &connected);
-      if(connected) {
-
-        if(!result)
-          /* if everything is still fine we do the protocol-specific connect
-             setup */
-          result = Curl_protocol_connect(data->easy_conn,
-                                         &protocol_connect);
-      }
-
-      if(data->easy_conn->bits.proxy_connect_closed) {
-        /* connect back to proxy again since it was closed in a proxy CONNECT
-           setup */
-        result = CURLE_OK;
+      /* awaiting a completion of an asynch TCP connect */
+      result = Curl_is_connected(data->easy_conn, FIRSTSOCKET, &connected);
+      if(connected && !result) {
         rc = CURLM_CALL_MULTI_PERFORM;
-        multistate(data, CURLM_STATE_CONNECT);
-        break;
+        multistate(data, data->easy_conn->bits.tunnel_proxy?
+                   CURLM_STATE_WAITPROXYCONNECT:
+                   CURLM_STATE_SENDPROTOCONNECT);
       }
       else if(result) {
         /* failure detected */
@@ -1207,29 +1245,25 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
         disconnect_conn = TRUE;
         break;
       }
+      break;
 
-      if(connected) {
-        if(!protocol_connect) {
-          /* We have a TCP connection, but 'protocol_connect' may be false
-             and then we continue to 'STATE_PROTOCONNECT'. If protocol
-             connect is TRUE, we move on to STATE_DO.
-             BUT if we are using a proxy we must change to WAITPROXYCONNECT
-          */
-#ifndef CURL_DISABLE_HTTP
-          if(data->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT)
-            multistate(data, CURLM_STATE_WAITPROXYCONNECT);
-          else
-#endif
-            multistate(data, CURLM_STATE_PROTOCONNECT);
-
-        }
-        else
-          /* after the connect has completed, go WAITDO or DO */
-          multistate(data, multi->pipelining_enabled?
-                     CURLM_STATE_WAITDO:CURLM_STATE_DO);
-
+    case CURLM_STATE_SENDPROTOCONNECT:
+      result = Curl_protocol_connect(data->easy_conn, &protocol_connect);
+      if(!protocol_connect)
+        /* switch to waiting state */
+        multistate(data, CURLM_STATE_PROTOCONNECT);
+      else if(!result) {
+        /* protocol connect has completed, go WAITDO or DO */
+        multistate(data, Curl_pipeline_wanted(multi, CURLPIPE_HTTP1)?
+                   CURLM_STATE_WAITDO:CURLM_STATE_DO);
         rc = CURLM_CALL_MULTI_PERFORM;
       }
+      else if(result) {
+        /* failure detected */
+        Curl_posttransfer(data);
+        Curl_done(&data->easy_conn, result, TRUE);
+        disconnect_conn = TRUE;
+      }
       break;
 
     case CURLM_STATE_PROTOCONNECT:
@@ -1237,7 +1271,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
       result = Curl_protocol_connecting(data->easy_conn, &protocol_connect);
       if(!result && protocol_connect) {
         /* after the connect has completed, go WAITDO or DO */
-        multistate(data, multi->pipelining_enabled?
+        multistate(data, Curl_pipeline_wanted(multi, CURLPIPE_HTTP1)?
                    CURLM_STATE_WAITDO:CURLM_STATE_DO);
         rc = CURLM_CALL_MULTI_PERFORM;
       }
@@ -1251,19 +1285,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
 
     case CURLM_STATE_WAITDO:
       /* Wait for our turn to DO when we're pipelining requests */
-#ifdef DEBUGBUILD
-      infof(data, "WAITDO: Conn %ld send pipe %zu inuse %s athead %s\n",
-            data->easy_conn->connection_id,
-            data->easy_conn->send_pipe->size,
-            data->easy_conn->writechannel_inuse?"TRUE":"FALSE",
-            isHandleAtHead(data,
-                           data->easy_conn->send_pipe)?"TRUE":"FALSE");
-#endif
-      if(!data->easy_conn->writechannel_inuse &&
-         isHandleAtHead(data,
-                        data->easy_conn->send_pipe)) {
-        /* Grab the channel */
-        data->easy_conn->writechannel_inuse = TRUE;
+      if(Curl_pipeline_checkget_write(data, data->easy_conn)) {
+        /* Grabbed the channel */
         multistate(data, CURLM_STATE_DO);
         rc = CURLM_CALL_MULTI_PERFORM;
       }
@@ -1446,24 +1469,11 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
 
     case CURLM_STATE_WAITPERFORM:
       /* Wait for our turn to PERFORM */
-      if(!data->easy_conn->readchannel_inuse &&
-         isHandleAtHead(data,
-                        data->easy_conn->recv_pipe)) {
-        /* Grab the channel */
-        data->easy_conn->readchannel_inuse = TRUE;
+      if(Curl_pipeline_checkget_read(data, data->easy_conn)) {
+        /* Grabbed the channel */
         multistate(data, CURLM_STATE_PERFORM);
         rc = CURLM_CALL_MULTI_PERFORM;
       }
-#ifdef DEBUGBUILD
-      else {
-        infof(data, "WAITPERFORM: Conn %ld recv pipe %zu inuse %s athead %s\n",
-              data->easy_conn->connection_id,
-              data->easy_conn->recv_pipe->size,
-              data->easy_conn->readchannel_inuse?"TRUE":"FALSE",
-              isHandleAtHead(data,
-                             data->easy_conn->recv_pipe)?"TRUE":"FALSE");
-      }
-#endif
       break;
 
     case CURLM_STATE_TOOFAST: /* limit-rate exceeded in either direction */
@@ -1518,19 +1528,17 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
       }
 
       /* read/write data if it is ready to do so */
-      result = Curl_readwrite(data->easy_conn, &done);
+      result = Curl_readwrite(data->easy_conn, data, &done);
 
       k = &data->req;
 
-      if(!(k->keepon & KEEP_RECV)) {
+      if(!(k->keepon & KEEP_RECV))
         /* We're done receiving */
-        data->easy_conn->readchannel_inuse = FALSE;
-      }
+        Curl_pipeline_leave_read(data->easy_conn);
 
-      if(!(k->keepon & KEEP_SEND)) {
+      if(!(k->keepon & KEEP_SEND))
         /* We're done sending */
-        data->easy_conn->writechannel_inuse = FALSE;
-      }
+        Curl_pipeline_leave_write(data->easy_conn);
 
       if(done || (result == CURLE_RECV_ERROR)) {
         /* If CURLE_RECV_ERROR happens early enough, we assume it was a race
@@ -1586,8 +1594,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
           if(!retry) {
             /* if the URL is a follow-location and not just a retried request
                then figure out the URL here */
-            if(newurl)
-              free(newurl);
+            free(newurl);
             newurl = data->req.newurl;
             data->req.newurl = NULL;
             follow = FOLLOW_REDIR;
@@ -1612,8 +1619,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
           /* but first check to see if we got a location info even though we're
              not following redirects */
           if(data->req.location) {
-            if(newurl)
-              free(newurl);
+            free(newurl);
             newurl = data->req.location;
             data->req.location = NULL;
             result = Curl_follow(data, newurl, FOLLOW_FAKE);
@@ -1628,8 +1634,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
         }
       }
 
-      if(newurl)
-        free(newurl);
+      free(newurl);
       break;
     }
 
@@ -1710,14 +1715,15 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
 
         data->state.pipe_broke = FALSE;
 
+        /* Check if we can move pending requests to send pipe */
+        Curl_multi_process_pending_handles(multi);
+
         if(data->easy_conn) {
           /* if this has a connection, unsubscribe from the pipelines */
-          data->easy_conn->writechannel_inuse = FALSE;
-          data->easy_conn->readchannel_inuse = FALSE;
+          Curl_pipeline_leave_write(data->easy_conn);
+          Curl_pipeline_leave_read(data->easy_conn);
           Curl_removeHandleFromPipeline(data, data->easy_conn->send_pipe);
           Curl_removeHandleFromPipeline(data, data->easy_conn->recv_pipe);
-          /* Check if we can move pending requests to send pipe */
-          Curl_multi_process_pending_handles(multi);
 
           if(disconnect_conn) {
             /* Don't attempt to send data over a connection that timed out */
@@ -1764,7 +1770,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
 
       multistate(data, CURLM_STATE_MSGSENT);
     }
-  } while(rc == CURLM_CALL_MULTI_PERFORM);
+  } while((rc == CURLM_CALL_MULTI_PERFORM) || multi_ischanged(multi, FALSE));
 
   data->result = result;
 
@@ -1844,7 +1850,7 @@ static void close_all_connections(struct Curl_multi *multi)
 {
   struct connectdata *conn;
 
-  conn = Curl_conncache_find_first_connection(multi->conn_cache);
+  conn = Curl_conncache_find_first_connection(&multi->conn_cache);
   while(conn) {
     SIGPIPE_VARIABLE(pipe_st);
     conn->data = multi->closure_handle;
@@ -1854,7 +1860,7 @@ static void close_all_connections(struct Curl_multi *multi)
     (void)Curl_disconnect(conn, FALSE);
     sigpipe_restore(&pipe_st);
 
-    conn = Curl_conncache_find_first_connection(multi->conn_cache);
+    conn = Curl_conncache_find_first_connection(&multi->conn_cache);
   }
 }
 
@@ -1877,15 +1883,15 @@ CURLMcode curl_multi_cleanup(CURLM *multi_handle)
       sigpipe_ignore(multi->closure_handle, &pipe_st);
       restore_pipe = TRUE;
 
-      multi->closure_handle->dns.hostcache = multi->hostcache;
+      multi->closure_handle->dns.hostcache = &multi->hostcache;
       Curl_hostcache_clean(multi->closure_handle,
                            multi->closure_handle->dns.hostcache);
 
       Curl_close(multi->closure_handle);
     }
 
-    Curl_hash_destroy(multi->sockhash);
-    Curl_conncache_destroy(multi->conn_cache);
+    Curl_hash_destroy(&multi->sockhash);
+    Curl_conncache_destroy(&multi->conn_cache);
     Curl_llist_destroy(multi->msglist, NULL);
     Curl_llist_destroy(multi->pending, NULL);
 
@@ -1907,7 +1913,7 @@ CURLMcode curl_multi_cleanup(CURLM *multi_handle)
       data = nextdata;
     }
 
-    Curl_hash_destroy(multi->hostcache);
+    Curl_hash_destroy(&multi->hostcache);
 
     /* Free the blacklists by setting them to NULL */
     Curl_pipeline_set_site_blacklist(NULL, &multi->pipelining_site_bl);
@@ -1996,7 +2002,7 @@ static void singlesocket(struct Curl_multi *multi,
     s = socks[i];
 
     /* get it from the hash */
-    entry = Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(s));
+    entry = Curl_hash_pick(&multi->sockhash, (char *)&s, sizeof(s));
 
     if(curraction & GETSOCK_READSOCK(i))
       action |= CURL_POLL_IN;
@@ -2011,7 +2017,7 @@ static void singlesocket(struct Curl_multi *multi,
     }
     else {
       /* this is a socket we didn't have before, add it! */
-      entry = sh_addentry(multi->sockhash, s, data);
+      entry = sh_addentry(&multi->sockhash, s, data);
       if(!entry)
         /* fatal */
         return;
@@ -2047,7 +2053,7 @@ static void singlesocket(struct Curl_multi *multi,
       /* this socket has been removed. Tell the app to remove it */
       remove_sock_from_hash = TRUE;
 
-      entry = Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(s));
+      entry = Curl_hash_pick(&multi->sockhash, (char *)&s, sizeof(s));
       if(entry) {
         /* check if the socket to be removed serves a connection which has
            other easy-s in a pipeline. In this case the socket should not be
@@ -2062,7 +2068,7 @@ static void singlesocket(struct Curl_multi *multi,
                for the recv_pipe, or the first (in case this particular easy
                isn't already) */
             if(entry->easy == data) {
-              if(isHandleAtHead(data, easy_conn->recv_pipe))
+              if(Curl_recvpipe_head(data, easy_conn))
                 entry->easy = easy_conn->recv_pipe->head->next->ptr;
               else
                 entry->easy = easy_conn->recv_pipe->head->ptr;
@@ -2076,7 +2082,7 @@ static void singlesocket(struct Curl_multi *multi,
                for the send_pipe, or the first (in case this particular easy
                isn't already) */
             if(entry->easy == data) {
-              if(isHandleAtHead(data, easy_conn->send_pipe))
+              if(Curl_sendpipe_head(data, easy_conn))
                 entry->easy = easy_conn->send_pipe->head->next->ptr;
               else
                 entry->easy = easy_conn->send_pipe->head->ptr;
@@ -2102,7 +2108,7 @@ static void singlesocket(struct Curl_multi *multi,
                            CURL_POLL_REMOVE,
                            multi->socket_userp,
                            entry->socketp);
-        sh_delentry(multi->sockhash, s);
+        sh_delentry(&multi->sockhash, s);
       }
 
     }
@@ -2129,7 +2135,7 @@ void Curl_multi_closed(struct connectdata *conn, curl_socket_t s)
     /* this is set if this connection is part of a handle that is added to
        a multi handle, and only then this is necessary */
     struct Curl_sh_entry *entry =
-      Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(s));
+      Curl_hash_pick(&multi->sockhash, (char *)&s, sizeof(s));
 
     if(entry) {
       if(multi->socket_cb)
@@ -2138,7 +2144,7 @@ void Curl_multi_closed(struct connectdata *conn, curl_socket_t s)
                          entry->socketp);
 
       /* now remove it from the socket hash */
-      sh_delentry(multi->sockhash, s);
+      sh_delentry(&multi->sockhash, s);
     }
   }
 }
@@ -2231,7 +2237,7 @@ static CURLMcode multi_socket(struct Curl_multi *multi,
   else if(s != CURL_SOCKET_TIMEOUT) {
 
     struct Curl_sh_entry *entry =
-      Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(s));
+      Curl_hash_pick(&multi->sockhash, (char *)&s, sizeof(s));
 
     if(!entry)
       /* Unmatched socket, we can't act on it but we ignore this fact.  In
@@ -2355,8 +2361,14 @@ CURLMcode curl_multi_setopt(CURLM *multi_handle,
   case CURLMOPT_SOCKETDATA:
     multi->socket_userp = va_arg(param, void *);
     break;
+  case CURLMOPT_PUSHFUNCTION:
+    multi->push_cb = va_arg(param, curl_push_callback);
+    break;
+  case CURLMOPT_PUSHDATA:
+    multi->push_userp = va_arg(param, void *);
+    break;
   case CURLMOPT_PIPELINING:
-    multi->pipelining_enabled = (0 != va_arg(param, long)) ? TRUE : FALSE;
+    multi->pipelining = va_arg(param, long);
     break;
   case CURLMOPT_TIMERFUNCTION:
     multi->timer_cb = va_arg(param, curl_multi_timer_callback);
@@ -2434,7 +2446,7 @@ CURLMcode curl_multi_socket_all(CURLM *multi_handle, int *running_handles)
 static CURLMcode multi_timeout(struct Curl_multi *multi,
                                long *timeout_ms)
 {
-  static struct timeval tv_zero = {0,0};
+  static struct timeval tv_zero = {0, 0};
 
   if(multi->timetree) {
     /* we have a tree of expire times */
@@ -2492,7 +2504,7 @@ static int update_timer(struct Curl_multi *multi)
     return -1;
   }
   if(timeout_ms < 0) {
-    static const struct timeval none={0,0};
+    static const struct timeval none={0, 0};
     if(Curl_splaycomparekeys(none, multi->timer_lastcall)) {
       multi->timer_lastcall = none;
       /* there's no timeout now but there was one previously, tell the app to
@@ -2514,16 +2526,6 @@ static int update_timer(struct Curl_multi *multi)
   return multi->timer_cb((CURLM*)multi, timeout_ms, multi->timer_userp);
 }
 
-static bool isHandleAtHead(struct SessionHandle *handle,
-                           struct curl_llist *pipeline)
-{
-  struct curl_llist_element *curr = pipeline->head;
-  if(curr)
-    return (curr->ptr == handle) ? TRUE : FALSE;
-
-  return FALSE;
-}
-
 /*
  * multi_freetimeout()
  *
@@ -2723,7 +2725,8 @@ CURLMcode curl_multi_assign(CURLM *multi_handle,
   struct Curl_multi *multi = (struct Curl_multi *)multi_handle;
 
   if(s != CURL_SOCKET_BAD)
-    there = Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(curl_socket_t));
+    there = Curl_hash_pick(&multi->sockhash, (char *)&s,
+                           sizeof(curl_socket_t));
 
   if(!there)
     return CURLM_BAD_SOCKET;
@@ -2743,11 +2746,6 @@ size_t Curl_multi_max_total_connections(struct Curl_multi *multi)
   return multi ? multi->max_total_connections : 0;
 }
 
-size_t Curl_multi_max_pipeline_length(struct Curl_multi *multi)
-{
-  return multi ? multi->max_pipeline_length : 0;
-}
-
 curl_off_t Curl_multi_content_length_penalty_size(struct Curl_multi *multi)
 {
   return multi ? multi->content_length_penalty_size : 0;
@@ -2807,7 +2805,7 @@ void Curl_multi_dump(const struct Curl_multi *multi_handle)
       for(i=0; i < data->numsocks; i++) {
         curl_socket_t s = data->sockets[i];
         struct Curl_sh_entry *entry =
-          Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(s));
+          Curl_hash_pick(&multi->sockhash, (char *)&s, sizeof(s));
 
         fprintf(stderr, "%d ", (int)s);
         if(!entry) {
index 1a4b1d9..6c24f50 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,6 +22,8 @@
  *
  ***************************************************************************/
 
+#include "conncache.h"
+
 struct Curl_message {
   /* the 'CURLMsg' is the part that is visible to the external user */
   struct CURLMsg extmsg;
@@ -35,22 +37,23 @@ typedef enum {
   CURLM_STATE_CONNECT_PEND, /* 1 - no connections, waiting for one */
   CURLM_STATE_CONNECT,      /* 2 - resolve/connect has been sent off */
   CURLM_STATE_WAITRESOLVE,  /* 3 - awaiting the resolve to finalize */
-  CURLM_STATE_WAITCONNECT,  /* 4 - awaiting the connect to finalize */
+  CURLM_STATE_WAITCONNECT,  /* 4 - awaiting the TCP connect to finalize */
   CURLM_STATE_WAITPROXYCONNECT, /* 5 - awaiting proxy CONNECT to finalize */
-  CURLM_STATE_PROTOCONNECT, /* 6 - completing the protocol-specific connect
+  CURLM_STATE_SENDPROTOCONNECT, /* 6 - initiate protocol connect procedure */
+  CURLM_STATE_PROTOCONNECT, /* 7 - completing the protocol-specific connect
                                    phase */
-  CURLM_STATE_WAITDO,       /* 7 - wait for our turn to send the request */
-  CURLM_STATE_DO,           /* 8 - start send off the request (part 1) */
-  CURLM_STATE_DOING,        /* 9 - sending off the request (part 1) */
-  CURLM_STATE_DO_MORE,      /* 10 - send off the request (part 2) */
-  CURLM_STATE_DO_DONE,      /* 11 - done sending off request */
-  CURLM_STATE_WAITPERFORM,  /* 12 - wait for our turn to read the response */
-  CURLM_STATE_PERFORM,      /* 13 - transfer data */
-  CURLM_STATE_TOOFAST,      /* 14 - wait because limit-rate exceeded */
-  CURLM_STATE_DONE,         /* 15 - post data transfer operation */
-  CURLM_STATE_COMPLETED,    /* 16 - operation complete */
-  CURLM_STATE_MSGSENT,      /* 17 - the operation complete message is sent */
-  CURLM_STATE_LAST          /* 18 - not a true state, never use this */
+  CURLM_STATE_WAITDO,       /* 8 - wait for our turn to send the request */
+  CURLM_STATE_DO,           /* 9 - start send off the request (part 1) */
+  CURLM_STATE_DOING,        /* 10 - sending off the request (part 1) */
+  CURLM_STATE_DO_MORE,      /* 11 - send off the request (part 2) */
+  CURLM_STATE_DO_DONE,      /* 12 - done sending off request */
+  CURLM_STATE_WAITPERFORM,  /* 13 - wait for our turn to read the response */
+  CURLM_STATE_PERFORM,      /* 14 - transfer data */
+  CURLM_STATE_TOOFAST,      /* 15 - wait because limit-rate exceeded */
+  CURLM_STATE_DONE,         /* 16 - post data transfer operation */
+  CURLM_STATE_COMPLETED,    /* 17 - operation complete */
+  CURLM_STATE_MSGSENT,      /* 18 - the operation complete message is sent */
+  CURLM_STATE_LAST          /* 19 - not a true state, never use this */
 } CURLMstate;
 
 /* we support N sockets per easy handle. Set the corresponding bit to what
@@ -59,6 +62,8 @@ typedef enum {
 #define GETSOCK_READABLE (0x00ff)
 #define GETSOCK_WRITABLE (0xff00)
 
+#define CURLPIPE_ANY (CURLPIPE_HTTP1 | CURLPIPE_MULTIPLEX)
+
 /* This is the struct known as CURLM on the outside */
 struct Curl_multi {
   /* First a simple identifier to easier detect if a user mix up
@@ -82,8 +87,12 @@ struct Curl_multi {
   curl_socket_callback socket_cb;
   void *socket_userp;
 
+  /* callback function and user data pointer for server push */
+  curl_push_callback push_cb;
+  void *push_userp;
+
   /* Hostname cache */
-  struct curl_hash *hostcache;
+  struct curl_hash hostcache;
 
   /* timetree points to the splay-tree of time nodes to figure out expire
      times of all currently set timers */
@@ -92,13 +101,15 @@ struct Curl_multi {
   /* 'sockhash' is the lookup hash for socket descriptor => easy handles (note
      the pluralis form, there can be more than one easy handle waiting on the
      same actual socket) */
-  struct curl_hash *sockhash;
+  struct curl_hash sockhash;
 
-  /* Whether pipelining is enabled for this multi handle */
-  bool pipelining_enabled;
+  /* pipelining wanted bits (CURLPIPE*) */
+  long pipelining;
+
+  bool recheckstate; /* see Curl_multi_connchanged */
 
   /* Shared connection cache (bundles)*/
-  struct conncache *conn_cache;
+  struct conncache conn_cache;
 
   /* This handle will be used for closing the cached connections in
      curl_multi_cleanup() */
@@ -139,4 +150,3 @@ struct Curl_multi {
 };
 
 #endif /* HEADER_CURL_MULTIHANDLE_H */
-
index d8acfca..e6323ad 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -27,8 +27,7 @@
  */
 void Curl_expire(struct SessionHandle *data, long milli);
 void Curl_expire_latest(struct SessionHandle *data, long milli);
-
-bool Curl_multi_pipeline_enabled(const struct Curl_multi* multi);
+bool Curl_pipeline_wanted(const struct Curl_multi* multi, int bits);
 void Curl_multi_handlePipeBreak(struct SessionHandle *data);
 
 /* Internal version of curl_multi_init() accepts size parameters for the
@@ -60,9 +59,6 @@ void Curl_multi_process_pending_handles(struct Curl_multi *multi);
 /* Return the value of the CURLMOPT_MAX_HOST_CONNECTIONS option */
 size_t Curl_multi_max_host_connections(struct Curl_multi *multi);
 
-/* Return the value of the CURLMOPT_MAX_PIPELINE_LENGTH option */
-size_t Curl_multi_max_pipeline_length(struct Curl_multi *multi);
-
 /* Return the value of the CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE option */
 curl_off_t Curl_multi_content_length_penalty_size(struct Curl_multi *multi);
 
@@ -78,6 +74,8 @@ struct curl_llist *Curl_multi_pipelining_server_bl(struct Curl_multi *multi);
 /* Return the value of the CURLMOPT_MAX_TOTAL_CONNECTIONS option */
 size_t Curl_multi_max_total_connections(struct Curl_multi *multi);
 
+void Curl_multi_connchanged(struct Curl_multi *multi);
+
 /*
  * Curl_multi_closed()
  *
@@ -90,4 +88,10 @@ size_t Curl_multi_max_total_connections(struct Curl_multi *multi);
 
 void Curl_multi_closed(struct connectdata *conn, curl_socket_t s);
 
+/*
+ * Add a handle and move it into PERFORM state at once. For pushed streams.
+ */
+CURLMcode Curl_multi_add_perform(struct Curl_multi *multi,
+                                 struct SessionHandle *data,
+                                 struct connectdata *conn);
 #endif /* HEADER_CURL_MULTIIF_H */
index 7435d94..06f8ea1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include "strequal.h"
 #include "strtok.h"
-#include "curl_memory.h"
 #include "rawstr.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /* Get user and password from .netrc when given a machine name */
@@ -104,16 +102,16 @@ int Curl_parsenetrc(const char *host,
 
     netrcfile = curl_maprintf("%s%s%s", home, DIR_CHAR, NETRC);
     if(home_alloc)
-      Curl_safefree(home);
+      free(home);
     if(!netrcfile) {
       return -1;
     }
     netrc_alloc = TRUE;
   }
 
-  file = fopen(netrcfile, "r");
+  file = fopen(netrcfile, FOPEN_READTEXT);
   if(netrc_alloc)
-    Curl_safefree(netrcfile);
+    free(netrcfile);
   if(file) {
     char *tok;
     char *tok_buf;
@@ -139,6 +137,10 @@ int Curl_parsenetrc(const char *host,
                'password'. */
             state=HOSTFOUND;
           }
+          else if(Curl_raw_equal("default", tok)) {
+            state=HOSTVALID;
+            retcode=0; /* we did find our host */
+          }
           break;
         case HOSTFOUND:
           if(Curl_raw_equal(host, tok)) {
index 252bf11..bd3f27e 100644 (file)
@@ -282,9 +282,7 @@ int DisposeLibraryData( void *data )
   if(data) {
     void *tenbytes = ((libdata_t *) data)->tenbytes;
 
-    if(tenbytes)
-      free(tenbytes);
-
+    free(tenbytes);
     free(data);
   }
 
@@ -296,9 +294,7 @@ void DisposeThreadData( void *data )
   if(data) {
     void *twentybytes = ((libthreaddata_t *) data)->twentybytes;
 
-    if(twentybytes)
-      free(twentybytes);
-
+    free(twentybytes);
     free(data);
   }
 }
index b94c034..bee552f 100644 (file)
@@ -5,8 +5,8 @@
  *                | (__| |_| |  _ <| |___
  *                 \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2010, 2013, Howard Chu, <hyc@openldap.org>
- * Copyright (C) 2011 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010, Howard Chu, <hyc@openldap.org>
+ * Copyright (C) 2011 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "vtls/vtls.h"
 #include "transfer.h"
 #include "curl_ldap.h"
-#include "curl_memory.h"
 #include "curl_base64.h"
 #include "connect.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 #ifndef _LDAP_PVT_H
@@ -230,7 +229,7 @@ static CURLcode ldap_connecting(struct connectdata *conn, bool *done)
   ldapconninfo *li = conn->proto.generic;
   struct SessionHandle *data = conn->data;
   LDAPMessage *msg = NULL;
-  struct timeval tv = {0,1}, *tvp;
+  struct timeval tv = {0, 1}, *tvp;
   int rc, err;
   char *info = NULL;
 
@@ -381,7 +380,7 @@ static CURLcode ldap_do(struct connectdata *conn, bool *done)
     failf(data, "LDAP local: ldap_search_ext %s", ldap_err2string(rc));
     return CURLE_LDAP_SEARCH_FAILED;
   }
-  lr = calloc(1,sizeof(ldapreqinfo));
+  lr = calloc(1, sizeof(ldapreqinfo));
   if(!lr)
     return CURLE_OUT_OF_MEMORY;
   lr->msgid = msgid;
@@ -423,7 +422,7 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
   LDAPMessage *msg = NULL;
   LDAPMessage *ent;
   BerElement *ber = NULL;
-  struct timeval tv = {0,1};
+  struct timeval tv = {0, 1};
 
   (void)len;
   (void)buf;
index 2c2741f..1670792 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -34,9 +34,7 @@
 #include "multiif.h"
 #include "non-ascii.h"
 #include "vtls/vtls.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 
 #include "curl_memory.h"
 /* The last #include file should be: */
@@ -495,10 +493,8 @@ CURLcode Curl_pp_flushsend(struct pingpong *pp)
 
 CURLcode Curl_pp_disconnect(struct pingpong *pp)
 {
-  if(pp->cache) {
-    free(pp->cache);
-    pp->cache = NULL;
-  }
+  free(pp->cache);
+  pp->cache = NULL;
   return CURLE_OK;
 }
 
index 2645fdb..1b38836 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2013, Linus Nielsen Feltzing, <linus@haxx.se>
- * Copyright (C) 2013-2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2013-2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -32,7 +32,6 @@
 #include "pipeline.h"
 #include "sendf.h"
 #include "rawstr.h"
-#include "bundles.h"
 
 #include "curl_memory.h"
 /* The last #include file should be: */
@@ -49,15 +48,13 @@ static void site_blacklist_llist_dtor(void *user, void *element)
   (void)user;
 
   Curl_safefree(entry->hostname);
-  Curl_safefree(entry);
+  free(entry);
 }
 
 static void server_blacklist_llist_dtor(void *user, void *element)
 {
-  char *server_name = element;
   (void)user;
-
-  Curl_safefree(server_name);
+  free(element);
 }
 
 bool Curl_pipeline_penalized(struct SessionHandle *data,
@@ -94,6 +91,15 @@ bool Curl_pipeline_penalized(struct SessionHandle *data,
   return FALSE;
 }
 
+static CURLcode addHandleToPipeline(struct SessionHandle *data,
+                                    struct curl_llist *pipeline)
+{
+  if(!Curl_llist_insert_next(pipeline, pipeline->tail, data))
+    return CURLE_OUT_OF_MEMORY;
+  return CURLE_OK;
+}
+
+
 CURLcode Curl_add_handle_to_pipeline(struct SessionHandle *handle,
                                      struct connectdata *conn)
 {
@@ -103,11 +109,11 @@ CURLcode Curl_add_handle_to_pipeline(struct SessionHandle *handle,
 
   pipeline = conn->send_pipe;
 
-  result = Curl_addHandleToPipeline(handle, pipeline);
+  result = addHandleToPipeline(handle, pipeline);
 
   if(pipeline == conn->send_pipe && sendhead != conn->send_pipe->head) {
     /* this is a new one as head, expire it */
-    conn->writechannel_inuse = FALSE; /* not in use yet */
+    Curl_pipeline_leave_write(conn); /* not in use yet */
     Curl_expire(conn->send_pipe->head->ptr, 1);
   }
 
@@ -138,7 +144,7 @@ void Curl_move_handle_from_send_to_recv_pipe(struct SessionHandle *handle,
       if(conn->send_pipe->head) {
         /* Since there's a new easy handle at the start of the send pipeline,
            set its timeout value to 1ms to make it trigger instantly */
-        conn->writechannel_inuse = FALSE; /* not used now */
+        Curl_pipeline_leave_write(conn); /* not used now */
 #ifdef DEBUGBUILD
         infof(conn->data, "%p is at send pipe head B!\n",
               (void *)conn->send_pipe->head->ptr);
@@ -314,6 +320,93 @@ CURLMcode Curl_pipeline_set_server_blacklist(char **servers,
   return CURLM_OK;
 }
 
+static bool pipe_head(struct SessionHandle *data,
+                      struct curl_llist *pipeline)
+{
+  struct curl_llist_element *curr = pipeline->head;
+  if(curr)
+    return (curr->ptr == data) ? TRUE : FALSE;
+
+  return FALSE;
+}
+
+/* returns TRUE if the given handle is head of the recv pipe */
+bool Curl_recvpipe_head(struct SessionHandle *data,
+                        struct connectdata *conn)
+{
+  return pipe_head(data, conn->recv_pipe);
+}
+
+/* returns TRUE if the given handle is head of the send pipe */
+bool Curl_sendpipe_head(struct SessionHandle *data,
+                        struct connectdata *conn)
+{
+  return pipe_head(data, conn->send_pipe);
+}
+
+
+/*
+ * Check if the write channel is available and this handle as at the head,
+ * then grab the channel and return TRUE.
+ *
+ * If not available, return FALSE.
+ */
+
+bool Curl_pipeline_checkget_write(struct SessionHandle *data,
+                                  struct connectdata *conn)
+{
+  if(conn->bits.multiplex)
+    /* when multiplexing, we can use it at once */
+    return TRUE;
+
+  if(!conn->writechannel_inuse && Curl_sendpipe_head(data, conn)) {
+    /* Grab the channel */
+    conn->writechannel_inuse = TRUE;
+    return TRUE;
+  }
+  return FALSE;
+}
+
+
+/*
+ * Check if the read channel is available and this handle as at the head, then
+ * grab the channel and return TRUE.
+ *
+ * If not available, return FALSE.
+ */
+
+bool Curl_pipeline_checkget_read(struct SessionHandle *data,
+                                 struct connectdata *conn)
+{
+  if(conn->bits.multiplex)
+    /* when multiplexing, we can use it at once */
+    return TRUE;
+
+  if(!conn->readchannel_inuse && Curl_recvpipe_head(data, conn)) {
+    /* Grab the channel */
+    conn->readchannel_inuse = TRUE;
+    return TRUE;
+  }
+  return FALSE;
+}
+
+/*
+ * The current user of the pipeline write channel gives it up.
+ */
+void Curl_pipeline_leave_write(struct connectdata *conn)
+{
+  conn->writechannel_inuse = FALSE;
+}
+
+/*
+ * The current user of the pipeline read channel gives it up.
+ */
+void Curl_pipeline_leave_read(struct connectdata *conn)
+{
+  conn->readchannel_inuse = FALSE;
+}
+
+
 #if 0
 void print_pipeline(struct connectdata *conn)
 {
index 96c4c33..bf229f1 100644 (file)
@@ -7,6 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
+ * Copyright (C) 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2013 - 2014, Linus Nielsen Feltzing, <linus@haxx.se>
  *
  * This software is licensed as described in the file COPYING, which
@@ -41,4 +42,15 @@ bool Curl_pipeline_server_blacklisted(struct SessionHandle *handle,
 CURLMcode Curl_pipeline_set_server_blacklist(char **servers,
                                              struct curl_llist **list_ptr);
 
+bool Curl_pipeline_checkget_write(struct SessionHandle *data,
+                                  struct connectdata *conn);
+bool Curl_pipeline_checkget_read(struct SessionHandle *data,
+                                 struct connectdata *conn);
+void Curl_pipeline_leave_write(struct connectdata *conn);
+void Curl_pipeline_leave_read(struct connectdata *conn);
+bool Curl_recvpipe_head(struct SessionHandle *data,
+                        struct connectdata *conn);
+bool Curl_sendpipe_head(struct SessionHandle *data,
+                        struct connectdata *conn);
+
 #endif /* HEADER_CURL_PIPELINE_H */
index 6600459..53510a2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "curl_sasl.h"
 #include "curl_md5.h"
 #include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -106,10 +103,10 @@ static CURLcode pop3_setup_connection(struct connectdata *conn);
 static CURLcode pop3_parse_url_options(struct connectdata *conn);
 static CURLcode pop3_parse_url_path(struct connectdata *conn);
 static CURLcode pop3_parse_custom_request(struct connectdata *conn);
-static CURLcode pop3_calc_sasl_details(struct connectdata *conn,
-                                       const char **mech,
-                                       char **initresp, size_t *len,
-                                       pop3state *state1, pop3state *state2);
+static CURLcode pop3_perform_auth(struct connectdata *conn, const char *mech,
+                                  const char *initresp);
+static CURLcode pop3_continue_auth(struct connectdata *conn, const char *resp);
+static void pop3_get_message(char *buffer, char** outptr);
 
 /*
  * POP3 protocol handler.
@@ -214,6 +211,17 @@ static const struct Curl_handler Curl_handler_pop3s_proxy = {
 #endif
 #endif
 
+/* SASL parameters for the pop3 protocol */
+static const struct SASLproto saslpop3 = {
+  "pop",                      /* The service name */
+  '+',                        /* Code received when continuation is expected */
+  '+',                        /* Code to receive upon authentication success */
+  255 - 8,                    /* Maximum initial response length (no max) */
+  pop3_perform_auth,          /* Send authentication command */
+  pop3_continue_auth,         /* Send authentication continuation */
+  pop3_get_message            /* Get SASL response message */
+};
+
 #ifdef USE_SSL
 static void pop3_to_pop3s(struct connectdata *conn)
 {
@@ -312,20 +320,7 @@ static void state(struct connectdata *conn, pop3state newstate)
     "CAPA",
     "STARTTLS",
     "UPGRADETLS",
-    "AUTH_PLAIN",
-    "AUTH_LOGIN",
-    "AUTH_LOGIN_PASSWD",
-    "AUTH_CRAMMD5",
-    "AUTH_DIGESTMD5",
-    "AUTH_DIGESTMD5_RESP",
-    "AUTH_NTLM",
-    "AUTH_NTLM_TYPE2MSG",
-    "AUTH_GSSAPI",
-    "AUTH_GSSAPI_TOKEN",
-    "AUTH_GSSAPI_NO_DATA",
-    "AUTH_XOAUTH2",
-    "AUTH_CANCEL",
-    "AUTH_FINAL",
+    "AUTH",
     "APOP",
     "USER",
     "PASS",
@@ -354,9 +349,9 @@ static CURLcode pop3_perform_capa(struct connectdata *conn)
   CURLcode result = CURLE_OK;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
 
-  pop3c->authmechs = 0;         /* No known authentication mechanisms yet */
-  pop3c->authused = 0;          /* Clear the authentication mechanism used */
-  pop3c->tls_supported = FALSE; /* Clear the TLS capability */
+  pop3c->sasl.authmechs = SASL_AUTH_NONE; /* No known auth. mechanisms yet */
+  pop3c->sasl.authused = SASL_AUTH_NONE;  /* Clear the auth. mechanism used */
+  pop3c->tls_supported = FALSE;           /* Clear the TLS capability */
 
   /* Send the CAPA command */
   result = Curl_pp_sendf(&pop3c->pp, "%s", "CAPA");
@@ -500,25 +495,18 @@ static CURLcode pop3_perform_apop(struct connectdata *conn)
  */
 static CURLcode pop3_perform_auth(struct connectdata *conn,
                                   const char *mech,
-                                  const char *initresp, size_t len,
-                                  pop3state state1, pop3state state2)
+                                  const char *initresp)
 {
   CURLcode result = CURLE_OK;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
 
-  if(initresp && 8 + strlen(mech) + len <= 255) { /* AUTH <mech> ...<crlf> */
+  if(initresp) {                                  /* AUTH <mech> ...<crlf> */
     /* Send the AUTH command with the initial response */
     result = Curl_pp_sendf(&pop3c->pp, "AUTH %s %s", mech, initresp);
-
-    if(!result)
-      state(conn, state2);
   }
   else {
     /* Send the AUTH command */
     result = Curl_pp_sendf(&pop3c->pp, "AUTH %s", mech);
-
-    if(!result)
-      state(conn, state1);
   }
 
   return result;
@@ -526,6 +514,20 @@ static CURLcode pop3_perform_auth(struct connectdata *conn,
 
 /***********************************************************************
  *
+ * pop3_continue_auth()
+ *
+ * Sends SASL continuation data or cancellation.
+ */
+static CURLcode pop3_continue_auth(struct connectdata *conn,
+                                   const char *resp)
+{
+  struct pop3_conn *pop3c = &conn->proto.pop3c;
+
+  return Curl_pp_sendf(&pop3c->pp, "%s", resp);
+}
+
+/***********************************************************************
+ *
  * pop3_perform_authentication()
  *
  * Initiates the authentication sequence, with the appropriate SASL
@@ -536,38 +538,32 @@ static CURLcode pop3_perform_authentication(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
-  const char *mech = NULL;
-  char *initresp = NULL;
-  size_t len = 0;
-  pop3state state1 = POP3_STOP;
-  pop3state state2 = POP3_STOP;
+  saslprogress progress = SASL_IDLE;
 
-  /* Check we have a username and password to authenticate with and end the
+  /* Check we have enough data to authenticate with and end the
      connect phase if we don't */
-  if(!conn->bits.user_passwd) {
+  if(!Curl_sasl_can_authenticate(&pop3c->sasl, conn)) {
     state(conn, POP3_STOP);
-
     return result;
   }
 
-  /* Calculate the SASL login details */
-  if(pop3c->authtypes & POP3_TYPE_SASL)
-    result = pop3_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
-                                    &state2);
+  if(pop3c->authtypes & pop3c->preftype & POP3_TYPE_SASL) {
+    /* Calculate the SASL login details */
+    result = Curl_sasl_start(&pop3c->sasl, conn, FALSE, &progress);
 
-  if(!result) {
-    if(mech && (pop3c->preftype & POP3_TYPE_SASL)) {
-      /* Perform SASL based authentication */
-      result = pop3_perform_auth(conn, mech, initresp, len, state1, state2);
-    }
+    if(!result)
+      if(progress == SASL_INPROGRESS)
+        state(conn, POP3_AUTH);
+  }
+
+  if(!result && progress == SASL_IDLE) {
 #ifndef CURL_DISABLE_CRYPTO_AUTH
-    else if((pop3c->authtypes & POP3_TYPE_APOP) &&
-            (pop3c->preftype & POP3_TYPE_APOP))
+    if(pop3c->authtypes & pop3c->preftype & POP3_TYPE_APOP)
       /* Perform APOP authentication */
       result = pop3_perform_apop(conn);
+    else
 #endif
-    else if((pop3c->authtypes & POP3_TYPE_CLEARTEXT) &&
-            (pop3c->preftype & POP3_TYPE_CLEARTEXT))
+    if(pop3c->authtypes & pop3c->preftype & POP3_TYPE_CLEARTEXT)
       /* Perform clear text authentication */
       result = pop3_perform_user(conn);
     else {
@@ -577,8 +573,6 @@ static CURLcode pop3_perform_authentication(struct connectdata *conn)
     }
   }
 
-  Curl_safefree(initresp);
-
   return result;
 }
 
@@ -726,6 +720,9 @@ static CURLcode pop3_state_capa_resp(struct connectdata *conn, int pop3code,
 
       /* Loop through the data line */
       for(;;) {
+        size_t llen;
+        unsigned int mechbit;
+
         while(len &&
               (*line == ' ' || *line == '\t' ||
                *line == '\r' || *line == '\n')) {
@@ -744,22 +741,9 @@ static CURLcode pop3_state_capa_resp(struct connectdata *conn, int pop3code,
           wordlen++;
 
         /* Test the word for a matching authentication mechanism */
-        if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_LOGIN))
-          pop3c->authmechs |= SASL_MECH_LOGIN;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_PLAIN))
-          pop3c->authmechs |= SASL_MECH_PLAIN;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_CRAM_MD5))
-          pop3c->authmechs |= SASL_MECH_CRAM_MD5;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_DIGEST_MD5))
-          pop3c->authmechs |= SASL_MECH_DIGEST_MD5;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_GSSAPI))
-          pop3c->authmechs |= SASL_MECH_GSSAPI;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_EXTERNAL))
-          pop3c->authmechs |= SASL_MECH_EXTERNAL;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_NTLM))
-          pop3c->authmechs |= SASL_MECH_NTLM;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_XOAUTH2))
-          pop3c->authmechs |= SASL_MECH_XOAUTH2;
+        if((mechbit = Curl_sasl_decode_mech(line, wordlen, &llen)) &&
+           llen == wordlen)
+          pop3c->sasl.authmechs |= mechbit;
 
         line += wordlen;
         len -= wordlen;
@@ -817,575 +801,42 @@ static CURLcode pop3_state_starttls_resp(struct connectdata *conn,
   return result;
 }
 
-/* For AUTH PLAIN (without initial response) responses */
-static CURLcode pop3_state_auth_plain_resp(struct connectdata *conn,
-                                           int pop3code,
-                                           pop3state instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *plainauth = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(pop3code != '+') {
-    failf(data, "Access denied. %c", pop3code);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the authorisation message */
-    result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
-                                            &plainauth, &len);
-    if(!result && plainauth) {
-      /* Send the message */
-      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", plainauth);
-
-      if(!result)
-        state(conn, POP3_AUTH_FINAL);
-    }
-  }
-
-  Curl_safefree(plainauth);
-
-  return result;
-}
-
-/* For AUTH LOGIN (without initial response) responses */
-static CURLcode pop3_state_auth_login_resp(struct connectdata *conn,
-                                           int pop3code,
-                                           pop3state instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *authuser = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(pop3code != '+') {
-    failf(data, "Access denied: %d", pop3code);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the user message */
-    result = Curl_sasl_create_login_message(data, conn->user,
-                                            &authuser, &len);
-    if(!result && authuser) {
-      /* Send the user */
-      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", authuser);
-
-      if(!result)
-        state(conn, POP3_AUTH_LOGIN_PASSWD);
-    }
-  }
-
-  Curl_safefree(authuser);
-
-  return result;
-}
-
-/* For AUTH LOGIN user entry responses */
-static CURLcode pop3_state_auth_login_password_resp(struct connectdata *conn,
-                                                    int pop3code,
-                                                    pop3state instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *authpasswd = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(pop3code != '+') {
-    failf(data, "Access denied: %d", pop3code);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the password message */
-    result = Curl_sasl_create_login_message(data, conn->passwd,
-                                            &authpasswd, &len);
-    if(!result && authpasswd) {
-      /* Send the password */
-      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", authpasswd);
-
-      if(!result)
-        state(conn, POP3_AUTH_FINAL);
-    }
-  }
-
-  Curl_safefree(authpasswd);
-
-  return result;
-}
-
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-/* For AUTH CRAM-MD5 responses */
-static CURLcode pop3_state_auth_cram_resp(struct connectdata *conn,
-                                          int pop3code,
-                                          pop3state instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  char *chlg = NULL;
-  char *chlg64 = NULL;
-  char *rplyb64 = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(pop3code != '+') {
-    failf(data, "Access denied: %d", pop3code);
-    return CURLE_LOGIN_DENIED;
-  }
-
-  /* Get the challenge message */
-  pop3_get_message(data->state.buffer, &chlg64);
-
-  /* Decode the challenge message */
-  result = Curl_sasl_decode_cram_md5_message(chlg64, &chlg, &len);
-  if(result) {
-    /* Send the cancellation */
-    result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "*");
-
-    if(!result)
-      state(conn, POP3_AUTH_CANCEL);
-  }
-  else {
-    /* Create the response message */
-    result = Curl_sasl_create_cram_md5_message(data, chlg, conn->user,
-                                               conn->passwd, &rplyb64, &len);
-    if(!result && rplyb64) {
-      /* Send the response */
-      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", rplyb64);
-
-      if(!result)
-        state(conn, POP3_AUTH_FINAL);
-    }
-  }
-
-  Curl_safefree(chlg);
-  Curl_safefree(rplyb64);
-
-  return result;
-}
-
-/* For AUTH DIGEST-MD5 challenge responses */
-static CURLcode pop3_state_auth_digest_resp(struct connectdata *conn,
-                                            int pop3code,
-                                            pop3state instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  char *chlg64 = NULL;
-  char *rplyb64 = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(pop3code != '+') {
-    failf(data, "Access denied: %d", pop3code);
-    return CURLE_LOGIN_DENIED;
-  }
-
-  /* Get the challenge message */
-  pop3_get_message(data->state.buffer, &chlg64);
-
-  /* Create the response message */
-  result = Curl_sasl_create_digest_md5_message(data, chlg64,
-                                               conn->user, conn->passwd,
-                                               "pop", &rplyb64, &len);
-  if(result) {
-    if(result == CURLE_BAD_CONTENT_ENCODING) {
-      /* Send the cancellation */
-      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "*");
-
-      if(!result)
-        state(conn, POP3_AUTH_CANCEL);
-    }
-  }
-  else {
-    /* Send the response */
-    result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", rplyb64);
-
-    if(!result)
-      state(conn, POP3_AUTH_DIGESTMD5_RESP);
-  }
-
-  Curl_safefree(rplyb64);
-
-  return result;
-}
-
-/* For AUTH DIGEST-MD5 challenge-response responses */
-static CURLcode pop3_state_auth_digest_resp_resp(struct connectdata *conn,
-                                                 int pop3code,
-                                                 pop3state instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-
-  (void)instate; /* no use for this yet */
-
-  if(pop3code != '+') {
-    failf(data, "Authentication failed: %d", pop3code);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Send an empty response */
-    result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "");
-
-    if(!result)
-      state(conn, POP3_AUTH_FINAL);
-  }
-
-  return result;
-}
-#endif
-
-#ifdef USE_NTLM
-/* For AUTH NTLM (without initial response) responses */
-static CURLcode pop3_state_auth_ntlm_resp(struct connectdata *conn,
-                                          int pop3code,
-                                          pop3state instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *type1msg = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(pop3code != '+') {
-    failf(data, "Access denied: %d", pop3code);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the type-1 message */
-    result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
-                                                 &conn->ntlm,
-                                                 &type1msg, &len);
-    if(!result && type1msg) {
-      /* Send the message */
-      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", type1msg);
-
-      if(!result)
-        state(conn, POP3_AUTH_NTLM_TYPE2MSG);
-    }
-  }
-
-  Curl_safefree(type1msg);
-
-  return result;
-}
-
-/* For NTLM type-2 responses (sent in reponse to our type-1 message) */
-static CURLcode pop3_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
-                                                   int pop3code,
-                                                   pop3state instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  char *type2msg = NULL;
-  char *type3msg = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(pop3code != '+') {
-    failf(data, "Access denied: %d", pop3code);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Get the type-2 message */
-    pop3_get_message(data->state.buffer, &type2msg);
-
-    /* Decode the type-2 message */
-    result = Curl_sasl_decode_ntlm_type2_message(data, type2msg, &conn->ntlm);
-    if(result) {
-      /* Send the cancellation */
-      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "*");
-
-      if(!result)
-        state(conn, POP3_AUTH_CANCEL);
-    }
-    else {
-      /* Create the type-3 message */
-      result = Curl_sasl_create_ntlm_type3_message(data, conn->user,
-                                                   conn->passwd, &conn->ntlm,
-                                                   &type3msg, &len);
-      if(!result && type3msg) {
-        /* Send the message */
-        result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", type3msg);
-
-        if(!result)
-          state(conn, POP3_AUTH_FINAL);
-      }
-    }
-  }
-
-  Curl_safefree(type3msg);
-
-  return result;
-}
-#endif
-
-#if defined(USE_KERBEROS5)
-/* For AUTH GSSAPI (without initial response) responses */
-static CURLcode pop3_state_auth_gssapi_resp(struct connectdata *conn,
-                                            int pop3code,
-                                            pop3state instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  struct pop3_conn *pop3c = &conn->proto.pop3c;
-  size_t len = 0;
-  char *respmsg = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(pop3code != '+') {
-    failf(data, "Access denied: %d", pop3code);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the initial response message */
-    result = Curl_sasl_create_gssapi_user_message(data, conn->user,
-                                                  conn->passwd, "pop",
-                                                  pop3c->mutual_auth,
-                                                  NULL, &conn->krb5,
-                                                  &respmsg, &len);
-    if(!result && respmsg) {
-      /* Send the message */
-      result = Curl_pp_sendf(&pop3c->pp, "%s", respmsg);
-
-      if(!result)
-        state(conn, POP3_AUTH_GSSAPI_TOKEN);
-    }
-  }
-
-  Curl_safefree(respmsg);
-
-  return result;
-}
-
-/* For AUTH GSSAPI user token responses */
-static CURLcode pop3_state_auth_gssapi_token_resp(struct connectdata *conn,
-                                                  int pop3code,
-                                                  pop3state instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  struct pop3_conn *pop3c = &conn->proto.pop3c;
-  char *chlgmsg = NULL;
-  char *respmsg = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(pop3code != '+') {
-    failf(data, "Access denied: %d", pop3code);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Get the challenge message */
-    pop3_get_message(data->state.buffer, &chlgmsg);
-
-    if(pop3c->mutual_auth)
-      /* Decode the user token challenge and create the optional response
-         message */
-      result = Curl_sasl_create_gssapi_user_message(data, NULL, NULL, NULL,
-                                                    pop3c->mutual_auth,
-                                                    chlgmsg, &conn->krb5,
-                                                    &respmsg, &len);
-    else
-      /* Decode the security challenge and create the response message */
-      result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
-                                                        &conn->krb5,
-                                                        &respmsg, &len);
-
-    if(result) {
-      if(result == CURLE_BAD_CONTENT_ENCODING) {
-        /* Send the cancellation */
-        result = Curl_pp_sendf(&pop3c->pp, "%s", "*");
-
-        if(!result)
-          state(conn, POP3_AUTH_CANCEL);
-      }
-    }
-    else {
-      /* Send the response */
-      if(respmsg)
-        result = Curl_pp_sendf(&pop3c->pp, "%s", respmsg);
-      else
-        result = Curl_pp_sendf(&pop3c->pp, "%s", "");
-
-      if(!result)
-        state(conn, (pop3c->mutual_auth ? POP3_AUTH_GSSAPI_NO_DATA :
-                                          POP3_AUTH_FINAL));
-    }
-  }
-
-  Curl_safefree(respmsg);
-
-  return result;
-}
-
-/* For AUTH GSSAPI no data responses */
-static CURLcode pop3_state_auth_gssapi_no_data_resp(struct connectdata *conn,
-                                                    int pop3code,
-                                                    pop3state instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  char *chlgmsg = NULL;
-  char *respmsg = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(pop3code != '+') {
-    failf(data, "Access denied: %d", pop3code);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Get the challenge message */
-    pop3_get_message(data->state.buffer, &chlgmsg);
-
-    /* Decode the security challenge and create the security message */
-    result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
-                                                      &conn->krb5,
-                                                      &respmsg, &len);
-    if(result) {
-      if(result == CURLE_BAD_CONTENT_ENCODING) {
-        /* Send the cancellation */
-        result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "*");
-
-        if(!result)
-          state(conn, POP3_AUTH_CANCEL);
-      }
-    }
-    else {
-      /* Send the response */
-      if(respmsg) {
-        result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", respmsg);
-
-        if(!result)
-          state(conn, POP3_AUTH_FINAL);
-      }
-    }
-  }
-
-  Curl_safefree(respmsg);
-
-  return result;
-}
-#endif
-
-/* For AUTH XOAUTH2 (without initial response) responses */
-static CURLcode pop3_state_auth_xoauth2_resp(struct connectdata *conn,
-                                             int pop3code, pop3state instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *xoauth = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(pop3code != '+') {
-    failf(data, "Access denied: %d", pop3code);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the authorisation message */
-    result = Curl_sasl_create_xoauth2_message(conn->data, conn->user,
-                                              conn->xoauth2_bearer,
-                                              &xoauth, &len);
-    if(!result && xoauth) {
-      /* Send the message */
-      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", xoauth);
-
-      if(!result)
-        state(conn, POP3_AUTH_FINAL);
-    }
-  }
-
-  Curl_safefree(xoauth);
-
-  return result;
-}
-
-/* For AUTH cancellation responses */
-static CURLcode pop3_state_auth_cancel_resp(struct connectdata *conn,
-                                            int pop3code,
-                                            pop3state instate)
+/* For SASL authentication responses */
+static CURLcode pop3_state_auth_resp(struct connectdata *conn,
+                                     int pop3code,
+                                     pop3state instate)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
-  const char *mech = NULL;
-  char *initresp = NULL;
-  size_t len = 0;
-  pop3state state1 = POP3_STOP;
-  pop3state state2 = POP3_STOP;
+  saslprogress progress;
 
-  (void)pop3code;
   (void)instate; /* no use for this yet */
 
-  /* Remove the offending mechanism from the supported list */
-  pop3c->authmechs ^= pop3c->authused;
-
-  /* Calculate alternative SASL login details */
-  result = pop3_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
-                                  &state2);
-
-  if(!result) {
-    /* Do we have any mechanisms left or can we fallback to another
-       authentication type? */
-    if(mech) {
-      /* Retry SASL based authentication */
-      result = pop3_perform_auth(conn, mech, initresp, len, state1, state2);
-
-      Curl_safefree(initresp);
-    }
+  result = Curl_sasl_continue(&pop3c->sasl, conn, pop3code, &progress);
+  if(!result)
+    switch(progress) {
+    case SASL_DONE:
+      state(conn, POP3_STOP);  /* Authenticated */
+      break;
+    case SASL_IDLE:            /* No mechanism left after cancellation */
 #ifndef CURL_DISABLE_CRYPTO_AUTH
-    else if((pop3c->authtypes & POP3_TYPE_APOP) &&
-            (pop3c->preftype & POP3_TYPE_APOP))
-      /* Perform APOP authentication */
-      result = pop3_perform_apop(conn);
+      if(pop3c->authtypes & pop3c->preftype & POP3_TYPE_APOP)
+        /* Perform APOP authentication */
+        result = pop3_perform_apop(conn);
+      else
 #endif
-    else if((pop3c->authtypes & POP3_TYPE_CLEARTEXT) &&
-            (pop3c->preftype & POP3_TYPE_CLEARTEXT))
-      /* Perform clear text authentication */
-      result = pop3_perform_user(conn);
-    else {
-      failf(data, "Authentication cancelled");
-
-      result = CURLE_LOGIN_DENIED;
+      if(pop3c->authtypes & pop3c->preftype & POP3_TYPE_CLEARTEXT)
+        /* Perform clear text authentication */
+        result = pop3_perform_user(conn);
+      else {
+        failf(data, "Authentication cancelled");
+        result = CURLE_LOGIN_DENIED;
+      }
+      break;
+    default:
+      break;
     }
-  }
-
-  return result;
-}
-
-/* For final responses in the AUTH sequence */
-static CURLcode pop3_state_auth_final_resp(struct connectdata *conn,
-                                           int pop3code,
-                                           pop3state instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-
-  (void)instate; /* no use for this yet */
-
-  if(pop3code != '+') {
-    failf(data, "Authentication failed: %d", pop3code);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else
-    /* End of connect phase */
-    state(conn, POP3_STOP);
 
   return result;
 }
@@ -1552,69 +1003,8 @@ static CURLcode pop3_statemach_act(struct connectdata *conn)
       result = pop3_state_starttls_resp(conn, pop3code, pop3c->state);
       break;
 
-    case POP3_AUTH_PLAIN:
-      result = pop3_state_auth_plain_resp(conn, pop3code, pop3c->state);
-      break;
-
-    case POP3_AUTH_LOGIN:
-      result = pop3_state_auth_login_resp(conn, pop3code, pop3c->state);
-      break;
-
-    case POP3_AUTH_LOGIN_PASSWD:
-      result = pop3_state_auth_login_password_resp(conn, pop3code,
-                                                   pop3c->state);
-      break;
-
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-    case POP3_AUTH_CRAMMD5:
-      result = pop3_state_auth_cram_resp(conn, pop3code, pop3c->state);
-      break;
-
-    case POP3_AUTH_DIGESTMD5:
-      result = pop3_state_auth_digest_resp(conn, pop3code, pop3c->state);
-      break;
-
-    case POP3_AUTH_DIGESTMD5_RESP:
-      result = pop3_state_auth_digest_resp_resp(conn, pop3code, pop3c->state);
-      break;
-#endif
-
-#ifdef USE_NTLM
-    case POP3_AUTH_NTLM:
-      result = pop3_state_auth_ntlm_resp(conn, pop3code, pop3c->state);
-      break;
-
-    case POP3_AUTH_NTLM_TYPE2MSG:
-      result = pop3_state_auth_ntlm_type2msg_resp(conn, pop3code,
-                                                  pop3c->state);
-      break;
-#endif
-
-#if defined(USE_KERBEROS5)
-    case POP3_AUTH_GSSAPI:
-      result = pop3_state_auth_gssapi_resp(conn, pop3code, pop3c->state);
-      break;
-
-    case POP3_AUTH_GSSAPI_TOKEN:
-      result = pop3_state_auth_gssapi_token_resp(conn, pop3code, pop3c->state);
-      break;
-
-    case POP3_AUTH_GSSAPI_NO_DATA:
-      result = pop3_state_auth_gssapi_no_data_resp(conn, pop3code,
-                                                   pop3c->state);
-      break;
-#endif
-
-    case POP3_AUTH_XOAUTH2:
-      result = pop3_state_auth_xoauth2_resp(conn, pop3code, pop3c->state);
-      break;
-
-    case POP3_AUTH_CANCEL:
-      result = pop3_state_auth_cancel_resp(conn, pop3code, pop3c->state);
-      break;
-
-    case POP3_AUTH_FINAL:
-      result = pop3_state_auth_final_resp(conn, pop3code, pop3c->state);
+    case POP3_AUTH:
+      result = pop3_state_auth_resp(conn, pop3code, pop3c->state);
       break;
 
 #ifndef CURL_DISABLE_CRYPTO_AUTH
@@ -1727,7 +1117,7 @@ static CURLcode pop3_connect(struct connectdata *conn, bool *done)
 
   /* Set the default preferred authentication type and mechanism */
   pop3c->preftype = POP3_TYPE_ANY;
-  pop3c->prefmech = SASL_AUTH_ANY;
+  Curl_sasl_init(&pop3c->sasl, &saslpop3);
 
   /* Initialise the pingpong layer */
   Curl_pp_init(pp);
@@ -1879,7 +1269,7 @@ static CURLcode pop3_disconnect(struct connectdata *conn, bool dead_connection)
   Curl_pp_disconnect(&pop3c->pp);
 
   /* Cleanup the SASL module */
-  Curl_sasl_cleanup(conn, pop3c->authused);
+  Curl_sasl_cleanup(conn, pop3c->sasl.authused);
 
   /* Cleanup our connection based variables */
   Curl_safefree(pop3c->apoptimestamp);
@@ -1994,75 +1384,52 @@ static CURLcode pop3_parse_url_options(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
-  const char *options = conn->options;
-  const char *ptr = options;
-  bool reset = TRUE;
+  const char *ptr = conn->options;
 
-  while(ptr && *ptr) {
+  pop3c->sasl.resetprefs = TRUE;
+
+  while(!result && ptr && *ptr) {
     const char *key = ptr;
+    const char *value;
 
     while(*ptr && *ptr != '=')
         ptr++;
 
-    if(strnequal(key, "AUTH", 4)) {
-      size_t len = 0;
-      const char *value = ++ptr;
+    value = ptr + 1;
 
-      if(reset) {
-        reset = FALSE;
-        pop3c->preftype = POP3_TYPE_NONE;
-        pop3c->prefmech = SASL_AUTH_NONE;
-      }
+    while(*ptr && *ptr != ';')
+      ptr++;
 
-      while(*ptr && *ptr != ';') {
-        ptr++;
-        len++;
-      }
+    if(strnequal(key, "AUTH=", 5)) {
+      result = Curl_sasl_parse_url_auth_option(&pop3c->sasl,
+                                               value, ptr - value);
 
-      if(strnequal(value, "*", len)) {
-        pop3c->preftype = POP3_TYPE_ANY;
-        pop3c->prefmech = SASL_AUTH_ANY;
-      }
-      else if(strnequal(value, "+APOP", len)) {
+      if(result && strnequal(value, "+APOP", ptr - value)) {
         pop3c->preftype = POP3_TYPE_APOP;
-        pop3c->prefmech = SASL_AUTH_NONE;
-      }
-      else if(strnequal(value, SASL_MECH_STRING_LOGIN, len)) {
-        pop3c->preftype = POP3_TYPE_SASL;
-        pop3c->prefmech |= SASL_MECH_LOGIN;
-      }
-      else if(strnequal(value, SASL_MECH_STRING_PLAIN, len)) {
-        pop3c->preftype = POP3_TYPE_SASL;
-        pop3c->prefmech |= SASL_MECH_PLAIN;
-      }
-      else if(strnequal(value, SASL_MECH_STRING_CRAM_MD5, len)) {
-        pop3c->preftype = POP3_TYPE_SASL;
-        pop3c->prefmech |= SASL_MECH_CRAM_MD5;
-      }
-      else if(strnequal(value, SASL_MECH_STRING_DIGEST_MD5, len)) {
-        pop3c->preftype = POP3_TYPE_SASL;
-        pop3c->prefmech |= SASL_MECH_DIGEST_MD5;
-      }
-      else if(strnequal(value, SASL_MECH_STRING_GSSAPI, len)) {
-        pop3c->preftype = POP3_TYPE_SASL;
-        pop3c->prefmech |= SASL_MECH_GSSAPI;
-      }
-      else if(strnequal(value, SASL_MECH_STRING_NTLM, len)) {
-        pop3c->preftype = POP3_TYPE_SASL;
-        pop3c->prefmech |= SASL_MECH_NTLM;
+        pop3c->sasl.prefmech = SASL_AUTH_NONE;
+        result = CURLE_OK;
       }
-      else if(strnequal(value, SASL_MECH_STRING_XOAUTH2, len)) {
-        pop3c->preftype = POP3_TYPE_SASL;
-        pop3c->prefmech |= SASL_MECH_XOAUTH2;
-      }
-
-      if(*ptr == ';')
-        ptr++;
     }
     else
       result = CURLE_URL_MALFORMAT;
+
+    if(*ptr == ';')
+      ptr++;
   }
 
+  if(pop3c->preftype != POP3_TYPE_APOP)
+    switch(pop3c->sasl.prefmech) {
+    case SASL_AUTH_NONE:
+      pop3c->preftype = POP3_TYPE_NONE;
+      break;
+    case SASL_AUTH_DEFAULT:
+      pop3c->preftype = POP3_TYPE_ANY;
+      break;
+    default:
+      pop3c->preftype = POP3_TYPE_SASL;
+      break;
+    }
+
   return result;
 }
 
@@ -2105,110 +1472,6 @@ static CURLcode pop3_parse_custom_request(struct connectdata *conn)
 
 /***********************************************************************
  *
- * pop3_calc_sasl_details()
- *
- * Calculate the required login details for SASL authentication.
- */
-static CURLcode pop3_calc_sasl_details(struct connectdata *conn,
-                                       const char **mech,
-                                       char **initresp, size_t *len,
-                                       pop3state *state1, pop3state *state2)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  struct pop3_conn *pop3c = &conn->proto.pop3c;
-
-  /* Calculate the supported authentication mechanism, by decreasing order of
-     security, as well as the initial response where appropriate */
-#if defined(USE_KERBEROS5)
-  if((pop3c->authmechs & SASL_MECH_GSSAPI) &&
-      (pop3c->prefmech & SASL_MECH_GSSAPI)) {
-    pop3c->mutual_auth = FALSE; /* TODO: Calculate mutual authentication */
-
-    *mech = SASL_MECH_STRING_GSSAPI;
-    *state1 = POP3_AUTH_GSSAPI;
-    *state2 = POP3_AUTH_GSSAPI_TOKEN;
-    pop3c->authused = SASL_MECH_GSSAPI;
-
-    if(data->set.sasl_ir)
-      result = Curl_sasl_create_gssapi_user_message(data, conn->user,
-                                                    conn->passwd, "pop",
-                                                    pop3c->mutual_auth,
-                                                    NULL, &conn->krb5,
-                                                    initresp, len);
-  }
-  else
-#endif
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-  if((pop3c->authmechs & SASL_MECH_DIGEST_MD5) &&
-      (pop3c->prefmech & SASL_MECH_DIGEST_MD5)) {
-    *mech = SASL_MECH_STRING_DIGEST_MD5;
-    *state1 = POP3_AUTH_DIGESTMD5;
-    pop3c->authused = SASL_MECH_DIGEST_MD5;
-  }
-  else if((pop3c->authmechs & SASL_MECH_CRAM_MD5) &&
-          (pop3c->prefmech & SASL_MECH_CRAM_MD5)) {
-    *mech = SASL_MECH_STRING_CRAM_MD5;
-    *state1 = POP3_AUTH_CRAMMD5;
-    pop3c->authused = SASL_MECH_CRAM_MD5;
-  }
-  else
-#endif
-#ifdef USE_NTLM
-  if((pop3c->authmechs & SASL_MECH_NTLM) &&
-      (pop3c->prefmech & SASL_MECH_NTLM)) {
-    *mech = SASL_MECH_STRING_NTLM;
-    *state1 = POP3_AUTH_NTLM;
-    *state2 = POP3_AUTH_NTLM_TYPE2MSG;
-    pop3c->authused = SASL_MECH_NTLM;
-
-    if(data->set.sasl_ir)
-      result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
-                                                    &conn->ntlm,
-                                                    initresp, len);
-  }
-  else
-#endif
-  if(((pop3c->authmechs & SASL_MECH_XOAUTH2) &&
-      (pop3c->prefmech & SASL_MECH_XOAUTH2) &&
-      (pop3c->prefmech != SASL_AUTH_ANY)) || conn->xoauth2_bearer) {
-    *mech = SASL_MECH_STRING_XOAUTH2;
-    *state1 = POP3_AUTH_XOAUTH2;
-    *state2 = POP3_AUTH_FINAL;
-    pop3c->authused = SASL_MECH_XOAUTH2;
-
-    if(data->set.sasl_ir)
-      result = Curl_sasl_create_xoauth2_message(data, conn->user,
-                                                conn->xoauth2_bearer,
-                                                initresp, len);
-  }
-  else if((pop3c->authmechs & SASL_MECH_LOGIN) &&
-          (pop3c->prefmech & SASL_MECH_LOGIN)) {
-    *mech = SASL_MECH_STRING_LOGIN;
-    *state1 = POP3_AUTH_LOGIN;
-    *state2 = POP3_AUTH_LOGIN_PASSWD;
-    pop3c->authused = SASL_MECH_LOGIN;
-
-    if(data->set.sasl_ir)
-      result = Curl_sasl_create_login_message(data, conn->user, initresp, len);
-  }
-  else if((pop3c->authmechs & SASL_MECH_PLAIN) &&
-          (pop3c->prefmech & SASL_MECH_PLAIN)) {
-    *mech = SASL_MECH_STRING_PLAIN;
-    *state1 = POP3_AUTH_PLAIN;
-    *state2 = POP3_AUTH_FINAL;
-    pop3c->authused = SASL_MECH_PLAIN;
-
-    if(data->set.sasl_ir)
-      result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
-                                              initresp, len);
-  }
-
-  return result;
-}
-
-/***********************************************************************
- *
  * Curl_pop3_write()
  *
  * This function scans the body after the end-of-body and writes everything
index 729a55a..7bc53aa 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2009 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2009 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,6 +23,7 @@
  ***************************************************************************/
 
 #include "pingpong.h"
+#include "curl_sasl.h"
 
 /****************************************************************************
  * POP3 unique setup
@@ -35,20 +36,7 @@ typedef enum {
   POP3_STARTTLS,
   POP3_UPGRADETLS,   /* asynchronously upgrade the connection to SSL/TLS
                        (multi mode only) */
-  POP3_AUTH_PLAIN,
-  POP3_AUTH_LOGIN,
-  POP3_AUTH_LOGIN_PASSWD,
-  POP3_AUTH_CRAMMD5,
-  POP3_AUTH_DIGESTMD5,
-  POP3_AUTH_DIGESTMD5_RESP,
-  POP3_AUTH_NTLM,
-  POP3_AUTH_NTLM_TYPE2MSG,
-  POP3_AUTH_GSSAPI,
-  POP3_AUTH_GSSAPI_TOKEN,
-  POP3_AUTH_GSSAPI_NO_DATA,
-  POP3_AUTH_XOAUTH2,
-  POP3_AUTH_CANCEL,
-  POP3_AUTH_FINAL,
+  POP3_AUTH,
   POP3_APOP,
   POP3_USER,
   POP3_PASS,
@@ -77,14 +65,11 @@ struct pop3_conn {
                              have been received so far */
   size_t strip;           /* Number of bytes from the start to ignore as
                              non-body */
+  struct SASL sasl;       /* SASL-related storage */
   unsigned int authtypes; /* Accepted authentication types */
-  unsigned int authmechs; /* Accepted SASL authentication mechanisms */
   unsigned int preftype;  /* Preferred authentication type */
-  unsigned int prefmech;  /* Preferred SASL authentication mechanism */
-  unsigned int authused;  /* SASL auth mechanism used for the connection */
   char *apoptimestamp;    /* APOP timestamp from the server greeting */
   bool tls_supported;     /* StartTLS capability supported by server */
-  bool mutual_auth;       /* Mutual authentication enabled (GSSAPI only) */
 };
 
 extern const struct Curl_handler Curl_handler_pop3;
index f147ce7..b46e274 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -25,9 +25,7 @@
 #include "urldata.h"
 #include "sendf.h"
 #include "progress.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 
 /* Provide a string that is 2 + 1 + 2 + 1 + 2 = 8 letters long (plus the zero
    byte) */
index 029738d..c30afd3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "progress.h"
 #include "rtsp.h"
 #include "rawstr.h"
-#include "curl_memory.h"
 #include "select.h"
 #include "connect.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /*
@@ -265,11 +263,10 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
    * Since all RTSP requests are included here, there is no need to
    * support custom requests like HTTP.
    **/
-  DEBUGASSERT((rtspreq > RTSPREQ_NONE && rtspreq < RTSPREQ_LAST));
   data->set.opt_no_body = TRUE; /* most requests don't contain a body */
   switch(rtspreq) {
-  case RTSPREQ_NONE:
-    failf(data, "Got invalid RTSP request: RTSPREQ_NONE");
+  default:
+    failf(data, "Got invalid RTSP request");
     return CURLE_BAD_FUNCTION_ARGUMENT;
   case RTSPREQ_OPTIONS:
     p_request = "OPTIONS";
@@ -325,7 +322,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
   if(!p_session_id &&
      (rtspreq & ~(RTSPREQ_OPTIONS | RTSPREQ_DESCRIBE | RTSPREQ_SETUP))) {
     failf(data, "Refusing to issue an RTSP request [%s] without a session ID.",
-          p_request ? p_request : "");
+          p_request);
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }
 
@@ -443,8 +440,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
     Curl_add_bufferf(req_buffer,
                      "%s %s RTSP/1.0\r\n" /* Request Stream-URI RTSP/1.0 */
                      "CSeq: %ld\r\n", /* CSeq */
-                     (p_request ? p_request : ""), p_stream_uri,
-                     rtsp->CSeq_sent);
+                     p_request, p_stream_uri, rtsp->CSeq_sent);
   if(result)
     return result;
 
@@ -498,8 +494,8 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
 
     }
     else {
-      postsize = (data->set.postfieldsize != -1)?
-        data->set.postfieldsize:
+      postsize = (data->state.infilesize != -1)?
+        data->state.infilesize:
         (data->set.postfields? (curl_off_t)strlen(data->set.postfields):0);
       data->set.httpreq = HTTPREQ_POST;
     }
index 607048c..014bbf1 100644 (file)
@@ -7,10 +7,10 @@
  * rewrite to work around the paragraph 2 in the BSD licenses as explained
  * below.
  *
- * Copyright (c) 1998, 1999, 2013 Kungliga Tekniska Högskolan
+ * Copyright (c) 1998, 1999 Kungliga Tekniska Högskolan
  * (Royal Institute of Technology, Stockholm, Sweden).
  *
- * Copyright (C) 2001 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2001 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * All rights reserved.
  *
@@ -109,19 +109,12 @@ static char level_to_char(int level) {
   return 'P';
 }
 
-static const struct Curl_sec_client_mech * const mechs[] = {
-#ifdef HAVE_GSSAPI
-  &Curl_krb5_client_mech,
-#endif
-  NULL
-};
-
 /* Send an FTP command defined by |message| and the optional arguments. The
    function returns the ftp_code. If an error occurs, -1 is returned. */
 static int ftp_send_command(struct connectdata *conn, const char *message, ...)
 {
   int ftp_code;
-  ssize_t nread;
+  ssize_t nread=0;
   va_list args;
   char print_buffer[50];
 
@@ -366,7 +359,7 @@ int Curl_sec_read_msg(struct connectdata *conn, char *buffer,
      int */
   int decoded_len;
   char *buf;
-  int ret_code;
+  int ret_code = 0;
   size_t decoded_sz = 0;
   CURLcode error;
 
@@ -395,13 +388,13 @@ int Curl_sec_read_msg(struct connectdata *conn, char *buffer,
   }
 
   buf[decoded_len] = '\0';
-  DEBUGASSERT(decoded_len > 3);
-  if(buf[3] == '-')
-    ret_code = 0;
-  else {
-    /* Check for error? */
+  if(decoded_len <= 3)
+    /* suspiciously short */
+    return 0;
+
+  if(buf[3] != '-')
+    /* safe to ignore return code */
     (void)sscanf(buf, "%d", &ret_code);
-  }
 
   if(buf[decoded_len - 1] == '\n')
     buf[decoded_len - 1] = '\0';
@@ -444,8 +437,8 @@ static int sec_set_protection_level(struct connectdata *conn)
 
     pbsz = strstr(conn->data->state.buffer, "PBSZ=");
     if(pbsz) {
-      /* FIXME: Checks for errors in sscanf? */
-      sscanf(pbsz, "PBSZ=%u", &buffer_size);
+      /* ignore return code, use default value if it fails */
+      (void)sscanf(pbsz, "PBSZ=%u", &buffer_size);
       if(buffer_size < conn->buffer_size)
         conn->buffer_size = buffer_size;
     }
@@ -484,72 +477,63 @@ static CURLcode choose_mech(struct connectdata *conn)
 {
   int ret;
   struct SessionHandle *data = conn->data;
-  const struct Curl_sec_client_mech * const *mech;
   void *tmp_allocation;
-  const char *mech_name;
-
-  for(mech = mechs; (*mech); ++mech) {
-    mech_name = (*mech)->name;
-    /* We have no mechanism with a NULL name but keep this check */
-    DEBUGASSERT(mech_name != NULL);
-    if(mech_name == NULL) {
-      infof(data, "Skipping mechanism with empty name (%p)\n", (void *)mech);
-      continue;
-    }
-    tmp_allocation = realloc(conn->app_data, (*mech)->size);
-    if(tmp_allocation == NULL) {
-      failf(data, "Failed realloc of size %u", (*mech)->size);
-      mech = NULL;
-      return CURLE_OUT_OF_MEMORY;
-    }
-    conn->app_data = tmp_allocation;
+  const struct Curl_sec_client_mech *mech = &Curl_krb5_client_mech;
 
-    if((*mech)->init) {
-      ret = (*mech)->init(conn->app_data);
-      if(ret != 0) {
-        infof(data, "Failed initialization for %s. Skipping it.\n", mech_name);
-        continue;
-      }
+  tmp_allocation = realloc(conn->app_data, mech->size);
+  if(tmp_allocation == NULL) {
+    failf(data, "Failed realloc of size %u", mech->size);
+    mech = NULL;
+    return CURLE_OUT_OF_MEMORY;
+  }
+  conn->app_data = tmp_allocation;
+
+  if(mech->init) {
+    ret = mech->init(conn->app_data);
+    if(ret) {
+      infof(data, "Failed initialization for %s. Skipping it.\n",
+            mech->name);
+      return CURLE_FAILED_INIT;
     }
+  }
 
-    infof(data, "Trying mechanism %s...\n", mech_name);
-    ret = ftp_send_command(conn, "AUTH %s", mech_name);
-    if(ret < 0)
-      /* FIXME: This error is too generic but it is OK for now. */
-      return CURLE_COULDNT_CONNECT;
-
-    if(ret/100 != 3) {
-      switch(ret) {
-      case 504:
-        infof(data, "Mechanism %s is not supported by the server (server "
-                    "returned ftp code: 504).\n", mech_name);
-        break;
-      case 534:
-        infof(data, "Mechanism %s was rejected by the server (server returned "
-                    "ftp code: 534).\n", mech_name);
-        break;
-      default:
-        if(ret/100 == 5) {
-          infof(data, "server does not support the security extensions\n");
-          return CURLE_USE_SSL_FAILED;
-        }
-        break;
+  infof(data, "Trying mechanism %s...\n", mech->name);
+  ret = ftp_send_command(conn, "AUTH %s", mech->name);
+  if(ret < 0)
+    /* FIXME: This error is too generic but it is OK for now. */
+    return CURLE_COULDNT_CONNECT;
+
+  if(ret/100 != 3) {
+    switch(ret) {
+    case 504:
+      infof(data, "Mechanism %s is not supported by the server (server "
+            "returned ftp code: 504).\n", mech->name);
+      break;
+    case 534:
+      infof(data, "Mechanism %s was rejected by the server (server returned "
+            "ftp code: 534).\n", mech->name);
+      break;
+    default:
+      if(ret/100 == 5) {
+        infof(data, "server does not support the security extensions\n");
+        return CURLE_USE_SSL_FAILED;
       }
-      continue;
+      break;
     }
+    return CURLE_LOGIN_DENIED;
+  }
 
-    /* Authenticate */
-    ret = (*mech)->auth(conn->app_data, conn);
+  /* Authenticate */
+  ret = mech->auth(conn->app_data, conn);
 
-    if(ret == AUTH_CONTINUE)
-      continue;
-    else if(ret != AUTH_OK) {
+  if(ret != AUTH_CONTINUE) {
+    if(ret != AUTH_OK) {
       /* Mechanism has dumped the error to stderr, don't error here. */
       return -1;
     }
     DEBUGASSERT(ret == AUTH_OK);
 
-    conn->mech = *mech;
+    conn->mech = mech;
     conn->sec_complete = 1;
     conn->recv[FIRSTSOCKET] = sec_recv;
     conn->send[FIRSTSOCKET] = sec_send;
@@ -559,10 +543,9 @@ static CURLcode choose_mech(struct connectdata *conn)
     /* Set the requested protection level */
     /* BLOCKING */
     (void)sec_set_protection_level(conn);
-    break;
   }
 
-  return *mech != NULL ? CURLE_OK : CURLE_FAILED_INIT;
+  return CURLE_OK;
 }
 
 CURLcode
@@ -577,10 +560,8 @@ Curl_sec_end(struct connectdata *conn)
 {
   if(conn->mech != NULL && conn->mech->end)
     conn->mech->end(conn->app_data);
-  if(conn->app_data) {
-    free(conn->app_data);
-    conn->app_data = NULL;
-  }
+  free(conn->app_data);
+  conn->app_data = NULL;
   if(conn->in_buffer.data) {
     free(conn->in_buffer.data);
     conn->in_buffer.data = NULL;
index 1c6481c..24dc5fd 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -159,7 +159,7 @@ int Curl_socket_check(curl_socket_t readfd0, /* two sockets to read from */
   fd_set fds_err;
   curl_socket_t maxfd;
 #endif
-  struct timeval initial_tv = {0,0};
+  struct timeval initial_tv = {0, 0};
   int pending_ms = 0;
   int error;
   int r;
@@ -393,7 +393,7 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms)
   fd_set fds_err;
   curl_socket_t maxfd;
 #endif
-  struct timeval initial_tv = {0,0};
+  struct timeval initial_tv = {0, 0};
   bool fds_none = TRUE;
   unsigned int i;
   int pending_ms = 0;
@@ -573,6 +573,6 @@ int tpf_select_libcurl(int maxfds, fd_set* reads, fd_set* writes,
 
    rc = tpf_select_bsd(maxfds, reads, writes, excepts, tv);
    tpf_process_signals();
-   return(rc);
+   return rc;
 }
 #endif /* TPF */
index 2d1a166..5f39d1f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "ssh.h"
 #include "multiif.h"
 #include "non-ascii.h"
-
-#define _MPRINTF_REPLACE /* use the internal *printf() functions */
-#include <curl/mprintf.h>
-
-#include "curl_memory.h"
+#include "curl_printf.h"
 #include "strerror.h"
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 #ifdef CURL_DO_LINEEND_CONV
@@ -55,7 +52,7 @@ static size_t convert_lineends(struct SessionHandle *data,
 
   /* sanity check */
   if((startPtr == NULL) || (size < 1)) {
-    return(size);
+    return size;
   }
 
   if(data->state.prev_block_had_trailing_cr) {
@@ -117,9 +114,9 @@ static size_t convert_lineends(struct SessionHandle *data,
       /* tidy up by null terminating the now shorter data */
       *outPtr = '\0';
 
-    return(outPtr - startPtr);
+    return (outPtr - startPtr);
   }
-  return(size);
+  return size;
 }
 #endif /* CURL_DO_LINEEND_CONV */
 
@@ -554,7 +551,7 @@ CURLcode Curl_read(struct connectdata *conn, /* connection data */
   ssize_t nread = 0;
   size_t bytesfromsocket = 0;
   char *buffertofill = NULL;
-  bool pipelining = Curl_multi_pipeline_enabled(conn->data->multi);
+  bool pipelining = Curl_pipeline_wanted(conn->data->multi, CURLPIPE_HTTP1);
 
   /* Set 'num' to 0 or 1, depending on which socket that has been sent here.
      If it is the second socket, we set num to 1. Otherwise to 0. This lets
index 4b3dded..520a35d 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -249,6 +249,9 @@ char * unix_path;
 #define MD5_Init MD5_INIT
 #define MD5_Update MD5_UPDATE
 #define OPENSSL_add_all_algo_noconf OPENSSL_ADD_ALL_ALGO_NOCONF
+#ifndef __VAX
+#define OPENSSL_load_builtin_modules OPENSSL_LOAD_BUILTIN_MODULES
+#endif
 #define PEM_read_X509 PEM_READ_X509
 #define PEM_write_bio_X509 PEM_WRITE_BIO_X509
 #define PKCS12_PBE_add PKCS12_PBE_ADD
@@ -272,6 +275,7 @@ char * unix_path;
 #define SSL_CTX_set_cipher_list SSL_CTX_SET_CIPHER_LIST
 #define SSL_CTX_set_def_passwd_cb_ud SSL_CTX_SET_DEF_PASSWD_CB_UD
 #define SSL_CTX_set_default_passwd_cb SSL_CTX_SET_DEFAULT_PASSWD_CB
+#define SSL_CTX_set_msg_callback SSL_CTX_SET_MSG_CALLBACK
 #define SSL_CTX_set_verify SSL_CTX_SET_VERIFY
 #define SSL_CTX_use_PrivateKey SSL_CTX_USE_PRIVATEKEY
 #define SSL_CTX_use_PrivateKey_file SSL_CTX_USE_PRIVATEKEY_FILE
@@ -301,6 +305,7 @@ char * unix_path;
 #define SSL_set_fd SSL_SET_FD
 #define SSL_set_session SSL_SET_SESSION
 #define SSL_shutdown SSL_SHUTDOWN
+#define SSL_version SSL_VERSION
 #define SSL_write SSL_WRITE
 #define SSLeay SSLEAY
 #define SSLv23_client_method SSLV23_CLIENT_METHOD
@@ -325,6 +330,7 @@ char * unix_path;
 #define UI_set_result UI_SET_RESULT
 #define X509V3_EXT_print X509V3_EXT_PRINT
 #define X509_EXTENSION_get_critical X509_EXTENSION_GET_CRITICAL
+#define X509_EXTENSION_get_data X509_EXTENSION_GET_DATA
 #define X509_EXTENSION_get_object X509_EXTENSION_GET_OBJECT
 #define X509_LOOKUP_file X509_LOOKUP_FILE
 #define X509_NAME_ENTRY_get_data X509_NAME_ENTRY_GET_DATA
@@ -349,6 +355,12 @@ char * unix_path;
 #define sk_pop SK_POP
 #define sk_pop_free SK_POP_FREE
 #define sk_value SK_VALUE
+#ifdef __VAX
+#define OPENSSL_NO_SHA256
+#endif
+#define SHA256_Final SHA256_FINAL
+#define SHA256_Init SHA256_INIT
+#define SHA256_Update SHA256_UPDATE
 
 #define USE_UPPERCASE_GSSAPI 1
 #define gss_seal GSS_SEAL
@@ -414,7 +426,7 @@ char * unix_path;
 
         static void des_ecb_encrypt(const_des_cblock *input,
                                     des_cblock *output,
-                                    des_key_schedule ks,int enc) {
+                                    des_key_schedule ks, int enc) {
             DES_ECB_ENCRYPT(input, output, ks, enc);
         }
 #endif
index b8b6bee..1720248 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -35,9 +35,15 @@ CURLSH *
 curl_share_init(void)
 {
   struct Curl_share *share = calloc(1, sizeof(struct Curl_share));
-  if(share)
+  if(share) {
     share->specifier |= (1<<CURL_LOCK_DATA_SHARE);
 
+    if(Curl_mk_dnscache(&share->hostcache)) {
+      free(share);
+      return NULL;
+    }
+  }
+
   return share;
 }
 
@@ -67,11 +73,6 @@ curl_share_setopt(CURLSH *sh, CURLSHoption option, ...)
     share->specifier |= (1<<type);
     switch( type ) {
     case CURL_LOCK_DATA_DNS:
-      if(!share->hostcache) {
-        share->hostcache = Curl_mk_dnscache();
-        if(!share->hostcache)
-          res = CURLSHE_NOMEM;
-      }
       break;
 
     case CURL_LOCK_DATA_COOKIE:
@@ -115,10 +116,6 @@ curl_share_setopt(CURLSH *sh, CURLSHoption option, ...)
     share->specifier &= ~(1<<type);
     switch( type ) {
     case CURL_LOCK_DATA_DNS:
-      if(share->hostcache) {
-        Curl_hash_destroy(share->hostcache);
-        share->hostcache = NULL;
-      }
       break;
 
     case CURL_LOCK_DATA_COOKIE:
@@ -192,14 +189,10 @@ curl_share_cleanup(CURLSH *sh)
     return CURLSHE_IN_USE;
   }
 
-  if(share->hostcache) {
-    Curl_hash_destroy(share->hostcache);
-    share->hostcache = NULL;
-  }
+  Curl_hash_destroy(&share->hostcache);
 
 #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
-  if(share->cookies)
-    Curl_cookie_cleanup(share->cookies);
+  Curl_cookie_cleanup(share->cookies);
 #endif
 
 #ifdef USE_SSL
index 9a5128e..8e6629b 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -44,7 +44,7 @@ struct Curl_share {
   curl_unlock_function unlockfunc;
   void *clientdata;
 
-  struct curl_hash *hostcache;
+  struct curl_hash hostcache;
 #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
   struct CookieInfo *cookies;
 #endif
index 3cac6ca..9c0b2a5 100644 (file)
 
 #include "curl_setup.h"
 
-#include "curl_memory.h"
 #include "slist.h"
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /* returns last node in linked list */
index e66427b..d461a71 100644 (file)
--- a/lib/smb.c
+++ b/lib/smb.c
 #include "transfer.h"
 #include "vtls/vtls.h"
 #include "curl_ntlm_core.h"
-#include "curl_memory.h"
 #include "escape.h"
 #include "curl_endian.h"
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /* Local API functions */
@@ -783,9 +783,15 @@ static CURLcode smb_request_state(struct connectdata *conn, bool *done)
     off = Curl_read16_le(((unsigned char *) msg) +
                          sizeof(struct smb_header) + 13);
     if(len > 0) {
-      result = Curl_client_write(conn, CLIENTWRITE_BODY,
-                                 (char *)msg + off + sizeof(unsigned int),
-                                 len);
+      struct smb_conn *smbc = &conn->proto.smbc;
+      if(off + sizeof(unsigned int) + len > smbc->got) {
+        failf(conn->data, "Invalid input packet");
+        result = CURLE_RECV_ERROR;
+      }
+      else
+        result = Curl_client_write(conn, CLIENTWRITE_BODY,
+                                   (char *)msg + off + sizeof(unsigned int),
+                                   len);
       if(result) {
         req->result = result;
         next_state = SMB_CLOSE;
@@ -935,7 +941,7 @@ static CURLcode smb_parse_url_path(struct connectdata *conn)
   /* Parse the path for the share */
   req->share = strdup((*path == '/' || *path == '\\') ? path + 1 : path);
   if(!req->share) {
-    Curl_safefree(path);
+    free(path);
 
     return CURLE_OUT_OF_MEMORY;
   }
@@ -946,7 +952,7 @@ static CURLcode smb_parse_url_path(struct connectdata *conn)
 
   /* The share must be present */
   if(!slash) {
-    Curl_safefree(path);
+    free(path);
 
     return CURLE_URL_MALFORMAT;
   }
@@ -960,7 +966,7 @@ static CURLcode smb_parse_url_path(struct connectdata *conn)
       *slash = '\\';
   }
 
-  Curl_safefree(path);
+  free(path);
 
   return CURLE_OK;
 }
index 7bd5158..dada087 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "curl_gethostname.h"
 #include "curl_sasl.h"
 #include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -105,10 +102,10 @@ static CURLcode smtp_setup_connection(struct connectdata *conn);
 static CURLcode smtp_parse_url_options(struct connectdata *conn);
 static CURLcode smtp_parse_url_path(struct connectdata *conn);
 static CURLcode smtp_parse_custom_request(struct connectdata *conn);
-static CURLcode smtp_calc_sasl_details(struct connectdata *conn,
-                                       const char **mech,
-                                       char **initresp, size_t *len,
-                                       smtpstate *state1, smtpstate *state2);
+static CURLcode smtp_perform_auth(struct connectdata *conn, const char *mech,
+                                  const char *initresp);
+static CURLcode smtp_continue_auth(struct connectdata *conn, const char *resp);
+static void smtp_get_message(char *buffer, char** outptr);
 
 /*
  * SMTP protocol handler.
@@ -213,6 +210,17 @@ static const struct Curl_handler Curl_handler_smtps_proxy = {
 #endif
 #endif
 
+/* SASL parameters for the smtp protocol */
+static const struct SASLproto saslsmtp = {
+  "smtp",                     /* The service name */
+  334,                        /* Code received when continuation is expected */
+  235,                        /* Code to receive upon authentication success */
+  512 - 8,                    /* Maximum initial response length (no max) */
+  smtp_perform_auth,          /* Send authentication command */
+  smtp_continue_auth,         /* Send authentication continuation */
+  smtp_get_message            /* Get SASL response message */
+};
+
 #ifdef USE_SSL
 static void smtp_to_smtps(struct connectdata *conn)
 {
@@ -309,20 +317,7 @@ static void state(struct connectdata *conn, smtpstate newstate)
     "HELO",
     "STARTTLS",
     "UPGRADETLS",
-    "AUTH_PLAIN",
-    "AUTH_LOGIN",
-    "AUTH_LOGIN_PASSWD",
-    "AUTH_CRAMMD5",
-    "AUTH_DIGESTMD5",
-    "AUTH_DIGESTMD5_RESP",
-    "AUTH_NTLM",
-    "AUTH_NTLM_TYPE2MSG",
-    "AUTH_GSSAPI",
-    "AUTH_GSSAPI_TOKEN",
-    "AUTH_GSSAPI_NO_DATA",
-    "AUTH_XOAUTH2",
-    "AUTH_CANCEL",
-    "AUTH_FINAL",
+    "AUTH",
     "COMMAND",
     "MAIL",
     "RCPT",
@@ -352,11 +347,11 @@ static CURLcode smtp_perform_ehlo(struct connectdata *conn)
   CURLcode result = CURLE_OK;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
 
-  smtpc->authmechs = 0;           /* No known authentication mechanisms yet */
-  smtpc->authused = 0;            /* Clear the authentication mechanism used
-                                     for esmtp connections */
-  smtpc->tls_supported = FALSE;   /* Clear the TLS capability */
-  smtpc->auth_supported = FALSE;  /* Clear the AUTH capability */
+  smtpc->sasl.authmechs = SASL_AUTH_NONE; /* No known auth. mechanism yet */
+  smtpc->sasl.authused = SASL_AUTH_NONE;  /* Clear the authentication mechanism
+                                             used for esmtp connections */
+  smtpc->tls_supported = FALSE;           /* Clear the TLS capability */
+  smtpc->auth_supported = FALSE;          /* Clear the AUTH capability */
 
   /* Send the EHLO command */
   result = Curl_pp_sendf(&smtpc->pp, "EHLO %s", smtpc->domain);
@@ -378,8 +373,8 @@ static CURLcode smtp_perform_helo(struct connectdata *conn)
   CURLcode result = CURLE_OK;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
 
-  smtpc->authused = 0;          /* No authentication mechanism used in smtp
-                                   connections */
+  smtpc->sasl.authused = SASL_AUTH_NONE; /* No authentication mechanism used
+                                            in smtp connections */
 
   /* Send the HELO command */
   result = Curl_pp_sendf(&smtpc->pp, "HELO %s", smtpc->domain);
@@ -445,25 +440,18 @@ static CURLcode smtp_perform_upgrade_tls(struct connectdata *conn)
  */
 static CURLcode smtp_perform_auth(struct connectdata *conn,
                                   const char *mech,
-                                  const char *initresp, size_t len,
-                                  smtpstate state1, smtpstate state2)
+                                  const char *initresp)
 {
   CURLcode result = CURLE_OK;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
 
-  if(initresp && 8 + strlen(mech) + len <= 512) { /* AUTH <mech> ...<crlf> */
+  if(initresp) {                                  /* AUTH <mech> ...<crlf> */
     /* Send the AUTH command with the initial response */
     result = Curl_pp_sendf(&smtpc->pp, "AUTH %s %s", mech, initresp);
-
-    if(!result)
-      state(conn, state2);
   }
   else {
     /* Send the AUTH command */
     result = Curl_pp_sendf(&smtpc->pp, "AUTH %s", mech);
-
-    if(!result)
-      state(conn, state1);
   }
 
   return result;
@@ -471,6 +459,19 @@ static CURLcode smtp_perform_auth(struct connectdata *conn,
 
 /***********************************************************************
  *
+ * smtp_continue_auth()
+ *
+ * Sends SASL continuation data or cancellation.
+ */
+static CURLcode smtp_continue_auth(struct connectdata *conn, const char *resp)
+{
+  struct smtp_conn *smtpc = &conn->proto.smtpc;
+
+  return Curl_pp_sendf(&smtpc->pp, "%s", resp);
+}
+
+/***********************************************************************
+ *
  * smtp_perform_authentication()
  *
  * Initiates the authentication sequence, with the appropriate SASL
@@ -480,31 +481,22 @@ static CURLcode smtp_perform_authentication(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
-  const char *mech = NULL;
-  char *initresp = NULL;
-  size_t len = 0;
-  smtpstate state1 = SMTP_STOP;
-  smtpstate state2 = SMTP_STOP;
+  saslprogress progress;
 
-  /* Check we have a username and password to authenticate with, and the
+  /* Check we have enough data to authenticate with, and the
      server supports authentiation, and end the connect phase if not */
-  if(!conn->bits.user_passwd || !smtpc->auth_supported) {
+  if(!smtpc->auth_supported ||
+      !Curl_sasl_can_authenticate(&smtpc->sasl, conn)) {
     state(conn, SMTP_STOP);
-
     return result;
   }
 
   /* Calculate the SASL login details */
-  result = smtp_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
-                                  &state2);
+  result = Curl_sasl_start(&smtpc->sasl, conn, FALSE, &progress);
 
   if(!result) {
-    if(mech) {
-      /* Perform SASL based authentication */
-      result = smtp_perform_auth(conn, mech, initresp, len, state1, state2);
-
-      Curl_safefree(initresp);
-    }
+    if(progress == SASL_INPROGRESS)
+      state(conn, SMTP_AUTH);
     else {
       /* Other mechanisms not supported */
       infof(conn->data, "No known authentication mechanisms supported!\n");
@@ -571,7 +563,7 @@ static CURLcode smtp_perform_mail(struct connectdata *conn)
     return CURLE_OUT_OF_MEMORY;
 
   /* Calculate the optional AUTH parameter */
-  if(data->set.str[STRING_MAIL_AUTH] && conn->proto.smtpc.authused) {
+  if(data->set.str[STRING_MAIL_AUTH] && conn->proto.smtpc.sasl.authused) {
     if(data->set.str[STRING_MAIL_AUTH][0] != '\0')
       auth = aprintf("%s", data->set.str[STRING_MAIL_AUTH]);
     else
@@ -579,7 +571,7 @@ static CURLcode smtp_perform_mail(struct connectdata *conn)
       auth = strdup("<>");
 
     if(!auth) {
-      Curl_safefree(from);
+      free(from);
 
       return CURLE_OUT_OF_MEMORY;
     }
@@ -590,8 +582,8 @@ static CURLcode smtp_perform_mail(struct connectdata *conn)
     size = aprintf("%" CURL_FORMAT_CURL_OFF_T, data->state.infilesize);
 
     if(!size) {
-      Curl_safefree(from);
-      Curl_safefree(auth);
+      free(from);
+      free(auth);
 
       return CURLE_OUT_OF_MEMORY;
     }
@@ -611,9 +603,9 @@ static CURLcode smtp_perform_mail(struct connectdata *conn)
     result = Curl_pp_sendf(&conn->proto.smtpc.pp,
                            "MAIL FROM:%s SIZE=%s", from, size);
 
-  Curl_safefree(from);
-  Curl_safefree(auth);
-  Curl_safefree(size);
+  free(from);
+  free(auth);
+  free(size);
 
   if(!result)
     state(conn, SMTP_MAIL);
@@ -753,6 +745,9 @@ static CURLcode smtp_state_ehlo_resp(struct connectdata *conn, int smtpcode,
 
       /* Loop through the data line */
       for(;;) {
+        size_t llen;
+        unsigned int mechbit;
+
         while(len &&
               (*line == ' ' || *line == '\t' ||
                *line == '\r' || *line == '\n')) {
@@ -771,22 +766,9 @@ static CURLcode smtp_state_ehlo_resp(struct connectdata *conn, int smtpcode,
           wordlen++;
 
         /* Test the word for a matching authentication mechanism */
-        if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_LOGIN))
-          smtpc->authmechs |= SASL_MECH_LOGIN;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_PLAIN))
-          smtpc->authmechs |= SASL_MECH_PLAIN;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_CRAM_MD5))
-          smtpc->authmechs |= SASL_MECH_CRAM_MD5;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_DIGEST_MD5))
-          smtpc->authmechs |= SASL_MECH_DIGEST_MD5;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_GSSAPI))
-          smtpc->authmechs |= SASL_MECH_GSSAPI;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_EXTERNAL))
-          smtpc->authmechs |= SASL_MECH_EXTERNAL;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_NTLM))
-          smtpc->authmechs |= SASL_MECH_NTLM;
-        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_XOAUTH2))
-          smtpc->authmechs |= SASL_MECH_XOAUTH2;
+        if((mechbit = Curl_sasl_decode_mech(line, wordlen, &llen)) &&
+           llen == wordlen)
+          smtpc->sasl.authmechs |= mechbit;
 
         line += wordlen;
         len -= wordlen;
@@ -835,565 +817,31 @@ static CURLcode smtp_state_helo_resp(struct connectdata *conn, int smtpcode,
   return result;
 }
 
-/* For AUTH PLAIN (without initial response) responses */
-static CURLcode smtp_state_auth_plain_resp(struct connectdata *conn,
-                                           int smtpcode,
-                                           smtpstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *plainauth = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(smtpcode != 334) {
-    failf(data, "Access denied: %d", smtpcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the authorisation message */
-    result = Curl_sasl_create_plain_message(conn->data, conn->user,
-                                            conn->passwd, &plainauth, &len);
-    if(!result && plainauth) {
-      /* Send the message */
-      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", plainauth);
-
-      if(!result)
-        state(conn, SMTP_AUTH_FINAL);
-    }
-  }
-
-  Curl_safefree(plainauth);
-
-  return result;
-}
-
-/* For AUTH LOGIN (without initial response) responses */
-static CURLcode smtp_state_auth_login_resp(struct connectdata *conn,
-                                           int smtpcode,
-                                           smtpstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *authuser = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(smtpcode != 334) {
-    failf(data, "Access denied: %d", smtpcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the user message */
-    result = Curl_sasl_create_login_message(conn->data, conn->user,
-                                            &authuser, &len);
-    if(!result && authuser) {
-      /* Send the user */
-      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", authuser);
-
-      if(!result)
-        state(conn, SMTP_AUTH_LOGIN_PASSWD);
-    }
-  }
-
-  Curl_safefree(authuser);
-
-  return result;
-}
-
-/* For AUTH LOGIN user entry responses */
-static CURLcode smtp_state_auth_login_password_resp(struct connectdata *conn,
-                                                    int smtpcode,
-                                                    smtpstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *authpasswd = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(smtpcode != 334) {
-    failf(data, "Access denied: %d", smtpcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the password message */
-    result = Curl_sasl_create_login_message(conn->data, conn->passwd,
-                                            &authpasswd, &len);
-    if(!result && authpasswd) {
-      /* Send the password */
-      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", authpasswd);
-
-      if(!result)
-        state(conn, SMTP_AUTH_FINAL);
-    }
-  }
-
-  Curl_safefree(authpasswd);
-
-  return result;
-}
-
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-/* For AUTH CRAM-MD5 responses */
-static CURLcode smtp_state_auth_cram_resp(struct connectdata *conn,
-                                          int smtpcode,
-                                          smtpstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  char *chlg = NULL;
-  char *chlg64 = NULL;
-  char *rplyb64 = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(smtpcode != 334) {
-    failf(data, "Access denied: %d", smtpcode);
-    return CURLE_LOGIN_DENIED;
-  }
-
-  /* Get the challenge message */
-  smtp_get_message(data->state.buffer, &chlg64);
-
-  /* Decode the challenge message */
-  result = Curl_sasl_decode_cram_md5_message(chlg64, &chlg, &len);
-  if(result) {
-    /* Send the cancellation */
-    result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
-
-    if(!result)
-      state(conn, SMTP_AUTH_CANCEL);
-  }
-  else {
-    /* Create the response message */
-    result = Curl_sasl_create_cram_md5_message(data, chlg, conn->user,
-                                               conn->passwd, &rplyb64, &len);
-    if(!result && rplyb64) {
-      /* Send the response */
-      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", rplyb64);
-
-      if(!result)
-        state(conn, SMTP_AUTH_FINAL);
-    }
-  }
-
-  Curl_safefree(chlg);
-  Curl_safefree(rplyb64);
-
-  return result;
-}
-
-/* For AUTH DIGEST-MD5 challenge responses */
-static CURLcode smtp_state_auth_digest_resp(struct connectdata *conn,
-                                            int smtpcode,
-                                            smtpstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  char *chlg64 = NULL;
-  char *rplyb64 = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(smtpcode != 334) {
-    failf(data, "Access denied: %d", smtpcode);
-    return CURLE_LOGIN_DENIED;
-  }
-
-  /* Get the challenge message */
-  smtp_get_message(data->state.buffer, &chlg64);
-
-  /* Create the response message */
-  result = Curl_sasl_create_digest_md5_message(data, chlg64,
-                                               conn->user, conn->passwd,
-                                               "smtp", &rplyb64, &len);
-  if(result) {
-    if(result == CURLE_BAD_CONTENT_ENCODING) {
-      /* Send the cancellation */
-      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
-
-      if(!result)
-        state(conn, SMTP_AUTH_CANCEL);
-    }
-  }
-  else {
-    /* Send the response */
-    result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", rplyb64);
-
-    if(!result)
-      state(conn, SMTP_AUTH_DIGESTMD5_RESP);
-  }
-
-  Curl_safefree(rplyb64);
-
-  return result;
-}
-
-/* For AUTH DIGEST-MD5 challenge-response responses */
-static CURLcode smtp_state_auth_digest_resp_resp(struct connectdata *conn,
-                                                 int smtpcode,
-                                                 smtpstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-
-  (void)instate; /* no use for this yet */
-
-  if(smtpcode != 334) {
-    failf(data, "Authentication failed: %d", smtpcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Send an empty response */
-    result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "");
-
-    if(!result)
-      state(conn, SMTP_AUTH_FINAL);
-  }
-
-  return result;
-}
-
-#endif
-
-#ifdef USE_NTLM
-/* For AUTH NTLM (without initial response) responses */
-static CURLcode smtp_state_auth_ntlm_resp(struct connectdata *conn,
-                                          int smtpcode,
-                                          smtpstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  char *type1msg = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(smtpcode != 334) {
-    failf(data, "Access denied: %d", smtpcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the type-1 message */
-    result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
-                                                 &conn->ntlm,
-                                                 &type1msg, &len);
-    if(!result && type1msg) {
-      /* Send the message */
-      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", type1msg);
-
-      if(!result)
-        state(conn, SMTP_AUTH_NTLM_TYPE2MSG);
-    }
-  }
-
-  Curl_safefree(type1msg);
-
-  return result;
-}
-
-/* For NTLM type-2 responses (sent in reponse to our type-1 message) */
-static CURLcode smtp_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
-                                                   int smtpcode,
-                                                   smtpstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  char *type2msg = NULL;
-  char *type3msg = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(smtpcode != 334) {
-    failf(data, "Access denied: %d", smtpcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Get the type-2 message */
-    smtp_get_message(data->state.buffer, &type2msg);
-
-    /* Decode the type-2 message */
-    result = Curl_sasl_decode_ntlm_type2_message(data, type2msg, &conn->ntlm);
-    if(result) {
-      /* Send the cancellation */
-      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
-
-      if(!result)
-        state(conn, SMTP_AUTH_CANCEL);
-    }
-    else {
-      /* Create the type-3 message */
-      result = Curl_sasl_create_ntlm_type3_message(data, conn->user,
-                                                   conn->passwd, &conn->ntlm,
-                                                   &type3msg, &len);
-      if(!result && type3msg) {
-        /* Send the message */
-        result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", type3msg);
-
-        if(!result)
-          state(conn, SMTP_AUTH_FINAL);
-      }
-    }
-  }
-
-  Curl_safefree(type3msg);
-
-  return result;
-}
-#endif
-
-#if defined(USE_KERBEROS5)
-/* For AUTH GSSAPI (without initial response) responses */
-static CURLcode smtp_state_auth_gssapi_resp(struct connectdata *conn,
-                                            int smtpcode,
-                                            smtpstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  struct smtp_conn *smtpc = &conn->proto.smtpc;
-  char *respmsg = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(smtpcode != 334) {
-    failf(data, "Access denied: %d", smtpcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the initial response message */
-    result = Curl_sasl_create_gssapi_user_message(data, conn->user,
-                                                  conn->passwd, "smtp",
-                                                  smtpc->mutual_auth, NULL,
-                                                  &conn->krb5,
-                                                  &respmsg, &len);
-    if(!result && respmsg) {
-      /* Send the message */
-      result = Curl_pp_sendf(&smtpc->pp, "%s", respmsg);
-
-      if(!result)
-        state(conn, SMTP_AUTH_GSSAPI_TOKEN);
-    }
-  }
-
-  Curl_safefree(respmsg);
-
-  return result;
-}
-
-/* For AUTH GSSAPI user token responses */
-static CURLcode smtp_state_auth_gssapi_token_resp(struct connectdata *conn,
-                                                  int smtpcode,
-                                                  smtpstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  struct smtp_conn *smtpc = &conn->proto.smtpc;
-  char *chlgmsg = NULL;
-  char *respmsg = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(smtpcode != 334) {
-    failf(data, "Access denied: %d", smtpcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Get the challenge message */
-    smtp_get_message(data->state.buffer, &chlgmsg);
-
-    if(smtpc->mutual_auth)
-      /* Decode the user token challenge and create the optional response
-         message */
-      result = Curl_sasl_create_gssapi_user_message(data, NULL, NULL, NULL,
-                                                    smtpc->mutual_auth,
-                                                    chlgmsg, &conn->krb5,
-                                                    &respmsg, &len);
-    else
-      /* Decode the security challenge and create the response message */
-      result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
-                                                        &conn->krb5,
-                                                        &respmsg, &len);
-
-    if(result) {
-      if(result == CURLE_BAD_CONTENT_ENCODING) {
-        /* Send the cancellation */
-        result = Curl_pp_sendf(&smtpc->pp, "%s", "*");
-
-        if(!result)
-          state(conn, SMTP_AUTH_CANCEL);
-      }
-    }
-    else {
-      /* Send the response */
-      if(respmsg)
-        result = Curl_pp_sendf(&smtpc->pp, "%s", respmsg);
-      else
-        result = Curl_pp_sendf(&smtpc->pp, "%s", "");
-
-      if(!result)
-        state(conn, (smtpc->mutual_auth ? SMTP_AUTH_GSSAPI_NO_DATA :
-                                          SMTP_AUTH_FINAL));
-    }
-  }
-
-  Curl_safefree(respmsg);
-
-  return result;
-}
-
-/* For AUTH GSSAPI no data responses */
-static CURLcode smtp_state_auth_gssapi_no_data_resp(struct connectdata *conn,
-                                                    int smtpcode,
-                                                    smtpstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  char *chlgmsg = NULL;
-  char *respmsg = NULL;
-  size_t len = 0;
-
-  (void)instate; /* no use for this yet */
-
-  if(smtpcode != 334) {
-    failf(data, "Access denied: %d", smtpcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Get the challenge message */
-    smtp_get_message(data->state.buffer, &chlgmsg);
-
-    /* Decode the security challenge and create the response message */
-    result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
-                                                      &conn->krb5,
-                                                      &respmsg, &len);
-    if(result) {
-      if(result == CURLE_BAD_CONTENT_ENCODING) {
-        /* Send the cancellation */
-        result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
-
-        if(!result)
-          state(conn, SMTP_AUTH_CANCEL);
-      }
-    }
-    else {
-      /* Send the response */
-      if(respmsg) {
-        result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", respmsg);
-
-        if(!result)
-          state(conn, SMTP_AUTH_FINAL);
-      }
-    }
-  }
-
-  Curl_safefree(respmsg);
-
-  return result;
-}
-#endif
-
-/* For AUTH XOAUTH2 (without initial response) responses */
-static CURLcode smtp_state_auth_xoauth2_resp(struct connectdata *conn,
-                                             int smtpcode, smtpstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  size_t len = 0;
-  char *xoauth = NULL;
-
-  (void)instate; /* no use for this yet */
-
-  if(smtpcode != 334) {
-    failf(data, "Access denied: %d", smtpcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the authorisation message */
-    result = Curl_sasl_create_xoauth2_message(conn->data, conn->user,
-                                              conn->xoauth2_bearer,
-                                              &xoauth, &len);
-    if(!result && xoauth) {
-      /* Send the message */
-      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", xoauth);
-
-      if(!result)
-        state(conn, SMTP_AUTH_FINAL);
-    }
-  }
-
-  Curl_safefree(xoauth);
-
-  return result;
-}
-
-/* For AUTH cancellation responses */
-static CURLcode smtp_state_auth_cancel_resp(struct connectdata *conn,
-                                            int smtpcode,
-                                            smtpstate instate)
+/* For SASL authentication responses */
+static CURLcode smtp_state_auth_resp(struct connectdata *conn,
+                                     int smtpcode,
+                                     smtpstate instate)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
-  const char *mech = NULL;
-  char *initresp = NULL;
-  size_t len = 0;
-  smtpstate state1 = SMTP_STOP;
-  smtpstate state2 = SMTP_STOP;
+  saslprogress progress;
 
-  (void)smtpcode;
   (void)instate; /* no use for this yet */
 
-  /* Remove the offending mechanism from the supported list */
-  smtpc->authmechs ^= smtpc->authused;
-
-  /* Calculate alternative SASL login details */
-  result = smtp_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
-                                  &state2);
-
-  if(!result) {
-    /* Do we have any mechanisms left? */
-    if(mech) {
-      /* Retry SASL based authentication */
-      result = smtp_perform_auth(conn, mech, initresp, len, state1, state2);
-
-      Curl_safefree(initresp);
-    }
-    else {
+  result = Curl_sasl_continue(&smtpc->sasl, conn, smtpcode, &progress);
+  if(!result)
+    switch(progress) {
+    case SASL_DONE:
+      state(conn, SMTP_STOP);  /* Authenticated */
+      break;
+    case SASL_IDLE:            /* No mechanism left after cancellation */
       failf(data, "Authentication cancelled");
-
       result = CURLE_LOGIN_DENIED;
+      break;
+    default:
+      break;
     }
-  }
-
-  return result;
-}
-
-/* For final responses in the AUTH sequence */
-static CURLcode smtp_state_auth_final_resp(struct connectdata *conn,
-                                           int smtpcode,
-                                           smtpstate instate)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-
-  (void)instate; /* no use for this yet */
-
-  if(smtpcode != 235) {
-    failf(data, "Authentication failed: %d", smtpcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else
-    /* End of connect phase */
-    state(conn, SMTP_STOP);
 
   return result;
 }
@@ -1591,69 +1039,8 @@ static CURLcode smtp_statemach_act(struct connectdata *conn)
       result = smtp_state_starttls_resp(conn, smtpcode, smtpc->state);
       break;
 
-    case SMTP_AUTH_PLAIN:
-      result = smtp_state_auth_plain_resp(conn, smtpcode, smtpc->state);
-      break;
-
-    case SMTP_AUTH_LOGIN:
-      result = smtp_state_auth_login_resp(conn, smtpcode, smtpc->state);
-      break;
-
-    case SMTP_AUTH_LOGIN_PASSWD:
-      result = smtp_state_auth_login_password_resp(conn, smtpcode,
-                                                   smtpc->state);
-      break;
-
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-    case SMTP_AUTH_CRAMMD5:
-      result = smtp_state_auth_cram_resp(conn, smtpcode, smtpc->state);
-      break;
-
-    case SMTP_AUTH_DIGESTMD5:
-      result = smtp_state_auth_digest_resp(conn, smtpcode, smtpc->state);
-      break;
-
-    case SMTP_AUTH_DIGESTMD5_RESP:
-      result = smtp_state_auth_digest_resp_resp(conn, smtpcode, smtpc->state);
-      break;
-#endif
-
-#ifdef USE_NTLM
-    case SMTP_AUTH_NTLM:
-      result = smtp_state_auth_ntlm_resp(conn, smtpcode, smtpc->state);
-      break;
-
-    case SMTP_AUTH_NTLM_TYPE2MSG:
-      result = smtp_state_auth_ntlm_type2msg_resp(conn, smtpcode,
-                                                  smtpc->state);
-      break;
-#endif
-
-#if defined(USE_KERBEROS5)
-    case SMTP_AUTH_GSSAPI:
-      result = smtp_state_auth_gssapi_resp(conn, smtpcode, smtpc->state);
-      break;
-
-    case SMTP_AUTH_GSSAPI_TOKEN:
-      result = smtp_state_auth_gssapi_token_resp(conn, smtpcode, smtpc->state);
-      break;
-
-    case SMTP_AUTH_GSSAPI_NO_DATA:
-      result = smtp_state_auth_gssapi_no_data_resp(conn, smtpcode,
-                                                   smtpc->state);
-      break;
-#endif
-
-    case SMTP_AUTH_XOAUTH2:
-      result = smtp_state_auth_xoauth2_resp(conn, smtpcode, smtpc->state);
-      break;
-
-    case SMTP_AUTH_CANCEL:
-      result = smtp_state_auth_cancel_resp(conn, smtpcode, smtpc->state);
-      break;
-
-    case SMTP_AUTH_FINAL:
-      result = smtp_state_auth_final_resp(conn, smtpcode, smtpc->state);
+    case SMTP_AUTH:
+      result = smtp_state_auth_resp(conn, smtpcode, smtpc->state);
       break;
 
     case SMTP_COMMAND:
@@ -1766,8 +1153,8 @@ static CURLcode smtp_connect(struct connectdata *conn, bool *done)
   pp->endofresp = smtp_endofresp;
   pp->conn = conn;
 
-  /* Set the default preferred authentication mechanism */
-  smtpc->prefmech = SASL_AUTH_ANY;
+  /* Initialize the SASL storage */
+  Curl_sasl_init(&smtpc->sasl, &saslsmtp);
 
   /* Initialise the pingpong layer */
   Curl_pp_init(pp);
@@ -1985,7 +1372,7 @@ static CURLcode smtp_disconnect(struct connectdata *conn, bool dead_connection)
   Curl_pp_disconnect(&smtpc->pp);
 
   /* Cleanup the SASL module */
-  Curl_sasl_cleanup(conn, smtpc->authused);
+  Curl_sasl_cleanup(conn, smtpc->sasl.authused);
 
   /* Cleanup our connection based variables */
   Curl_safefree(smtpc->domain);
@@ -2106,52 +1493,30 @@ static CURLcode smtp_parse_url_options(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
-  const char *options = conn->options;
-  const char *ptr = options;
-  bool reset = TRUE;
+  const char *ptr = conn->options;
+
+  smtpc->sasl.resetprefs = TRUE;
 
-  while(ptr && *ptr) {
+  while(!result && ptr && *ptr) {
     const char *key = ptr;
+    const char *value;
 
     while(*ptr && *ptr != '=')
         ptr++;
 
-    if(strnequal(key, "AUTH", 4)) {
-      size_t len = 0;
-      const char *value = ++ptr;
+    value = ptr + 1;
 
-      if(reset) {
-        reset = FALSE;
-        smtpc->prefmech = SASL_AUTH_NONE;
-      }
-
-      while(*ptr && *ptr != ';') {
-        ptr++;
-        len++;
-      }
+    while(*ptr && *ptr != ';')
+      ptr++;
 
-      if(strnequal(value, "*", len))
-        smtpc->prefmech = SASL_AUTH_ANY;
-      else if(strnequal(value, SASL_MECH_STRING_LOGIN, len))
-        smtpc->prefmech |= SASL_MECH_LOGIN;
-      else if(strnequal(value, SASL_MECH_STRING_PLAIN, len))
-        smtpc->prefmech |= SASL_MECH_PLAIN;
-      else if(strnequal(value, SASL_MECH_STRING_CRAM_MD5, len))
-        smtpc->prefmech |= SASL_MECH_CRAM_MD5;
-      else if(strnequal(value, SASL_MECH_STRING_DIGEST_MD5, len))
-        smtpc->prefmech |= SASL_MECH_DIGEST_MD5;
-      else if(strnequal(value, SASL_MECH_STRING_GSSAPI, len))
-        smtpc->prefmech |= SASL_MECH_GSSAPI;
-      else if(strnequal(value, SASL_MECH_STRING_NTLM, len))
-        smtpc->prefmech |= SASL_MECH_NTLM;
-      else if(strnequal(value, SASL_MECH_STRING_XOAUTH2, len))
-        smtpc->prefmech |= SASL_MECH_XOAUTH2;
-
-      if(*ptr == ';')
-        ptr++;
-    }
+    if(strnequal(key, "AUTH=", 5))
+      result = Curl_sasl_parse_url_auth_option(&smtpc->sasl,
+                                               value, ptr - value);
     else
       result = CURLE_URL_MALFORMAT;
+
+    if(*ptr == ';')
+      ptr++;
   }
 
   return result;
@@ -2203,110 +1568,6 @@ static CURLcode smtp_parse_custom_request(struct connectdata *conn)
   return result;
 }
 
-/***********************************************************************
- *
- * smtp_calc_sasl_details()
- *
- * Calculate the required login details for SASL authentication.
- */
-static CURLcode smtp_calc_sasl_details(struct connectdata *conn,
-                                       const char **mech,
-                                       char **initresp, size_t *len,
-                                       smtpstate *state1, smtpstate *state2)
-{
-  CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
-  struct smtp_conn *smtpc = &conn->proto.smtpc;
-
-  /* Calculate the supported authentication mechanism, by decreasing order of
-     security, as well as the initial response where appropriate */
-#if defined(USE_KERBEROS5)
-  if((smtpc->authmechs & SASL_MECH_GSSAPI) &&
-     (smtpc->prefmech & SASL_MECH_GSSAPI)) {
-    smtpc->mutual_auth = FALSE; /* TODO: Calculate mutual authentication */
-
-    *mech = SASL_MECH_STRING_GSSAPI;
-    *state1 = SMTP_AUTH_GSSAPI;
-    *state2 = SMTP_AUTH_GSSAPI_TOKEN;
-    smtpc->authused = SASL_MECH_GSSAPI;
-
-    if(data->set.sasl_ir)
-      result = Curl_sasl_create_gssapi_user_message(data, conn->user,
-                                                    conn->passwd, "smtp",
-                                                    smtpc->mutual_auth,
-                                                    NULL, &conn->krb5,
-                                                    initresp, len);
-    }
-  else
-#endif
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-  if((smtpc->authmechs & SASL_MECH_DIGEST_MD5) &&
-     (smtpc->prefmech & SASL_MECH_DIGEST_MD5)) {
-    *mech = SASL_MECH_STRING_DIGEST_MD5;
-    *state1 = SMTP_AUTH_DIGESTMD5;
-    smtpc->authused = SASL_MECH_DIGEST_MD5;
-  }
-  else if((smtpc->authmechs & SASL_MECH_CRAM_MD5) &&
-          (smtpc->prefmech & SASL_MECH_CRAM_MD5)) {
-    *mech = SASL_MECH_STRING_CRAM_MD5;
-    *state1 = SMTP_AUTH_CRAMMD5;
-    smtpc->authused = SASL_MECH_CRAM_MD5;
-  }
-  else
-#endif
-#ifdef USE_NTLM
-  if((smtpc->authmechs & SASL_MECH_NTLM) &&
-     (smtpc->prefmech & SASL_MECH_NTLM)) {
-    *mech = SASL_MECH_STRING_NTLM;
-    *state1 = SMTP_AUTH_NTLM;
-    *state2 = SMTP_AUTH_NTLM_TYPE2MSG;
-    smtpc->authused = SASL_MECH_NTLM;
-
-    if(data->set.sasl_ir)
-      result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
-                                                   &conn->ntlm,
-                                                   initresp, len);
-    }
-  else
-#endif
-  if(((smtpc->authmechs & SASL_MECH_XOAUTH2) &&
-      (smtpc->prefmech & SASL_MECH_XOAUTH2) &&
-      (smtpc->prefmech != SASL_AUTH_ANY)) || conn->xoauth2_bearer) {
-    *mech = SASL_MECH_STRING_XOAUTH2;
-    *state1 = SMTP_AUTH_XOAUTH2;
-    *state2 = SMTP_AUTH_FINAL;
-    smtpc->authused = SASL_MECH_XOAUTH2;
-
-    if(data->set.sasl_ir)
-      result = Curl_sasl_create_xoauth2_message(data, conn->user,
-                                                conn->xoauth2_bearer,
-                                                initresp, len);
-  }
-  else if((smtpc->authmechs & SASL_MECH_LOGIN) &&
-          (smtpc->prefmech & SASL_MECH_LOGIN)) {
-    *mech = SASL_MECH_STRING_LOGIN;
-    *state1 = SMTP_AUTH_LOGIN;
-    *state2 = SMTP_AUTH_LOGIN_PASSWD;
-    smtpc->authused = SASL_MECH_LOGIN;
-
-    if(data->set.sasl_ir)
-      result = Curl_sasl_create_login_message(data, conn->user, initresp, len);
-  }
-  else if((smtpc->authmechs & SASL_MECH_PLAIN) &&
-          (smtpc->prefmech & SASL_MECH_PLAIN)) {
-    *mech = SASL_MECH_STRING_PLAIN;
-    *state1 = SMTP_AUTH_PLAIN;
-    *state2 = SMTP_AUTH_FINAL;
-    smtpc->authused = SASL_MECH_PLAIN;
-
-    if(data->set.sasl_ir)
-      result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
-                                              initresp, len);
-  }
-
-  return result;
-}
-
 CURLcode Curl_smtp_escape_eob(struct connectdata *conn, const ssize_t nread)
 {
   /* When sending a SMTP payload we must detect CRLF. sequences making sure
@@ -2396,13 +1657,13 @@ CURLcode Curl_smtp_escape_eob(struct connectdata *conn, const ssize_t nread)
     data->state.scratch = scratch;
 
     /* Free the old scratch buffer */
-    Curl_safefree(oldscratch);
+    free(oldscratch);
 
     /* Set the new amount too */
     data->req.upload_present = si;
   }
   else
-    Curl_safefree(newscratch);
+    free(newscratch);
 
   return CURLE_OK;
 }
index 7a95efe..9fbe0c5 100644 (file)
@@ -23,6 +23,7 @@
  ***************************************************************************/
 
 #include "pingpong.h"
+#include "curl_sasl.h"
 
 /****************************************************************************
  * SMTP unique setup
@@ -36,20 +37,7 @@ typedef enum {
   SMTP_STARTTLS,
   SMTP_UPGRADETLS,  /* asynchronously upgrade the connection to SSL/TLS
                        (multi mode only) */
-  SMTP_AUTH_PLAIN,
-  SMTP_AUTH_LOGIN,
-  SMTP_AUTH_LOGIN_PASSWD,
-  SMTP_AUTH_CRAMMD5,
-  SMTP_AUTH_DIGESTMD5,
-  SMTP_AUTH_DIGESTMD5_RESP,
-  SMTP_AUTH_NTLM,
-  SMTP_AUTH_NTLM_TYPE2MSG,
-  SMTP_AUTH_GSSAPI,
-  SMTP_AUTH_GSSAPI_TOKEN,
-  SMTP_AUTH_GSSAPI_NO_DATA,
-  SMTP_AUTH_XOAUTH2,
-  SMTP_AUTH_CANCEL,
-  SMTP_AUTH_FINAL,
+  SMTP_AUTH,
   SMTP_COMMAND,     /* VRFY, EXPN, NOOP, RSET and HELP */
   SMTP_MAIL,        /* MAIL FROM */
   SMTP_RCPT,        /* RCPT TO */
@@ -79,14 +67,11 @@ struct smtp_conn {
   smtpstate state;         /* Always use smtp.c:state() to change state! */
   bool ssldone;            /* Is connect() over SSL done? */
   char *domain;            /* Client address/name to send in the EHLO */
-  unsigned int authmechs;  /* Accepted authentication mechanisms */
-  unsigned int prefmech;   /* Preferred authentication mechanism */
-  unsigned int authused;   /* Auth mechanism used for the connection */
+  struct SASL sasl;        /* SASL-related storage */
   bool tls_supported;      /* StartTLS capability supported by server */
   bool size_supported;     /* If server supports SIZE extension according to
                               RFC 1870 */
   bool auth_supported;     /* AUTH capability supported by server */
-  bool mutual_auth;        /* Mutual authentication enabled (GSSAPI only) */
 };
 
 extern const struct Curl_handler Curl_handler_smtp;
index 6c6585b..7d3f782 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -382,7 +382,7 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
 
   /* RFC1928 chapter 5 specifies max 255 chars for domain name in packet */
   if(!socks5_resolve_local && hostname_len > 255) {
-    infof(conn->data,"SOCKS5: server resolving disabled for hostnames of "
+    infof(conn->data, "SOCKS5: server resolving disabled for hostnames of "
           "length > 255 [actual len=%zu]\n", hostname_len);
     socks5_resolve_local = TRUE;
   }
index f195c1a..8e575c2 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2009, 2011, Markus Moeller, <markus_moeller@compuserve.com>
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include "curl_setup.h"
 
-#ifndef CURL_DISABLE_PROXY
-
-#ifdef HAVE_GSSAPI
-#ifdef HAVE_OLD_GSSMIT
-#define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
-#define NCOMPAT 1
-#endif
-#ifndef gss_nt_service_name
-#define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE
-#endif
+#if defined(HAVE_GSSAPI) && !defined(CURL_DISABLE_PROXY)
 
 #include "curl_gssapi.h"
 #include "urldata.h"
 #include "timeval.h"
 #include "socks.h"
 #include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -60,7 +48,7 @@ static int check_gss_err(struct SessionHandle *data,
                          const char* function)
 {
   if(GSS_ERROR(major_status)) {
-    OM_uint32 maj_stat,min_stat;
+    OM_uint32 maj_stat, min_stat;
     OM_uint32 msg_ctx = 0;
     gss_buffer_desc status_string;
     char buf[1024];
@@ -104,10 +92,10 @@ static int check_gss_err(struct SessionHandle *data,
       gss_release_buffer(&min_stat, &status_string);
     }
     failf(data, "GSS-API error: %s failed:\n%s", function, buf);
-    return(1);
+    return 1;
   }
 
-  return(0);
+  return 0;
 }
 
 CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
@@ -143,7 +131,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
    */
 
   /* prepare service name */
-  if(strchr(serviceptr,'/')) {
+  if(strchr(serviceptr, '/')) {
     service.value = malloc(strlen(serviceptr));
     if(!service.value)
       return CURLE_OUT_OF_MEMORY;
@@ -162,13 +150,13 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
              serviceptr, conn->proxy.name);
 
     gss_major_status = gss_import_name(&gss_minor_status, &service,
-                                       gss_nt_service_name, &server);
+                                       GSS_C_NT_HOSTBASED_SERVICE, &server);
   }
 
   gss_release_buffer(&gss_status, &service); /* clear allocated memory */
 
-  if(check_gss_err(data,gss_major_status,
-                   gss_minor_status,"gss_import_name()")) {
+  if(check_gss_err(data, gss_major_status,
+                   gss_minor_status, "gss_import_name()")) {
     failf(data, "Failed to create service name.");
     gss_release_name(&gss_status, &server);
     return CURLE_COULDNT_CONNECT;
@@ -190,8 +178,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
 
     if(gss_token != GSS_C_NO_BUFFER)
       gss_release_buffer(&gss_status, &gss_recv_token);
-    if(check_gss_err(data,gss_major_status,
-                     gss_minor_status,"gss_init_sec_context")) {
+    if(check_gss_err(data, gss_major_status,
+                     gss_minor_status, "gss_init_sec_context")) {
       gss_release_name(&gss_status, &server);
       gss_release_buffer(&gss_status, &gss_recv_token);
       gss_release_buffer(&gss_status, &gss_send_token);
@@ -204,7 +192,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
       socksreq[0] = 1;    /* GSS-API subnegotiation version */
       socksreq[1] = 1;    /* authentication message type */
       us_length = htons((short)gss_send_token.length);
-      memcpy(socksreq+2,&us_length,sizeof(short));
+      memcpy(socksreq+2, &us_length, sizeof(short));
 
       code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
       if(code || (4 != written)) {
@@ -303,8 +291,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   gss_major_status = gss_inquire_context (&gss_minor_status, gss_context,
                                           &gss_client_name, NULL, NULL, NULL,
                                           NULL, NULL, NULL);
-  if(check_gss_err(data,gss_major_status,
-                   gss_minor_status,"gss_inquire_context")) {
+  if(check_gss_err(data, gss_major_status,
+                   gss_minor_status, "gss_inquire_context")) {
     gss_delete_sec_context(&gss_status, &gss_context, NULL);
     gss_release_name(&gss_status, &gss_client_name);
     failf(data, "Failed to determine user name.");
@@ -312,8 +300,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   }
   gss_major_status = gss_display_name(&gss_minor_status, gss_client_name,
                                       &gss_send_token, NULL);
-  if(check_gss_err(data,gss_major_status,
-                   gss_minor_status,"gss_display_name")) {
+  if(check_gss_err(data, gss_major_status,
+                   gss_minor_status, "gss_display_name")) {
     gss_delete_sec_context(&gss_status, &gss_context, NULL);
     gss_release_name(&gss_status, &gss_client_name);
     gss_release_buffer(&gss_status, &gss_send_token);
@@ -384,7 +372,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
    */
   if(data->set.socks5_gssapi_nec) {
     us_length = htons((short)1);
-    memcpy(socksreq+2,&us_length,sizeof(short));
+    memcpy(socksreq+2, &us_length, sizeof(short));
   }
   else {
     gss_send_token.length = 1;
@@ -399,7 +387,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
                                 GSS_C_QOP_DEFAULT, &gss_send_token,
                                 &gss_conf_state, &gss_w_token);
 
-    if(check_gss_err(data,gss_major_status,gss_minor_status,"gss_wrap")) {
+    if(check_gss_err(data, gss_major_status, gss_minor_status, "gss_wrap")) {
       gss_release_buffer(&gss_status, &gss_send_token);
       gss_release_buffer(&gss_status, &gss_w_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
@@ -409,7 +397,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     gss_release_buffer(&gss_status, &gss_send_token);
 
     us_length = htons((short)gss_w_token.length);
-    memcpy(socksreq+2,&us_length,sizeof(short));
+    memcpy(socksreq+2, &us_length, sizeof(short));
   }
 
   code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
@@ -487,7 +475,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
                                   &gss_recv_token, &gss_w_token,
                                   0, GSS_C_QOP_DEFAULT);
 
-    if(check_gss_err(data,gss_major_status,gss_minor_status,"gss_unwrap")) {
+    if(check_gss_err(data, gss_major_status, gss_minor_status, "gss_unwrap")) {
       gss_release_buffer(&gss_status, &gss_recv_token);
       gss_release_buffer(&gss_status, &gss_w_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
@@ -504,7 +492,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
       return CURLE_COULDNT_CONNECT;
     }
 
-    memcpy(socksreq,gss_w_token.value,gss_w_token.length);
+    memcpy(socksreq, gss_w_token.value, gss_w_token.length);
     gss_release_buffer(&gss_status, &gss_w_token);
   }
   else {
@@ -516,7 +504,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
       return CURLE_COULDNT_CONNECT;
     }
 
-    memcpy(socksreq,gss_recv_token.value,gss_recv_token.length);
+    memcpy(socksreq, gss_recv_token.value, gss_recv_token.length);
     gss_release_buffer(&gss_status, &gss_recv_token);
   }
 
@@ -530,6 +518,5 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
 
   return CURLE_OK;
 }
-#endif
 
-#endif /* CURL_DISABLE_PROXY */
+#endif /* HAVE_GSSAPI && !CURL_DISABLE_PROXY */
index 0158627..a7708b2 100644 (file)
@@ -5,8 +5,8 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2009, 2011, Markus Moeller, <markus_moeller@compuserve.com>
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "curl_sspi.h"
 #include "curl_multibyte.h"
 #include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use the internal *printf() functions */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -107,8 +104,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     service_name = malloc(strlen(service) + strlen(conn->proxy.name) + 2);
     if(!service_name)
       return CURLE_OUT_OF_MEMORY;
-    snprintf(service_name,strlen(service) +strlen(conn->proxy.name)+2,"%s/%s",
-             service,conn->proxy.name);
+    snprintf(service_name, strlen(service) +strlen(conn->proxy.name)+2,
+             "%s/%s", service, conn->proxy.name);
   }
 
   input_desc.cBuffers = 1;
@@ -146,7 +143,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
 
   if(check_sspi_err(conn, status, "AcquireCredentialsHandle")) {
     failf(data, "Failed to acquire credentials.");
-    Curl_safefree(service_name);
+    free(service_name);
     s_pSecFn->FreeCredentialsHandle(&cred_handle);
     return CURLE_COULDNT_CONNECT;
   }
@@ -185,7 +182,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     }
 
     if(check_sspi_err(conn, status, "InitializeSecurityContext")) {
-      Curl_safefree(service_name);
+      free(service_name);
       s_pSecFn->FreeCredentialsHandle(&cred_handle);
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       if(sspi_recv_token.pvBuffer)
@@ -203,7 +200,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
       code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
       if(code || (4 != written)) {
         failf(data, "Failed to send SSPI authentication request.");
-        Curl_safefree(service_name);
+        free(service_name);
         if(sspi_send_token.pvBuffer)
           s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
         if(sspi_recv_token.pvBuffer)
@@ -217,7 +214,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
                               sspi_send_token.cbBuffer, &written);
       if(code || (sspi_send_token.cbBuffer != (size_t)written)) {
         failf(data, "Failed to send SSPI authentication token.");
-        Curl_safefree(service_name);
+        free(service_name);
         if(sspi_send_token.pvBuffer)
           s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
         if(sspi_recv_token.pvBuffer)
@@ -257,7 +254,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     result = Curl_blockread_all(conn, sock, (char *)socksreq, 4, &actualread);
     if(result || (actualread != 4)) {
       failf(data, "Failed to receive SSPI authentication response.");
-      Curl_safefree(service_name);
+      free(service_name);
       s_pSecFn->FreeCredentialsHandle(&cred_handle);
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       return CURLE_COULDNT_CONNECT;
@@ -267,7 +264,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     if(socksreq[1] == 255) { /* status / message type */
       failf(data, "User was rejected by the SOCKS5 server (%u %u).",
             (unsigned int)socksreq[0], (unsigned int)socksreq[1]);
-      Curl_safefree(service_name);
+      free(service_name);
       s_pSecFn->FreeCredentialsHandle(&cred_handle);
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       return CURLE_COULDNT_CONNECT;
@@ -276,7 +273,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     if(socksreq[1] != 1) { /* status / messgae type */
       failf(data, "Invalid SSPI authentication response type (%u %u).",
             (unsigned int)socksreq[0], (unsigned int)socksreq[1]);
-      Curl_safefree(service_name);
+      free(service_name);
       s_pSecFn->FreeCredentialsHandle(&cred_handle);
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       return CURLE_COULDNT_CONNECT;
@@ -289,7 +286,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     sspi_recv_token.pvBuffer = malloc(us_length);
 
     if(!sspi_recv_token.pvBuffer) {
-      Curl_safefree(service_name);
+      free(service_name);
       s_pSecFn->FreeCredentialsHandle(&cred_handle);
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       return CURLE_OUT_OF_MEMORY;
@@ -299,7 +296,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
 
     if(result || (actualread != us_length)) {
       failf(data, "Failed to receive SSPI authentication token.");
-      Curl_safefree(service_name);
+      free(service_name);
       if(sspi_recv_token.pvBuffer)
         s_pSecFn->FreeContextBuffer(sspi_recv_token.pvBuffer);
       s_pSecFn->FreeCredentialsHandle(&cred_handle);
@@ -310,7 +307,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     context_handle = &sspi_context;
   }
 
-  Curl_safefree(service_name);
+  free(service_name);
 
   /* Everything is good so far, user was authenticated! */
   status = s_pSecFn->QueryCredentialsAttributes(&cred_handle,
@@ -405,7 +402,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
       return CURLE_OUT_OF_MEMORY;
     }
 
-    memcpy(sspi_w_token[1].pvBuffer,&gss_enc,1);
+    memcpy(sspi_w_token[1].pvBuffer, &gss_enc, 1);
     sspi_w_token[2].BufferType = SECBUFFER_PADDING;
     sspi_w_token[2].cbBuffer = sspi_sizes.cbBlockSize;
     sspi_w_token[2].pvBuffer = malloc(sspi_sizes.cbBlockSize);
@@ -459,7 +456,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     sspi_w_token[2].cbBuffer = 0;
 
     us_length = htons((short)sspi_send_token.cbBuffer);
-    memcpy(socksreq+2,&us_length,sizeof(short));
+    memcpy(socksreq+2, &us_length, sizeof(short));
   }
 
   code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
@@ -472,7 +469,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   }
 
   if(data->set.socks5_gssapi_nec) {
-    memcpy(socksreq,&gss_enc,1);
+    memcpy(socksreq, &gss_enc, 1);
     code = Curl_write_plain(conn, sock, (char *)socksreq, 1, &written);
     if(code || (1 != written)) {
       failf(data, "Failed to send SSPI encryption type.");
@@ -570,7 +567,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
       return CURLE_COULDNT_CONNECT;
     }
 
-    memcpy(socksreq,sspi_w_token[1].pvBuffer,sspi_w_token[1].cbBuffer);
+    memcpy(socksreq, sspi_w_token[1].pvBuffer, sspi_w_token[1].cbBuffer);
     s_pSecFn->FreeContextBuffer(sspi_w_token[0].pvBuffer);
     s_pSecFn->FreeContextBuffer(sspi_w_token[1].pvBuffer);
   }
@@ -582,7 +579,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       return CURLE_COULDNT_CONNECT;
     }
-    memcpy(socksreq,sspi_w_token[0].pvBuffer,sspi_w_token[0].cbBuffer);
+    memcpy(socksreq, sspi_w_token[0].pvBuffer, sspi_w_token[0].cbBuffer);
     s_pSecFn->FreeContextBuffer(sspi_w_token[0].pvBuffer);
   }
 
index 5bb7065..b87b6cf 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1997 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1997 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -101,13 +101,13 @@ struct Curl_tree *Curl_splayinsert(struct timeval i,
                                    struct Curl_tree *t,
                                    struct Curl_tree *node)
 {
-  static const struct timeval KEY_NOTUSED = {-1,-1}; /* will *NEVER* appear */
+  static const struct timeval KEY_NOTUSED = {-1, -1}; /* will *NEVER* appear */
 
   if(node == NULL)
     return t;
 
   if(t != NULL) {
-    t = Curl_splay(i,t);
+    t = Curl_splay(i, t);
     if(compare(i, t->key)==0) {
       /* There already exists a node in the tree with the very same key. Build
          a linked list of nodes. We make the new 'node' struct the new master
@@ -162,7 +162,7 @@ struct Curl_tree *Curl_splaygetbest(struct timeval i,
     return NULL;
   }
 
-  t = Curl_splay(i,t);
+  t = Curl_splay(i, t);
   if(compare(i, t->key) < 0) {
     /* too big node, try the smaller chain */
     if(t->smaller)
@@ -223,7 +223,7 @@ int Curl_splayremovebyaddr(struct Curl_tree *t,
                            struct Curl_tree *removenode,
                            struct Curl_tree **newroot)
 {
-  static const struct timeval KEY_NOTUSED = {-1,-1}; /* will *NEVER* appear */
+  static const struct timeval KEY_NOTUSED = {-1, -1}; /* will *NEVER* appear */
   struct Curl_tree *x;
 
   if(!t || !removenode)
index d7e88c6..94195a7 100644 (file)
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "multiif.h"
 #include "select.h"
 #include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -858,7 +855,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
         }
 
         if(out_of_memory || sshc->rsa == NULL) {
-          Curl_safefree(home);
+          free(home);
           Curl_safefree(sshc->rsa);
           Curl_safefree(sshc->rsa_pub);
           state(conn, SSH_SESSION_FREE);
@@ -870,7 +867,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
         if(!sshc->passphrase)
           sshc->passphrase = "";
 
-        Curl_safefree(home);
+        free(home);
 
         infof(data, "Using SSH public key file '%s'\n", sshc->rsa_pub);
         infof(data, "Using SSH private key file '%s'\n", sshc->rsa);
@@ -938,6 +935,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
       }
       else {
         state(conn, SSH_AUTH_HOST_INIT);
+        rc = 0; /* clear rc and continue */
       }
       break;
 
@@ -1022,11 +1020,11 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
                                     sshc->sshagent_identity);
 
         if(rc < 0) {
-          if(rc != LIBSSH2_ERROR_EAGAIN) {
+          if(rc != LIBSSH2_ERROR_EAGAIN)
             /* tried and failed? go to next identity */
             sshc->sshagent_prev_identity = sshc->sshagent_identity;
-          }
-          break;
+          else
+            break;
         }
       }
 
@@ -1040,8 +1038,10 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
         infof(data, "Agent based authentication successful\n");
         state(conn, SSH_AUTH_DONE);
       }
-      else
+      else {
         state(conn, SSH_AUTH_KEY_INIT);
+        rc = 0; /* clear rc and continue */
+      }
 #endif
       break;
 
@@ -1740,8 +1740,8 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
                 BUFSIZE : curlx_sotouz(data->state.resume_from - passed);
 
               size_t actuallyread =
-                conn->fread_func(data->state.buffer, 1, readthisamountnow,
-                                 conn->fread_in);
+                data->set.fread_func(data->state.buffer, 1, readthisamountnow,
+                                     data->set.in);
 
               passed += actuallyread;
               if((actuallyread == 0) || (actuallyread > readthisamountnow)) {
@@ -1921,7 +1921,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
           }
           result = Curl_client_write(conn, CLIENTWRITE_BODY,
                                      tmpLine, sshc->readdir_len+1);
-          Curl_safefree(tmpLine);
+          free(tmpLine);
 
           if(result) {
             state(conn, SSH_STOP);
@@ -2144,7 +2144,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
             /* from is relative to end of file */
             from += size;
           }
-          if(from >= size) {
+          if(from > size) {
             failf(data, "Offset (%"
                   CURL_FORMAT_CURL_OFF_T ") was beyond file size (%"
                   CURL_FORMAT_CURL_OFF_T ")", from, attrs.filesize);
@@ -2245,7 +2245,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
       DEBUGF(infof(data, "SFTP DONE done\n"));
 
       /* Check if nextstate is set and move .nextstate could be POSTQUOTE_INIT
-         After nextstate is executed,the control should come back to
+         After nextstate is executed, the control should come back to
          SSH_SFTP_CLOSE to pass the correct result back  */
       if(sshc->nextstate != SSH_NO_STATE &&
          sshc->nextstate != SSH_SFTP_CLOSE) {
@@ -3270,8 +3270,8 @@ get_pathname(const char **cpp, char **path)
   return CURLE_OK;
 
   fail:
-    Curl_safefree(*path);
-    return CURLE_QUOTE_ERROR;
+  Curl_safefree(*path);
+  return CURLE_QUOTE_ERROR;
 }
 
 
index 1bc3348..b3cc54c 100644 (file)
--- a/lib/ssh.h
+++ b/lib/ssh.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -44,9 +44,9 @@ typedef enum {
   SSH_AUTH_PKEY,
   SSH_AUTH_PASS_INIT,
   SSH_AUTH_PASS,
-  SSH_AUTH_AGENT_INIT,/* initialize then wait for connection to agent */
-  SSH_AUTH_AGENT_LIST,/* ask for list then wait for entire list to come */
-  SSH_AUTH_AGENT,     /* attempt one key at a time */
+  SSH_AUTH_AGENT_INIT, /* initialize then wait for connection to agent */
+  SSH_AUTH_AGENT_LIST, /* ask for list then wait for entire list to come */
+  SSH_AUTH_AGENT,      /* attempt one key at a time */
   SSH_AUTH_HOST_INIT,
   SSH_AUTH_HOST,
   SSH_AUTH_KEY_INIT,
index a997b12..5685b81 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -44,7 +44,7 @@ char *curlx_strdup(const char *str)
   if(!newstr)
     return (char *)NULL;
 
-  memcpy(newstr,str,(len+1)*sizeof(char));
+  memcpy(newstr, str, (len+1)*sizeof(char));
 
   return newstr;
 
index b85b568..5657141 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2004 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2004 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #endif
 
 #include "strerror.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -301,6 +298,9 @@ curl_easy_strerror(CURLcode error)
   case CURLE_SSL_PINNEDPUBKEYNOTMATCH:
     return "SSL public key does not match pinned public key";
 
+  case CURLE_SSL_INVALIDCERTSTATUS:
+    return "SSL server certificate status verification FAILED";
+
     /* error codes not used by current libcurl */
   case CURLE_OBSOLETE20:
   case CURLE_OBSOLETE24:
@@ -641,7 +641,7 @@ const char *Curl_strerror(struct connectdata *conn, int err)
 
     FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err,
                   LANG_NEUTRAL, wbuf, sizeof(wbuf)/sizeof(wchar_t), NULL);
-    wcstombs(buf,wbuf,max);
+    wcstombs(buf, wbuf, max);
   }
 #else
   /* 'sys_nerr' is the maximum errno number, it is not widely portable */
@@ -708,9 +708,9 @@ const char *Curl_strerror(struct connectdata *conn, int err)
   buf[max] = '\0'; /* make sure the string is zero terminated */
 
   /* strip trailing '\r\n' or '\n'. */
-  if((p = strrchr(buf,'\n')) != NULL && (p - buf) >= 2)
+  if((p = strrchr(buf, '\n')) != NULL && (p - buf) >= 2)
      *p = '\0';
-  if((p = strrchr(buf,'\r')) != NULL && (p - buf) >= 1)
+  if((p = strrchr(buf, '\r')) != NULL && (p - buf) >= 1)
      *p = '\0';
 
   if(old_errno != ERRNO)
@@ -824,6 +824,9 @@ const char *Curl_sspi_strerror (struct connectdata *conn, int err)
     case SEC_E_OK:
       txt = "No error";
       break;
+    case CRYPT_E_REVOKED:
+      txt = "CRYPT_E_REVOKED";
+      break;
     case SEC_E_ALGORITHM_MISMATCH:
       txt = "SEC_E_ALGORITHM_MISMATCH";
       break;
@@ -1067,6 +1070,12 @@ const char *Curl_sspi_strerror (struct connectdata *conn, int err)
 
   if(err == SEC_E_OK)
     strncpy(outbuf, txt, outmax);
+  else if(err == SEC_E_ILLEGAL_MESSAGE)
+    snprintf(outbuf, outmax,
+             "SEC_E_ILLEGAL_MESSAGE (0x%04X%04X) - This error usually occurs "
+             "when a fatal SSL/TLS alert is received (e.g. handshake failed). "
+             "More detail may be available in the Windows System event log.",
+             (err >> 16) & 0xffff, err & 0xffff);
   else {
     str = txtbuf;
     snprintf(txtbuf, sizeof(txtbuf), "%s (0x%04X%04X)",
@@ -1082,7 +1091,7 @@ const char *Curl_sspi_strerror (struct connectdata *conn, int err)
                        FORMAT_MESSAGE_IGNORE_INSERTS,
                        NULL, err, LANG_NEUTRAL,
                        wbuf, sizeof(wbuf)/sizeof(wchar_t), NULL)) {
-        wcstombs(msgbuf,wbuf,sizeof(msgbuf)-1);
+        wcstombs(msgbuf, wbuf, sizeof(msgbuf)-1);
         msg_formatted = TRUE;
       }
     }
@@ -1097,9 +1106,9 @@ const char *Curl_sspi_strerror (struct connectdata *conn, int err)
     if(msg_formatted) {
       msgbuf[sizeof(msgbuf)-1] = '\0';
       /* strip trailing '\r\n' or '\n' */
-      if((p = strrchr(msgbuf,'\n')) != NULL && (p - msgbuf) >= 2)
+      if((p = strrchr(msgbuf, '\n')) != NULL && (p - msgbuf) >= 2)
          *p = '\0';
-      if((p = strrchr(msgbuf,'\r')) != NULL && (p - msgbuf) >= 1)
+      if((p = strrchr(msgbuf, '\r')) != NULL && (p - msgbuf) >= 1)
          *p = '\0';
       msg = msgbuf;
     }
index 176e994..aabf99d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "telnet.h"
 #include "connect.h"
 #include "progress.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 
 #define  TELOPTS
 #define  TELCMDS
 
 #include "arpa_telnet.h"
-#include "curl_memory.h"
 #include "select.h"
 #include "strequal.h"
 #include "rawstr.h"
 #include "warnless.h"
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 #define SUBBUFSIZE 512
@@ -228,9 +226,9 @@ check_wsock2 ( struct SessionHandle *data )
   if(LOBYTE(wsaData.wVersion) != LOBYTE(wVersionRequested) ||
       HIBYTE(wsaData.wVersion) != HIBYTE(wVersionRequested)) {
       /* Our version isn't supported */
-      failf(data,"insufficient winsock version to support "
-            "telnet");
-      return CURLE_FAILED_INIT;
+    failf(data, "insufficient winsock version to support "
+          "telnet");
+    return CURLE_FAILED_INIT;
   }
 
   /* Our version is supported */
@@ -1176,7 +1174,7 @@ CURLcode telrcv(struct connectdata *conn,
         if(c == CURL_IAC)
           tn->telrcv_state = CURL_TS_SE;
         else
-          CURL_SB_ACCUM(tn,c);
+          CURL_SB_ACCUM(tn, c);
         break;
 
       case CURL_TS_SE:
@@ -1201,7 +1199,7 @@ CURLcode telrcv(struct connectdata *conn,
             tn->telrcv_state = CURL_TS_IAC;
             goto process_iac;
           }
-          CURL_SB_ACCUM(tn,c);
+          CURL_SB_ACCUM(tn, c);
           tn->telrcv_state = CURL_TS_SB;
         }
         else
@@ -1282,7 +1280,7 @@ static CURLcode telnet_done(struct connectdata *conn,
 
 static CURLcode telnet_do(struct connectdata *conn, bool *done)
 {
-  CURLcode code;
+  CURLcode result;
   struct SessionHandle *data = conn->data;
   curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
 #ifdef USE_WINSOCK
@@ -1315,65 +1313,61 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
 
   *done = TRUE; /* unconditionally */
 
-  code = init_telnet(conn);
-  if(code)
-    return code;
+  result = init_telnet(conn);
+  if(result)
+    return result;
 
   tn = (struct TELNET *)data->req.protop;
 
-  code = check_telnet_options(conn);
-  if(code)
-    return code;
+  result = check_telnet_options(conn);
+  if(result)
+    return result;
 
 #ifdef USE_WINSOCK
   /*
   ** This functionality only works with WinSock >= 2.0.  So,
   ** make sure have it.
   */
-  code = check_wsock2(data);
-  if(code)
-    return code;
+  result = check_wsock2(data);
+  if(result)
+    return result;
 
   /* OK, so we have WinSock 2.0.  We need to dynamically */
   /* load ws2_32.dll and get the function pointers we need. */
   wsock2 = LoadLibrary(TEXT("WS2_32.DLL"));
   if(wsock2 == NULL) {
-    failf(data,"failed to load WS2_32.DLL (%d)", ERRNO);
+    failf(data, "failed to load WS2_32.DLL (%d)", ERRNO);
     return CURLE_FAILED_INIT;
   }
 
   /* Grab a pointer to WSACreateEvent */
-  create_event_func = GetProcAddress(wsock2,"WSACreateEvent");
+  create_event_func = GetProcAddress(wsock2, "WSACreateEvent");
   if(create_event_func == NULL) {
-    failf(data,"failed to find WSACreateEvent function (%d)",
-          ERRNO);
+    failf(data, "failed to find WSACreateEvent function (%d)", ERRNO);
     FreeLibrary(wsock2);
     return CURLE_FAILED_INIT;
   }
 
   /* And WSACloseEvent */
-  close_event_func = GetProcAddress(wsock2,"WSACloseEvent");
+  close_event_func = GetProcAddress(wsock2, "WSACloseEvent");
   if(close_event_func == NULL) {
-    failf(data,"failed to find WSACloseEvent function (%d)",
-          ERRNO);
+    failf(data, "failed to find WSACloseEvent function (%d)", ERRNO);
     FreeLibrary(wsock2);
     return CURLE_FAILED_INIT;
   }
 
   /* And WSAEventSelect */
-  event_select_func = GetProcAddress(wsock2,"WSAEventSelect");
+  event_select_func = GetProcAddress(wsock2, "WSAEventSelect");
   if(event_select_func == NULL) {
-    failf(data,"failed to find WSAEventSelect function (%d)",
-          ERRNO);
+    failf(data, "failed to find WSAEventSelect function (%d)", ERRNO);
     FreeLibrary(wsock2);
     return CURLE_FAILED_INIT;
   }
 
   /* And WSAEnumNetworkEvents */
-  enum_netevents_func = GetProcAddress(wsock2,"WSAEnumNetworkEvents");
+  enum_netevents_func = GetProcAddress(wsock2, "WSAEnumNetworkEvents");
   if(enum_netevents_func == NULL) {
-    failf(data,"failed to find WSAEnumNetworkEvents function (%d)",
-          ERRNO);
+    failf(data, "failed to find WSAEnumNetworkEvents function (%d)", ERRNO);
     FreeLibrary(wsock2);
     return CURLE_FAILED_INIT;
   }
@@ -1386,7 +1380,7 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
   /* First, create a sockets event object */
   event_handle = (WSAEVENT)create_event_func();
   if(event_handle == WSA_INVALID_EVENT) {
-    failf(data,"WSACreateEvent failed (%d)", SOCKERRNO);
+    failf(data, "WSACreateEvent failed (%d)", SOCKERRNO);
     FreeLibrary(wsock2);
     return CURLE_FAILED_INIT;
   }
@@ -1427,29 +1421,30 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
     case WAIT_TIMEOUT:
     {
       for(;;) {
-        if(obj_count == 1) {
+        if(data->set.is_fread_set) {
           /* read from user-supplied method */
-          code = (int)conn->fread_func(buf, 1, BUFSIZE - 1, conn->fread_in);
-          if(code == CURL_READFUNC_ABORT) {
+          result = (int)data->set.fread_func(buf, 1, BUFSIZE - 1,
+                                             data->set.in);
+          if(result == CURL_READFUNC_ABORT) {
             keepon = FALSE;
-            code = CURLE_READ_ERROR;
+            result = CURLE_READ_ERROR;
             break;
           }
 
-          if(code == CURL_READFUNC_PAUSE)
+          if(result == CURL_READFUNC_PAUSE)
             break;
 
-          if(code == 0)                        /* no bytes */
+          if(result == 0)                        /* no bytes */
             break;
 
-          readfile_read = code; /* fall thru with number of bytes read */
+          readfile_read = result; /* fall thru with number of bytes read */
         }
         else {
           /* read from stdin */
           if(!PeekNamedPipe(stdin_handle, NULL, 0, NULL,
                             &readfile_read, NULL)) {
             keepon = FALSE;
-            code = CURLE_READ_ERROR;
+            result = CURLE_READ_ERROR;
             break;
           }
 
@@ -1459,13 +1454,13 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
           if(!ReadFile(stdin_handle, buf, sizeof(data->state.buffer),
                        &readfile_read, NULL)) {
             keepon = FALSE;
-            code = CURLE_READ_ERROR;
+            result = CURLE_READ_ERROR;
             break;
           }
         }
 
-        code = send_telnet_data(conn, buf, readfile_read);
-        if(code) {
+        result = send_telnet_data(conn, buf, readfile_read);
+        if(result) {
           keepon = FALSE;
           break;
         }
@@ -1478,12 +1473,12 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
       if(!ReadFile(stdin_handle, buf, sizeof(data->state.buffer),
                    &readfile_read, NULL)) {
         keepon = FALSE;
-        code = CURLE_READ_ERROR;
+        result = CURLE_READ_ERROR;
         break;
       }
 
-      code = send_telnet_data(conn, buf, readfile_read);
-      if(code) {
+      result = send_telnet_data(conn, buf, readfile_read);
+      if(result) {
         keepon = FALSE;
         break;
       }
@@ -1495,20 +1490,20 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
       events.lNetworkEvents = 0;
       if(SOCKET_ERROR == enum_netevents_func(sockfd, event_handle, &events)) {
         if((err = SOCKERRNO) != EINPROGRESS) {
-          infof(data,"WSAEnumNetworkEvents failed (%d)", err);
+          infof(data, "WSAEnumNetworkEvents failed (%d)", err);
           keepon = FALSE;
-          code = CURLE_READ_ERROR;
+          result = CURLE_READ_ERROR;
         }
         break;
       }
       if(events.lNetworkEvents & FD_READ) {
         /* read data from network */
-        code = Curl_read(conn, sockfd, buf, BUFSIZE - 1, &nread);
+        result = Curl_read(conn, sockfd, buf, BUFSIZE - 1, &nread);
         /* read would've blocked. Loop again */
-        if(code == CURLE_AGAIN)
+        if(result == CURLE_AGAIN)
           break;
         /* returned not-zero, this an error */
-        else if(code) {
+        else if(result) {
           keepon = FALSE;
           break;
         }
@@ -1519,8 +1514,8 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
           break;
         }
 
-        code = telrcv(conn, (unsigned char *)buf, nread);
-        if(code) {
+        result = telrcv(conn, (unsigned char *) buf, nread);
+        if(result) {
           keepon = FALSE;
           break;
         }
@@ -1544,7 +1539,7 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
       now = Curl_tvnow();
       if(Curl_tvdiff(now, conn->created) >= data->set.timeout) {
         failf(data, "Time-out");
-        code = CURLE_OPERATION_TIMEDOUT;
+        result = CURLE_OPERATION_TIMEDOUT;
         keepon = FALSE;
       }
     }
@@ -1552,7 +1547,7 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
 
   /* We called WSACreateEvent, so call WSACloseEvent */
   if(!close_event_func(event_handle)) {
-    infof(data,"WSACloseEvent failed (%d)", SOCKERRNO);
+    infof(data, "WSACloseEvent failed (%d)", SOCKERRNO);
   }
 
   /* "Forget" pointers into the library we're about to free */
@@ -1563,18 +1558,18 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
 
   /* We called LoadLibrary, so call FreeLibrary */
   if(!FreeLibrary(wsock2))
-    infof(data,"FreeLibrary(wsock2) failed (%d)", ERRNO);
+    infof(data, "FreeLibrary(wsock2) failed (%d)", ERRNO);
 #else
   pfd[0].fd = sockfd;
   pfd[0].events = POLLIN;
 
-  if(conn->fread_func != (curl_read_callback)fread) {
+  if(data->set.fread_func != (curl_read_callback)fread) {
     poll_cnt = 1;
     interval_ms = 100; /* poll user-supplied read function */
   }
   else {
     /* really using fread, so infile is a FILE* */
-    pfd[1].fd = fileno((FILE *)conn->fread_in);
+    pfd[1].fd = fileno((FILE *)data->set.in);
     pfd[1].events = POLLIN;
     poll_cnt = 2;
     interval_ms = 1 * 1000;
@@ -1592,12 +1587,12 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
     default:                    /* read! */
       if(pfd[0].revents & POLLIN) {
         /* read data from network */
-        code = Curl_read(conn, sockfd, buf, BUFSIZE - 1, &nread);
+        result = Curl_read(conn, sockfd, buf, BUFSIZE - 1, &nread);
         /* read would've blocked. Loop again */
-        if(code == CURLE_AGAIN)
+        if(result == CURLE_AGAIN)
           break;
         /* returned not-zero, this an error */
-        else if(code) {
+        else if(result) {
           keepon = FALSE;
           break;
         }
@@ -1610,8 +1605,8 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
 
         total_dl += nread;
         Curl_pgrsSetDownloadCounter(data, total_dl);
-        code = telrcv(conn, (unsigned char *)buf, nread);
-        if(code) {
+        result = telrcv(conn, (unsigned char *)buf, nread);
+        if(result) {
           keepon = FALSE;
           break;
         }
@@ -1633,7 +1628,7 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
       }
       else {
         /* read from user-supplied method */
-        nread = (int)conn->fread_func(buf, 1, BUFSIZE - 1, conn->fread_in);
+        nread = (int)data->set.fread_func(buf, 1, BUFSIZE - 1, data->set.in);
         if(nread == CURL_READFUNC_ABORT) {
           keepon = FALSE;
           break;
@@ -1643,8 +1638,8 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
       }
 
       if(nread > 0) {
-        code = send_telnet_data(conn, buf, nread);
-        if(code) {
+        result = send_telnet_data(conn, buf, nread);
+        if(result) {
           keepon = FALSE;
           break;
         }
@@ -1661,13 +1656,13 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
       now = Curl_tvnow();
       if(Curl_tvdiff(now, conn->created) >= data->set.timeout) {
         failf(data, "Time-out");
-        code = CURLE_OPERATION_TIMEDOUT;
+        result = CURLE_OPERATION_TIMEDOUT;
         keepon = FALSE;
       }
     }
 
     if(Curl_pgrsUpdate(conn)) {
-      code = CURLE_ABORTED_BY_CALLBACK;
+      result = CURLE_ABORTED_BY_CALLBACK;
       break;
     }
   }
@@ -1675,6 +1670,6 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
   /* mark this as "no further transfer wanted" */
   Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
 
-  return code;
+  return result;
 }
 #endif
index b9723c0..4c5796f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "url.h"
 #include "rawstr.h"
 #include "speedcheck.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-#include "curl_memory.h"
+#include "curl_printf.h"
 #include "select.h"
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /* RFC2348 allows the block size to be negotiated */
@@ -148,8 +145,8 @@ typedef struct tftp_state_data {
 
 
 /* Forward declarations */
-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_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,
                                 bool dead_connection);
@@ -221,7 +218,7 @@ static CURLcode tftp_set_timeouts(tftp_state_data_t *state)
     state->max_time = state->start_time+maxtime;
 
     /* Set per-block timeout to total */
-    timeout = maxtime ;
+    timeout = maxtime;
 
     /* Average restart after 5 seconds */
     state->retry_max = (int)timeout/5;
@@ -411,7 +408,7 @@ static size_t tftp_option_add(tftp_state_data_t *state, size_t csize,
   if(( strlen(option) + csize + 1 ) > (size_t)state->blksize)
     return 0;
   strcpy(buf, option);
-  return( strlen(option) + 1 );
+  return strlen(option) + 1;
 }
 
 static CURLcode tftp_connect_for_tx(tftp_state_data_t *state,
@@ -426,7 +423,7 @@ static CURLcode tftp_connect_for_tx(tftp_state_data_t *state,
   state->state = TFTP_STATE_TX;
   result = tftp_set_timeouts(state);
   if(result)
-    return(result);
+    return result;
   return tftp_tx(state, event);
 }
 
@@ -442,7 +439,7 @@ static CURLcode tftp_connect_for_rx(tftp_state_data_t *state,
   state->state = TFTP_STATE_RX;
   result = tftp_set_timeouts(state);
   if(result)
-    return(result);
+    return result;
   return tftp_rx(state, event);
 }
 
@@ -454,7 +451,7 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)
   char *filename;
   char buf[64];
   struct SessionHandle *data = state->conn->data;
-  CURLcode res = CURLE_OK;
+  CURLcode result = CURLE_OK;
 
   /* Set ascii mode if -B flag was used */
   if(data->set.prefer_ascii)
@@ -469,7 +466,7 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)
     if(state->retries>state->retry_max) {
       state->error = TFTP_ERR_NORESPONSE;
       state->state = TFTP_STATE_FIN;
-      return res;
+      return result;
     }
 
     if(data->set.upload) {
@@ -534,24 +531,24 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)
     if(senddata != (ssize_t)sbytes) {
       failf(data, "%s", Curl_strerror(state->conn, SOCKERRNO));
     }
-    Curl_safefree(filename);
+    free(filename);
     break;
 
   case TFTP_EVENT_OACK:
     if(data->set.upload) {
-      res = tftp_connect_for_tx(state, event);
+      result = tftp_connect_for_tx(state, event);
     }
     else {
-      res = tftp_connect_for_rx(state, event);
+      result = tftp_connect_for_rx(state, event);
     }
     break;
 
   case TFTP_EVENT_ACK: /* Connected for transmit */
-    res = tftp_connect_for_tx(state, event);
+    result = tftp_connect_for_tx(state, event);
     break;
 
   case TFTP_EVENT_DATA: /* Connected for receive */
-    res = tftp_connect_for_rx(state, event);
+    result = tftp_connect_for_rx(state, event);
     break;
 
   case TFTP_EVENT_ERROR:
@@ -562,7 +559,8 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)
     failf(state->conn->data, "tftp_send_first: internal error");
     break;
   }
-  return res;
+
+  return result;
 }
 
 /* the next blocknum is x + 1 but it needs to wrap at an unsigned 16bit
@@ -702,7 +700,7 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
   struct SessionHandle *data = state->conn->data;
   ssize_t sbytes;
   int rblock;
-  CURLcode res = CURLE_OK;
+  CURLcode result = CURLE_OK;
   struct SingleRequest *k = &data->req;
 
   switch(event) {
@@ -728,7 +726,7 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
         if(state->retries>state->retry_max) {
           failf(data, "tftp_tx: giving up waiting for block %d ack",
                 state->block);
-          res = CURLE_SEND_ERROR;
+          result = CURLE_SEND_ERROR;
         }
         else {
           /* Re-send the data packet */
@@ -739,10 +737,11 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
           /* Check all sbytes were sent */
           if(sbytes<0) {
             failf(data, "%s", Curl_strerror(state->conn, SOCKERRNO));
-            res = CURLE_SEND_ERROR;
+            result = CURLE_SEND_ERROR;
           }
         }
-        return res;
+
+        return result;
       }
       /* This is the expected packet.  Reset the counters and send the next
          block */
@@ -759,11 +758,13 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
       state->state = TFTP_STATE_FIN;
       return CURLE_OK;
     }
-    res = Curl_fillreadbuffer(state->conn, state->blksize, &state->sbytes);
-    if(res)
-      return res;
-    sbytes = sendto(state->sockfd, (void *)state->spacket.data,
-                    4+state->sbytes, SEND_4TH_ARG,
+
+    result = Curl_fillreadbuffer(state->conn, state->blksize, &state->sbytes);
+    if(result)
+      return result;
+
+    sbytes = sendto(state->sockfd, (void *) state->spacket.data,
+                    4 + state->sbytes, SEND_4TH_ARG,
                     (struct sockaddr *)&state->remote_addr,
                     state->remote_addrlen);
     /* Check all sbytes were sent */
@@ -819,7 +820,7 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
     break;
   }
 
-  return res;
+  return result;
 }
 
 /**********************************************************
@@ -831,48 +832,47 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
  **********************************************************/
 static CURLcode tftp_translate_code(tftp_error_t error)
 {
-  CURLcode code = CURLE_OK;
+  CURLcode result = CURLE_OK;
 
   if(error != TFTP_ERR_NONE) {
     switch(error) {
     case TFTP_ERR_NOTFOUND:
-      code = CURLE_TFTP_NOTFOUND;
+      result = CURLE_TFTP_NOTFOUND;
       break;
     case TFTP_ERR_PERM:
-      code = CURLE_TFTP_PERM;
+      result = CURLE_TFTP_PERM;
       break;
     case TFTP_ERR_DISKFULL:
-      code = CURLE_REMOTE_DISK_FULL;
+      result = CURLE_REMOTE_DISK_FULL;
       break;
     case TFTP_ERR_UNDEF:
     case TFTP_ERR_ILLEGAL:
-      code = CURLE_TFTP_ILLEGAL;
+      result = CURLE_TFTP_ILLEGAL;
       break;
     case TFTP_ERR_UNKNOWNID:
-      code = CURLE_TFTP_UNKNOWNID;
+      result = CURLE_TFTP_UNKNOWNID;
       break;
     case TFTP_ERR_EXISTS:
-      code = CURLE_REMOTE_FILE_EXISTS;
+      result = CURLE_REMOTE_FILE_EXISTS;
       break;
     case TFTP_ERR_NOSUCHUSER:
-      code = CURLE_TFTP_NOSUCHUSER;
+      result = CURLE_TFTP_NOSUCHUSER;
       break;
     case TFTP_ERR_TIMEOUT:
-      code = CURLE_OPERATION_TIMEDOUT;
+      result = CURLE_OPERATION_TIMEDOUT;
       break;
     case TFTP_ERR_NORESPONSE:
-      code = CURLE_COULDNT_CONNECT;
+      result = CURLE_COULDNT_CONNECT;
       break;
     default:
-      code= CURLE_ABORTED_BY_CALLBACK;
+      result = CURLE_ABORTED_BY_CALLBACK;
       break;
     }
   }
-  else {
-    code = CURLE_OK;
-  }
+  else
+    result = CURLE_OK;
 
-  return(code);
+  return result;
 }
 
 /**********************************************************
@@ -885,20 +885,21 @@ static CURLcode tftp_translate_code(tftp_error_t error)
 static CURLcode tftp_state_machine(tftp_state_data_t *state,
                                    tftp_event_t event)
 {
-  CURLcode res = CURLE_OK;
+  CURLcode result = CURLE_OK;
   struct SessionHandle *data = state->conn->data;
+
   switch(state->state) {
   case TFTP_STATE_START:
     DEBUGF(infof(data, "TFTP_STATE_START\n"));
-    res = tftp_send_first(state, event);
+    result = tftp_send_first(state, event);
     break;
   case TFTP_STATE_RX:
     DEBUGF(infof(data, "TFTP_STATE_RX\n"));
-    res = tftp_rx(state, event);
+    result = tftp_rx(state, event);
     break;
   case TFTP_STATE_TX:
     DEBUGF(infof(data, "TFTP_STATE_TX\n"));
-    res = tftp_tx(state, event);
+    result = tftp_tx(state, event);
     break;
   case TFTP_STATE_FIN:
     infof(data, "%s\n", "TFTP finished");
@@ -906,10 +907,11 @@ static CURLcode tftp_state_machine(tftp_state_data_t *state,
   default:
     DEBUGF(infof(data, "STATE: %d\n", state->state));
     failf(data, "%s", "Internal state machine error");
-    res = CURLE_TFTP_ILLEGAL;
+    result = CURLE_TFTP_ILLEGAL;
     break;
   }
-  return res;
+
+  return result;
 }
 
 /**********************************************************
@@ -943,7 +945,6 @@ static CURLcode tftp_disconnect(struct connectdata *conn, bool dead_connection)
  **********************************************************/
 static CURLcode tftp_connect(struct connectdata *conn, bool *done)
 {
-  CURLcode code;
   tftp_state_data_t *state;
   int blksize, rc;
 
@@ -1017,8 +1018,8 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done)
   Curl_pgrsStartNow(conn->data);
 
   *done = TRUE;
-  code = CURLE_OK;
-  return(code);
+
+  return CURLE_OK;
 }
 
 /**********************************************************
@@ -1031,7 +1032,7 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done)
 static CURLcode tftp_done(struct connectdata *conn, CURLcode status,
                           bool premature)
 {
-  CURLcode code = CURLE_OK;
+  CURLcode result = CURLE_OK;
   tftp_state_data_t *state = (tftp_state_data_t *)conn->proto.tftpc;
 
   (void)status; /* unused */
@@ -1042,9 +1043,9 @@ static CURLcode tftp_done(struct connectdata *conn, CURLcode status,
 
   /* If we have encountered an error */
   if(state)
-    code = tftp_translate_code(state->error);
+    result = tftp_translate_code(state->error);
 
-  return code;
+  return result;
 }
 
 /**********************************************************
@@ -1209,7 +1210,7 @@ static CURLcode tftp_multi_statemach(struct connectdata *conn, bool *done)
   else if(event != TFTP_EVENT_NONE) {
     result = tftp_state_machine(state, event);
     if(result)
-      return(result);
+      return result;
     *done = (state->state == TFTP_STATE_FIN) ? TRUE : FALSE;
     if(*done)
       /* Tell curl we're done */
@@ -1228,10 +1229,10 @@ static CURLcode tftp_multi_statemach(struct connectdata *conn, bool *done)
     else if(rc != 0) {
       result = tftp_receive_packet(conn);
       if(result)
-        return(result);
+        return result;
       result = tftp_state_machine(state, state->event);
       if(result)
-        return(result);
+        return result;
       *done = (state->state == TFTP_STATE_FIN) ? TRUE : FALSE;
       if(*done)
         /* Tell curl we're done */
index 769eb3c..45731ac 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -118,7 +118,7 @@ struct timeval curlx_tvnow(void)
 long curlx_tvdiff(struct timeval newer, struct timeval older)
 {
   return (newer.tv_sec-older.tv_sec)*1000+
-    (newer.tv_usec-older.tv_usec)/1000;
+    (long)(newer.tv_usec-older.tv_usec)/1000;
 }
 
 /*
index a7ab08e..718139b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "curl_ntlm.h"
 #include "http_negotiate.h"
 #include "share.h"
-#include "curl_memory.h"
 #include "select.h"
 #include "multiif.h"
 #include "connect.h"
 #include "non-ascii.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /*
@@ -117,8 +115,8 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, int bytes, int *nreadp)
 
   /* this function returns a size_t, so we typecast to int to prevent warnings
      with picky compilers */
-  nread = (int)conn->fread_func(data->req.upload_fromhere, 1,
-                                buffersize, conn->fread_in);
+  nread = (int)data->set.fread_func(data->req.upload_fromhere, 1,
+                                    buffersize, data->set.in);
 
   if(nread == CURL_READFUNC_ABORT) {
     failf(data, "operation aborted by callback");
@@ -216,7 +214,7 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, int bytes, int *nreadp)
     result = Curl_convert_to_network(data, data->req.upload_fromhere, length);
     /* Curl_convert_to_network calls failf if unsuccessful */
     if(result)
-      return(result);
+      return result;
 #endif /* CURL_DOES_CONVERSIONS */
 
     if((nread - hexlen) == 0)
@@ -319,8 +317,7 @@ static int data_pending(const struct connectdata *conn)
        TRUE. The thing is if we read everything, then http2_recv won't
        be called and we cannot signal the HTTP/2 stream has closed. As
        a workaround, we return nonzero here to call http2_recv. */
-    ((conn->handler->protocol&PROTO_FAMILY_HTTP) && conn->httpversion == 20 &&
-     conn->proto.httpc.closed);
+    ((conn->handler->protocol&PROTO_FAMILY_HTTP) && conn->httpversion == 20);
 #else
     Curl_ssl_data_pending(conn, FIRSTSOCKET);
 #endif
@@ -435,6 +432,7 @@ static CURLcode readwrite_data(struct SessionHandle *data,
     else {
       /* read nothing but since we wanted nothing we consider this an OK
          situation to proceed from */
+      DEBUGF(infof(data, "readwrite_data: we're done!\n"));
       nread = 0;
     }
 
@@ -496,7 +494,7 @@ static CURLcode readwrite_data(struct SessionHandle *data,
         /* We've stopped dealing with input, get out of the do-while loop */
 
         if(nread > 0) {
-          if(Curl_multi_pipeline_enabled(conn->data->multi)) {
+          if(Curl_pipeline_wanted(conn->data->multi, CURLPIPE_HTTP1)) {
             infof(data,
                   "Rewinding stream by : %zd"
                   " bytes on url %s (zero-length body)\n",
@@ -641,7 +639,7 @@ static CURLcode readwrite_data(struct SessionHandle *data,
           if(dataleft != 0) {
             infof(conn->data, "Leftovers after chunking: %zu bytes\n",
                   dataleft);
-            if(Curl_multi_pipeline_enabled(conn->data->multi)) {
+            if(Curl_pipeline_wanted(conn->data->multi, CURLPIPE_HTTP1)) {
               /* only attempt the rewind if we truly are pipelining */
               infof(conn->data, "Rewinding %zu bytes\n",dataleft);
               read_rewind(conn, dataleft);
@@ -664,7 +662,7 @@ static CURLcode readwrite_data(struct SessionHandle *data,
 
         excess = (size_t)(k->bytecount + nread - k->maxdownload);
         if(excess > 0 && !k->ignorebody) {
-          if(Curl_multi_pipeline_enabled(conn->data->multi)) {
+          if(Curl_pipeline_wanted(conn->data->multi, CURLPIPE_HTTP1)) {
             /* The 'excess' amount below can't be more than BUFSIZE which
                always will fit in a size_t */
             infof(data,
@@ -758,7 +756,6 @@ static CURLcode readwrite_data(struct SessionHandle *data,
               result = Curl_unencode_gzip_write(conn, k, nread);
             break;
 
-          case COMPRESS:
           default:
             failf (data, "Unrecognized content encoding type. "
                    "libcurl understands `identity', `deflate' and `gzip' "
@@ -830,13 +827,6 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
 
   *didwhat |= KEEP_SEND;
 
-  /*
-   * We loop here to do the READ and SEND loop until we run out of
-   * data to send or until we get EWOULDBLOCK back
-   *
-   * FIXME: above comment is misleading. Currently no looping is
-   * actually done in do-while loop below.
-   */
   do {
 
     /* only read more data if there's no upload data already
@@ -1022,9 +1012,9 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
  * be read and written to/from the connection.
  */
 CURLcode Curl_readwrite(struct connectdata *conn,
+                        struct SessionHandle *data,
                         bool *done)
 {
-  struct SessionHandle *data = conn->data;
   struct SingleRequest *k = &data->req;
   CURLcode result;
   int didwhat=0;
@@ -1048,6 +1038,11 @@ CURLcode Curl_readwrite(struct connectdata *conn,
   else
     fd_write = CURL_SOCKET_BAD;
 
+  if(conn->data->state.drain) {
+    select_res |= CURL_CSELECT_IN;
+    DEBUGF(infof(data, "Curl_readwrite: forcibly told to drain data\n"));
+  }
+
   if(!select_res) /* Call for select()/poll() only, if read/write/error
                      status is not known. */
     select_res = Curl_socket_ready(fd_read, fd_write, 0);
@@ -1272,7 +1267,7 @@ long Curl_sleep_time(curl_off_t rate_bps, curl_off_t cur_rate_bps,
    * the next packet at the adjusted rate.  We should wait
    * longer when using larger packets, for instance.
    */
-  rv = ((curl_off_t)((pkt_size * 8) * 1000) / rate_bps);
+  rv = ((curl_off_t)(pkt_size * 1000) / rate_bps);
 
   /* Catch rounding errors and always slow down at least 1ms if
    * we are running too fast.
@@ -1319,6 +1314,11 @@ CURLcode Curl_pretransfer(struct SessionHandle *data)
   Curl_safefree(data->info.wouldredirect);
   data->info.wouldredirect = NULL;
 
+  if(data->set.httpreq == HTTPREQ_PUT)
+    data->state.infilesize = data->set.filesize;
+  else
+    data->state.infilesize = data->set.postfieldsize;
+
   /* If there is a list of cookie files to read, do it now! */
   if(data->change.cookielist)
     Curl_cookie_loadfiles(data);
@@ -1342,6 +1342,7 @@ CURLcode Curl_pretransfer(struct SessionHandle *data)
 #endif
 
     Curl_initinfo(data); /* reset session-specific information "variables" */
+    Curl_pgrsResetTimesSizes(data);
     Curl_pgrsStartNow(data);
 
     if(data->set.timeout)
@@ -1633,7 +1634,7 @@ CURLcode Curl_follow(struct SessionHandle *data,
   if(type == FOLLOW_REDIR) {
     if((data->set.maxredirs != -1) &&
         (data->set.followlocation >= data->set.maxredirs)) {
-      failf(data,"Maximum (%ld) redirects followed", data->set.maxredirs);
+      failf(data, "Maximum (%ld) redirects followed", data->set.maxredirs);
       return CURLE_TOO_MANY_REDIRECTS;
     }
 
index ad4a3ac..316aeae 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -40,7 +40,8 @@ CURLcode Curl_follow(struct SessionHandle *data, char *newurl,
                      followtype type);
 
 
-CURLcode Curl_readwrite(struct connectdata *conn, bool *done);
+CURLcode Curl_readwrite(struct connectdata *conn,
+                        struct SessionHandle *data, bool *done);
 int Curl_single_getsock(const struct connectdata *conn,
                         curl_socket_t *socks,
                         int numsocks);
index d3bb5e0..406c1f0 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -124,16 +124,12 @@ int curl_win32_idn_to_ascii(const char *in, char **out);
 #include "curl_rtmp.h"
 #include "gopher.h"
 #include "http_proxy.h"
-#include "bundles.h"
 #include "conncache.h"
 #include "multihandle.h"
 #include "pipeline.h"
 #include "dotdot.h"
 #include "strdup.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -146,7 +142,6 @@ find_oldest_idle_connection_in_bundle(struct SessionHandle *data,
                                       struct connectbundle *bundle);
 static void conn_free(struct connectdata *conn);
 static void signalPipeClose(struct curl_llist *pipeline, bool pipe_broke);
-static CURLcode do_init(struct connectdata *conn);
 static CURLcode parse_url_login(struct SessionHandle *data,
                                 struct connectdata *conn,
                                 char **userptr, char **passwdptr,
@@ -451,10 +446,8 @@ CURLcode Curl_close(struct SessionHandle *data)
   Curl_ssl_free_certinfo(data);
 
   /* Cleanup possible redirect junk */
-  if(data->req.newurl) {
-    free(data->req.newurl);
-    data->req.newurl = NULL;
-  }
+  free(data->req.newurl);
+  data->req.newurl = NULL;
 
   if(data->change.referer_alloc) {
     Curl_safefree(data->change.referer);
@@ -581,13 +574,30 @@ CURLcode Curl_init_userdefined(struct UserDefined *set)
                      (char *) CURL_DEFAULT_SOCKS5_GSSAPI_SERVICE);
   if(result)
     return result;
+
+  /* set default negotiate proxy service name */
+  result = setstropt(&set->str[STRING_PROXY_SERVICE_NAME],
+                     (char *) CURL_DEFAULT_PROXY_SERVICE_NAME);
+  if(result)
+    return result;
+
+  /* set default negotiate service name */
+  result = setstropt(&set->str[STRING_SERVICE_NAME],
+                     (char *) CURL_DEFAULT_SERVICE_NAME);
+  if(result)
+    return result;
 #endif
 
   /* This is our preferred CA cert bundle/path since install time */
 #if defined(CURL_CA_BUNDLE)
   result = setstropt(&set->str[STRING_SSL_CAFILE], (char *) CURL_CA_BUNDLE);
-#elif defined(CURL_CA_PATH)
+  if(result)
+    return result;
+#endif
+#if defined(CURL_CA_PATH)
   result = setstropt(&set->str[STRING_SSL_CAPATH], (char *) CURL_CA_PATH);
+  if(result)
+    return result;
 #endif
 
   set->wildcardmatch  = FALSE;
@@ -605,6 +615,7 @@ CURLcode Curl_init_userdefined(struct UserDefined *set)
   set->ssl_enable_alpn = TRUE;
 
   set->expect_100_timeout = 1000L; /* Wait for a second by default. */
+  set->sep_headers = TRUE; /* separated header lists by default */
   return result;
 }
 
@@ -666,8 +677,7 @@ CURLcode Curl_open(struct SessionHandle **curl)
 
   if(result) {
     Curl_resolver_cleanup(data->state.resolver);
-    if(data->state.headerbuff)
-      free(data->state.headerbuff);
+    free(data->state.headerbuff);
     Curl_freeset(data);
     free(data);
     data = NULL;
@@ -893,7 +903,11 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
      * Set explicit SSL version to try to connect with, as some SSL
      * implementations are lame.
      */
+#ifdef USE_SSL
     data->set.ssl.version = va_arg(param, long);
+#else
+    result = CURLE_UNKNOWN_OPTION;
+#endif
     break;
 
 #ifndef CURL_DISABLE_HTTP
@@ -1236,7 +1250,7 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
       argptr = strdup(argptr);
       if(!argptr || !data->cookies) {
         result = CURLE_OUT_OF_MEMORY;
-        Curl_safefree(argptr);
+        free(argptr);
       }
       else {
         Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
@@ -1469,12 +1483,29 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
                        va_arg(param, char *));
     break;
 
+  case CURLOPT_PROXY_SERVICE_NAME:
+    /*
+     * Set negotiate proxy service name
+     */
+    result = setstropt(&data->set.str[STRING_PROXY_SERVICE_NAME],
+                       va_arg(param, char *));
+    break;
+
   case CURLOPT_SOCKS5_GSSAPI_NEC:
     /*
      * set flag for nec socks5 support
      */
     data->set.socks5_gssapi_nec = (0 != va_arg(param, long))?TRUE:FALSE;
     break;
+
+  case CURLOPT_SERVICE_NAME:
+    /*
+     * Set negotiate service identity
+     */
+    result = setstropt(&data->set.str[STRING_SERVICE_NAME],
+                       va_arg(param, char *));
+    break;
+
 #endif
 
   case CURLOPT_HEADERDATA:
@@ -1997,6 +2028,17 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
 
     data->set.ssl.verifyhost = (0 != arg)?TRUE:FALSE;
     break;
+  case CURLOPT_SSL_VERIFYSTATUS:
+    /*
+     * Enable certificate status verifying.
+     */
+    if(!Curl_ssl_cert_status_request()) {
+      result = CURLE_NOT_BUILT_IN;
+      break;
+    }
+
+    data->set.ssl.verifystatus = (0 != va_arg(param, long))?TRUE:FALSE;
+    break;
   case CURLOPT_SSL_CTX_FUNCTION:
 #ifdef have_curlssl_ssl_ctx
     /*
@@ -2017,6 +2059,17 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
     result = CURLE_NOT_BUILT_IN;
 #endif
     break;
+  case CURLOPT_SSL_FALSESTART:
+    /*
+     * Enable TLS false start.
+     */
+    if(!Curl_ssl_false_start()) {
+      result = CURLE_NOT_BUILT_IN;
+      break;
+    }
+
+    data->set.ssl.falsestart = (0 != va_arg(param, long))?TRUE:FALSE;
+    break;
   case CURLOPT_CERTINFO:
 #ifdef have_curlssl_certinfo
     data->set.ssl.certinfo = (0 != va_arg(param, long))?TRUE:FALSE;
@@ -2132,16 +2185,15 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
 
       data->share->dirty++;
 
-      if(data->share->hostcache) {
+      if(data->share->specifier & (1<< CURL_LOCK_DATA_DNS)) {
         /* use shared host cache */
-        data->dns.hostcache = data->share->hostcache;
+        data->dns.hostcache = &data->share->hostcache;
         data->dns.hostcachetype = HCACHE_SHARED;
       }
 #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
       if(data->share->cookies) {
         /* use shared cookie list, first free own one if any */
-        if(data->cookies)
-          Curl_cookie_cleanup(data->cookies);
+        Curl_cookie_cleanup(data->cookies);
         /* enable cookies since we now use a share that uses cookies! */
         data->cookies = data->share->cookies;
       }
@@ -2182,7 +2234,8 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
 
   case CURLOPT_SSL_OPTIONS:
     arg = va_arg(param, long);
-    data->set.ssl_enable_beast = arg&CURLSSLOPT_ALLOW_BEAST?TRUE:FALSE;
+    data->set.ssl_enable_beast = !!(arg & CURLSSLOPT_ALLOW_BEAST);
+    data->set.ssl_no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);
     break;
 
 #endif
@@ -2593,6 +2646,12 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
     break;
 #endif
 
+  case CURLOPT_PATH_AS_IS:
+    data->set.path_as_is = (0 != va_arg(param, long))?TRUE:FALSE;
+    break;
+  case CURLOPT_PIPEWAIT:
+    data->set.pipewait = (0 != va_arg(param, long))?TRUE:FALSE;
+    break;
   default:
     /* unknown tag and its companion, just ignore: */
     result = CURLE_UNKNOWN_OPTION;
@@ -2718,16 +2777,15 @@ CURLcode Curl_disconnect(struct connectdata *conn, bool dead_connection)
   free(conn->host.encalloc); /* encoded host name buffer, must be freed with
                                 idn_free() since this was allocated by
                                 curl_win32_idn_to_ascii */
-  if(conn->proxy.encalloc)
-    free(conn->proxy.encalloc); /* encoded proxy name buffer, must be freed
-                                   with idn_free() since this was allocated by
-                                   curl_win32_idn_to_ascii */
+  free(conn->proxy.encalloc); /* encoded proxy name buffer, must be freed
+                                 with idn_free() since this was allocated by
+                                 curl_win32_idn_to_ascii */
 #endif
 
   Curl_ssl_close(conn, FIRSTSOCKET);
 
   /* Indicate to all handles on the pipe that we're dead */
-  if(Curl_multi_pipeline_enabled(data->multi)) {
+  if(Curl_pipeline_wanted(data->multi, CURLPIPE_ANY)) {
     signalPipeClose(conn->send_pipe, TRUE);
     signalPipeClose(conn->recv_pipe, TRUE);
   }
@@ -2755,32 +2813,31 @@ static bool SocketIsDead(curl_socket_t sock)
   return ret_val;
 }
 
+/*
+ * IsPipeliningPossible() returns TRUE if the options set would allow
+ * pipelining/multiplexing and the connection is using a HTTP protocol.
+ */
 static bool IsPipeliningPossible(const struct SessionHandle *handle,
                                  const struct connectdata *conn)
 {
-  if((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
-     Curl_multi_pipeline_enabled(handle->multi) &&
-     (handle->set.httpreq == HTTPREQ_GET ||
-      handle->set.httpreq == HTTPREQ_HEAD) &&
-     handle->set.httpversion != CURL_HTTP_VERSION_1_0)
-    return TRUE;
+  /* If a HTTP protocol and pipelining is enabled */
+  if(conn->handler->protocol & PROTO_FAMILY_HTTP) {
+
+    if(Curl_pipeline_wanted(handle->multi, CURLPIPE_HTTP1) &&
+       (handle->set.httpversion != CURL_HTTP_VERSION_1_0) &&
+       (handle->set.httpreq == HTTPREQ_GET ||
+        handle->set.httpreq == HTTPREQ_HEAD))
+      /* didn't ask for HTTP/1.0 and a GET or HEAD */
+      return TRUE;
 
+    if(Curl_pipeline_wanted(handle->multi, CURLPIPE_MULTIPLEX) &&
+       (handle->set.httpversion == CURL_HTTP_VERSION_2_0))
+      /* allows HTTP/2 */
+      return TRUE;
+  }
   return FALSE;
 }
 
-bool Curl_isPipeliningEnabled(const struct SessionHandle *handle)
-{
-  return Curl_multi_pipeline_enabled(handle->multi);
-}
-
-CURLcode Curl_addHandleToPipeline(struct SessionHandle *data,
-                                  struct curl_llist *pipeline)
-{
-  if(!Curl_llist_insert_next(pipeline, pipeline->tail, data))
-    return CURLE_OUT_OF_MEMORY;
-  return CURLE_OK;
-}
-
 int Curl_removeHandleFromPipeline(struct SessionHandle *handle,
                                   struct curl_llist *pipeline)
 {
@@ -2828,15 +2885,14 @@ void Curl_getoff_all_pipelines(struct SessionHandle *data,
                                struct connectdata *conn)
 {
   bool recv_head = (conn->readchannel_inuse &&
-    (gethandleathead(conn->recv_pipe) == data)) ? TRUE : FALSE;
-
+                    Curl_recvpipe_head(data, conn));
   bool send_head = (conn->writechannel_inuse &&
-    (gethandleathead(conn->send_pipe) == data)) ? TRUE : FALSE;
+                    Curl_sendpipe_head(data, conn));
 
   if(Curl_removeHandleFromPipeline(data, conn->recv_pipe) && recv_head)
-    conn->readchannel_inuse = FALSE;
+    Curl_pipeline_leave_read(conn);
   if(Curl_removeHandleFromPipeline(data, conn->send_pipe) && send_head)
-    conn->writechannel_inuse = FALSE;
+    Curl_pipeline_leave_write(conn);
 }
 
 static void signalPipeClose(struct curl_llist *pipeline, bool pipe_broke)
@@ -2888,7 +2944,7 @@ find_oldest_idle_connection(struct SessionHandle *data)
 
   now = Curl_tvnow();
 
-  Curl_hash_start_iterate(bc->hash, &iter);
+  Curl_hash_start_iterate(&bc->hash, &iter);
 
   he = Curl_hash_next_element(&iter);
   while(he) {
@@ -3022,6 +3078,13 @@ static void prune_dead_connections(struct SessionHandle *data)
   }
 }
 
+
+static size_t max_pipeline_length(struct Curl_multi *multi)
+{
+  return multi ? multi->max_pipeline_length : 0;
+}
+
+
 /*
  * Given one filled in connection struct (named needle), this function should
  * detect if there already is one that has all the significant details
@@ -3038,17 +3101,21 @@ static bool
 ConnectionExists(struct SessionHandle *data,
                  struct connectdata *needle,
                  struct connectdata **usethis,
-                 bool *force_reuse)
+                 bool *force_reuse,
+                 bool *waitpipe)
 {
   struct connectdata *check;
   struct connectdata *chosen = 0;
   bool canPipeline = IsPipeliningPossible(data, needle);
+#ifdef USE_NTLM
   bool wantNTLMhttp = ((data->state.authhost.want & CURLAUTH_NTLM) ||
                        (data->state.authhost.want & CURLAUTH_NTLM_WB)) &&
     (needle->handler->protocol & PROTO_FAMILY_HTTP) ? TRUE : FALSE;
+#endif
   struct connectbundle *bundle;
 
   *force_reuse = FALSE;
+  *waitpipe = FALSE;
 
   /* We can't pipe if the site is blacklisted */
   if(canPipeline && Curl_pipeline_site_blacklisted(data, needle)) {
@@ -3057,10 +3124,11 @@ ConnectionExists(struct SessionHandle *data,
 
   /* Look up the bundle with all the connections to this
      particular host */
-  bundle = Curl_conncache_find_bundle(data->state.conn_cache,
-                                      needle->host.name);
+  bundle = Curl_conncache_find_bundle(needle, data->state.conn_cache);
   if(bundle) {
-    size_t max_pipe_len = Curl_multi_max_pipeline_length(data->multi);
+    /* Max pipe length is zero (unlimited) for multiplexed connections */
+    size_t max_pipe_len = (bundle->multiuse != BUNDLE_MULTIPLEX)?
+      max_pipeline_length(data->multi):0;
     size_t best_pipe_len = max_pipe_len;
     struct curl_llist_element *curr;
 
@@ -3068,9 +3136,17 @@ ConnectionExists(struct SessionHandle *data,
           needle->host.name, (void *)bundle);
 
     /* We can't pipe if we don't know anything about the server */
-    if(canPipeline && !bundle->server_supports_pipelining) {
-      infof(data, "Server doesn't support pipelining\n");
-      canPipeline = FALSE;
+    if(canPipeline) {
+      if(bundle->multiuse <= BUNDLE_UNKNOWN) {
+        if((bundle->multiuse == BUNDLE_UNKNOWN) && data->set.pipewait) {
+          infof(data, "Server doesn't support multi-use yet, wait\n");
+          *waitpipe = TRUE;
+          return FALSE; /* no re-use */
+        }
+
+        infof(data, "Server doesn't support multi-use (yet)\n");
+        canPipeline = FALSE;
+      }
     }
 
     curr = bundle->conn_list->head;
@@ -3094,16 +3170,19 @@ ConnectionExists(struct SessionHandle *data,
       pipeLen = check->send_pipe->size + check->recv_pipe->size;
 
       if(canPipeline) {
-        /* Make sure the pipe has only GET requests */
-        struct SessionHandle* sh = gethandleathead(check->send_pipe);
-        struct SessionHandle* rh = gethandleathead(check->recv_pipe);
-        if(sh) {
-          if(!IsPipeliningPossible(sh, check))
-            continue;
-        }
-        else if(rh) {
-          if(!IsPipeliningPossible(rh, check))
-            continue;
+
+        if(!check->bits.multiplex) {
+          /* If not multiplexing, make sure the pipe has only GET requests */
+          struct SessionHandle* sh = gethandleathead(check->send_pipe);
+          struct SessionHandle* rh = gethandleathead(check->recv_pipe);
+          if(sh) {
+            if(!IsPipeliningPossible(sh, check))
+              continue;
+          }
+          else if(rh) {
+            if(!IsPipeliningPossible(rh, check))
+              continue;
+          }
         }
       }
       else {
@@ -3183,8 +3262,11 @@ ConnectionExists(struct SessionHandle *data,
           continue;
       }
 
-      if((!(needle->handler->flags & PROTOPT_CREDSPERREQUEST)) ||
-         wantNTLMhttp) {
+      if((!(needle->handler->flags & PROTOPT_CREDSPERREQUEST))
+#ifdef USE_NTLM
+         || (wantNTLMhttp || check->ntlm.state != NTLMSTATE_NONE)
+#endif
+        ) {
         /* This protocol requires credentials per connection or is HTTP+NTLM,
            so verify that we're using the same name and password as well */
         if(!strequal(needle->user, check->user) ||
@@ -3279,19 +3361,42 @@ ConnectionExists(struct SessionHandle *data,
           }
 
           /* We can't use the connection if the pipe is full */
-          if(pipeLen >= max_pipe_len)
+          if(max_pipe_len && (pipeLen >= max_pipe_len)) {
+            infof(data, "Pipe is full, skip (%zu)\n", pipeLen);
             continue;
-
+          }
+#ifdef USE_NGHTTP2
+          /* If multiplexed, make sure we don't go over concurrency limit */
+          if(check->bits.multiplex) {
+            /* Multiplexed connections can only be HTTP/2 for now */
+            struct http_conn *httpc = &check->proto.httpc;
+            if(pipeLen >= httpc->settings.max_concurrent_streams) {
+              infof(data, "MAX_CONCURRENT_STREAMS reached, skip (%zu)\n",
+                    pipeLen);
+              continue;
+            }
+          }
+#endif
           /* We can't use the connection if the pipe is penalized */
-          if(Curl_pipeline_penalized(data, check))
+          if(Curl_pipeline_penalized(data, check)) {
+            infof(data, "Penalized, skip\n");
             continue;
+          }
 
-          if(pipeLen < best_pipe_len) {
-            /* This connection has a shorter pipe so far. We'll pick this
-               and continue searching */
+          if(max_pipe_len) {
+            if(pipeLen < best_pipe_len) {
+              /* This connection has a shorter pipe so far. We'll pick this
+                 and continue searching */
+              chosen = check;
+              best_pipe_len = pipeLen;
+              continue;
+            }
+          }
+          else {
+            /* When not pipelining (== multiplexed), we have a match here! */
             chosen = check;
-            best_pipe_len = pipeLen;
-            continue;
+            infof(data, "Multiplexed connection found!\n");
+            break;
           }
         }
         else {
@@ -3343,20 +3448,6 @@ ConnectionDone(struct SessionHandle *data, struct connectdata *conn)
   return (conn_candidate == conn) ? FALSE : TRUE;
 }
 
-/*
- * The given input connection struct pointer is to be stored in the connection
- * cache. If the cache is already full, least interesting existing connection
- * (if any) gets closed.
- *
- * The given connection should be unique. That must've been checked prior to
- * this call.
- */
-static CURLcode ConnectionStore(struct SessionHandle *data,
-                                struct connectdata *conn)
-{
-  return Curl_conncache_add_conn(data->state.conn_cache, conn);
-}
-
 /* after a TCP connection to the proxy has been verified, this function does
    the next magic step.
 
@@ -3602,7 +3693,7 @@ static void fix_hostname(struct SessionHandle *data,
   host->dispname = host->name;
 
   len = strlen(host->name);
-  if(host->name[len-1] == '.')
+  if(len && (host->name[len-1] == '.'))
     /* strip off a single trailing dot if present, primarily for SNI but
        there's no use for it */
     host->name[len-1]=0;
@@ -3619,7 +3710,7 @@ static void fix_hostname(struct SessionHandle *data,
            stringprep_locale_charset ());
     if(rc != IDNA_SUCCESS)
       infof(data, "Failed to convert %s to ACE; %s\n",
-            host->name, Curl_idn_strerror(conn,rc));
+            host->name, Curl_idn_strerror(conn, rc));
     else {
       /* tld_check_name() displays a warning if the host name contains
          "illegal" characters for this TLD */
@@ -3732,9 +3823,9 @@ static struct connectdata *allocate_conn(struct SessionHandle *data)
   conn->response_header = NULL;
 #endif
 
-  if(Curl_multi_pipeline_enabled(data->multi) &&
-      !conn->master_buffer) {
-    /* Allocate master_buffer to be used for pipelining */
+  if(Curl_pipeline_wanted(data->multi, CURLPIPE_HTTP1) &&
+     !conn->master_buffer) {
+    /* Allocate master_buffer to be used for HTTP/1 pipelining */
     conn->master_buffer = calloc(BUFSIZE, sizeof (char));
     if(!conn->master_buffer)
       goto error;
@@ -3773,9 +3864,9 @@ static struct connectdata *allocate_conn(struct SessionHandle *data)
   conn->send_pipe = NULL;
   conn->recv_pipe = NULL;
 
-  Curl_safefree(conn->master_buffer);
-  Curl_safefree(conn->localdev);
-  Curl_safefree(conn);
+  free(conn->master_buffer);
+  free(conn->localdev);
+  free(conn);
   return NULL;
 }
 
@@ -4018,7 +4109,7 @@ static CURLcode parseurlandfillconn(struct SessionHandle *data,
     path[0] = '/';
     rebuild_url = TRUE;
   }
-  else {
+  else if(!data->set.path_as_is) {
     /* sanitise paths and remove ../ and ./ sequences according to RFC3986 */
     char *newp = Curl_dedotdotify(path);
     if(!newp)
@@ -4413,8 +4504,7 @@ static char *detect_proxy(struct connectdata *conn)
     }
   } /* if(!check_noproxy(conn->host.name, no_proxy)) - it wasn't specified
        non-proxy */
-  if(no_proxy)
-    free(no_proxy);
+  free(no_proxy);
 
 #else /* !CURL_DISABLE_HTTP */
 
@@ -4428,7 +4518,6 @@ static char *detect_proxy(struct connectdata *conn)
  * If this is supposed to use a proxy, we need to figure out the proxy
  * host name, so that we can re-use an existing connection
  * that may exist registered to the same proxy host.
- * proxy will be freed before this function returns.
  */
 static CURLcode parse_proxy(struct SessionHandle *data,
                             struct connectdata *conn, char *proxy)
@@ -4502,8 +4591,8 @@ static CURLcode parse_proxy(struct SessionHandle *data,
       }
     }
 
-    Curl_safefree(proxyuser);
-    Curl_safefree(proxypasswd);
+    free(proxyuser);
+    free(proxypasswd);
 
     if(result)
       return result;
@@ -4715,9 +4804,9 @@ static CURLcode parse_url_login(struct SessionHandle *data,
 
   out:
 
-  Curl_safefree(userp);
-  Curl_safefree(passwdp);
-  Curl_safefree(optionsp);
+  free(userp);
+  free(passwdp);
+  free(optionsp);
 
   return result;
 }
@@ -4805,7 +4894,7 @@ static CURLcode parse_login_details(const char *login, const size_t len,
   if(!result && passwdp && plen) {
     pbuf = malloc(plen + 1);
     if(!pbuf) {
-      Curl_safefree(ubuf);
+      free(ubuf);
       result = CURLE_OUT_OF_MEMORY;
     }
   }
@@ -4814,8 +4903,8 @@ static CURLcode parse_login_details(const char *login, const size_t len,
   if(!result && optionsp && olen) {
     obuf = malloc(olen + 1);
     if(!obuf) {
-      Curl_safefree(pbuf);
-      Curl_safefree(ubuf);
+      free(pbuf);
+      free(ubuf);
       result = CURLE_OUT_OF_MEMORY;
     }
   }
@@ -5177,8 +5266,7 @@ static CURLcode resolve_server(struct SessionHandle *data,
 static void reuse_conn(struct connectdata *old_conn,
                        struct connectdata *conn)
 {
-  if(old_conn->proxy.rawalloc)
-    free(old_conn->proxy.rawalloc);
+  free(old_conn->proxy.rawalloc);
 
   /* free the SSL config struct from this connection struct as this was
      allocated in vain and is targeted for destruction */
@@ -5266,8 +5354,9 @@ static CURLcode create_conn(struct SessionHandle *data,
   bool reuse;
   char *proxy = NULL;
   bool prot_missing = FALSE;
-  bool no_connections_available = FALSE;
+  bool connections_available = TRUE;
   bool force_reuse = FALSE;
+  bool waitpipe = FALSE;
   size_t max_host_connections = Curl_multi_max_host_connections(data->multi);
   size_t max_total_connections = Curl_multi_max_total_connections(data->multi);
 
@@ -5427,10 +5516,8 @@ static CURLcode create_conn(struct SessionHandle *data,
 
   if(data->set.str[STRING_NOPROXY] &&
      check_noproxy(conn->host.name, data->set.str[STRING_NOPROXY])) {
-    if(proxy) {
-      free(proxy);  /* proxy is in exception list */
-      proxy = NULL;
-    }
+    free(proxy);  /* proxy is in exception list */
+    proxy = NULL;
   }
   else if(!proxy)
     proxy = detect_proxy(conn);
@@ -5456,7 +5543,8 @@ static CURLcode create_conn(struct SessionHandle *data,
   if(proxy) {
     result = parse_proxy(data, conn, proxy);
 
-    Curl_safefree(proxy); /* parse_proxy copies the proxy string */
+    free(proxy); /* parse_proxy copies the proxy string */
+    proxy = NULL;
 
     if(result)
       goto out;
@@ -5477,8 +5565,10 @@ static CURLcode create_conn(struct SessionHandle *data,
       conn->bits.httpproxy = TRUE;
 #endif
     }
-    else
+    else {
       conn->bits.httpproxy = FALSE; /* not a HTTP proxy */
+      conn->bits.tunnel_proxy = FALSE; /* no tunneling if not HTTP */
+    }
     conn->bits.proxy = TRUE;
   }
   else {
@@ -5543,7 +5633,7 @@ static CURLcode create_conn(struct SessionHandle *data,
       conn->data = data;
       conn->bits.tcpconnect[FIRSTSOCKET] = TRUE; /* we are "connected */
 
-      ConnectionStore(data, conn);
+      Curl_conncache_add_conn(data->state.conn_cache, conn);
 
       /*
        * Setup whatever necessary for a resumed transfer
@@ -5561,7 +5651,7 @@ static CURLcode create_conn(struct SessionHandle *data,
     }
 
     /* since we skip do_init() */
-    do_init(conn);
+    Curl_init_do(data, conn);
 
     goto out;
   }
@@ -5608,7 +5698,7 @@ static CURLcode create_conn(struct SessionHandle *data,
   if(data->set.reuse_fresh && !data->state.this_is_a_follow)
     reuse = FALSE;
   else
-    reuse = ConnectionExists(data, conn, &conn_temp, &force_reuse);
+    reuse = ConnectionExists(data, conn, &conn_temp, &force_reuse, &waitpipe);
 
   /* If we found a reusable connection, we may still want to
      open a new connection if we are pipelining. */
@@ -5645,18 +5735,24 @@ static CURLcode create_conn(struct SessionHandle *data,
     /* set a pointer to the hostname we display */
     fix_hostname(data, conn, &conn->host);
 
-    infof(data, "Re-using existing connection! (#%ld) with host %s\n",
+    infof(data, "Re-using existing connection! (#%ld) with %s %s\n",
           conn->connection_id,
+          conn->bits.proxy?"proxy":"host",
           conn->proxy.name?conn->proxy.dispname:conn->host.dispname);
   }
   else {
     /* We have decided that we want a new connection. However, we may not
        be able to do that if we have reached the limit of how many
        connections we are allowed to open. */
-    struct connectbundle *bundle;
+    struct connectbundle *bundle = NULL;
+
+    if(waitpipe)
+      /* There is a connection that *might* become usable for pipelining
+         "soon", and we wait for that */
+      connections_available = FALSE;
+    else
+      bundle = Curl_conncache_find_bundle(conn, data->state.conn_cache);
 
-    bundle = Curl_conncache_find_bundle(data->state.conn_cache,
-                                        conn->host.name);
     if(max_host_connections > 0 && bundle &&
        (bundle->num_connections >= max_host_connections)) {
       struct connectdata *conn_candidate;
@@ -5669,11 +5765,15 @@ static CURLcode create_conn(struct SessionHandle *data,
         conn_candidate->data = data;
         (void)Curl_disconnect(conn_candidate, /* dead_connection */ FALSE);
       }
-      else
-        no_connections_available = TRUE;
+      else {
+        infof(data, "No more connections allowed to host: %d\n",
+              max_host_connections);
+        connections_available = FALSE;
+      }
     }
 
-    if(max_total_connections > 0 &&
+    if(connections_available &&
+       (max_total_connections > 0) &&
        (data->state.conn_cache->num_connections >= max_total_connections)) {
       struct connectdata *conn_candidate;
 
@@ -5685,12 +5785,13 @@ static CURLcode create_conn(struct SessionHandle *data,
         conn_candidate->data = data;
         (void)Curl_disconnect(conn_candidate, /* dead_connection */ FALSE);
       }
-      else
-        no_connections_available = TRUE;
+      else {
+        infof(data, "No connections available in cache\n");
+        connections_available = FALSE;
+      }
     }
 
-
-    if(no_connections_available) {
+    if(!connections_available) {
       infof(data, "No connections available.\n");
 
       conn_free(conn);
@@ -5704,7 +5805,7 @@ static CURLcode create_conn(struct SessionHandle *data,
        * This is a brand new connection, so let's store it in the connection
        * cache of ours!
        */
-      ConnectionStore(data, conn);
+      Curl_conncache_add_conn(data->state.conn_cache, conn);
     }
 
 #if defined(USE_NTLM)
@@ -5729,7 +5830,7 @@ static CURLcode create_conn(struct SessionHandle *data,
   conn->inuse = TRUE;
 
   /* Setup and init stuff before DO starts, in preparing for the transfer. */
-  do_init(conn);
+  Curl_init_do(data, conn);
 
   /*
    * Setup whatever necessary for a resumed transfer
@@ -5744,8 +5845,6 @@ static CURLcode create_conn(struct SessionHandle *data,
    * Inherit the proper values from the urldata struct AFTER we have arranged
    * the persistent connection stuff
    */
-  conn->fread_func = data->set.fread_func;
-  conn->fread_in = data->set.in;
   conn->seek_func = data->set.seek_func;
   conn->seek_client = data->set.seek_client;
 
@@ -5756,10 +5855,10 @@ static CURLcode create_conn(struct SessionHandle *data,
 
   out:
 
-  Curl_safefree(options);
-  Curl_safefree(passwd);
-  Curl_safefree(user);
-  Curl_safefree(proxy);
+  free(options);
+  free(passwd);
+  free(user);
+  free(proxy);
   return result;
 }
 
@@ -5903,37 +6002,19 @@ CURLcode Curl_done(struct connectdata **connp,
   conn = *connp;
   data = conn->data;
 
-  if(conn->bits.done)
+  DEBUGF(infof(data, "Curl_done\n"));
+
+  if(data->state.done)
     /* Stop if Curl_done() has already been called */
     return CURLE_OK;
 
   Curl_getoff_all_pipelines(data, conn);
 
-  if((conn->send_pipe->size + conn->recv_pipe->size != 0 &&
-      !data->set.reuse_forbid &&
-      !conn->bits.close))
-    /* Stop if pipeline is not empty and we do not have to close
-       connection. */
-    return CURLE_OK;
-
-  conn->bits.done = TRUE; /* called just now! */
-
   /* Cleanup possible redirect junk */
-  if(data->req.newurl) {
-    free(data->req.newurl);
-    data->req.newurl = NULL;
-  }
-  if(data->req.location) {
-    free(data->req.location);
-    data->req.location = NULL;
-  }
-
-  Curl_resolver_cancel(conn);
-
-  if(conn->dns_entry) {
-    Curl_resolv_unlock(data, conn->dns_entry); /* done with this */
-    conn->dns_entry = NULL;
-  }
+  free(data->req.newurl);
+  data->req.newurl = NULL;
+  free(data->req.location);
+  data->req.location = NULL;
 
   switch(status) {
   case CURLE_ABORTED_BY_CALLBACK:
@@ -5957,12 +6038,27 @@ CURLcode Curl_done(struct connectdata **connp,
   if(!result && Curl_pgrsDone(conn))
     result = CURLE_ABORTED_BY_CALLBACK;
 
+  if((conn->send_pipe->size + conn->recv_pipe->size != 0 &&
+      !data->set.reuse_forbid &&
+      !conn->bits.close)) {
+    /* Stop if pipeline is not empty and we do not have to close
+       connection. */
+    DEBUGF(infof(data, "Connection still in use, no more Curl_done now!\n"));
+    return CURLE_OK;
+  }
+
+  data->state.done = TRUE; /* called just now! */
+  Curl_resolver_cancel(conn);
+
+  if(conn->dns_entry) {
+    Curl_resolv_unlock(data, conn->dns_entry); /* done with this */
+    conn->dns_entry = NULL;
+  }
+
   /* if the transfer was completed in a paused state there can be buffered
      data left to write and then kill */
-  if(data->state.tempwrite) {
-    free(data->state.tempwrite);
-    data->state.tempwrite = NULL;
-  }
+  free(data->state.tempwrite);
+  data->state.tempwrite = NULL;
 
   /* if data->set.reuse_forbid is TRUE, it means the libcurl client has
      forced us to close this connection. This is ignored for requests taking
@@ -6016,20 +6112,24 @@ CURLcode Curl_done(struct connectdata **connp,
 }
 
 /*
- * do_init() inits the readwrite session. This is inited each time (in the DO
- * function before the protocol-specific DO functions are invoked) for a
- * transfer, sometimes multiple times on the same SessionHandle. Make sure
+ * Curl_init_do() inits the readwrite session. This is inited each time (in
+ * the DO function before the protocol-specific DO functions are invoked) for
+ * transfer, sometimes multiple times on the same SessionHandle. Make sure
  * nothing in here depends on stuff that are setup dynamically for the
  * transfer.
+ *
+ * Allow this function to get called with 'conn' set to NULL.
  */
 
-static CURLcode do_init(struct connectdata *conn)
+CURLcode Curl_init_do(struct SessionHandle *data, struct connectdata *conn)
 {
-  struct SessionHandle *data = conn->data;
   struct SingleRequest *k = &data->req;
 
-  conn->bits.done = FALSE; /* Curl_done() is not called yet */
-  conn->bits.do_more = FALSE; /* by default there's no curl_do_more() to use */
+  if(conn)
+    conn->bits.do_more = FALSE; /* by default there's no curl_do_more() to
+                                 * use */
+
+  data->state.done = FALSE; /* Curl_done() is not called yet */
   data->state.expect100header = FALSE;
 
   if(data->set.opt_no_body)
index cd46a92..f9667cb 100644 (file)
--- a/lib/url.h
+++ b/lib/url.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -27,6 +27,7 @@
  * Prototypes for library-wide functions provided by url.c
  */
 
+CURLcode Curl_init_do(struct SessionHandle *data, struct connectdata *conn);
 CURLcode Curl_open(struct SessionHandle **curl);
 CURLcode Curl_init_userdefined(struct UserDefined *set);
 CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
@@ -69,6 +70,9 @@ void Curl_close_connections(struct SessionHandle *data);
 #define CURL_DEFAULT_PROXY_PORT 1080 /* default proxy port unless specified */
 #define CURL_DEFAULT_SOCKS5_GSSAPI_SERVICE "rcmd" /* default socks5 gssapi
                                                      service */
+#define CURL_DEFAULT_PROXY_SERVICE_NAME "HTTP" /* default negotiate proxy
+                                                  service */
+#define CURL_DEFAULT_SERVICE_NAME "HTTP"  /* default negotiate service */
 
 CURLcode Curl_connected_proxy(struct connectdata *conn, int sockindex);
 
index 5f77470..b1c2056 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "cookie.h"
 #include "formdata.h"
 
-#ifdef USE_SSLEAY
 #ifdef USE_OPENSSL
-#include <openssl/rsa.h>
-#include <openssl/crypto.h>
-#include <openssl/x509.h>
-#include <openssl/pem.h>
 #include <openssl/ssl.h>
-#include <openssl/err.h>
 #ifdef HAVE_OPENSSL_ENGINE_H
 #include <openssl/engine.h>
 #endif
-#ifdef HAVE_OPENSSL_PKCS12_H
-#include <openssl/pkcs12.h>
-#endif
-#else /* SSLeay-style includes */
-#include <rsa.h>
-#include <crypto.h>
-#include <x509.h>
-#include <pem.h>
-#include <ssl.h>
-#include <err.h>
-#ifdef HAVE_OPENSSL_ENGINE_H
-#include <engine.h>
-#endif
-#ifdef HAVE_OPENSSL_PKCS12_H
-#include <pkcs12.h>
-#endif
 #endif /* USE_OPENSSL */
-#ifdef USE_GNUTLS
-#error Configuration error; cannot use GnuTLS *and* OpenSSL.
-#endif
-#endif /* USE_SSLEAY */
 
 #ifdef USE_GNUTLS
 #include <gnutls/gnutls.h>
 #endif
 
 #ifdef USE_AXTLS
+#include <axTLS/config.h>
 #include <axTLS/ssl.h>
 #undef malloc
 #undef calloc
 #define HEADERSIZE 256
 
 #define CURLEASY_MAGIC_NUMBER 0xc0dedbadU
+#define GOOD_EASY_HANDLE(x) \
+  ((x) && (((struct SessionHandle *)(x))->magic == CURLEASY_MAGIC_NUMBER))
 
 /* Some convenience macros to get the larger/smaller value out of two given.
    We prefix with CURL to prevent name collisions. */
@@ -288,16 +265,13 @@ struct ssl_connect_data {
      current state of the connection. */
   bool use;
   ssl_connection_state state;
-#ifdef USE_NGHTTP2
-  bool asked_for_h2;
-#endif
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
   /* these ones requires specific SSL-types */
   SSL_CTX* ctx;
   SSL*     handle;
   X509*    server_cert;
   ssl_connect_state connecting_state;
-#endif /* USE_SSLEAY */
+#endif /* USE_OPENSSL */
 #ifdef USE_GNUTLS
   gnutls_session_t session;
   gnutls_certificate_credentials_t cred;
@@ -350,6 +324,9 @@ struct ssl_connect_data {
   size_t encdata_offset, decdata_offset;
   unsigned char *encdata_buffer, *decdata_buffer;
   unsigned long req_flags, ret_flags;
+  CURLcode recv_unrecoverable_err; /* schannel_recv had an unrecoverable err */
+  bool recv_sspi_close_notify; /* true if connection closed by close_notify */
+  bool recv_connection_closed; /* true if connection closed, regardless how */
 #endif /* USE_SCHANNEL */
 #ifdef USE_DARWINSSL
   SSLContextRef ssl_ctx;
@@ -366,6 +343,7 @@ struct ssl_config_data {
 
   bool verifypeer;       /* set TRUE if this is desired */
   bool verifyhost;       /* set TRUE if CN/SAN must match hostname */
+  bool verifystatus;     /* set TRUE if certificate status must be checked */
   char *CApath;          /* certificate dir (doesn't work on windows) */
   char *CAfile;          /* certificate to verify peer against */
   const char *CRLfile;   /* CRL to check certificate revocation */
@@ -378,6 +356,7 @@ struct ssl_config_data {
   void *fsslctxp;        /* parameter for call back */
   bool sessionid;        /* cache session IDs or not */
   bool certinfo;         /* gather lots of certificate info */
+  bool falsestart;
 
 #ifdef USE_TLS_SRP
   char *username; /* TLS username (for, e.g., SRP) */
@@ -542,11 +521,6 @@ struct ConnectBits {
                          requests */
   bool netrc;         /* name+password provided by netrc */
   bool userpwd_in_url; /* name+password found in url */
-
-  bool done;          /* set to FALSE when Curl_do() is called and set to TRUE
-                         when Curl_done() is called, to prevent Curl_done() to
-                         get invoked twice when the multi interface is
-                         used. */
   bool stream_was_rewound; /* Indicates that the stream was rewound after a
                               request read past the end of its response byte
                               boundary */
@@ -556,6 +530,7 @@ struct ConnectBits {
   bool bound; /* set true if bind() has already been done on this socket/
                  connection */
   bool type_set;  /* type= was used in the URL */
+  bool multiplex; /* connection is multiplexed */
 };
 
 struct hostname {
@@ -628,12 +603,6 @@ enum upgrade101 {
   UPGR101_WORKING             /* talking upgraded protocol */
 };
 
-enum negotiatenpn {
-  NPN_INIT,                   /* default state */
-  NPN_HTTP1_1,                /* HTTP/1.1 negotiated */
-  NPN_HTTP2                   /* HTTP2 (draft-xx) negotiated */
-};
-
 /*
  * Request specific data in the easy handle (SessionHandle).  Previously,
  * these members were on the connectdata struct but since a conn struct may
@@ -691,7 +660,6 @@ struct SingleRequest {
 #define IDENTITY 0              /* No encoding */
 #define DEFLATE 1               /* zlib deflate [RFC 1950 & 1951] */
 #define GZIP 2                  /* gzip algorithm [RFC 1952] */
-#define COMPRESS 3              /* Not handled, added for completeness */
 
 #ifdef HAVE_LIBZ
   zlibInitState zlib_init;      /* possible zlib init state;
@@ -1024,10 +992,6 @@ struct connectdata {
 
   /*************** Request - specific items ************/
 
-  /* previously this was in the urldata struct */
-  curl_read_callback fread_func; /* function that reads the input */
-  void *fread_in;           /* pointer to pass to the fread() above */
-
 #if defined(USE_NTLM)
   struct ntlmdata ntlm;     /* NTLM differs from other authentication schemes
                                because it authenticates connections, not
@@ -1095,7 +1059,7 @@ struct connectdata {
   } tunnel_state[2]; /* two separate ones to allow FTP */
   struct connectbundle *bundle; /* The bundle we are member of */
 
-  enum negotiatenpn negnpn;
+  int negnpn; /* APLN or NPN TLS negotiated protocol, CURL_HTTP_VERSION* */
 };
 
 /* The end of connectdata. */
@@ -1293,9 +1257,9 @@ struct UrlState {
   void *resolver; /* resolver state, if it is used in the URL state -
                      ares_channel f.e. */
 
-#if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H)
+#if defined(USE_OPENSSL) && defined(HAVE_OPENSSL_ENGINE_H)
   ENGINE *engine;
-#endif /* USE_SSLEAY */
+#endif /* USE_OPENSSL */
   struct timeval expiretime; /* set this with Curl_expire() only */
   struct Curl_tree timenode; /* for the splay stuff */
   struct curl_llist *timeoutlist; /* list of pending timeouts */
@@ -1341,6 +1305,13 @@ struct UrlState {
 
   curl_off_t infilesize; /* size of file to upload, -1 means unknown.
                             Copied from set.filesize at start of operation */
+
+  int drain; /* Increased when this stream has data to read, even if its
+                socket not necessarily is readable. Decreased when
+                checked. */
+  bool done; /* set to FALSE when Curl_do() is called and set to TRUE when
+                Curl_done() is called, to prevent Curl_done() to get invoked
+                twice when the multi interface is used. */
 };
 
 
@@ -1421,6 +1392,8 @@ enum dupstring {
 #endif
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   STRING_SOCKS5_GSSAPI_SERVICE, /* GSSAPI service name */
+  STRING_PROXY_SERVICE_NAME, /* Proxy service name */
+  STRING_SERVICE_NAME,    /* Service name */
 #endif
   STRING_MAIL_FROM,
   STRING_MAIL_AUTH,
@@ -1453,8 +1426,8 @@ struct UserDefined {
   long proxyport; /* If non-zero, use this port number by default. If the
                      proxy string features a ":[port]" that one will override
                      this. */
-  void *out;         /* the fetched file goes here */
-  void *in;          /* the uploaded file is read from here */
+  void *out;         /* CURLOPT_WRITEDATA */
+  void *in;          /* CURLOPT_READDATA */
   void *writeheader; /* write the header to this if non-NULL */
   void *rtp_out;     /* write RTP to this if non-NULL */
   long use_port;     /* which port to use (when not using default) */
@@ -1608,6 +1581,7 @@ struct UserDefined {
   bool connect_only;     /* make connection, let application use the socket */
   bool ssl_enable_beast; /* especially allow this flaw for interoperability's
                             sake*/
+  bool ssl_no_revoke;    /* disable SSL certificate revocation checks */
   long ssh_auth_types;   /* allowed SSH auth types */
   bool http_te_skip;     /* pass the raw body data to the user, even when
                             transfer-encoded (chunked, compressed) */
@@ -1649,7 +1623,9 @@ struct UserDefined {
 
   bool ssl_enable_npn;  /* TLS NPN extension? */
   bool ssl_enable_alpn; /* TLS ALPN extension? */
-
+  bool path_as_is;      /* allow dotdots? */
+  bool pipewait;        /* wait for pipe/multiplex status before starting a
+                           new connection */
   long expect_100_timeout; /* in milliseconds */
 };
 
index 9ac9226..1727c5a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -26,9 +26,7 @@
 #include "urldata.h"
 #include "vtls/vtls.h"
 #include "http2.h"
-
-#define _MPRINTF_REPLACE /* use the internal *printf() functions */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 
 #ifdef USE_ARES
 #  if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \
index 1b577b1..1038432 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2010, DirecTV, Contact: Eric Hu, <ehu@directv.com>.
- * Copyright (C) 2010 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -29,6 +29,7 @@
 #include "curl_setup.h"
 
 #ifdef USE_AXTLS
+#include <axTLS/config.h>
 #include <axTLS/ssl.h>
 #include "axtls.h"
 
 #include "parsedate.h"
 #include "connect.h" /* for the connect timeout */
 #include "select.h"
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-#include "curl_memory.h"
+#include "curl_printf.h"
+#include "hostcheck.h"
 #include <unistd.h>
-/* The last #include file should be: */
+
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
-#include "hostcheck.h"
 
 
 /* Global axTLS init, called from Curl_ssl_init() */
@@ -463,9 +464,11 @@ Curl_axtls_connect(struct connectdata *conn,
                   int sockindex)
 
 {
+  struct SessionHandle *data = conn->data;
   CURLcode conn_step = connect_prep(conn, sockindex);
   int ssl_fcn_return;
   SSL *ssl = conn->ssl[sockindex].ssl;
+  long timeout_ms;
 
   if(conn_step != CURLE_OK) {
     Curl_axtls_close(conn, sockindex);
@@ -474,14 +477,23 @@ Curl_axtls_connect(struct connectdata *conn,
 
   /* Check to make sure handshake was ok. */
   while(ssl_handshake_status(ssl) != SSL_OK) {
+    /* check allowed time left */
+    timeout_ms = Curl_timeleft(data, NULL, TRUE);
+
+    if(timeout_ms < 0) {
+      /* no need to continue if time already is up */
+      failf(data, "SSL connection timeout");
+      return CURLE_OPERATION_TIMEDOUT;
+    }
+
     ssl_fcn_return = ssl_read(ssl, NULL);
     if(ssl_fcn_return < 0) {
       Curl_axtls_close(conn, sockindex);
       ssl_display_error(ssl_fcn_return); /* goes to stdout. */
       return map_error_to_curl(ssl_fcn_return);
     }
+    /* TODO: avoid polling */
     usleep(10000);
-    /* TODO: check for timeout as this could hang indefinitely otherwise */
   }
   infof (conn->data, "handshake completed successfully\n");
 
@@ -515,12 +527,6 @@ static ssize_t axtls_send(struct connectdata *conn,
   return rc;
 }
 
-void Curl_axtls_close_all(struct SessionHandle *data)
-{
-  (void)data;
-  infof(data, "  Curl_axtls_close_all\n");
-}
-
 void Curl_axtls_close(struct connectdata *conn, int sockindex)
 {
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
@@ -677,7 +683,7 @@ int Curl_axtls_random(struct SessionHandle *data,
      * race condition is that some global resources will leak. */
     RNG_initialize();
   }
-  get_random(length, entropy);
+  get_random((int)length, entropy);
   return 0;
 }
 
index 62b4ab0..223ecb8 100644 (file)
@@ -8,7 +8,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2010, DirecTV, Contact: Eric Hu <ehu@directv.com>
- * Copyright (C) 2010 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -35,10 +35,6 @@ CURLcode Curl_axtls_connect_nonblocking(
     int sockindex,
     bool *done);
 
-/* tell axTLS to close down all open information regarding connections (and
-   thus session ID caching etc) */
-void Curl_axtls_close_all(struct SessionHandle *data);
-
  /* close a SSL connection */
 void Curl_axtls_close(struct connectdata *conn, int sockindex);
 
@@ -50,13 +46,16 @@ int Curl_axtls_random(struct SessionHandle *data,
                       unsigned char *entropy,
                       size_t length);
 
+/* Set the API backend definition to axTLS */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_AXTLS
+
 /* API setup for axTLS */
 #define curlssl_init Curl_axtls_init
 #define curlssl_cleanup Curl_axtls_cleanup
 #define curlssl_connect Curl_axtls_connect
 #define curlssl_connect_nonblocking Curl_axtls_connect_nonblocking
 #define curlssl_session_free(x)  Curl_axtls_session_free(x)
-#define curlssl_close_all Curl_axtls_close_all
+#define curlssl_close_all(x) ((void)x)
 #define curlssl_close Curl_axtls_close
 #define curlssl_shutdown(x,y) Curl_axtls_shutdown(x,y)
 #define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
@@ -66,7 +65,6 @@ int Curl_axtls_random(struct SessionHandle *data,
 #define curlssl_check_cxn(x) Curl_axtls_check_cxn(x)
 #define curlssl_data_pending(x,y) ((void)x, (void)y, 0)
 #define curlssl_random(x,y,z) Curl_axtls_random(x,y,z)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_AXTLS
 
 #endif /* USE_AXTLS */
 #endif /* HEADER_CURL_AXTLS_H */
index 3333fc3..3ded7f1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #ifdef USE_CYASSL
 
+#define WOLFSSL_OPTIONS_IGNORE_SYS
+/* CyaSSL's version.h, which should contain only the version, should come
+before all other CyaSSL includes and be immediately followed by build config
+aka options.h. http://curl.haxx.se/mail/lib-2015-04/0069.html */
+#include <cyassl/version.h>
+#if defined(HAVE_CYASSL_OPTIONS_H) && (LIBCYASSL_VERSION_HEX > 0x03004008)
+#if defined(CYASSL_API) || defined(WOLFSSL_API)
+/* Safety measure. If either is defined some API include was already included
+and that's a problem since options.h hasn't been included yet. */
+#error "CyaSSL API was included before the CyaSSL build options."
+#endif
+#include <cyassl/options.h>
+#endif
+
 #ifdef HAVE_LIMITS_H
 #include <limits.h>
 #endif
 #include "connect.h" /* for the connect timeout */
 #include "select.h"
 #include "rawstr.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-#include "curl_memory.h"
+#include "x509asn1.h"
+#include "curl_printf.h"
 
 #include <cyassl/ssl.h>
 #ifdef HAVE_CYASSL_ERROR_SSL_H
 #include <cyassl/error.h>
 #endif
 #include <cyassl/ctaocrypt/random.h>
+#include <cyassl/ctaocrypt/sha256.h>
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
+#if LIBCYASSL_VERSION_HEX < 0x02007002 /* < 2.7.2 */
+#define CYASSL_MAX_ERROR_SZ 80
+#endif
+
 static Curl_recv cyassl_recv;
 static Curl_send cyassl_send;
 
@@ -82,42 +100,58 @@ static CURLcode
 cyassl_connect_step1(struct connectdata *conn,
                      int sockindex)
 {
+  char error_buffer[CYASSL_MAX_ERROR_SZ];
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data* conssl = &conn->ssl[sockindex];
   SSL_METHOD* req_method = NULL;
   void* ssl_sessionid = NULL;
   curl_socket_t sockfd = conn->sock[sockindex];
+#ifdef HAVE_SNI
+  bool sni = FALSE;
+#define use_sni(x)  sni = (x)
+#else
+#define use_sni(x)  Curl_nop_stmt
+#endif
 
   if(conssl->state == ssl_connection_complete)
     return CURLE_OK;
 
-  /* CyaSSL doesn't support SSLv2 */
-  if(data->set.ssl.version == CURL_SSLVERSION_SSLv2) {
-    failf(data, "CyaSSL does not support SSLv2");
-    return CURLE_SSL_CONNECT_ERROR;
-  }
-
   /* check to see if we've been told to use an explicit SSL/TLS version */
   switch(data->set.ssl.version) {
-  default:
   case CURL_SSLVERSION_DEFAULT:
   case CURL_SSLVERSION_TLSv1:
-    infof(data, "CyaSSL cannot be configured to use TLS 1.0-1.2, "
+#if LIBCYASSL_VERSION_HEX >= 0x03003000 /* >= 3.3.0 */
+    /* minimum protocol version is set later after the CTX object is created */
+    req_method = SSLv23_client_method();
+#else
+    infof(data, "CyaSSL <3.3.0 cannot be configured to use TLS 1.0-1.2, "
           "TLS 1.0 is used exclusively\n");
     req_method = TLSv1_client_method();
+#endif
+    use_sni(TRUE);
     break;
   case CURL_SSLVERSION_TLSv1_0:
     req_method = TLSv1_client_method();
+    use_sni(TRUE);
     break;
   case CURL_SSLVERSION_TLSv1_1:
     req_method = TLSv1_1_client_method();
+    use_sni(TRUE);
     break;
   case CURL_SSLVERSION_TLSv1_2:
     req_method = TLSv1_2_client_method();
+    use_sni(TRUE);
     break;
   case CURL_SSLVERSION_SSLv3:
     req_method = SSLv3_client_method();
+    use_sni(FALSE);
     break;
+  case CURL_SSLVERSION_SSLv2:
+    failf(data, "CyaSSL does not support SSLv2");
+    return CURLE_SSL_CONNECT_ERROR;
+  default:
+    failf(data, "Unrecognized parameter passed via CURLOPT_SSLVERSION");
+    return CURLE_SSL_CONNECT_ERROR;
   }
 
   if(!req_method) {
@@ -134,15 +168,36 @@ cyassl_connect_step1(struct connectdata *conn,
     return CURLE_OUT_OF_MEMORY;
   }
 
+  switch(data->set.ssl.version) {
+  case CURL_SSLVERSION_DEFAULT:
+  case CURL_SSLVERSION_TLSv1:
+#if LIBCYASSL_VERSION_HEX > 0x03004006 /* > 3.4.6 */
+    /* Versions 3.3.0 to 3.4.6 we know the minimum protocol version is whatever
+    minimum version of TLS was built in and at least TLS 1.0. For later library
+    versions that could change (eg TLS 1.0 built in but defaults to TLS 1.1) so
+    we have this short circuit evaluation to find the minimum supported TLS
+    version. We use wolfSSL_CTX_SetMinVersion and not CyaSSL_SetMinVersion
+    because only the former will work before the user's CTX callback is called.
+    */
+    if((wolfSSL_CTX_SetMinVersion(conssl->ctx, WOLFSSL_TLSV1) != 1) &&
+       (wolfSSL_CTX_SetMinVersion(conssl->ctx, WOLFSSL_TLSV1_1) != 1) &&
+       (wolfSSL_CTX_SetMinVersion(conssl->ctx, WOLFSSL_TLSV1_2) != 1)) {
+      failf(data, "SSL: couldn't set the minimum protocol version");
+      return CURLE_SSL_CONNECT_ERROR;
+    }
+#endif
+    break;
+  }
+
 #ifndef NO_FILESYSTEM
   /* load trusted cacert */
   if(data->set.str[STRING_SSL_CAFILE]) {
-    if(!SSL_CTX_load_verify_locations(conssl->ctx,
-                                      data->set.str[STRING_SSL_CAFILE],
-                                      data->set.str[STRING_SSL_CAPATH])) {
+    if(1 != SSL_CTX_load_verify_locations(conssl->ctx,
+                                          data->set.str[STRING_SSL_CAFILE],
+                                          data->set.str[STRING_SSL_CAPATH])) {
       if(data->set.ssl.verifypeer) {
         /* Fail if we insist on successfully verifying the server. */
-        failf(data,"error setting certificate verify locations:\n"
+        failf(data, "error setting certificate verify locations:\n"
               "  CAfile: %s\n  CApath: %s",
               data->set.str[STRING_SSL_CAFILE]?
               data->set.str[STRING_SSL_CAFILE]: "none",
@@ -188,11 +243,7 @@ cyassl_connect_step1(struct connectdata *conn,
       return CURLE_SSL_CONNECT_ERROR;
     }
   }
-#else
-  if(CyaSSL_no_filesystem_verify(conssl->ctx)!= SSL_SUCCESS) {
-    return CURLE_SSL_CONNECT_ERROR;
-  }
-#endif /* NO_FILESYSTEM */
+#endif /* !NO_FILESYSTEM */
 
   /* SSL always tries to verify the peer, this only says whether it should
    * fail to connect if the verification fails, or if it should continue
@@ -202,6 +253,46 @@ cyassl_connect_step1(struct connectdata *conn,
                      data->set.ssl.verifypeer?SSL_VERIFY_PEER:SSL_VERIFY_NONE,
                      NULL);
 
+#ifdef HAVE_SNI
+  if(sni) {
+    struct in_addr addr4;
+#ifdef ENABLE_IPV6
+    struct in6_addr addr6;
+#endif
+    size_t hostname_len = strlen(conn->host.name);
+    if((hostname_len < USHRT_MAX) &&
+       (0 == Curl_inet_pton(AF_INET, conn->host.name, &addr4)) &&
+#ifdef ENABLE_IPV6
+       (0 == Curl_inet_pton(AF_INET6, conn->host.name, &addr6)) &&
+#endif
+       (CyaSSL_CTX_UseSNI(conssl->ctx, CYASSL_SNI_HOST_NAME, conn->host.name,
+                          (unsigned short)hostname_len) != 1)) {
+      infof(data, "WARNING: failed to configure server name indication (SNI) "
+            "TLS extension\n");
+    }
+  }
+#endif
+
+  /* give application a chance to interfere with SSL set up. */
+  if(data->set.ssl.fsslctx) {
+    CURLcode result = CURLE_OK;
+    result = (*data->set.ssl.fsslctx)(data, conssl->ctx,
+                                      data->set.ssl.fsslctxp);
+    if(result) {
+      failf(data, "error signaled by ssl ctx callback");
+      return result;
+    }
+  }
+#ifdef NO_FILESYSTEM
+  else if(data->set.ssl.verifypeer) {
+    failf(data, "SSL: Certificates couldn't be loaded because CyaSSL was built"
+          " with \"no filesystem\". Either disable peer verification"
+          " (insecure) or if you are building an application with libcurl you"
+          " can load certificates via CURLOPT_SSL_CTX_FUNCTION.");
+    return CURLE_SSL_CONNECT_ERROR;
+  }
+#endif
+
   /* Let's make an SSL structure */
   if(conssl->handle)
     SSL_free(conssl->handle);
@@ -216,7 +307,7 @@ cyassl_connect_step1(struct connectdata *conn,
     /* we got a session id, use it! */
     if(!SSL_set_session(conssl->handle, ssl_sessionid)) {
       failf(data, "SSL: SSL_set_session failed: %s",
-            ERR_error_string(SSL_get_error(conssl->handle, 0),NULL));
+            ERR_error_string(SSL_get_error(conssl->handle, 0), error_buffer));
       return CURLE_SSL_CONNECT_ERROR;
     }
     /* Informational message */
@@ -242,9 +333,6 @@ cyassl_connect_step2(struct connectdata *conn,
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data* conssl = &conn->ssl[sockindex];
 
-  infof(data, "CyaSSL: Connecting to %s:%d\n",
-        conn->host.name, conn->remote_port);
-
   conn->recv[sockindex] = cyassl_recv;
   conn->send[sockindex] = cyassl_send;
 
@@ -257,7 +345,7 @@ cyassl_connect_step2(struct connectdata *conn,
 
   ret = SSL_connect(conssl->handle);
   if(ret != 1) {
-    char error_buffer[80];
+    char error_buffer[CYASSL_MAX_ERROR_SZ];
     int  detail = SSL_get_error(conssl->handle, ret);
 
     if(SSL_ERROR_WANT_READ == detail) {
@@ -317,6 +405,44 @@ cyassl_connect_step2(struct connectdata *conn,
     }
   }
 
+  if(data->set.str[STRING_SSL_PINNEDPUBLICKEY]) {
+    X509 *x509;
+    const char *x509_der;
+    int x509_der_len;
+    curl_X509certificate x509_parsed;
+    curl_asn1Element *pubkey;
+    CURLcode result;
+
+    x509 = SSL_get_peer_certificate(conssl->handle);
+    if(!x509) {
+      failf(data, "SSL: failed retrieving server certificate");
+      return CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+    }
+
+    x509_der = (const char *)CyaSSL_X509_get_der(x509, &x509_der_len);
+    if(!x509_der) {
+      failf(data, "SSL: failed retrieving ASN.1 server certificate");
+      return CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+    }
+
+    memset(&x509_parsed, 0, sizeof x509_parsed);
+    Curl_parseX509(&x509_parsed, x509_der, x509_der + x509_der_len);
+
+    pubkey = &x509_parsed.subjectPublicKeyInfo;
+    if(!pubkey->header || pubkey->end <= pubkey->header) {
+      failf(data, "SSL: failed retrieving public key from server certificate");
+      return CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+    }
+
+    result = Curl_pin_peer_pubkey(data->set.str[STRING_SSL_PINNEDPUBLICKEY],
+                                  (const unsigned char *)pubkey->header,
+                                  (size_t)(pubkey->end - pubkey->header));
+    if(result) {
+      failf(data, "SSL: public key does not match pinned public key!");
+      return result;
+    }
+  }
+
   conssl->connecting_state = ssl_connect_3;
   infof(data, "SSL connected\n");
 
@@ -369,7 +495,7 @@ static ssize_t cyassl_send(struct connectdata *conn,
                            size_t len,
                            CURLcode *curlcode)
 {
-  char error_buffer[80];
+  char error_buffer[CYASSL_MAX_ERROR_SZ];
   int  memlen = (len > (size_t)INT_MAX) ? INT_MAX : (int)len;
   int  rc     = SSL_write(conn->ssl[sockindex].handle, mem, memlen);
 
@@ -393,11 +519,6 @@ static ssize_t cyassl_send(struct connectdata *conn,
   return rc;
 }
 
-void Curl_cyassl_close_all(struct SessionHandle *data)
-{
-  (void)data;
-}
-
 void Curl_cyassl_close(struct connectdata *conn, int sockindex)
 {
   struct ssl_connect_data *conssl = &conn->ssl[sockindex];
@@ -419,7 +540,7 @@ static ssize_t cyassl_recv(struct connectdata *conn,
                            size_t buffersize,
                            CURLcode *curlcode)
 {
-  char error_buffer[80];
+  char error_buffer[CYASSL_MAX_ERROR_SZ];
   int  buffsize = (buffersize > (size_t)INT_MAX) ? INT_MAX : (int)buffersize;
   int  nread    = SSL_read(conn->ssl[num].handle, buf, buffsize);
 
@@ -455,7 +576,9 @@ void Curl_cyassl_session_free(void *ptr)
 
 size_t Curl_cyassl_version(char *buffer, size_t size)
 {
-#ifdef CYASSL_VERSION
+#ifdef WOLFSSL_VERSION
+  return snprintf(buffer, size, "wolfSSL/%s", WOLFSSL_VERSION);
+#elif defined(CYASSL_VERSION)
   return snprintf(buffer, size, "CyaSSL/%s", CYASSL_VERSION);
 #else
   return snprintf(buffer, size, "CyaSSL/%s", "<1.8.8");
@@ -465,10 +588,7 @@ size_t Curl_cyassl_version(char *buffer, size_t size)
 
 int Curl_cyassl_init(void)
 {
-  if(CyaSSL_Init() == 0)
-    return 1;
-
-  return -1;
+  return (CyaSSL_Init() == SSL_SUCCESS);
 }
 
 
@@ -644,9 +764,23 @@ int Curl_cyassl_random(struct SessionHandle *data,
   (void)data;
   if(InitRng(&rng))
     return 1;
-  if(RNG_GenerateBlock(&rng, entropy, length))
+  if(length > UINT_MAX)
+    return 1;
+  if(RNG_GenerateBlock(&rng, entropy, (unsigned)length))
     return 1;
   return 0;
 }
 
+void Curl_cyassl_sha256sum(const unsigned char *tmp, /* input */
+                      size_t tmplen,
+                      unsigned char *sha256sum /* output */,
+                      size_t unused)
+{
+  Sha256 SHA256pw;
+  (void)unused;
+  InitSha256(&SHA256pw);
+  Sha256Update(&SHA256pw, tmp, tmplen);
+  Sha256Final(&SHA256pw, sha256sum);
+}
+
 #endif
index a691e16..167de74 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #ifdef USE_CYASSL
 
 CURLcode Curl_cyassl_connect(struct connectdata *conn, int sockindex);
-bool Curl_cyassl_data_pending(const struct connectdata* conn,int connindex);
+bool Curl_cyassl_data_pending(const struct connectdata* conn, int connindex);
 int Curl_cyassl_shutdown(struct connectdata* conn, int sockindex);
 
-/* tell CyaSSL to close down all open information regarding connections (and
-   thus session ID caching etc) */
-void Curl_cyassl_close_all(struct SessionHandle *data);
-
  /* close a SSL connection */
 void Curl_cyassl_close(struct connectdata *conn, int sockindex);
 
@@ -46,6 +42,16 @@ CURLcode Curl_cyassl_connect_nonblocking(struct connectdata *conn,
 int Curl_cyassl_random(struct SessionHandle *data,
                        unsigned char *entropy,
                        size_t length);
+void Curl_cyassl_sha256sum(const unsigned char *tmp, /* input */
+                     size_t tmplen,
+                     unsigned char *sha256sum, /* output */
+                     size_t unused);
+
+/* Set the API backend definition to Schannel */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_CYASSL
+
+/* this backend supports CURLOPT_SSL_CTX_* */
+#define have_curlssl_ssl_ctx 1
 
 /* API setup for CyaSSL */
 #define curlssl_init Curl_cyassl_init
@@ -53,7 +59,7 @@ int Curl_cyassl_random(struct SessionHandle *data,
 #define curlssl_connect Curl_cyassl_connect
 #define curlssl_connect_nonblocking Curl_cyassl_connect_nonblocking
 #define curlssl_session_free(x)  Curl_cyassl_session_free(x)
-#define curlssl_close_all Curl_cyassl_close_all
+#define curlssl_close_all(x) ((void)x)
 #define curlssl_close Curl_cyassl_close
 #define curlssl_shutdown(x,y) Curl_cyassl_shutdown(x,y)
 #define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
@@ -63,7 +69,7 @@ int Curl_cyassl_random(struct SessionHandle *data,
 #define curlssl_check_cxn(x) ((void)x, -1)
 #define curlssl_data_pending(x,y) Curl_cyassl_data_pending(x,y)
 #define curlssl_random(x,y,z) Curl_cyassl_random(x,y,z)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_CYASSL
+#define curlssl_sha256sum(a,b,c,d) Curl_cyassl_sha256sum(a,b,c,d)
 
 #endif /* USE_CYASSL */
 #endif /* HEADER_CURL_CYASSL_H */
similarity index 99%
rename from lib/vtls/curl_darwinssl.c
rename to lib/vtls/darwinssl.c
index c056198..03adcef 100644 (file)
 #include "connect.h"
 #include "select.h"
 #include "vtls.h"
-#include "curl_darwinssl.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "darwinssl.h"
+#include "curl_printf.h"
 
 #include "curl_memory.h"
 /* The last #include file should be: */
@@ -1461,9 +1459,12 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
 #if CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7
   /* We want to enable 1/n-1 when using a CBC cipher unless the user
      specifically doesn't want us doing that: */
-  if(SSLSetSessionOption != NULL)
+  if(SSLSetSessionOption != NULL) {
     SSLSetSessionOption(connssl->ssl_ctx, kSSLSessionOptionSendOneByteRecord,
                       !data->set.ssl_enable_beast);
+    SSLSetSessionOption(connssl->ssl_ctx, kSSLSessionOptionFalseStart,
+                      data->set.ssl.falsestart); /* false start support */
+  }
 #endif /* CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7 */
 
   /* Check if there's a cached ID we can/should use here! */
@@ -2229,12 +2230,6 @@ void Curl_darwinssl_close(struct connectdata *conn, int sockindex)
   connssl->ssl_sockfd = 0;
 }
 
-void Curl_darwinssl_close_all(struct SessionHandle *data)
-{
-  /* SecureTransport doesn't separate sessions from contexts, so... */
-  (void)data;
-}
-
 int Curl_darwinssl_shutdown(struct connectdata *conn, int sockindex)
 {
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
@@ -2372,6 +2367,14 @@ void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
   (void)CC_MD5(tmp, (CC_LONG)tmplen, md5sum);
 }
 
+bool Curl_darwinssl_false_start(void) {
+#if CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7
+  if(SSLSetSessionOption != NULL)
+    return TRUE;
+#endif
+  return FALSE;
+}
+
 static ssize_t darwinssl_send(struct connectdata *conn,
                               int sockindex,
                               const void *mem,
similarity index 92%
rename from lib/vtls/curl_darwinssl.h
rename to lib/vtls/darwinssl.h
index 7c80edf..3bb69c0 100644 (file)
@@ -8,7 +8,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2012 - 2014, Nick Zitzmann, <nickzman@gmail.com>.
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -32,9 +32,6 @@ CURLcode Curl_darwinssl_connect_nonblocking(struct connectdata *conn,
                                             int sockindex,
                                             bool *done);
 
-/* this function doesn't actually do anything */
-void Curl_darwinssl_close_all(struct SessionHandle *data);
-
 /* close a SSL connection */
 void Curl_darwinssl_close(struct connectdata *conn, int sockindex);
 
@@ -51,6 +48,10 @@ void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
                            size_t tmplen,
                            unsigned char *md5sum, /* output */
                            size_t md5len);
+bool Curl_darwinssl_false_start(void);
+
+/* Set the API backend definition to SecureTransport */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_DARWINSSL
 
 /* API setup for SecureTransport */
 #define curlssl_init() (1)
@@ -58,7 +59,7 @@ void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
 #define curlssl_connect Curl_darwinssl_connect
 #define curlssl_connect_nonblocking Curl_darwinssl_connect_nonblocking
 #define curlssl_session_free(x) Curl_darwinssl_session_free(x)
-#define curlssl_close_all Curl_darwinssl_close_all
+#define curlssl_close_all(x) ((void)x)
 #define curlssl_close Curl_darwinssl_close
 #define curlssl_shutdown(x,y) 0
 #define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
@@ -69,7 +70,7 @@ void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
 #define curlssl_data_pending(x,y) Curl_darwinssl_data_pending(x, y)
 #define curlssl_random(x,y,z) ((void)x, Curl_darwinssl_random(y,z))
 #define curlssl_md5sum(a,b,c,d) Curl_darwinssl_md5sum(a,b,c,d)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_DARWINSSL
+#define curlssl_false_start() Curl_darwinssl_false_start()
 
 #endif /* USE_DARWINSSL */
 #endif /* HEADER_CURL_DARWINSSL_H */
index ac05f05..d884bd4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -74,9 +74,7 @@
 #include "select.h"
 #include "strequal.h"
 #include "x509asn1.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 
 #include "curl_memory.h"
 /* The last #include file should be: */
@@ -625,7 +623,7 @@ static CURLcode gskit_connect_step1(struct connectdata *conn, int sockindex)
     sni = (char *) NULL;
     break;
   case CURL_SSLVERSION_SSLv3:
-    protoflags = CURL_GSKPROTO_SSLV2_MASK;
+    protoflags = CURL_GSKPROTO_SSLV3_MASK;
     sni = (char *) NULL;
     break;
   case CURL_SSLVERSION_TLSv1:
@@ -986,13 +984,6 @@ void Curl_gskit_close(struct connectdata *conn, int sockindex)
 }
 
 
-void Curl_gskit_close_all(struct SessionHandle *data)
-{
-  /* Unimplemented. */
-  (void) data;
-}
-
-
 int Curl_gskit_shutdown(struct connectdata *conn, int sockindex)
 {
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
index baec823..af31faf 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #ifdef USE_GSKIT
 int Curl_gskit_init(void);
 void Curl_gskit_cleanup(void);
-CURLcode Curl_gskit_connect(struct connectdata * conn, int sockindex);
-CURLcode Curl_gskit_connect_nonblocking(struct connectdata * conn,
-                                        int sockindex, bool * done);
+CURLcode Curl_gskit_connect(struct connectdata *conn, int sockindex);
+CURLcode Curl_gskit_connect_nonblocking(struct connectdata *conn,
+                                        int sockindex, bool *done);
 void Curl_gskit_close(struct connectdata *conn, int sockindex);
-void Curl_gskit_close_all(struct SessionHandle * data);
-int Curl_gskit_shutdown(struct connectdata * conn, int sockindex);
+int Curl_gskit_shutdown(struct connectdata *conn, int sockindex);
 
-size_t Curl_gskit_version(char * buffer, size_t size);
-int Curl_gskit_check_cxn(struct connectdata * cxn);
+size_t Curl_gskit_version(char *buffer, size_t size);
+int Curl_gskit_check_cxn(struct connectdata *cxn);
+
+/* Set the API backend definition to GSKit */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_GSKIT
 
 /* this backend supports CURLOPT_CERTINFO */
 #define have_curlssl_certinfo 1
@@ -53,7 +55,7 @@ int Curl_gskit_check_cxn(struct connectdata * cxn);
 
 /*  No session handling for GSKit */
 #define curlssl_session_free(x) Curl_nop_stmt
-#define curlssl_close_all Curl_gskit_close_all
+#define curlssl_close_all(x) ((void)x)
 #define curlssl_close Curl_gskit_close
 #define curlssl_shutdown(x,y) Curl_gskit_shutdown(x,y)
 #define curlssl_set_engine(x,y) CURLE_NOT_BUILT_IN
@@ -63,7 +65,7 @@ int Curl_gskit_check_cxn(struct connectdata * cxn);
 #define curlssl_check_cxn(x) Curl_gskit_check_cxn(x)
 #define curlssl_data_pending(x,y) 0
 #define curlssl_random(x,y,z) -1
-#define CURL_SSL_BACKEND CURLSSLBACKEND_GSKIT
+
 #endif /* USE_GSKIT */
 
 #endif /* HEADER_CURL_GSKIT_H */
index 5d4e48a..c54dfc1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -39,6 +39,7 @@
 #ifdef USE_GNUTLS_NETTLE
 #include <gnutls/crypto.h>
 #include <nettle/md5.h>
+#include <nettle/sha2.h>
 #else
 #include <gcrypt.h>
 #endif
@@ -53,9 +54,8 @@
 #include "select.h"
 #include "rawstr.h"
 #include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "x509asn1.h"
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -92,14 +92,23 @@ static bool gtls_inited = FALSE;
 #    define GNUTLS_MAPS_WINSOCK_ERRORS 1
 #  endif
 
-#  ifdef USE_NGHTTP2
-#    undef HAS_ALPN
-#    if (GNUTLS_VERSION_NUMBER >= 0x030200)
-#      define HAS_ALPN
-#    endif
+#  if (GNUTLS_VERSION_NUMBER >= 0x030200)
+#    define HAS_ALPN
+#  endif
+
+#  if (GNUTLS_VERSION_NUMBER >= 0x03020d)
+#    define HAS_OCSP
+#  endif
+
+#  if (GNUTLS_VERSION_NUMBER >= 0x030306)
+#    define HAS_CAPATH
 #  endif
 #endif
 
+#ifdef HAS_OCSP
+# include <gnutls/ocsp.h>
+#endif
+
 /*
  * 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()
@@ -204,7 +213,7 @@ static void showtime(struct SessionHandle *data,
 
   snprintf(data->state.buffer,
            BUFSIZE,
-           "\t %s: %s, %02d %s %4d %02d:%02d:%02d GMT\n",
+           "\t %s: %s, %02d %s %4d %02d:%02d:%02d GMT",
            text,
            Curl_wkday[tm->tm_wday?tm->tm_wday-1:6],
            tm->tm_mday,
@@ -223,7 +232,7 @@ static gnutls_datum_t load_file (const char *file)
   long filelen;
   void *ptr;
 
-  if(!(f = fopen(file, "r")))
+  if(!(f = fopen(file, "rb")))
     return loaded_file;
   if(fseek(f, 0, SEEK_END) != 0
      || (filelen = ftell(f)) < 0
@@ -319,7 +328,8 @@ static CURLcode handshake(struct connectdata *conn,
       if(strerr == NULL)
         strerr = gnutls_strerror(rc);
 
-      failf(data, "gnutls_handshake() warning: %s", strerr);
+      infof(data, "gnutls_handshake() warning: %s\n", strerr);
+      continue;
     }
     else if(rc < 0) {
       const char *strerr = NULL;
@@ -392,10 +402,6 @@ gtls_connect_step1(struct connectdata *conn,
   const char* prioritylist;
   const char *err = NULL;
 #endif
-#ifdef HAS_ALPN
-  int protocols_size = 2;
-  gnutls_datum_t protocols[2];
-#endif
 
   if(conn->ssl[sockindex].state == ssl_connection_complete)
     /* to make us tolerant against being called more than once for the
@@ -463,6 +469,24 @@ gtls_connect_step1(struct connectdata *conn,
             rc, data->set.ssl.CAfile);
   }
 
+#ifdef HAS_CAPATH
+  if(data->set.ssl.CApath) {
+    /* set the trusted CA cert directory */
+    rc = gnutls_certificate_set_x509_trust_dir(conn->ssl[sockindex].cred,
+                                                data->set.ssl.CApath,
+                                                GNUTLS_X509_FMT_PEM);
+    if(rc < 0) {
+      infof(data, "error reading ca cert file %s (%s)\n",
+            data->set.ssl.CAfile, gnutls_strerror(rc));
+      if(data->set.ssl.verifypeer)
+        return CURLE_SSL_CACERT_BADFILE;
+    }
+    else
+      infof(data, "found %d certificates in %s\n",
+            rc, data->set.ssl.CApath);
+  }
+#endif
+
   if(data->set.ssl.CRLfile) {
     /* set the CRL list file */
     rc = gnutls_certificate_set_x509_crl_file(conn->ssl[sockindex].cred,
@@ -609,20 +633,25 @@ gtls_connect_step1(struct connectdata *conn,
 #endif
 
 #ifdef HAS_ALPN
-  if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
-    if(data->set.ssl_enable_alpn) {
-      protocols[0].data = NGHTTP2_PROTO_VERSION_ID;
-      protocols[0].size = NGHTTP2_PROTO_VERSION_ID_LEN;
-      protocols[1].data = ALPN_HTTP_1_1;
-      protocols[1].size = ALPN_HTTP_1_1_LENGTH;
-      gnutls_alpn_set_protocols(session, protocols, protocols_size, 0);
-      infof(data, "ALPN, offering %s, %s\n", NGHTTP2_PROTO_VERSION_ID,
-            ALPN_HTTP_1_1);
-      connssl->asked_for_h2 = TRUE;
-    }
-    else {
-      infof(data, "SSL, can't negotiate HTTP/2.0 without ALPN\n");
+  if(data->set.ssl_enable_alpn) {
+    int cur = 0;
+    gnutls_datum_t protocols[2];
+
+#ifdef USE_NGHTTP2
+    if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+      protocols[cur].data = (unsigned char *)NGHTTP2_PROTO_VERSION_ID;
+      protocols[cur].size = NGHTTP2_PROTO_VERSION_ID_LEN;
+      cur++;
+      infof(data, "ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
     }
+#endif
+
+    protocols[cur].data = (unsigned char *)ALPN_HTTP_1_1;
+    protocols[cur].size = ALPN_HTTP_1_1_LENGTH;
+    cur++;
+    infof(data, "ALPN, offering %s\n", ALPN_HTTP_1_1);
+
+    gnutls_alpn_set_protocols(session, protocols, cur, 0);
   }
 #endif
 
@@ -644,13 +673,21 @@ gtls_connect_step1(struct connectdata *conn,
   if(data->set.ssl.authtype == CURL_TLSAUTH_SRP) {
     rc = gnutls_credentials_set(session, GNUTLS_CRD_SRP,
                                 conn->ssl[sockindex].srp_client_cred);
-    if(rc != GNUTLS_E_SUCCESS)
+    if(rc != GNUTLS_E_SUCCESS) {
       failf(data, "gnutls_credentials_set() failed: %s", gnutls_strerror(rc));
+      return CURLE_SSL_CONNECT_ERROR;
+    }
   }
   else
 #endif
+  {
     rc = gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE,
                                 conn->ssl[sockindex].cred);
+    if(rc != GNUTLS_E_SUCCESS) {
+      failf(data, "gnutls_credentials_set() failed: %s", gnutls_strerror(rc));
+      return CURLE_SSL_CONNECT_ERROR;
+    }
+  }
 
   /* set the connection handle (file descriptor for the socket) */
   gnutls_transport_set_ptr(session,
@@ -663,6 +700,16 @@ gtls_connect_step1(struct connectdata *conn,
   /* lowat must be set to zero when using custom push and pull functions. */
   gnutls_transport_set_lowat(session, 0);
 
+#ifdef HAS_OCSP
+  if(data->set.ssl.verifystatus) {
+    rc = gnutls_ocsp_status_request_enable_client(session, NULL, 0, NULL);
+    if(rc != GNUTLS_E_SUCCESS) {
+      failf(data, "gnutls_ocsp_status_request_enable_client() failed: %d", rc);
+      return CURLE_SSL_CONNECT_ERROR;
+    }
+  }
+#endif
+
   /* This might be a reconnect, so we check for a session ID in the cache
      to speed up things */
 
@@ -742,8 +789,8 @@ gtls_connect_step3(struct connectdata *conn,
 {
   unsigned int cert_list_size;
   const gnutls_datum_t *chainp;
-  unsigned int verify_status;
-  gnutls_x509_crt_t x509_cert,x509_issuer;
+  unsigned int verify_status = 0;
+  gnutls_x509_crt_t x509_cert, x509_issuer;
   gnutls_datum_t issuerp;
   char certbuf[256] = ""; /* big enough? */
   size_t size;
@@ -761,6 +808,16 @@ gtls_connect_step3(struct connectdata *conn,
 #endif
   CURLcode result = CURLE_OK;
 
+  gnutls_protocol_t version = gnutls_protocol_get_version(session);
+
+  /* the name of the cipher suite used, e.g. ECDHE_RSA_AES_256_GCM_SHA384. */
+  ptr = gnutls_cipher_suite_get_name(gnutls_kx_get(session),
+                                     gnutls_cipher_get(session),
+                                     gnutls_mac_get(session));
+
+  infof(data, "SSL connection using %s / %s\n",
+        gnutls_protocol_get_name(version), ptr);
+
   /* This function will return the peer's raw certificate (chain) as sent by
      the peer. These certificates are in raw format (DER encoded for
      X.509). In case of a X.509 then a certificate list may be present. The
@@ -791,6 +848,23 @@ gtls_connect_step3(struct connectdata *conn,
     infof(data, "\t common name: WARNING couldn't obtain\n");
   }
 
+  if(data->set.ssl.certinfo && chainp) {
+    unsigned int i;
+
+    result = Curl_ssl_init_certinfo(data, cert_list_size);
+    if(result)
+      return result;
+
+    for(i = 0; i < cert_list_size; i++) {
+      const char *beg = (const char *) chainp[i].data;
+      const char *end = beg + chainp[i].size;
+
+      result = Curl_extract_certinfo(conn, i, beg, end);
+      if(result)
+        return result;
+    }
+  }
+
   if(data->set.ssl.verifypeer) {
     /* This function will try to verify the peer's certificate and return its
        status (trusted, invalid etc.). The value of status should be one or
@@ -822,6 +896,111 @@ gtls_connect_step3(struct connectdata *conn,
   else
     infof(data, "\t server certificate verification SKIPPED\n");
 
+#ifdef HAS_OCSP
+  if(data->set.ssl.verifystatus) {
+    if(gnutls_ocsp_status_request_is_checked(session, 0) == 0) {
+      gnutls_datum_t status_request;
+      gnutls_ocsp_resp_t ocsp_resp;
+
+      gnutls_ocsp_cert_status_t status;
+      gnutls_x509_crl_reason_t reason;
+
+      rc = gnutls_ocsp_status_request_get(session, &status_request);
+
+      infof(data, "\t server certificate status verification FAILED\n");
+
+      if(rc == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) {
+        failf(data, "No OCSP response received");
+        return CURLE_SSL_INVALIDCERTSTATUS;
+      }
+
+      if(rc < 0) {
+        failf(data, "Invalid OCSP response received");
+        return CURLE_SSL_INVALIDCERTSTATUS;
+      }
+
+      gnutls_ocsp_resp_init(&ocsp_resp);
+
+      rc = gnutls_ocsp_resp_import(ocsp_resp, &status_request);
+      if(rc < 0) {
+        failf(data, "Invalid OCSP response received");
+        return CURLE_SSL_INVALIDCERTSTATUS;
+      }
+
+      rc = gnutls_ocsp_resp_get_single(ocsp_resp, 0, NULL, NULL, NULL, NULL,
+                                       &status, NULL, NULL, NULL, &reason);
+
+      switch(status) {
+      case GNUTLS_OCSP_CERT_GOOD:
+        break;
+
+      case GNUTLS_OCSP_CERT_REVOKED: {
+        const char *crl_reason;
+
+        switch(reason) {
+          default:
+          case GNUTLS_X509_CRLREASON_UNSPECIFIED:
+            crl_reason = "unspecified reason";
+            break;
+
+          case GNUTLS_X509_CRLREASON_KEYCOMPROMISE:
+            crl_reason = "private key compromised";
+            break;
+
+          case GNUTLS_X509_CRLREASON_CACOMPROMISE:
+            crl_reason = "CA compromised";
+            break;
+
+          case GNUTLS_X509_CRLREASON_AFFILIATIONCHANGED:
+            crl_reason = "affiliation has changed";
+            break;
+
+          case GNUTLS_X509_CRLREASON_SUPERSEDED:
+            crl_reason = "certificate superseded";
+            break;
+
+          case GNUTLS_X509_CRLREASON_CESSATIONOFOPERATION:
+            crl_reason = "operation has ceased";
+            break;
+
+          case GNUTLS_X509_CRLREASON_CERTIFICATEHOLD:
+            crl_reason = "certificate is on hold";
+            break;
+
+          case GNUTLS_X509_CRLREASON_REMOVEFROMCRL:
+            crl_reason = "will be removed from delta CRL";
+            break;
+
+          case GNUTLS_X509_CRLREASON_PRIVILEGEWITHDRAWN:
+            crl_reason = "privilege withdrawn";
+            break;
+
+          case GNUTLS_X509_CRLREASON_AACOMPROMISE:
+            crl_reason = "AA compromised";
+            break;
+        }
+
+        failf(data, "Server certificate was revoked: %s", crl_reason);
+        break;
+      }
+
+      default:
+      case GNUTLS_OCSP_CERT_UNKNOWN:
+        failf(data, "Server certificate status is unknown");
+        break;
+      }
+
+      gnutls_ocsp_resp_deinit(ocsp_resp);
+
+      return CURLE_SSL_INVALIDCERTSTATUS;
+    }
+    else
+      infof(data, "\t server certificate status verification OK\n");
+  }
+  else
+    infof(data, "\t server certificate status verification SKIPPED\n");
+#endif
+
   /* initialize an X.509 certificate structure. */
   gnutls_x509_crt_init(&x509_cert);
 
@@ -834,7 +1013,7 @@ gtls_connect_step3(struct connectdata *conn,
     gnutls_x509_crt_init(&x509_issuer);
     issuerp = load_file(data->set.ssl.issuercert);
     gnutls_x509_crt_import(x509_issuer, &issuerp, GNUTLS_X509_FMT_PEM);
-    rc = gnutls_x509_crt_check_issuer(x509_cert,x509_issuer);
+    rc = gnutls_x509_crt_check_issuer(x509_cert, x509_issuer);
     gnutls_x509_crt_deinit(x509_issuer);
     unload_file(issuerp);
     if(rc <= 0) {
@@ -843,7 +1022,7 @@ gtls_connect_step3(struct connectdata *conn,
       gnutls_x509_crt_deinit(x509_cert);
       return CURLE_SSL_ISSUER_ERROR;
     }
-    infof(data,"\t server certificate issuer check OK (Issuer Cert: %s)\n",
+    infof(data, "\t server certificate issuer check OK (Issuer Cert: %s)\n",
           data->set.ssl.issuercert?data->set.ssl.issuercert:"none");
   }
 
@@ -983,7 +1162,6 @@ gtls_connect_step3(struct connectdata *conn,
 
   /* Show:
 
-  - ciphers used
   - subject
   - start date
   - expire date
@@ -1023,14 +1201,6 @@ gtls_connect_step3(struct connectdata *conn,
   /* the *_get_name() says "NULL" if GNUTLS_COMP_NULL is returned */
   infof(data, "\t compression: %s\n", ptr);
 
-  /* the name of the cipher used. ie 3DES. */
-  ptr = gnutls_cipher_get_name(gnutls_cipher_get(session));
-  infof(data, "\t cipher: %s\n", ptr);
-
-  /* the MAC algorithms name. ie SHA1 */
-  ptr = gnutls_mac_get_name(gnutls_mac_get(session));
-  infof(data, "\t MAC: %s\n", ptr);
-
 #ifdef HAS_ALPN
   if(data->set.ssl_enable_alpn) {
     rc = gnutls_alpn_get_selected_protocol(session, &proto);
@@ -1038,19 +1208,21 @@ gtls_connect_step3(struct connectdata *conn,
       infof(data, "ALPN, server accepted to use %.*s\n", proto.size,
           proto.data);
 
+#ifdef USE_NGHTTP2
       if(proto.size == NGHTTP2_PROTO_VERSION_ID_LEN &&
-        memcmp(NGHTTP2_PROTO_VERSION_ID, proto.data,
-        NGHTTP2_PROTO_VERSION_ID_LEN) == 0) {
-        conn->negnpn = NPN_HTTP2;
+         !memcmp(NGHTTP2_PROTO_VERSION_ID, proto.data,
+                 NGHTTP2_PROTO_VERSION_ID_LEN)) {
+        conn->negnpn = CURL_HTTP_VERSION_2_0;
       }
-      else if(proto.size == ALPN_HTTP_1_1_LENGTH && memcmp(ALPN_HTTP_1_1,
-          proto.data, ALPN_HTTP_1_1_LENGTH) == 0) {
-        conn->negnpn = NPN_HTTP1_1;
+      else
+#endif
+      if(proto.size == ALPN_HTTP_1_1_LENGTH &&
+         !memcmp(ALPN_HTTP_1_1, proto.data, ALPN_HTTP_1_1_LENGTH)) {
+        conn->negnpn = CURL_HTTP_VERSION_1_1;
       }
     }
-    else if(connssl->asked_for_h2) {
+    else
       infof(data, "ALPN, server did not agree to a protocol\n");
-    }
   }
 #endif
 
@@ -1182,12 +1354,6 @@ static ssize_t gtls_send(struct connectdata *conn,
   return rc;
 }
 
-void Curl_gtls_close_all(struct SessionHandle *data)
-{
-  /* FIX: make the OpenSSL code more generic and use parts of it here */
-  (void)data;
-}
-
 static void close_one(struct connectdata *conn,
                       int idx)
 {
@@ -1392,4 +1558,32 @@ void Curl_gtls_md5sum(unsigned char *tmp, /* input */
 #endif
 }
 
+void Curl_gtls_sha256sum(const unsigned char *tmp, /* input */
+                      size_t tmplen,
+                      unsigned char *sha256sum, /* output */
+                      size_t sha256len)
+{
+#if defined(USE_GNUTLS_NETTLE)
+  struct sha256_ctx SHA256pw;
+  sha256_init(&SHA256pw);
+  sha256_update(&SHA256pw, (unsigned int)tmplen, tmp);
+  sha256_digest(&SHA256pw, (unsigned int)sha256len, sha256sum);
+#elif defined(USE_GNUTLS)
+  gcry_md_hd_t SHA256pw;
+  gcry_md_open(&SHA256pw, GCRY_MD_SHA256, 0);
+  gcry_md_write(SHA256pw, tmp, tmplen);
+  memcpy(sha256sum, gcry_md_read (SHA256pw, 0), sha256len);
+  gcry_md_close(SHA256pw);
+#endif
+}
+
+bool Curl_gtls_cert_status_request(void)
+{
+#ifdef HAS_OCSP
+  return TRUE;
+#else
+  return FALSE;
+#endif
+}
+
 #endif /* USE_GNUTLS */
index 12460be..0afd9b9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -35,10 +35,6 @@ CURLcode Curl_gtls_connect_nonblocking(struct connectdata *conn,
                                        int sockindex,
                                        bool *done);
 
-/* tell GnuTLS to close down all open information regarding connections (and
-   thus session ID caching etc) */
-void Curl_gtls_close_all(struct SessionHandle *data);
-
  /* close a SSL connection */
 void Curl_gtls_close(struct connectdata *conn, int sockindex);
 
@@ -52,6 +48,21 @@ void Curl_gtls_md5sum(unsigned char *tmp, /* input */
                       size_t tmplen,
                       unsigned char *md5sum, /* output */
                       size_t md5len);
+void Curl_gtls_sha256sum(const unsigned char *tmp, /* input */
+                      size_t tmplen,
+                      unsigned char *sha256sum, /* output */
+                      size_t sha256len);
+
+bool Curl_gtls_cert_status_request(void);
+
+/* Set the API backend definition to GnuTLS */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_GNUTLS
+
+/* this backend supports the CAPATH option */
+#define have_curlssl_ca_path 1
+
+/* this backend supports CURLOPT_CERTINFO */
+#define have_curlssl_certinfo 1
 
 /* API setup for GnuTLS */
 #define curlssl_init Curl_gtls_init
@@ -59,7 +70,7 @@ void Curl_gtls_md5sum(unsigned char *tmp, /* input */
 #define curlssl_connect Curl_gtls_connect
 #define curlssl_connect_nonblocking Curl_gtls_connect_nonblocking
 #define curlssl_session_free(x)  Curl_gtls_session_free(x)
-#define curlssl_close_all Curl_gtls_close_all
+#define curlssl_close_all(x) ((void)x)
 #define curlssl_close Curl_gtls_close
 #define curlssl_shutdown(x,y) Curl_gtls_shutdown(x,y)
 #define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
@@ -70,7 +81,8 @@ void Curl_gtls_md5sum(unsigned char *tmp, /* input */
 #define curlssl_data_pending(x,y) ((void)x, (void)y, 0)
 #define curlssl_random(x,y,z) Curl_gtls_random(x,y,z)
 #define curlssl_md5sum(a,b,c,d) Curl_gtls_md5sum(a,b,c,d)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_GNUTLS
+#define curlssl_sha256sum(a,b,c,d) Curl_gtls_sha256sum(a,b,c,d)
+#define curlssl_cert_status_request() Curl_gtls_cert_status_request()
 
 #endif /* USE_GNUTLS */
 #endif /* HEADER_CURL_GTLS_H */
index dd83a9d..91727c7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "select.h"
 #include "vtls.h"
 #include "llist.h"
-
-#define _MPRINTF_REPLACE /* use the internal *printf() functions */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "nssg.h"
 #include <nspr.h>
 #include <nss.h>
 #include <base64.h>
 #include <cert.h>
 #include <prerror.h>
+#include <keyhi.h>        /* for SECKEY_DestroyPublicKey() */
+
+#define NSSVERNUM ((NSS_VMAJOR<<16)|(NSS_VMINOR<<8)|NSS_VPATCH)
+
+#if NSSVERNUM >= 0x030f00 /* 3.15.0 */
+#include <ocsp.h>
+#endif
 
-#include "curl_memory.h"
 #include "rawstr.h"
 #include "warnless.h"
 #include "x509asn1.h"
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 #define SSL_DIR "/etc/pki/nssdb"
@@ -639,6 +643,34 @@ static SECStatus nss_auth_cert_hook(void *arg, PRFileDesc *fd, PRBool checksig,
                                     PRBool isServer)
 {
   struct connectdata *conn = (struct connectdata *)arg;
+
+#ifdef SSL_ENABLE_OCSP_STAPLING
+  if(conn->data->set.ssl.verifystatus) {
+    SECStatus cacheResult;
+
+    const SECItemArray *csa = SSL_PeerStapledOCSPResponses(fd);
+    if(!csa) {
+      failf(conn->data, "Invalid OCSP response");
+      return SECFailure;
+    }
+
+    if(csa->len == 0) {
+      failf(conn->data, "No OCSP response received");
+      return SECFailure;
+    }
+
+    cacheResult = CERT_CacheOCSPResponseFromSideChannel(
+      CERT_GetDefaultCertDB(), SSL_PeerCertificate(fd),
+      PR_Now(), &csa->items[0], arg
+    );
+
+    if(cacheResult != SECSuccess) {
+      failf(conn->data, "Invalid OCSP response");
+      return cacheResult;
+    }
+  }
+#endif
+
   if(!conn->data->set.ssl.verifypeer) {
     infof(conn->data, "skipping SSL peer certificate verification\n");
     return SECSuccess;
@@ -652,7 +684,6 @@ static SECStatus nss_auth_cert_hook(void *arg, PRFileDesc *fd, PRBool checksig,
  */
 static void HandshakeCallback(PRFileDesc *sock, void *arg)
 {
-#ifdef USE_NGHTTP2
   struct connectdata *conn = (struct connectdata*) arg;
   unsigned int buflenmax = 50;
   unsigned char buf[50];
@@ -668,8 +699,7 @@ static void HandshakeCallback(PRFileDesc *sock, void *arg)
     switch(state) {
     case SSL_NEXT_PROTO_NO_SUPPORT:
     case SSL_NEXT_PROTO_NO_OVERLAP:
-      if(connssl->asked_for_h2)
-        infof(conn->data, "TLS, neither ALPN nor NPN succeeded\n");
+      infof(conn->data, "ALPN/NPN, server did not agree to a protocol\n");
       return;
 #ifdef SSL_ENABLE_ALPN
     case SSL_NEXT_PROTO_SELECTED:
@@ -681,22 +711,80 @@ static void HandshakeCallback(PRFileDesc *sock, void *arg)
       break;
     }
 
+#ifdef USE_NGHTTP2
     if(buflen == NGHTTP2_PROTO_VERSION_ID_LEN &&
-       memcmp(NGHTTP2_PROTO_VERSION_ID, buf, NGHTTP2_PROTO_VERSION_ID_LEN)
-       == 0) {
-      conn->negnpn = NPN_HTTP2;
+       !memcmp(NGHTTP2_PROTO_VERSION_ID, buf, NGHTTP2_PROTO_VERSION_ID_LEN)) {
+      conn->negnpn = CURL_HTTP_VERSION_2_0;
     }
-    else if(buflen == ALPN_HTTP_1_1_LENGTH && memcmp(ALPN_HTTP_1_1, buf,
-                                                     ALPN_HTTP_1_1_LENGTH)) {
-      conn->negnpn = NPN_HTTP1_1;
+    else
+#endif
+    if(buflen == ALPN_HTTP_1_1_LENGTH &&
+       !memcmp(ALPN_HTTP_1_1, buf, ALPN_HTTP_1_1_LENGTH)) {
+      conn->negnpn = CURL_HTTP_VERSION_1_1;
     }
   }
-#else
-  (void)sock;
-  (void)arg;
-#endif
 }
 
+#if NSSVERNUM >= 0x030f04 /* 3.15.4 */
+static SECStatus CanFalseStartCallback(PRFileDesc *sock, void *client_data,
+                                       PRBool *canFalseStart)
+{
+  struct connectdata *conn = client_data;
+  struct SessionHandle *data = conn->data;
+
+  SSLChannelInfo channelInfo;
+  SSLCipherSuiteInfo cipherInfo;
+
+  SECStatus rv;
+  PRBool negotiatedExtension;
+
+  *canFalseStart = PR_FALSE;
+
+  if(SSL_GetChannelInfo(sock, &channelInfo, sizeof(channelInfo)) != SECSuccess)
+    return SECFailure;
+
+  if(SSL_GetCipherSuiteInfo(channelInfo.cipherSuite, &cipherInfo,
+                            sizeof(cipherInfo)) != SECSuccess)
+    return SECFailure;
+
+  /* Prevent version downgrade attacks from TLS 1.2, and avoid False Start for
+   * TLS 1.3 and later. See https://bugzilla.mozilla.org/show_bug.cgi?id=861310
+   */
+  if(channelInfo.protocolVersion != SSL_LIBRARY_VERSION_TLS_1_2)
+    goto end;
+
+  /* Only allow ECDHE key exchange algorithm.
+   * See https://bugzilla.mozilla.org/show_bug.cgi?id=952863 */
+  if(cipherInfo.keaType != ssl_kea_ecdh)
+    goto end;
+
+  /* Prevent downgrade attacks on the symmetric cipher. We do not allow CBC
+   * mode due to BEAST, POODLE, and other attacks on the MAC-then-Encrypt
+   * design. See https://bugzilla.mozilla.org/show_bug.cgi?id=1109766 */
+  if(cipherInfo.symCipher != ssl_calg_aes_gcm)
+    goto end;
+
+  /* Enforce ALPN or NPN to do False Start, as an indicator of server
+   * compatibility. */
+  rv = SSL_HandshakeNegotiatedExtension(sock, ssl_app_layer_protocol_xtn,
+                                        &negotiatedExtension);
+  if(rv != SECSuccess || !negotiatedExtension) {
+    rv = SSL_HandshakeNegotiatedExtension(sock, ssl_next_proto_nego_xtn,
+                                          &negotiatedExtension);
+  }
+
+  if(rv != SECSuccess || !negotiatedExtension)
+    goto end;
+
+  *canFalseStart = PR_TRUE;
+
+  infof(data, "Trying TLS False Start\n");
+
+end:
+  return SECSuccess;
+}
+#endif
+
 static void display_cert_info(struct SessionHandle *data,
                               CERTCertificate *cert)
 {
@@ -830,7 +918,7 @@ static SECStatus BadCertHandler(void *arg, PRFileDesc *sock)
 static SECStatus check_issuer_cert(PRFileDesc *sock,
                                    char *issuer_nickname)
 {
-  CERTCertificate *cert,*cert_issuer,*issuer;
+  CERTCertificate *cert, *cert_issuer, *issuer;
   SECStatus res=SECSuccess;
   void *proto_win = NULL;
 
@@ -841,7 +929,7 @@ static SECStatus check_issuer_cert(PRFileDesc *sock,
   */
 
   cert = SSL_PeerCertificate(sock);
-  cert_issuer = CERT_FindCertIssuer(cert,PR_Now(),certUsageObjectSigner);
+  cert_issuer = CERT_FindCertIssuer(cert, PR_Now(), certUsageObjectSigner);
 
   proto_win = SSL_RevealPinArg(sock);
   issuer = PK11_FindCertFromNickname(issuer_nickname, proto_win);
@@ -858,6 +946,53 @@ static SECStatus check_issuer_cert(PRFileDesc *sock,
   return res;
 }
 
+static CURLcode cmp_peer_pubkey(struct ssl_connect_data *connssl,
+                                const char *pinnedpubkey)
+{
+  CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+  struct SessionHandle *data = connssl->data;
+  CERTCertificate *cert;
+
+  if(!pinnedpubkey)
+    /* no pinned public key specified */
+    return CURLE_OK;
+
+  /* get peer certificate */
+  cert = SSL_PeerCertificate(connssl->handle);
+  if(cert) {
+    /* extract public key from peer certificate */
+    SECKEYPublicKey *pubkey = CERT_ExtractPublicKey(cert);
+    if(pubkey) {
+      /* encode the public key as DER */
+      SECItem *cert_der = PK11_DEREncodePublicKey(pubkey);
+      if(cert_der) {
+        /* compare the public key with the pinned public key */
+        result = Curl_pin_peer_pubkey(pinnedpubkey,
+                                      cert_der->data,
+                                      cert_der->len);
+        SECITEM_FreeItem(cert_der, PR_TRUE);
+      }
+      SECKEY_DestroyPublicKey(pubkey);
+    }
+    CERT_DestroyCertificate(cert);
+  }
+
+  /* report the resulting status */
+  switch(result) {
+  case CURLE_OK:
+    infof(data, "pinned public key verified successfully!\n");
+    break;
+  case CURLE_SSL_PINNEDPUBKEYNOTMATCH:
+    failf(data, "failed to verify pinned public key");
+    break;
+  default:
+    /* OOM, etc. */
+    break;
+  }
+
+  return result;
+}
+
 /**
  *
  * Callback to pick the SSL client certificate.
@@ -999,6 +1134,7 @@ static PRStatus nspr_io_close(PRFileDesc *fd)
   return close_fn(fd);
 }
 
+/* data might be NULL */
 static CURLcode nss_init_core(struct SessionHandle *data, const char *cert_dir)
 {
   NSSInitParameters initparams;
@@ -1036,6 +1172,7 @@ static CURLcode nss_init_core(struct SessionHandle *data, const char *cert_dir)
   return CURLE_SSL_CACERT_BADFILE;
 }
 
+/* data might be NULL */
 static CURLcode nss_init(struct SessionHandle *data)
 {
   char *cert_dir;
@@ -1114,12 +1251,14 @@ int Curl_nss_init(void)
   return 1;
 }
 
+/* data might be NULL */
 CURLcode Curl_nss_force_init(struct SessionHandle *data)
 {
   CURLcode result;
   if(!nss_initlock) {
-    failf(data, "unable to initialize NSS, curl_global_init() should have "
-                "been called with CURL_GLOBAL_SSL or CURL_GLOBAL_ALL");
+    if(data)
+      failf(data, "unable to initialize NSS, curl_global_init() should have "
+                  "been called with CURL_GLOBAL_SSL or CURL_GLOBAL_ALL");
     return CURLE_FAILED_INIT;
   }
 
@@ -1210,10 +1349,8 @@ void Curl_nss_close(struct connectdata *conn, int sockindex)
        * authentication data from a previous connection. */
       SSL_InvalidateSession(connssl->handle);
 
-    if(connssl->client_nickname != NULL) {
-      free(connssl->client_nickname);
-      connssl->client_nickname = NULL;
-    }
+    free(connssl->client_nickname);
+    connssl->client_nickname = NULL;
     /* destroy all NSS objects in order to avoid failure of NSS shutdown */
     Curl_llist_destroy(connssl->obj_list, NULL);
     connssl->obj_list = NULL;
@@ -1224,15 +1361,6 @@ void Curl_nss_close(struct connectdata *conn, int sockindex)
   }
 }
 
-/*
- * This function is called when the 'data' struct is going away. Close
- * down everything and free all resources!
- */
-void Curl_nss_close_all(struct SessionHandle *data)
-{
-  (void)data;
-}
-
 /* return true if NSS can provide error code (and possibly msg) for the
    error */
 static bool is_nss_error(CURLcode err)
@@ -1429,16 +1557,6 @@ static CURLcode nss_setup_connect(struct connectdata *conn, int sockindex)
     SSL_LIBRARY_VERSION_TLS_1_0   /* max */
   };
 
-#ifdef USE_NGHTTP2
-#if defined(SSL_ENABLE_NPN) || defined(SSL_ENABLE_ALPN)
-  unsigned int alpn_protos_len = NGHTTP2_PROTO_VERSION_ID_LEN +
-      ALPN_HTTP_1_1_LENGTH + 2;
-  unsigned char alpn_protos[NGHTTP2_PROTO_VERSION_ID_LEN + ALPN_HTTP_1_1_LENGTH
-      + 2];
-  int cur = 0;
-#endif
-#endif
-
   connssl->data = data;
 
   /* list of all NSS objects we need to destroy in Curl_nss_close() */
@@ -1618,43 +1736,57 @@ static CURLcode nss_setup_connect(struct connectdata *conn, int sockindex)
     SSL_SetPKCS11PinArg(connssl->handle, data->set.str[STRING_KEY_PASSWD]);
   }
 
-#ifdef USE_NGHTTP2
-  if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+#ifdef SSL_ENABLE_OCSP_STAPLING
+  if(data->set.ssl.verifystatus) {
+    if(SSL_OptionSet(connssl->handle, SSL_ENABLE_OCSP_STAPLING, PR_TRUE)
+        != SECSuccess)
+      goto error;
+  }
+#endif
+
 #ifdef SSL_ENABLE_NPN
-    if(data->set.ssl_enable_npn) {
-      if(SSL_OptionSet(connssl->handle, SSL_ENABLE_NPN, PR_TRUE) != SECSuccess)
-        goto error;
-    }
+  if(SSL_OptionSet(connssl->handle, SSL_ENABLE_NPN, data->set.ssl_enable_npn
+        ? PR_TRUE : PR_FALSE) != SECSuccess)
+    goto error;
 #endif
 
 #ifdef SSL_ENABLE_ALPN
-    if(data->set.ssl_enable_alpn) {
-      if(SSL_OptionSet(connssl->handle, SSL_ENABLE_ALPN, PR_TRUE)
-          != SECSuccess)
-        goto error;
-    }
+  if(SSL_OptionSet(connssl->handle, SSL_ENABLE_ALPN, data->set.ssl_enable_alpn
+        ? PR_TRUE : PR_FALSE) != SECSuccess)
+    goto error;
+#endif
+
+#if NSSVERNUM >= 0x030f04 /* 3.15.4 */
+  if(data->set.ssl.falsestart) {
+    if(SSL_OptionSet(connssl->handle, SSL_ENABLE_FALSE_START, PR_TRUE)
+        != SECSuccess)
+      goto error;
+
+    if(SSL_SetCanFalseStartCallback(connssl->handle, CanFalseStartCallback,
+        conn) != SECSuccess)
+      goto error;
+  }
 #endif
 
 #if defined(SSL_ENABLE_NPN) || defined(SSL_ENABLE_ALPN)
-    if(data->set.ssl_enable_npn || data->set.ssl_enable_alpn) {
-      alpn_protos[cur] = NGHTTP2_PROTO_VERSION_ID_LEN;
-      cur++;
-      memcpy(&alpn_protos[cur], NGHTTP2_PROTO_VERSION_ID,
+  if(data->set.ssl_enable_npn || data->set.ssl_enable_alpn) {
+    int cur = 0;
+    unsigned char protocols[128];
+
+#ifdef USE_NGHTTP2
+    if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+      protocols[cur++] = NGHTTP2_PROTO_VERSION_ID_LEN;
+      memcpy(&protocols[cur], NGHTTP2_PROTO_VERSION_ID,
           NGHTTP2_PROTO_VERSION_ID_LEN);
       cur += NGHTTP2_PROTO_VERSION_ID_LEN;
-      alpn_protos[cur] = ALPN_HTTP_1_1_LENGTH;
-      cur++;
-      memcpy(&alpn_protos[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH);
-
-      if(SSL_SetNextProtoNego(connssl->handle, alpn_protos, alpn_protos_len)
-          != SECSuccess)
-        goto error;
-      connssl->asked_for_h2 = TRUE;
-    }
-    else {
-      infof(data, "SSL, can't negotiate HTTP/2.0 with neither NPN nor ALPN\n");
     }
 #endif
+    protocols[cur++] = ALPN_HTTP_1_1_LENGTH;
+    memcpy(&protocols[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH);
+    cur += ALPN_HTTP_1_1_LENGTH;
+
+    if(SSL_SetNextProtoNego(connssl->handle, protocols, cur) != SECSuccess)
+      goto error;
   }
 #endif
 
@@ -1715,7 +1847,7 @@ static CURLcode nss_do_connect(struct connectdata *conn, int sockindex)
     }
 
     if(SECFailure == ret) {
-      infof(data,"SSL certificate issuer check failed\n");
+      infof(data, "SSL certificate issuer check failed\n");
       result = CURLE_SSL_ISSUER_ERROR;
       goto error;
     }
@@ -1724,6 +1856,11 @@ static CURLcode nss_do_connect(struct connectdata *conn, int sockindex)
     }
   }
 
+  result = cmp_peer_pubkey(connssl, data->set.str[STRING_SSL_PINNEDPUBLICKEY]);
+  if(result)
+    /* status already printed */
+    goto error;
+
   return CURLE_OK;
 
 error:
@@ -1870,6 +2007,7 @@ size_t Curl_nss_version(char *buffer, size_t size)
   return snprintf(buffer, size, "NSS/%s", NSS_VERSION);
 }
 
+/* data might be NULL */
 int Curl_nss_seed(struct SessionHandle *data)
 {
   /* make sure that NSS is initialized */
@@ -1881,14 +2019,11 @@ int Curl_nss_random(struct SessionHandle *data,
                     unsigned char *entropy,
                     size_t length)
 {
-  if(data)
-    Curl_nss_seed(data);  /* Initiate the seed if not already done */
+  Curl_nss_seed(data);  /* Initiate the seed if not already done */
 
-  if(SECSuccess != PK11_GenerateRandom(entropy, curlx_uztosi(length))) {
-    /* no way to signal a failure from here, we have to abort */
-    failf(data, "PK11_GenerateRandom() failed, calling abort()...");
-    abort();
-  }
+  if(SECSuccess != PK11_GenerateRandom(entropy, curlx_uztosi(length)))
+    /* signal a failure */
+    return -1;
 
   return 0;
 }
@@ -1906,4 +2041,34 @@ void Curl_nss_md5sum(unsigned char *tmp, /* input */
   PK11_DestroyContext(MD5pw, PR_TRUE);
 }
 
+void Curl_nss_sha256sum(const unsigned char *tmp, /* input */
+                     size_t tmplen,
+                     unsigned char *sha256sum, /* output */
+                     size_t sha256len)
+{
+  PK11Context *SHA256pw = PK11_CreateDigestContext(SEC_OID_SHA256);
+  unsigned int SHA256out;
+
+  PK11_DigestOp(SHA256pw, tmp, curlx_uztoui(tmplen));
+  PK11_DigestFinal(SHA256pw, sha256sum, &SHA256out, curlx_uztoui(sha256len));
+  PK11_DestroyContext(SHA256pw, PR_TRUE);
+}
+
+bool Curl_nss_cert_status_request(void)
+{
+#ifdef SSL_ENABLE_OCSP_STAPLING
+  return TRUE;
+#else
+  return FALSE;
+#endif
+}
+
+bool Curl_nss_false_start(void) {
+#if NSSVERNUM >= 0x030f04 /* 3.15.4 */
+  return TRUE;
+#else
+  return FALSE;
+#endif
+}
+
 #endif /* USE_NSS */
index 74840e8..5fd7275 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -37,10 +37,6 @@ CURLcode Curl_nss_connect_nonblocking(struct connectdata *conn,
 /* close a SSL connection */
 void Curl_nss_close(struct connectdata *conn, int sockindex);
 
-/* tell NSS to close down all open information regarding connections (and
-   thus session ID caching etc) */
-void Curl_nss_close_all(struct SessionHandle *data);
-
 int Curl_nss_init(void);
 void Curl_nss_cleanup(void);
 
@@ -60,6 +56,18 @@ void Curl_nss_md5sum(unsigned char *tmp, /* input */
                      unsigned char *md5sum, /* output */
                      size_t md5len);
 
+void Curl_nss_sha256sum(const unsigned char *tmp, /* input */
+                     size_t tmplen,
+                     unsigned char *sha256sum, /* output */
+                     size_t sha256len);
+
+bool Curl_nss_cert_status_request(void);
+
+bool Curl_nss_false_start(void);
+
+/* Set the API backend definition to NSS */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_NSS
+
 /* this backend supports the CAPATH option */
 #define have_curlssl_ca_path 1
 
@@ -74,7 +82,7 @@ void Curl_nss_md5sum(unsigned char *tmp, /* input */
 
 /* NSS has its own session ID cache */
 #define curlssl_session_free(x) Curl_nop_stmt
-#define curlssl_close_all Curl_nss_close_all
+#define curlssl_close_all(x) ((void)x)
 #define curlssl_close Curl_nss_close
 /* NSS has no shutdown function provided and thus always fail */
 #define curlssl_shutdown(x,y) ((void)x, (void)y, 1)
@@ -86,7 +94,9 @@ void Curl_nss_md5sum(unsigned char *tmp, /* input */
 #define curlssl_data_pending(x,y) ((void)x, (void)y, 0)
 #define curlssl_random(x,y,z) Curl_nss_random(x,y,z)
 #define curlssl_md5sum(a,b,c,d) Curl_nss_md5sum(a,b,c,d)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_NSS
+#define curlssl_sha256sum(a,b,c,d) Curl_nss_sha256sum(a,b,c,d)
+#define curlssl_cert_status_request() Curl_nss_cert_status_request()
+#define curlssl_false_start() Curl_nss_false_start()
 
 #endif /* USE_NSS */
 #endif /* HEADER_CURL_NSSG_H */
index a68d88e..90e4c2b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -32,6 +32,8 @@
 
 #include "curl_setup.h"
 
+#ifdef USE_OPENSSL
+
 #ifdef HAVE_LIMITS_H
 #include <limits.h>
 #endif
 #include "vtls.h"
 #include "rawstr.h"
 #include "hostcheck.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use the internal *printf() functions */
-#include <curl/mprintf.h>
-
-#ifdef USE_SSLEAY
-
-#ifdef USE_OPENSSL
+#include <openssl/ssl.h>
 #include <openssl/rand.h>
 #include <openssl/x509v3.h>
 #include <openssl/dsa.h>
 #include <openssl/md5.h>
 #include <openssl/conf.h>
 #include <openssl/bn.h>
-#else
-#include <rand.h>
-#include <x509v3.h>
-#include <md5.h>
+#include <openssl/rsa.h>
+
+#ifdef HAVE_OPENSSL_PKCS12_H
+#include <openssl/pkcs12.h>
+#endif
+
+#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_IS_BORINGSSL)
+#include <openssl/ocsp.h>
 #endif
 
 #include "warnless.h"
-#include "curl_memory.h"
 #include "non-ascii.h" /* for Curl_convert_from_utf8 prototype */
 
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 #ifndef OPENSSL_VERSION_NUMBER
 #error "OPENSSL_VERSION_NUMBER not defined"
 #endif
 
-#if OPENSSL_VERSION_NUMBER >= 0x0090581fL
-#define HAVE_SSL_GET1_SESSION 1
-#else
-#undef HAVE_SSL_GET1_SESSION
-#endif
-
-#if OPENSSL_VERSION_NUMBER >= 0x00904100L
-#define HAVE_USERDATA_IN_PWD_CALLBACK 1
-#else
-#undef HAVE_USERDATA_IN_PWD_CALLBACK
-#endif
-
-#if OPENSSL_VERSION_NUMBER >= 0x00907001L
+#if OPENSSL_VERSION_NUMBER >= 0x00907001L && !defined(OPENSSL_IS_BORINGSSL)
 /* ENGINE_load_private_key() takes four arguments */
 #define HAVE_ENGINE_LOAD_FOUR_ARGS
 #include <openssl/ui.h>
 #undef HAVE_ENGINE_LOAD_FOUR_ARGS
 #endif
 
-#if (OPENSSL_VERSION_NUMBER >= 0x00903001L) && defined(HAVE_OPENSSL_PKCS12_H)
-/* OpenSSL has PKCS 12 support */
+#if (OPENSSL_VERSION_NUMBER >= 0x00903001L) && \
+    defined(HAVE_OPENSSL_PKCS12_H) && \
+    !defined(OPENSSL_IS_BORINGSSL)
+/* OpenSSL has PKCS 12 support, BoringSSL does not */
 #define HAVE_PKCS12_SUPPORT
 #else
-/* OpenSSL/SSLEay does not have PKCS12 support */
+/* OpenSSL does not have PKCS12 support */
 #undef HAVE_PKCS12_SUPPORT
 #endif
 
-#if OPENSSL_VERSION_NUMBER >= 0x00906001L
-#define HAVE_ERR_ERROR_STRING_N 1
-#endif
-
 #if OPENSSL_VERSION_NUMBER >= 0x00909000L
 #define SSL_METHOD_QUAL const
 #else
 #define X509_STORE_set_flags(x,y) Curl_nop_stmt
 #endif
 
-#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+#ifdef OPENSSL_IS_BORINGSSL
+/* BoringSSL has no ERR_remove_state() */
+#define ERR_remove_state(x)
+#elif (OPENSSL_VERSION_NUMBER >= 0x10000000L)
 #define HAVE_ERR_REMOVE_THREAD_STATE 1
 #endif
 
 #define OPENSSL_NO_SSL2
 #endif
 
+#if defined(OPENSSL_IS_BORINGSSL)
+#define NO_RAND_SEED 1
+/* In BoringSSL OpenSSL_add_all_algorithms does nothing */
+#define OpenSSL_add_all_algorithms()
+/* BoringSSL does not have CONF_modules_load_file */
+#define CONF_modules_load_file(a,b,c)
+#endif
+
+#if (OPENSSL_VERSION_NUMBER < 0x0090808fL) || defined(OPENSSL_IS_BORINGSSL)
+/* not present in BoringSSL  or older OpenSSL */
+#define OPENSSL_load_builtin_modules(x)
+#endif
+
 /*
  * Number of bytes to read from the random number seed file. This must be
  * a finite value (because some entropy "files" like /dev/urandom have
  */
 #define RAND_LOAD_LENGTH 1024
 
-#ifndef HAVE_USERDATA_IN_PWD_CALLBACK
-static char global_passwd[64];
-#endif
-
-static int passwd_callback(char *buf, int num, int encrypting
-#ifdef HAVE_USERDATA_IN_PWD_CALLBACK
-                           /* This was introduced in 0.9.4, we can set this
-                              using SSL_CTX_set_default_passwd_cb_userdata()
-                              */
-                           , void *global_passwd
-#endif
-                           )
+static int passwd_callback(char *buf, int num, int encrypting,
+                           void *global_passwd)
 {
   DEBUGASSERT(0 == encrypting);
 
@@ -177,6 +171,7 @@ static int passwd_callback(char *buf, int num, int encrypting
  * pass in an argument that is never used.
  */
 
+#ifndef NO_RAND_SEED
 #ifdef HAVE_RAND_STATUS
 #define seed_enough(x) rand_enough()
 static bool rand_enough(void)
@@ -261,7 +256,7 @@ static int ossl_seed(struct SessionHandle *data)
   return nread;
 }
 
-static int Curl_ossl_seed(struct SessionHandle *data)
+static void Curl_ossl_seed(struct SessionHandle *data)
 {
   /* we have the "SSL is seeded" boolean static to prevent multiple
      time-consuming seedings in vain */
@@ -272,8 +267,11 @@ static int Curl_ossl_seed(struct SessionHandle *data)
     ossl_seed(data);
     ssl_seeded = TRUE;
   }
-  return 0;
 }
+#else
+/* BoringSSL needs no seeding */
+#define Curl_ossl_seed(x)
+#endif
 
 
 #ifndef SSL_FILETYPE_ENGINE
@@ -357,37 +355,23 @@ int cert_stuff(struct connectdata *conn,
     int cert_done = 0;
 
     if(data->set.str[STRING_KEY_PASSWD]) {
-#ifndef HAVE_USERDATA_IN_PWD_CALLBACK
-      /*
-       * If password has been given, we store that in the global
-       * area (*shudder*) for a while:
-       */
-      size_t len = strlen(data->set.str[STRING_KEY_PASSWD]);
-      if(len < sizeof(global_passwd))
-        memcpy(global_passwd, data->set.str[STRING_KEY_PASSWD], len+1);
-      else
-        global_passwd[0] = '\0';
-#else
-      /*
-       * We set the password in the callback userdata
-       */
+      /* set the password in the callback userdata */
       SSL_CTX_set_default_passwd_cb_userdata(ctx,
                                              data->set.str[STRING_KEY_PASSWD]);
-#endif
       /* Set passwd callback: */
       SSL_CTX_set_default_passwd_cb(ctx, passwd_callback);
     }
 
 
-#define SSL_CLIENT_CERT_ERR \
-    "unable to use client certificate (no key found or wrong pass phrase?)"
-
     switch(file_type) {
     case SSL_FILETYPE_PEM:
       /* SSL_CTX_use_certificate_chain_file() only works on PEM files */
       if(SSL_CTX_use_certificate_chain_file(ctx,
                                             cert_file) != 1) {
-        failf(data, SSL_CLIENT_CERT_ERR);
+        failf(data,
+              "could not load PEM client certificate, OpenSSL error %s, "
+              "(no key found, wrong pass phrase, or wrong file format?)",
+              ERR_error_string(ERR_get_error(), NULL) );
         return 0;
       }
       break;
@@ -399,7 +383,10 @@ int cert_stuff(struct connectdata *conn,
       if(SSL_CTX_use_certificate_file(ctx,
                                       cert_file,
                                       file_type) != 1) {
-        failf(data, SSL_CLIENT_CERT_ERR);
+        failf(data,
+              "could not load ASN1 client certificate, OpenSSL error %s, "
+              "(no key found, wrong pass phrase, or wrong file format?)",
+              ERR_error_string(ERR_get_error(), NULL) );
         return 0;
       }
       break;
@@ -465,7 +452,7 @@ int cert_stuff(struct connectdata *conn,
       STACK_OF(X509) *ca = NULL;
       int i;
 
-      f = fopen(cert_file,"rb");
+      f = fopen(cert_file, "rb");
       if(!f) {
         failf(data, "could not open PKCS12 file '%s'", cert_file);
         return 0;
@@ -474,7 +461,7 @@ int cert_stuff(struct connectdata *conn,
       fclose(f);
 
       if(!p12) {
-        failf(data, "error reading PKCS12 file '%s'", cert_file );
+        failf(data, "error reading PKCS12 file '%s'", cert_file);
         return 0;
       }
 
@@ -492,7 +479,9 @@ int cert_stuff(struct connectdata *conn,
       PKCS12_free(p12);
 
       if(SSL_CTX_use_certificate(ctx, x509) != 1) {
-        failf(data, SSL_CLIENT_CERT_ERR);
+        failf(data,
+              "could not load PKCS12 client certificate, OpenSSL error %s",
+              ERR_error_string(ERR_get_error(), NULL) );
         goto fail;
       }
 
@@ -586,7 +575,7 @@ int cert_stuff(struct connectdata *conn,
 #endif
           /* the typecast below was added to please mingw32 */
           priv_key = (EVP_PKEY *)
-            ENGINE_load_private_key(data->state.engine,key_file,
+            ENGINE_load_private_key(data->state.engine, key_file,
 #ifdef HAVE_ENGINE_LOAD_FOUR_ARGS
                                     ui_method,
 #endif
@@ -628,7 +617,7 @@ int cert_stuff(struct connectdata *conn,
 
     ssl=SSL_new(ctx);
     if(!ssl) {
-      failf(data,"unable to create an SSL structure");
+      failf(data, "unable to create an SSL structure");
       return 0;
     }
 
@@ -638,7 +627,7 @@ int cert_stuff(struct connectdata *conn,
        leak memory as the previous version: */
     if(x509) {
       EVP_PKEY *pktmp = X509_get_pubkey(x509);
-      EVP_PKEY_copy_parameters(pktmp,SSL_get_privatekey(ssl));
+      EVP_PKEY_copy_parameters(pktmp, SSL_get_privatekey(ssl));
       EVP_PKEY_free(pktmp);
     }
 
@@ -654,10 +643,6 @@ int cert_stuff(struct connectdata *conn,
       failf(data, "Private key does not match the certificate public key");
       return 0;
     }
-#ifndef HAVE_USERDATA_IN_PWD_CALLBACK
-    /* erase it now */
-    memset(global_passwd, 0, sizeof(global_passwd));
-#endif
   }
   return 1;
 }
@@ -692,36 +677,17 @@ static int x509_name_oneline(X509_NAME *a, char *buf, size_t size)
 #endif
 }
 
-static
-int cert_verify_callback(int ok, X509_STORE_CTX *ctx)
-{
-  X509 *err_cert;
-  char buf[256];
-
-  err_cert=X509_STORE_CTX_get_current_cert(ctx);
-  (void)x509_name_oneline(X509_get_subject_name(err_cert), buf, sizeof(buf));
-  return ok;
-}
-
 /* Return error string for last OpenSSL error
  */
 static char *SSL_strerror(unsigned long error, char *buf, size_t size)
 {
-#ifdef HAVE_ERR_ERROR_STRING_N
   /* OpenSSL 0.9.6 and later has a function named
-     ERRO_error_string_n() that takes the size of the buffer as a
+     ERR_error_string_n() that takes the size of the buffer as a
      third argument */
   ERR_error_string_n(error, buf, size);
-#else
-  (void) size;
-  ERR_error_string(error, buf);
-#endif
   return buf;
 }
 
-#endif /* USE_SSLEAY */
-
-#ifdef USE_SSLEAY
 /**
  * Global SSL init
  *
@@ -730,6 +696,8 @@ static char *SSL_strerror(unsigned long error, char *buf, size_t size)
  */
 int Curl_ossl_init(void)
 {
+  OPENSSL_load_builtin_modules();
+
 #ifdef HAVE_ENGINE_LOAD_BUILTIN_ENGINES
   ENGINE_load_builtin_engines();
 #endif
@@ -756,17 +724,13 @@ int Curl_ossl_init(void)
 #define CONF_MFLAGS_DEFAULT_SECTION 0x0
 #endif
 
-  (void)CONF_modules_load_file(NULL, NULL,
-                               CONF_MFLAGS_DEFAULT_SECTION|
-                               CONF_MFLAGS_IGNORE_MISSING_FILE);
+  CONF_modules_load_file(NULL, NULL,
+                         CONF_MFLAGS_DEFAULT_SECTION|
+                         CONF_MFLAGS_IGNORE_MISSING_FILE);
 
   return 1;
 }
 
-#endif /* USE_SSLEAY */
-
-#ifdef USE_SSLEAY
-
 /* Global cleanup */
 void Curl_ossl_cleanup(void)
 {
@@ -821,7 +785,7 @@ int Curl_ossl_check_cxn(struct connectdata *conn)
  */
 CURLcode Curl_ossl_set_engine(struct SessionHandle *data, const char *engine)
 {
-#if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H)
+#if defined(USE_OPENSSL) && defined(HAVE_OPENSSL_ENGINE_H)
   ENGINE *e;
 
 #if OPENSSL_VERSION_NUMBER >= 0x00909000L
@@ -869,7 +833,7 @@ CURLcode Curl_ossl_set_engine_default(struct SessionHandle *data)
 #ifdef HAVE_OPENSSL_ENGINE_H
   if(data->state.engine) {
     if(ENGINE_set_default(data->state.engine, ENGINE_METHOD_ALL) > 0) {
-      infof(data,"set default crypto engine '%s'\n",
+      infof(data, "set default crypto engine '%s'\n",
             ENGINE_get_id(data->state.engine));
     }
     else {
@@ -889,7 +853,7 @@ CURLcode Curl_ossl_set_engine_default(struct SessionHandle *data)
 struct curl_slist *Curl_ossl_engines_list(struct SessionHandle *data)
 {
   struct curl_slist *list = NULL;
-#if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H)
+#if defined(USE_OPENSSL) && defined(HAVE_OPENSSL_ENGINE_H)
   struct curl_slist *beg;
   ENGINE *e;
 
@@ -1058,7 +1022,7 @@ static int asn1_output(const ASN1_UTCTIME *tm,
   const char *asn1_string;
   int gmt=FALSE;
   int i;
-  int year=0,month=0,day=0,hour=0,minute=0,second=0;
+  int year=0, month=0, day=0, hour=0, minute=0, second=0;
 
   i=tm->length;
   asn1_string=(const char *)tm->data;
@@ -1217,14 +1181,14 @@ static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert)
   else {
     /* we have to look to the last occurrence of a commonName in the
        distinguished one to get the most significant one. */
-    int j,i=-1 ;
+    int j, i=-1;
 
 /* The following is done because of a bug in 0.9.6b */
 
     unsigned char *nulstr = (unsigned char *)"";
     unsigned char *peer_CN = nulstr;
 
-    X509_NAME *name = X509_get_subject_name(server_cert) ;
+    X509_NAME *name = X509_get_subject_name(server_cert);
     if(name)
       while((j = X509_NAME_get_index_by_NID(name, NID_commonName, i))>=0)
         i=j;
@@ -1234,7 +1198,8 @@ static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert)
        UTF8 etc. */
 
     if(i>=0) {
-      ASN1_STRING *tmp = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(name,i));
+      ASN1_STRING *tmp =
+        X509_NAME_ENTRY_get_data(X509_NAME_get_entry(name, i));
 
       /* In OpenSSL 0.9.7d and earlier, ASN1_STRING_to_UTF8 fails if the input
          is already UTF-8 encoded. We check for this case and copy the raw
@@ -1298,7 +1263,135 @@ static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert)
 
   return result;
 }
-#endif /* USE_SSLEAY */
+
+#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_TLSEXT) && \
+    !defined(OPENSSL_IS_BORINGSSL)
+static CURLcode verifystatus(struct connectdata *conn,
+                             struct ssl_connect_data *connssl)
+{
+  int i, ocsp_status;
+  const unsigned char *p;
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+
+  OCSP_RESPONSE *rsp = NULL;
+  OCSP_BASICRESP *br = NULL;
+  X509_STORE     *st = NULL;
+  STACK_OF(X509) *ch = NULL;
+
+  long len = SSL_get_tlsext_status_ocsp_resp(connssl->handle, &p);
+
+  if(!p) {
+    failf(data, "No OCSP response received");
+    result = CURLE_SSL_INVALIDCERTSTATUS;
+    goto end;
+  }
+
+  rsp = d2i_OCSP_RESPONSE(NULL, &p, len);
+  if(!rsp) {
+    failf(data, "Invalid OCSP response");
+    result = CURLE_SSL_INVALIDCERTSTATUS;
+    goto end;
+  }
+
+  ocsp_status = OCSP_response_status(rsp);
+  if(ocsp_status != OCSP_RESPONSE_STATUS_SUCCESSFUL) {
+    failf(data, "Invalid OCSP response status: %s (%d)",
+          OCSP_response_status_str(ocsp_status), ocsp_status);
+    result = CURLE_SSL_INVALIDCERTSTATUS;
+    goto end;
+  }
+
+  br = OCSP_response_get1_basic(rsp);
+  if(!br) {
+    failf(data, "Invalid OCSP response");
+    result = CURLE_SSL_INVALIDCERTSTATUS;
+    goto end;
+  }
+
+  ch = SSL_get_peer_cert_chain(connssl->handle);
+  st = SSL_CTX_get_cert_store(connssl->ctx);
+
+#if ((OPENSSL_VERSION_NUMBER <= 0x1000201fL) /* Fixed after 1.0.2a */ || \
+     defined(LIBRESSL_VERSION_NUMBER))
+  /* The authorized responder cert in the OCSP response MUST be signed by the
+     peer cert's issuer (see RFC6960 section 4.2.2.2). If that's a root cert,
+     no problem, but if it's an intermediate cert OpenSSL has a bug where it
+     expects this issuer to be present in the chain embedded in the OCSP
+     response. So we add it if necessary. */
+
+  /* First make sure the peer cert chain includes both a peer and an issuer,
+     and the OCSP response contains a responder cert. */
+  if(sk_X509_num(ch) >= 2 && sk_X509_num(br->certs) >= 1) {
+    X509 *responder = sk_X509_value(br->certs, sk_X509_num(br->certs) - 1);
+
+    /* Find issuer of responder cert and add it to the OCSP response chain */
+    for(i = 0; i < sk_X509_num(ch); i++) {
+      X509 *issuer = sk_X509_value(ch, i);
+      if(X509_check_issued(issuer, responder) == X509_V_OK) {
+        if(!OCSP_basic_add1_cert(br, issuer)) {
+          failf(data, "Could not add issuer cert to OCSP response");
+          result = CURLE_SSL_INVALIDCERTSTATUS;
+          goto end;
+        }
+      }
+    }
+  }
+#endif
+
+  if(OCSP_basic_verify(br, ch, st, 0) <= 0) {
+    failf(data, "OCSP response verification failed");
+    result = CURLE_SSL_INVALIDCERTSTATUS;
+    goto end;
+  }
+
+  for(i = 0; i < OCSP_resp_count(br); i++) {
+    int cert_status, crl_reason;
+    OCSP_SINGLERESP *single = NULL;
+
+    ASN1_GENERALIZEDTIME *rev, *thisupd, *nextupd;
+
+    if(!(single = OCSP_resp_get0(br, i)))
+      continue;
+
+    cert_status = OCSP_single_get0_status(single, &crl_reason, &rev,
+                                          &thisupd, &nextupd);
+
+    if(!OCSP_check_validity(thisupd, nextupd, 300L, -1L)) {
+      failf(data, "OCSP response has expired");
+      result = CURLE_SSL_INVALIDCERTSTATUS;
+      goto end;
+    }
+
+    infof(data, "SSL certificate status: %s (%d)\n",
+          OCSP_cert_status_str(cert_status), cert_status);
+
+    switch(cert_status) {
+      case V_OCSP_CERTSTATUS_GOOD:
+        break;
+
+      case V_OCSP_CERTSTATUS_REVOKED:
+        result = CURLE_SSL_INVALIDCERTSTATUS;
+
+        failf(data, "SSL certificate revocation reason: %s (%d)",
+              OCSP_crl_reason_str(crl_reason), crl_reason);
+        goto end;
+
+      case V_OCSP_CERTSTATUS_UNKNOWN:
+        result = CURLE_SSL_INVALIDCERTSTATUS;
+        goto end;
+    }
+  }
+
+end:
+  if(br) OCSP_BASICRESP_free(br);
+  OCSP_RESPONSE_free(rsp);
+
+  return result;
+}
+#endif
+
+#endif /* USE_OPENSSL */
 
 /* The SSL_CTRL_SET_MSG_CALLBACK doesn't exist in ancient OpenSSL versions
    and thus this cannot be done there. */
@@ -1339,8 +1432,12 @@ static const char *ssl_msg_type(int ssl_ver, int msg)
         return "Client hello";
       case SSL3_MT_SERVER_HELLO:
         return "Server hello";
+#ifdef SSL3_MT_NEWSESSION_TICKET
+      case SSL3_MT_NEWSESSION_TICKET:
+        return "Newsession Ticket";
+#endif
       case SSL3_MT_CERTIFICATE:
-        return "CERT";
+        return "Certificate";
       case SSL3_MT_SERVER_KEY_EXCHANGE:
         return "Server key exchange";
       case SSL3_MT_CLIENT_KEY_EXCHANGE:
@@ -1353,6 +1450,10 @@ static const char *ssl_msg_type(int ssl_ver, int msg)
         return "CERT verify";
       case SSL3_MT_FINISHED:
         return "Finished";
+#ifdef SSL3_MT_CERTIFICATE_STATUS
+      case SSL3_MT_CERTIFICATE_STATUS:
+        return "Certificate Status";
+#endif
     }
   }
   return "Unknown";
@@ -1360,12 +1461,22 @@ static const char *ssl_msg_type(int ssl_ver, int msg)
 
 static const char *tls_rt_type(int type)
 {
-  return (
-    type == SSL3_RT_CHANGE_CIPHER_SPEC ? "TLS change cipher, " :
-    type == SSL3_RT_ALERT              ? "TLS alert, "         :
-    type == SSL3_RT_HANDSHAKE          ? "TLS handshake, "     :
-    type == SSL3_RT_APPLICATION_DATA   ? "TLS app data, "      :
-                                         "TLS Unknown, ");
+  switch(type) {
+#ifdef SSL3_RT_HEADER
+  case SSL3_RT_HEADER:
+    return "TLS header";
+#endif
+  case SSL3_RT_CHANGE_CIPHER_SPEC:
+    return "TLS change cipher";
+  case SSL3_RT_ALERT:
+    return "TLS alert";
+  case SSL3_RT_HANDSHAKE:
+    return "TLS handshake";
+  case SSL3_RT_APPLICATION_DATA:
+    return "TLS app data";
+  default:
+    return "TLS Unknown";
+  }
 }
 
 
@@ -1373,15 +1484,16 @@ static const char *tls_rt_type(int type)
  * Our callback from the SSL/TLS layers.
  */
 static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
-                          const void *buf, size_t len, const SSL *ssl,
-                          struct connectdata *conn)
+                          const void *buf, size_t len, SSL *ssl,
+                          void *userp)
 {
   struct SessionHandle *data;
   const char *msg_name, *tls_rt_name;
   char ssl_buf[1024];
   char unknown[32];
   int msg_type, txt_len;
-  const char *verstr;
+  const char *verstr = NULL;
+  struct connectdata *conn = userp;
 
   if(!conn || !conn->data || !conn->data->set.fdebug ||
      (direction != 0 && direction != 1))
@@ -1390,8 +1502,8 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
   data = conn->data;
 
   switch(ssl_ver) {
-#ifdef SSL2_VERSION_MAJOR /* removed in recent versions */
-  case SSL2_VERSION_MAJOR:
+#ifdef SSL2_VERSION /* removed in recent versions */
+  case SSL2_VERSION:
     verstr = "SSLv2";
     break;
 #endif
@@ -1413,29 +1525,36 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
     verstr = "TLSv1.2";
     break;
 #endif
+  case 0:
+    break;
   default:
     snprintf(unknown, sizeof(unknown), "(%x)", ssl_ver);
     verstr = unknown;
     break;
   }
 
-  ssl_ver >>= 8; /* check the upper 8 bits only below */
+  if(ssl_ver) {
+    /* the info given when the version is zero is not that useful for us */
 
-  /* SSLv2 doesn't seem to have TLS record-type headers, so OpenSSL
-   * always pass-up content-type as 0. But the interesting message-type
-   * is at 'buf[0]'.
-   */
-  if(ssl_ver == SSL3_VERSION_MAJOR && content_type != 0)
-    tls_rt_name = tls_rt_type(content_type);
-  else
-    tls_rt_name = "";
+    ssl_ver >>= 8; /* check the upper 8 bits only below */
 
-  msg_type = *(char*)buf;
-  msg_name = ssl_msg_type(ssl_ver, msg_type);
+    /* SSLv2 doesn't seem to have TLS record-type headers, so OpenSSL
+     * always pass-up content-type as 0. But the interesting message-type
+     * is at 'buf[0]'.
+     */
+    if(ssl_ver == SSL3_VERSION_MAJOR && content_type)
+      tls_rt_name = tls_rt_type(content_type);
+    else
+      tls_rt_name = "";
+
+    msg_type = *(char*)buf;
+    msg_name = ssl_msg_type(ssl_ver, msg_type);
 
-  txt_len = snprintf(ssl_buf, sizeof(ssl_buf), "%s, %s%s (%d):\n",
-                     verstr, tls_rt_name, msg_name, msg_type);
-  Curl_debug(data, CURLINFO_TEXT, ssl_buf, (size_t)txt_len, NULL);
+    txt_len = snprintf(ssl_buf, sizeof(ssl_buf), "%s (%s), %s, %s (%d):\n",
+                       verstr, direction?"OUT":"IN",
+                       tls_rt_name, msg_name, msg_type);
+    Curl_debug(data, CURLINFO_TEXT, ssl_buf, (size_t)txt_len, NULL);
+  }
 
   Curl_debug(data, (direction == 1) ? CURLINFO_SSL_DATA_OUT :
              CURLINFO_SSL_DATA_IN, (char *)buf, len, NULL);
@@ -1443,7 +1562,7 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
 }
 #endif
 
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
 /* ====================================================== */
 
 #ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME
@@ -1452,8 +1571,6 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
 #  define use_sni(x)  Curl_nop_stmt
 #endif
 
-#ifdef USE_NGHTTP2
-
 /* Check for OpenSSL 1.0.2 which has ALPN support. */
 #undef HAS_ALPN
 #if OPENSSL_VERSION_NUMBER >= 0x10002000L \
@@ -1475,6 +1592,23 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
  * in is a list of lenght prefixed strings. this function has to select
  * the protocol we want to use from the list and write its string into out.
  */
+
+static int
+select_next_protocol(unsigned char **out, unsigned char *outlen,
+                     const unsigned char *in, unsigned int inlen,
+                     const char *key, unsigned int keylen)
+{
+  unsigned int i;
+  for(i = 0; i + keylen <= inlen; i += in[i] + 1) {
+    if(memcmp(&in[i + 1], key, keylen) == 0) {
+      *out = (unsigned char *) &in[i + 1];
+      *outlen = in[i];
+      return 0;
+    }
+  }
+  return -1;
+}
+
 static int
 select_next_proto_cb(SSL *ssl,
                      unsigned char **out, unsigned char *outlen,
@@ -1482,40 +1616,43 @@ select_next_proto_cb(SSL *ssl,
                      void *arg)
 {
   struct connectdata *conn = (struct connectdata*) arg;
-  int retval = nghttp2_select_next_protocol(out, outlen, in, inlen);
 
   (void)ssl;
 
-  if(retval == 1) {
+#ifdef USE_NGHTTP2
+  if(conn->data->set.httpversion == CURL_HTTP_VERSION_2_0 &&
+     !select_next_protocol(out, outlen, in, inlen, NGHTTP2_PROTO_VERSION_ID,
+                           NGHTTP2_PROTO_VERSION_ID_LEN)) {
     infof(conn->data, "NPN, negotiated HTTP2 (%s)\n",
           NGHTTP2_PROTO_VERSION_ID);
-    conn->negnpn = NPN_HTTP2;
+    conn->negnpn = CURL_HTTP_VERSION_2_0;
+    return SSL_TLSEXT_ERR_OK;
   }
-  else if(retval == 0) {
+#endif
+
+  if(!select_next_protocol(out, outlen, in, inlen, ALPN_HTTP_1_1,
+                           ALPN_HTTP_1_1_LENGTH)) {
     infof(conn->data, "NPN, negotiated HTTP1.1\n");
-    conn->negnpn = NPN_HTTP1_1;
-  }
-  else {
-    infof(conn->data, "NPN, no overlap, use HTTP1.1\n",
-          NGHTTP2_PROTO_VERSION_ID);
-    *out = (unsigned char*)"http/1.1";
-    *outlen = sizeof("http/1.1") - 1;
-    conn->negnpn = NPN_HTTP1_1;
+    conn->negnpn = CURL_HTTP_VERSION_1_1;
+    return SSL_TLSEXT_ERR_OK;
   }
 
+  infof(conn->data, "NPN, no overlap, use HTTP1.1\n");
+  *out = (unsigned char *)ALPN_HTTP_1_1;
+  *outlen = ALPN_HTTP_1_1_LENGTH;
+  conn->negnpn = CURL_HTTP_VERSION_1_1;
+
   return SSL_TLSEXT_ERR_OK;
 }
 #endif /* HAS_NPN */
 
-#endif /* USE_NGHTTP2 */
-
 static const char *
-get_ssl_version_txt(SSL_SESSION *session)
+get_ssl_version_txt(SSL *ssl)
 {
-  if(!session)
+  if(!ssl)
     return "";
 
-  switch(session->ssl_version) {
+  switch(SSL_version(ssl)) {
 #if OPENSSL_VERSION_NUMBER >= 0x1000100FL
   case TLS1_2_VERSION:
     return "TLSv1.2";
@@ -1551,9 +1688,6 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
   struct in_addr addr;
 #endif
 #endif
-#ifdef HAS_ALPN
-  unsigned char protocols[128];
-#endif
 
   DEBUGASSERT(ssl_connect_1 == connssl->connecting_state);
 
@@ -1572,7 +1706,12 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
   case CURL_SSLVERSION_TLSv1_1:
   case CURL_SSLVERSION_TLSv1_2:
     /* it will be handled later with the context options */
+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && \
+    !defined(LIBRESSL_VERSION_NUMBER) && !defined(OPENSSL_IS_BORINGSSL)
+    req_method = TLS_client_method();
+#else
     req_method = SSLv23_client_method();
+#endif
     use_sni(TRUE);
     break;
   case CURL_SSLVERSION_SSLv2:
@@ -1589,6 +1728,10 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
     break;
 #endif
   case CURL_SSLVERSION_SSLv3:
+#ifdef OPENSSL_NO_SSL3_METHOD
+    failf(data, "OpenSSL was built without SSLv3 support");
+    return CURLE_NOT_BUILT_IN;
+#else
 #ifdef USE_TLS_SRP
     if(data->set.ssl.authtype == CURL_TLSAUTH_SRP)
       return CURLE_SSL_CONNECT_ERROR;
@@ -1596,6 +1739,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
     req_method = SSLv3_client_method();
     use_sni(FALSE);
     break;
+#endif
   }
 
   if(connssl->ctx)
@@ -1614,16 +1758,9 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
 
 #ifdef SSL_CTRL_SET_MSG_CALLBACK
   if(data->set.fdebug && data->set.verbose) {
-    /* the SSL trace callback is only used for verbose logging so we only
-       inform about failures of setting it */
-    if(!SSL_CTX_callback_ctrl(connssl->ctx, SSL_CTRL_SET_MSG_CALLBACK,
-                               (void (*)(void))ssl_tls_trace)) {
-      infof(data, "SSL: couldn't set callback!\n");
-    }
-    else if(!SSL_CTX_ctrl(connssl->ctx, SSL_CTRL_SET_MSG_CALLBACK_ARG, 0,
-                          conn)) {
-      infof(data, "SSL: couldn't set callback argument!\n");
-    }
+    /* the SSL trace callback is only used for verbose logging */
+    SSL_CTX_set_msg_callback(connssl->ctx, ssl_tls_trace);
+    SSL_CTX_set_msg_callback_arg(connssl->ctx, conn);
   }
 #endif
 
@@ -1636,7 +1773,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
 
      The "-no_ticket" option was introduced in Openssl0.9.8j. It's a flag to
      disable "rfc4507bis session ticket support".  rfc4507bis was later turned
-     into the proper RFC5077 it seems: http://tools.ietf.org/html/rfc5077
+     into the proper RFC5077 it seems: https://tools.ietf.org/html/rfc5077
 
      The enabled extension concerns the session management. I wonder how often
      libcurl stops a connection and then resumes a TLS session. also, sending
@@ -1656,7 +1793,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
      this option regardless of OpenSSL version and SSL_OP_ALL definition.
 
      OpenSSL added a work-around for a SSL 3.0/TLS 1.0 CBC vulnerability
-     (http://www.openssl.org/~bodo/tls-cbc.txt). In 0.9.6e they added a bit to
+     (https://www.openssl.org/~bodo/tls-cbc.txt). In 0.9.6e they added a bit to
      SSL_OP_ALL that _disables_ that work-around despite the fact that
      SSL_OP_ALL is documented to do "rather harmless" workarounds. In order to
      keep the secure work-around, the SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS bit
@@ -1749,36 +1886,36 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
 
   SSL_CTX_set_options(connssl->ctx, ctx_options);
 
-#ifdef USE_NGHTTP2
-  if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
 #ifdef HAS_NPN
-    if(data->set.ssl_enable_npn) {
-      SSL_CTX_set_next_proto_select_cb(connssl->ctx, select_next_proto_cb,
-                                       conn);
-    }
+  if(data->set.ssl_enable_npn)
+    SSL_CTX_set_next_proto_select_cb(connssl->ctx, select_next_proto_cb, conn);
 #endif
 
 #ifdef HAS_ALPN
-    if(data->set.ssl_enable_alpn) {
-      protocols[0] = NGHTTP2_PROTO_VERSION_ID_LEN;
-      memcpy(&protocols[1], NGHTTP2_PROTO_VERSION_ID,
-          NGHTTP2_PROTO_VERSION_ID_LEN);
-
-      protocols[NGHTTP2_PROTO_VERSION_ID_LEN+1] = ALPN_HTTP_1_1_LENGTH;
-      memcpy(&protocols[NGHTTP2_PROTO_VERSION_ID_LEN+2], ALPN_HTTP_1_1,
-          ALPN_HTTP_1_1_LENGTH);
+  if(data->set.ssl_enable_alpn) {
+    int cur = 0;
+    unsigned char protocols[128];
 
-      /* expects length prefixed preference ordered list of protocols in wire
-       * format
-       */
-      SSL_CTX_set_alpn_protos(connssl->ctx, protocols,
-          NGHTTP2_PROTO_VERSION_ID_LEN + ALPN_HTTP_1_1_LENGTH + 2);
+#ifdef USE_NGHTTP2
+    if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+      protocols[cur++] = NGHTTP2_PROTO_VERSION_ID_LEN;
 
-      infof(data, "ALPN, offering %s, %s\n", NGHTTP2_PROTO_VERSION_ID,
-            ALPN_HTTP_1_1);
-      connssl->asked_for_h2 = TRUE;
+      memcpy(&protocols[cur], NGHTTP2_PROTO_VERSION_ID,
+          NGHTTP2_PROTO_VERSION_ID_LEN);
+      cur += NGHTTP2_PROTO_VERSION_ID_LEN;
+      infof(data, "ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
     }
 #endif
+
+    protocols[cur++] = ALPN_HTTP_1_1_LENGTH;
+    memcpy(&protocols[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH);
+    cur += ALPN_HTTP_1_1_LENGTH;
+    infof(data, "ALPN, offering %s\n", ALPN_HTTP_1_1);
+
+    /* expects length prefixed preference ordered list of protocols in wire
+     * format
+     */
+    SSL_CTX_set_alpn_protos(connssl->ctx, protocols, cur);
   }
 #endif
 
@@ -1801,6 +1938,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
     failf(data, "failed setting cipher list: %s", ciphers);
     return CURLE_SSL_CIPHER;
   }
+  infof(data, "Cipher selection: %s\n", ciphers);
 
 #ifdef USE_TLS_SRP
   if(data->set.ssl.authtype == CURL_TLSAUTH_SRP) {
@@ -1810,7 +1948,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
       failf(data, "Unable to set SRP user name");
       return CURLE_BAD_FUNCTION_ARGUMENT;
     }
-    if(!SSL_CTX_set_srp_password(connssl->ctx,data->set.ssl.password)) {
+    if(!SSL_CTX_set_srp_password(connssl->ctx, data->set.ssl.password)) {
       failf(data, "failed setting SRP password");
       return CURLE_BAD_FUNCTION_ARGUMENT;
     }
@@ -1832,7 +1970,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
                                        data->set.str[STRING_SSL_CAPATH])) {
       if(data->set.ssl.verifypeer) {
         /* Fail if we insist on successfully verifying the server. */
-        failf(data,"error setting certificate verify locations:\n"
+        failf(data, "error setting certificate verify locations:\n"
               "  CAfile: %s\n  CApath: %s",
               data->set.str[STRING_SSL_CAFILE]?
               data->set.str[STRING_SSL_CAFILE]: "none",
@@ -1866,9 +2004,9 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
     lookup=X509_STORE_add_lookup(SSL_CTX_get_cert_store(connssl->ctx),
                                  X509_LOOKUP_file());
     if(!lookup ||
-       (!X509_load_crl_file(lookup,data->set.str[STRING_SSL_CRLFILE],
+       (!X509_load_crl_file(lookup, data->set.str[STRING_SSL_CRLFILE],
                             X509_FILETYPE_PEM)) ) {
-      failf(data,"error loading CRL file: %s",
+      failf(data, "error loading CRL file: %s",
             data->set.str[STRING_SSL_CRLFILE]);
       return CURLE_SSL_CRL_BADFILE;
     }
@@ -1883,20 +2021,34 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
           data->set.str[STRING_SSL_CRLFILE]: "none");
   }
 
+  /* Try building a chain using issuers in the trusted store first to avoid
+  problems with server-sent legacy intermediates.
+  Newer versions of OpenSSL do alternate chain checking by default which
+  gives us the same fix without as much of a performance hit (slight), so we
+  prefer that if available.
+  https://rt.openssl.org/Ticket/Display.html?id=3621&user=guest&pass=guest
+  */
+#if defined(X509_V_FLAG_TRUSTED_FIRST) && !defined(X509_V_FLAG_NO_ALT_CHAINS)
+  if(data->set.ssl.verifypeer) {
+    X509_STORE_set_flags(SSL_CTX_get_cert_store(connssl->ctx),
+                         X509_V_FLAG_TRUSTED_FIRST);
+  }
+#endif
+
   /* SSL always tries to verify the peer, this only says whether it should
    * fail to connect if the verification fails, or if it should continue
    * anyway. In the latter case the result of the verification is checked with
    * SSL_get_verify_result() below. */
   SSL_CTX_set_verify(connssl->ctx,
                      data->set.ssl.verifypeer?SSL_VERIFY_PEER:SSL_VERIFY_NONE,
-                     cert_verify_callback);
+                     NULL);
 
   /* give application a chance to interfere with SSL set up. */
   if(data->set.ssl.fsslctx) {
     result = (*data->set.ssl.fsslctx)(data, connssl->ctx,
                                       data->set.ssl.fsslctxp);
     if(result) {
-      failf(data,"error signaled by ssl ctx callback");
+      failf(data, "error signaled by ssl ctx callback");
       return result;
     }
   }
@@ -1909,6 +2061,13 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
     failf(data, "SSL: couldn't create a context (handle)!");
     return CURLE_OUT_OF_MEMORY;
   }
+
+#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_TLSEXT) && \
+    !defined(OPENSSL_IS_BORINGSSL)
+  if(data->set.ssl.verifystatus)
+    SSL_set_tlsext_status_type(connssl->handle, TLSEXT_STATUSTYPE_ocsp);
+#endif
+
   SSL_set_connect_state(connssl->handle);
 
   connssl->server_cert = 0x0;
@@ -1929,7 +2088,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
     /* we got a session id, use it! */
     if(!SSL_set_session(connssl->handle, ssl_sessionid)) {
       failf(data, "SSL: SSL_set_session failed: %s",
-            ERR_error_string(ERR_get_error(),NULL));
+            ERR_error_string(ERR_get_error(), NULL));
       return CURLE_SSL_CONNECT_ERROR;
     }
     /* Informational message */
@@ -1939,7 +2098,7 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
   /* pass the raw socket into the SSL layers */
   if(!SSL_set_fd(connssl->handle, (int)sockfd)) {
     failf(data, "SSL: SSL_set_fd failed: %s",
-          ERR_error_string(ERR_get_error(),NULL));
+          ERR_error_string(ERR_get_error(), NULL));
     return CURLE_SSL_CONNECT_ERROR;
   }
 
@@ -1978,10 +2137,9 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
     else {
       /* untreated error */
       unsigned long errdetail;
-      char error_buffer[256]; /* OpenSSL documents that this must be at least
-                                 256 bytes long. */
+      char error_buffer[256]=""; /* OpenSSL documents that this must be at
+                                    least 256 bytes long. */
       CURLcode result;
-      const char *cert_problem = NULL;
       long lerr;
 
       connssl->connecting_state = ssl_connect_2; /* the connection failed,
@@ -2013,9 +2171,10 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
                    X509_verify_cert_error_string(lerr));
         }
         else
-          cert_problem = "SSL certificate problem, verify that the CA cert is"
-            " OK.";
-
+          /* strcpy() is fine here as long as the string fits within
+             error_buffer */
+          strcpy(error_buffer,
+                 "SSL certificate problem, check your CA cert");
         break;
       default:
         result = CURLE_SSL_CONNECT_ERROR;
@@ -2036,7 +2195,7 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
       }
 
       /* Could be a CERT problem */
-      failf(data, "%s%s", cert_problem ? cert_problem : "", error_buffer);
+      failf(data, "%s", error_buffer);
 
       return result;
     }
@@ -2047,7 +2206,7 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
 
     /* Informational message */
     infof(data, "SSL connection using %s / %s\n",
-          get_ssl_version_txt(SSL_get_session(connssl->handle)),
+          get_ssl_version_txt(connssl->handle),
           SSL_get_cipher(connssl->handle));
 
 #ifdef HAS_ALPN
@@ -2061,18 +2220,19 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
       if(len != 0) {
         infof(data, "ALPN, server accepted to use %.*s\n", len, neg_protocol);
 
+#ifdef USE_NGHTTP2
         if(len == NGHTTP2_PROTO_VERSION_ID_LEN &&
-           memcmp(NGHTTP2_PROTO_VERSION_ID, neg_protocol, len) == 0) {
-          conn->negnpn = NPN_HTTP2;
+           !memcmp(NGHTTP2_PROTO_VERSION_ID, neg_protocol, len)) {
+          conn->negnpn = CURL_HTTP_VERSION_2_0;
         }
-        else if(len ==
-                ALPN_HTTP_1_1_LENGTH && memcmp(ALPN_HTTP_1_1,
-                                               neg_protocol,
-                                               ALPN_HTTP_1_1_LENGTH) == 0) {
-          conn->negnpn = NPN_HTTP1_1;
+        else
+#endif
+        if(len == ALPN_HTTP_1_1_LENGTH &&
+           !memcmp(ALPN_HTTP_1_1, neg_protocol, ALPN_HTTP_1_1_LENGTH)) {
+          conn->negnpn = CURL_HTTP_VERSION_1_1;
         }
       }
-      else if(connssl->asked_for_h2)
+      else
         infof(data, "ALPN, server did not agree to a protocol\n");
     }
 #endif
@@ -2167,7 +2327,7 @@ static int X509V3_ext(struct SessionHandle *data,
           X509_EXTENSION_get_critical(ext)?"(critical)":"");
 
     if(!X509V3_EXT_print(bio_out, ext, 0, 0))
-      M_ASN1_OCTET_STRING_print(bio_out, ext->value);
+      ASN1_STRING_print(bio_out, (ASN1_STRING *)X509_EXTENSION_get_data(ext));
 
     BIO_get_mem_ptr(bio_out, &biomem);
 
@@ -2297,28 +2457,22 @@ static CURLcode get_cert_chain(struct connectdata *conn,
     Curl_ssl_push_certinfo(data, i, "Version", bufp); /* hex */
 
     num=X509_get_serialNumber(x);
-    if(num->length <= 4) {
-      value = ASN1_INTEGER_get(num);
-      infof(data,"   Serial Number: %ld (0x%lx)\n", value, value);
-      snprintf(bufp, CERTBUFFERSIZE, "%lx", value);
-    }
-    else {
+    {
       int left = CERTBUFFERSIZE;
 
       ptr = bufp;
-      *ptr++ = 0;
-      if(num->type == V_ASN1_NEG_INTEGER)
+      if(num->type == V_ASN1_NEG_INTEGER) {
         *ptr++='-';
+        left--;
+      }
 
-      for(j=0; (j<num->length) && (left>=4); j++) {
-        /* TODO: length restrictions */
-        snprintf(ptr, 3, "%02x%c",num->data[j],
-                 ((j+1 == num->length)?'\n':':'));
-        ptr += 3;
-        left-=4;
+      for(j=0; (j<num->length) && (left>=3); j++) {
+        snprintf(ptr, left, "%02x", num->data[j]);
+        ptr += 2;
+        left -= 2;
       }
       if(num->length)
-        infof(data,"   Serial Number: %s\n", bufp);
+        infof(data, "   Serial Number: %s\n", bufp);
       else
         bufp[0]=0;
     }
@@ -2427,23 +2581,23 @@ static CURLcode pkp_pin_peer_pubkey(X509* cert, const char *pinnedpubkey)
     /* Begin Gyrations to get the subjectPublicKeyInfo     */
     /* Thanks to Viktor Dukhovni on the OpenSSL mailing list */
 
-    /* http://groups.google.com/group/mailing.openssl.users/browse_thread
+    /* https://groups.google.com/group/mailing.openssl.users/browse_thread
      /thread/d61858dae102c6c7 */
     len1 = i2d_X509_PUBKEY(X509_get_X509_PUBKEY(cert), NULL);
     if(len1 < 1)
       break; /* failed */
 
-    /* http://www.openssl.org/docs/crypto/buffer.html */
+    /* https://www.openssl.org/docs/crypto/buffer.html */
     buff1 = temp = OPENSSL_malloc(len1);
     if(!buff1)
       break; /* failed */
 
-    /* http://www.openssl.org/docs/crypto/d2i_X509.html */
+    /* https://www.openssl.org/docs/crypto/d2i_X509.html */
     len2 = i2d_X509_PUBKEY(X509_get_X509_PUBKEY(cert), &temp);
 
     /*
      * These checks are verifying we got back the same values as when we
-     * sized the buffer.Its pretty weak since they should always be the
+     * sized the buffer. It's pretty weak since they should always be the
      * same. But it gives us something to test.
      */
     if((len1 != len2) || !temp || ((temp - buff1) != len1))
@@ -2455,7 +2609,7 @@ static CURLcode pkp_pin_peer_pubkey(X509* cert, const char *pinnedpubkey)
     result = Curl_pin_peer_pubkey(pinnedpubkey, buff1, len1);
   } while(0);
 
-  /* http://www.openssl.org/docs/crypto/buffer.html */
+  /* https://www.openssl.org/docs/crypto/buffer.html */
   if(buff1)
     OPENSSL_free(buff1);
 
@@ -2533,7 +2687,7 @@ static CURLcode servercert(struct connectdata *conn,
 
     /* e.g. match issuer name with provided issuer certificate */
     if(data->set.str[STRING_SSL_ISSUERCERT]) {
-      fp = fopen(data->set.str[STRING_SSL_ISSUERCERT], "r");
+      fp = fopen(data->set.str[STRING_SSL_ISSUERCERT], FOPEN_READTEXT);
       if(!fp) {
         if(strict)
           failf(data, "SSL: Unable to open issuer cert (%s)",
@@ -2556,7 +2710,7 @@ static CURLcode servercert(struct connectdata *conn,
 
       fclose(fp);
 
-      if(X509_check_issued(issuer,connssl->server_cert) != X509_V_OK) {
+      if(X509_check_issued(issuer, connssl->server_cert) != X509_V_OK) {
         if(strict)
           failf(data, "SSL: Certificate issuer check failed (%s)",
                 data->set.str[STRING_SSL_ISSUERCERT]);
@@ -2592,6 +2746,22 @@ static CURLcode servercert(struct connectdata *conn,
       infof(data, "\t SSL certificate verify ok.\n");
   }
 
+#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_TLSEXT) && \
+    !defined(OPENSSL_IS_BORINGSSL)
+  if(data->set.ssl.verifystatus) {
+    result = verifystatus(conn, connssl);
+    if(result) {
+      X509_free(connssl->server_cert);
+      connssl->server_cert = NULL;
+      return result;
+    }
+  }
+#endif
+
+  if(!strict)
+    /* when not strict, we don't bother about the verify cert problems */
+    result = CURLE_OK;
+
   ptr = data->set.str[STRING_SSL_PINNEDPUBLICKEY];
   if(!result && ptr) {
     result = pkp_pin_peer_pubkey(connssl->server_cert, ptr);
@@ -2617,25 +2787,11 @@ static CURLcode ossl_connect_step3(struct connectdata *conn, int sockindex)
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
 
-#ifdef HAVE_SSL_GET1_SESSION
   our_ssl_sessionid = SSL_get1_session(connssl->handle);
 
-  /* SSL_get1_session() will increment the reference
-     count and the session will stay in memory until explicitly freed with
-     SSL_SESSION_free(3), regardless of its state.
-     This function was introduced in openssl 0.9.5a. */
-#else
-  our_ssl_sessionid = SSL_get_session(connssl->handle);
-
-  /* if SSL_get1_session() is unavailable, use SSL_get_session().
-     This is an inferior option because the session can be flushed
-     at any time by openssl. It is included only so curl compiles
-     under versions of openssl < 0.9.5a.
-
-     WARNING: How curl behaves if it's session is flushed is
-     untested.
-  */
-#endif
+  /* SSL_get1_session() will increment the reference count and the session
+     will stay in memory until explicitly freed with SSL_SESSION_free(3),
+     regardless of its state. */
 
   incache = !(Curl_ssl_getsessionid(conn, &old_ssl_sessionid, NULL));
   if(incache) {
@@ -2654,7 +2810,6 @@ static CURLcode ossl_connect_step3(struct connectdata *conn, int sockindex)
       return result;
     }
   }
-#ifdef HAVE_SSL_GET1_SESSION
   else {
     /* Session was incache, so refcount already incremented earlier.
      * Avoid further increments with each SSL_get1_session() call.
@@ -2662,7 +2817,6 @@ static CURLcode ossl_connect_step3(struct connectdata *conn, int sockindex)
      */
     SSL_SESSION_free(our_ssl_sessionid);
   }
-#endif
 
   /*
    * We check certificates to authenticate the server; otherwise we risk
@@ -2671,10 +2825,8 @@ static CURLcode ossl_connect_step3(struct connectdata *conn, int sockindex)
    * operations.
    */
 
-  if(!data->set.ssl.verifypeer && !data->set.ssl.verifyhost)
-    (void)servercert(conn, connssl, FALSE);
-  else
-    result = servercert(conn, connssl, TRUE);
+  result = servercert(conn, connssl,
+                      (data->set.ssl.verifypeer || data->set.ssl.verifyhost));
 
   if(!result)
     connssl->connecting_state = ssl_connect_done;
@@ -2912,7 +3064,7 @@ static ssize_t ossl_recv(struct connectdata *conn, /* connection data */
     default:
       /* openssl/ssl.h for SSL_ERROR_SYSCALL says "look at error stack/return
          value/errno" */
-      /* http://www.openssl.org/docs/crypto/ERR_get_error.html */
+      /* https://www.openssl.org/docs/crypto/ERR_get_error.html */
       sslerror = ERR_get_error();
       if((nread < 0) || sslerror) {
         /* If the return code was negative or there actually is an error in the
@@ -2935,8 +3087,11 @@ size_t Curl_ossl_version(char *buffer, size_t size)
      to OpenSSL in all other aspects */
   return snprintf(buffer, size, "yassl/%s", YASSL_VERSION);
 #else /* YASSL_VERSION */
+#ifdef OPENSSL_IS_BORINGSSL
+  return snprintf(buffer, size, "BoringSSL");
+#else /* OPENSSL_IS_BORINGSSL */
 
-#if(SSLEAY_VERSION_NUMBER >= 0x905000)
+#if(OPENSSL_VERSION_NUMBER >= 0x905000)
   {
     char sub[3];
     unsigned long ssleay_value;
@@ -2964,47 +3119,44 @@ size_t Curl_ossl_version(char *buffer, size_t size)
     }
 
     return snprintf(buffer, size, "%s/%lx.%lx.%lx%s",
-#ifdef OPENSSL_IS_BORINGSSL
-                    "BoringSSL"
-#else
 #ifdef LIBRESSL_VERSION_NUMBER
                     "LibreSSL"
 #else
                     "OpenSSL"
 #endif
-#endif
                     , (ssleay_value>>28)&0xf,
                     (ssleay_value>>20)&0xff,
                     (ssleay_value>>12)&0xff,
                     sub);
   }
 
-#else /* SSLEAY_VERSION_NUMBER is less than 0.9.5 */
+#else /* OPENSSL_VERSION_NUMBER is less than 0.9.5 */
 
-#if(SSLEAY_VERSION_NUMBER >= 0x900000)
+#if(OPENSSL_VERSION_NUMBER >= 0x900000)
   return snprintf(buffer, size, "OpenSSL/%lx.%lx.%lx",
-                  (SSLEAY_VERSION_NUMBER>>28)&0xff,
-                  (SSLEAY_VERSION_NUMBER>>20)&0xff,
-                  (SSLEAY_VERSION_NUMBER>>12)&0xf);
+                  (OPENSSL_VERSION_NUMBER>>28)&0xff,
+                  (OPENSSL_VERSION_NUMBER>>20)&0xff,
+                  (OPENSSL_VERSION_NUMBER>>12)&0xf);
 
-#else /* (SSLEAY_VERSION_NUMBER >= 0x900000) */
+#else /* (OPENSSL_VERSION_NUMBER >= 0x900000) */
   {
     char sub[2];
     sub[1]='\0';
-    if(SSLEAY_VERSION_NUMBER&0x0f) {
-      sub[0]=(SSLEAY_VERSION_NUMBER&0x0f) + 'a' -1;
+    if(OPENSSL_VERSION_NUMBER&0x0f) {
+      sub[0]=(OPENSSL_VERSION_NUMBER&0x0f) + 'a' -1;
     }
     else
       sub[0]='\0';
 
     return snprintf(buffer, size, "SSL/%x.%x.%x%s",
-                    (SSLEAY_VERSION_NUMBER>>12)&0xff,
-                    (SSLEAY_VERSION_NUMBER>>8)&0xf,
-                    (SSLEAY_VERSION_NUMBER>>4)&0xf, sub);
+                    (OPENSSL_VERSION_NUMBER>>12)&0xff,
+                    (OPENSSL_VERSION_NUMBER>>8)&0xf,
+                    (OPENSSL_VERSION_NUMBER>>4)&0xf, sub);
   }
-#endif /* (SSLEAY_VERSION_NUMBER >= 0x900000) */
-#endif /* SSLEAY_VERSION_NUMBER is less than 0.9.5 */
+#endif /* (OPENSSL_VERSION_NUMBER >= 0x900000) */
+#endif /* OPENSSL_VERSION_NUMBER is less than 0.9.5 */
 
+#endif /* OPENSSL_IS_BORINGSSL */
 #endif /* YASSL_VERSION */
 }
 
@@ -3012,8 +3164,9 @@ size_t Curl_ossl_version(char *buffer, size_t size)
 int Curl_ossl_random(struct SessionHandle *data, unsigned char *entropy,
                      size_t length)
 {
-  if(data)
+  if(data) {
     Curl_ossl_seed(data); /* Initiate the seed if not already done */
+  }
   RAND_bytes(entropy, curlx_uztosi(length));
   return 0; /* 0 as in no problem */
 }
@@ -3029,4 +3182,28 @@ void Curl_ossl_md5sum(unsigned char *tmp, /* input */
   MD5_Update(&MD5pw, tmp, tmplen);
   MD5_Final(md5sum, &MD5pw);
 }
-#endif /* USE_SSLEAY */
+
+#ifndef OPENSSL_NO_SHA256
+void Curl_ossl_sha256sum(const unsigned char *tmp, /* input */
+                      size_t tmplen,
+                      unsigned char *sha256sum /* output */,
+                      size_t unused)
+{
+  SHA256_CTX SHA256pw;
+  (void)unused;
+  SHA256_Init(&SHA256pw);
+  SHA256_Update(&SHA256pw, tmp, tmplen);
+  SHA256_Final(sha256sum, &SHA256pw);
+}
+#endif
+
+bool Curl_ossl_cert_status_request(void)
+{
+#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_TLSEXT) && \
+    !defined(OPENSSL_IS_BORINGSSL)
+  return TRUE;
+#else
+  return FALSE;
+#endif
+}
+#endif /* USE_OPENSSL */
index 9f5f3a2..a1f347a 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -24,7 +24,7 @@
 
 #include "curl_setup.h"
 
-#ifdef USE_SSLEAY
+#ifdef USE_OPENSSL
 /*
  * This header should only be needed to get included by vtls.c and openssl.c
  */
@@ -72,6 +72,15 @@ void Curl_ossl_md5sum(unsigned char *tmp, /* input */
                       size_t tmplen,
                       unsigned char *md5sum /* output */,
                       size_t unused);
+void Curl_ossl_sha256sum(const unsigned char *tmp, /* input */
+                      size_t tmplen,
+                      unsigned char *sha256sum /* output */,
+                      size_t unused);
+
+bool Curl_ossl_cert_status_request(void);
+
+/* Set the API backend definition to OpenSSL */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_OPENSSL
 
 /* this backend supports the CAPATH option */
 #define have_curlssl_ca_path 1
@@ -99,9 +108,13 @@ void Curl_ossl_md5sum(unsigned char *tmp, /* input */
 #define curlssl_data_pending(x,y) Curl_ossl_data_pending(x,y)
 #define curlssl_random(x,y,z) Curl_ossl_random(x,y,z)
 #define curlssl_md5sum(a,b,c,d) Curl_ossl_md5sum(a,b,c,d)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_OPENSSL
+#ifndef OPENSSL_NO_SHA256
+#define curlssl_sha256sum(a,b,c,d) Curl_ossl_sha256sum(a,b,c,d)
+#endif
+#define curlssl_cert_status_request() Curl_ossl_cert_status_request()
 
-#define DEFAULT_CIPHER_SELECTION "ALL!EXPORT!EXPORT40!EXPORT56!aNULL!LOW!RC4"
+#define DEFAULT_CIPHER_SELECTION \
+  "ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH"
 
-#endif /* USE_SSLEAY */
+#endif /* USE_OPENSSL */
 #endif /* HEADER_CURL_SSLUSE_H */
index 05fcfc2..066c055 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2010 - 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -55,9 +55,7 @@
 #include "select.h"
 #include "rawstr.h"
 #include "polarssl_threadlock.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -120,11 +118,8 @@ static void polarssl_debug(void *context, int level, const char *line)
 #endif
 
 /* ALPN for http2? */
-#ifdef USE_NGHTTP2
-#  undef HAS_ALPN
-#  ifdef POLARSSL_SSL_ALPN
-#    define HAS_ALPN
-#  endif
+#ifdef POLARSSL_SSL_ALPN
+#  define HAS_ALPN
 #endif
 
 static Curl_recv polarssl_recv;
@@ -289,27 +284,36 @@ polarssl_connect_step1(struct connectdata *conn,
   switch(data->set.ssl.version) {
   default:
   case CURL_SSLVERSION_DEFAULT:
+  case CURL_SSLVERSION_TLSv1:
     ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
                         SSL_MINOR_VERSION_1);
     break;
   case CURL_SSLVERSION_SSLv3:
     ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
                         SSL_MINOR_VERSION_0);
+    ssl_set_max_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
+                        SSL_MINOR_VERSION_0);
     infof(data, "PolarSSL: Forced min. SSL Version to be SSLv3\n");
     break;
   case CURL_SSLVERSION_TLSv1_0:
     ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
                         SSL_MINOR_VERSION_1);
+    ssl_set_max_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
+                        SSL_MINOR_VERSION_1);
     infof(data, "PolarSSL: Forced min. SSL Version to be TLS 1.0\n");
     break;
   case CURL_SSLVERSION_TLSv1_1:
     ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
                         SSL_MINOR_VERSION_2);
+    ssl_set_max_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
+                        SSL_MINOR_VERSION_2);
     infof(data, "PolarSSL: Forced min. SSL Version to be TLS 1.1\n");
     break;
   case CURL_SSLVERSION_TLSv1_2:
     ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
                         SSL_MINOR_VERSION_3);
+    ssl_set_max_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
+                        SSL_MINOR_VERSION_3);
     infof(data, "PolarSSL: Forced min. SSL Version to be TLS 1.2\n");
     break;
   }
@@ -350,16 +354,23 @@ polarssl_connect_step1(struct connectdata *conn,
   }
 
 #ifdef HAS_ALPN
-  if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
-    if(data->set.ssl_enable_alpn) {
-      static const char* protocols[] = {
-        NGHTTP2_PROTO_VERSION_ID, ALPN_HTTP_1_1, NULL
-      };
-      ssl_set_alpn_protocols(&connssl->ssl, protocols);
-      infof(data, "ALPN, offering %s, %s\n", protocols[0],
-            protocols[1]);
-      connssl->asked_for_h2 = TRUE;
+  if(data->set.ssl_enable_alpn) {
+    static const char* protocols[3];
+    int cur = 0;
+
+#ifdef USE_NGHTTP2
+    if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+      protocols[cur++] = NGHTTP2_PROTO_VERSION_ID;
+      infof(data, "ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
     }
+#endif
+
+    protocols[cur++] = ALPN_HTTP_1_1;
+    infof(data, "ALPN, offering %s\n", ALPN_HTTP_1_1);
+
+    protocols[cur] = NULL;
+
+    ssl_set_alpn_protocols(&connssl->ssl, protocols);
   }
 #endif
 
@@ -381,47 +392,37 @@ polarssl_connect_step2(struct connectdata *conn,
   struct ssl_connect_data* connssl = &conn->ssl[sockindex];
   char buffer[1024];
 
-#ifdef HAS_ALPN
-  const char* next_protocol;
-#endif
-
   char errorbuf[128];
   errorbuf[0] = 0;
 
   conn->recv[sockindex] = polarssl_recv;
   conn->send[sockindex] = polarssl_send;
 
-  for(;;) {
-    if(!(ret = ssl_handshake(&connssl->ssl)))
-      break;
-    else if(ret != POLARSSL_ERR_NET_WANT_READ &&
-            ret != POLARSSL_ERR_NET_WANT_WRITE) {
-#ifdef POLARSSL_ERROR_C
-     error_strerror(ret, errorbuf, sizeof(errorbuf));
-#endif /* POLARSSL_ERROR_C */
-     failf(data, "ssl_handshake returned - PolarSSL: (-0x%04X) %s",
-                                                    -ret, errorbuf);
+  ret = ssl_handshake(&connssl->ssl);
 
-     return CURLE_SSL_CONNECT_ERROR;
-    }
-    else {
-      if(ret == POLARSSL_ERR_NET_WANT_READ) {
-        connssl->connecting_state = ssl_connect_2_reading;
-        return CURLE_OK;
-      }
-      if(ret == POLARSSL_ERR_NET_WANT_WRITE) {
-        connssl->connecting_state = ssl_connect_2_writing;
-        return CURLE_OK;
-      }
-      failf(data, "SSL_connect failed with error %d.", ret);
-      return CURLE_SSL_CONNECT_ERROR;
+  switch(ret) {
+  case 0:
+    break;
 
-    }
+  case POLARSSL_ERR_NET_WANT_READ:
+    connssl->connecting_state = ssl_connect_2_reading;
+    return CURLE_OK;
+
+  case POLARSSL_ERR_NET_WANT_WRITE:
+    connssl->connecting_state = ssl_connect_2_writing;
+    return CURLE_OK;
+
+  default:
+#ifdef POLARSSL_ERROR_C
+    error_strerror(ret, errorbuf, sizeof(errorbuf));
+#endif /* POLARSSL_ERROR_C */
+    failf(data, "ssl_handshake returned - PolarSSL: (-0x%04X) %s",
+          -ret, errorbuf);
+    return CURLE_SSL_CONNECT_ERROR;
   }
 
   infof(data, "PolarSSL: Handshake complete, cipher is %s\n",
-        ssl_get_ciphersuite(&conn->ssl[sockindex].ssl)
-    );
+        ssl_get_ciphersuite(&conn->ssl[sockindex].ssl) );
 
   ret = ssl_get_verify_result(&conn->ssl[sockindex].ssl);
 
@@ -454,22 +455,24 @@ polarssl_connect_step2(struct connectdata *conn,
 
 #ifdef HAS_ALPN
   if(data->set.ssl_enable_alpn) {
-    next_protocol = ssl_get_alpn_protocol(&connssl->ssl);
+    const char *next_protocol = ssl_get_alpn_protocol(&connssl->ssl);
 
     if(next_protocol != NULL) {
       infof(data, "ALPN, server accepted to use %s\n", next_protocol);
 
-      if(strncmp(next_protocol, NGHTTP2_PROTO_VERSION_ID,
+#ifdef USE_NGHTTP2
+      if(!strncmp(next_protocol, NGHTTP2_PROTO_VERSION_ID,
                   NGHTTP2_PROTO_VERSION_ID_LEN)) {
-        conn->negnpn = NPN_HTTP2;
+        conn->negnpn = CURL_HTTP_VERSION_2_0;
       }
-      else if(strncmp(next_protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH)) {
-        conn->negnpn = NPN_HTTP1_1;
+      else
+#endif
+      if(!strncmp(next_protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH)) {
+        conn->negnpn = CURL_HTTP_VERSION_1_1;
       }
     }
-    else if(connssl->asked_for_h2) {
+    else
       infof(data, "ALPN, server did not agree to a protocol\n");
-    }
   }
 #endif
 
@@ -487,7 +490,7 @@ polarssl_connect_step3(struct connectdata *conn,
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct SessionHandle *data = conn->data;
   void *old_ssl_sessionid = NULL;
-  ssl_session *our_ssl_sessionid = &conn->ssl[sockindex].ssn ;
+  ssl_session *our_ssl_sessionid = &conn->ssl[sockindex].ssn;
   bool incache;
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
@@ -544,11 +547,6 @@ static ssize_t polarssl_send(struct connectdata *conn,
   return ret;
 }
 
-void Curl_polarssl_close_all(struct SessionHandle *data)
-{
-  (void)data;
-}
-
 void Curl_polarssl_close(struct connectdata *conn, int sockindex)
 {
   rsa_free(&conn->ssl[sockindex].rsa);
@@ -589,11 +587,15 @@ void Curl_polarssl_session_free(void *ptr)
   free(ptr);
 }
 
+/* 1.3.10 was the first rebranded version. All new releases (in 1.3 branch and
+   higher) will be mbed TLS branded.. */
+
 size_t Curl_polarssl_version(char *buffer, size_t size)
 {
   unsigned int version = version_get_number();
-  return snprintf(buffer, size, "PolarSSL/%d.%d.%d", version>>24,
-                  (version>>16)&0xff, (version>>8)&0xff);
+  return snprintf(buffer, size, "%s/%d.%d.%d",
+                  version >= 0x01030A00?"mbedTLS":"PolarSSL",
+                  version>>24, (version>>16)&0xff, (version>>8)&0xff);
 }
 
 static CURLcode
index 57dfb67..f980dbb 100644 (file)
@@ -8,7 +8,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -37,10 +37,6 @@ CURLcode Curl_polarssl_connect_nonblocking(struct connectdata *conn,
                                            int sockindex,
                                            bool *done);
 
-/* tell PolarSSL to close down all open information regarding connections (and
-   thus session ID caching etc) */
-void Curl_polarssl_close_all(struct SessionHandle *data);
-
  /* close a SSL connection */
 void Curl_polarssl_close(struct connectdata *conn, int sockindex);
 
@@ -48,6 +44,9 @@ void Curl_polarssl_session_free(void *ptr);
 size_t Curl_polarssl_version(char *buffer, size_t size);
 int Curl_polarssl_shutdown(struct connectdata *conn, int sockindex);
 
+/* Set the API backend definition to PolarSSL */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_POLARSSL
+
 /* this backend supports the CAPATH option */
 #define have_curlssl_ca_path 1
 
@@ -57,7 +56,7 @@ int Curl_polarssl_shutdown(struct connectdata *conn, int sockindex);
 #define curlssl_connect Curl_polarssl_connect
 #define curlssl_connect_nonblocking Curl_polarssl_connect_nonblocking
 #define curlssl_session_free(x)  Curl_polarssl_session_free(x)
-#define curlssl_close_all Curl_polarssl_close_all
+#define curlssl_close_all(x) ((void)x)
 #define curlssl_close Curl_polarssl_close
 #define curlssl_shutdown(x,y) 0
 #define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
@@ -66,7 +65,6 @@ int Curl_polarssl_shutdown(struct connectdata *conn, int sockindex);
 #define curlssl_version Curl_polarssl_version
 #define curlssl_check_cxn(x) ((void)x, -1)
 #define curlssl_data_pending(x,y) ((void)x, (void)y, 0)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_POLARSSL
 
 /* This might cause libcurl to use a weeker random!
    TODO: implement proper use of Polarssl's CTR-DRBG or HMAC-DRBG and use that
index ad18715..62abf43 100644 (file)
 #endif
 
 #include "polarssl_threadlock.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
similarity index 70%
rename from lib/vtls/curl_schannel.c
rename to lib/vtls/schannel.c
index b3fe526..2174e21 100644 (file)
@@ -5,9 +5,9 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2014, Marc Hoersken, <info@marc-hoersken.de>
+ * Copyright (C) 2012 - 2015, Marc Hoersken, <info@marc-hoersken.de>
  * Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * Thanks for code and inspiration!
  */
 
-/*
- * TODO list for TLS/SSL implementation:
- * - implement client certificate authentication
- * - implement custom server certificate validation
- * - implement cipher/algorithm option
- *
- * Related articles on MSDN:
- * - Getting a Certificate for Schannel
- *   http://msdn.microsoft.com/en-us/library/windows/desktop/aa375447.aspx
- * - Specifying Schannel Ciphers and Cipher Strengths
- *   http://msdn.microsoft.com/en-us/library/windows/desktop/aa380161.aspx
- */
-
 #include "curl_setup.h"
 
 #ifdef USE_SCHANNEL
@@ -60,7 +47,7 @@
 #endif
 
 #include "curl_sspi.h"
-#include "curl_schannel.h"
+#include "schannel.h"
 #include "vtls.h"
 #include "sendf.h"
 #include "connect.h" /* for the connect timeout */
 #include "inet_pton.h" /* for IP addr SNI check */
 #include "curl_multibyte.h"
 #include "warnless.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -121,7 +105,7 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
   struct in6_addr addr6;
 #endif
   TCHAR *host_name;
-  CURLcode code;
+  CURLcode result;
 
   infof(data, "schannel: SSL/TLS connection with %s port %hu (step 1/3)\n",
         conn->host.name, conn->remote_port);
@@ -141,56 +125,64 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
       /* certificate validation on CE doesn't seem to work right; we'll
          do it following a more manual process. */
       schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION |
-                              SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
-                              SCH_CRED_IGNORE_REVOCATION_OFFLINE;
+        SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
+        SCH_CRED_IGNORE_REVOCATION_OFFLINE;
 #else
-      schannel_cred.dwFlags = SCH_CRED_AUTO_CRED_VALIDATION |
-                              SCH_CRED_REVOCATION_CHECK_CHAIN;
+      schannel_cred.dwFlags = SCH_CRED_AUTO_CRED_VALIDATION;
+      if(data->set.ssl_no_revoke)
+        schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
+                                 SCH_CRED_IGNORE_REVOCATION_OFFLINE;
+      else
+        schannel_cred.dwFlags |= SCH_CRED_REVOCATION_CHECK_CHAIN;
 #endif
-      infof(data, "schannel: checking server certificate revocation\n");
+      if(data->set.ssl_no_revoke)
+        infof(data, "schannel: disabled server certificate revocation "
+                    "checks\n");
+      else
+        infof(data, "schannel: checking server certificate revocation\n");
     }
     else {
       schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION |
-                              SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
-                              SCH_CRED_IGNORE_REVOCATION_OFFLINE;
-      infof(data, "schannel: disable server certificate revocation checks\n");
+        SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
+        SCH_CRED_IGNORE_REVOCATION_OFFLINE;
+      infof(data, "schannel: disabled server certificate revocation checks\n");
     }
 
     if(!data->set.ssl.verifyhost) {
       schannel_cred.dwFlags |= SCH_CRED_NO_SERVERNAME_CHECK;
       infof(data, "schannel: verifyhost setting prevents Schannel from "
-                  "comparing the supplied target name with the subject "
-                  "names in server certificates. Also disables SNI.\n");
+            "comparing the supplied target name with the subject "
+            "names in server certificates. Also disables SNI.\n");
     }
 
     switch(data->set.ssl.version) {
-      default:
-      case CURL_SSLVERSION_DEFAULT:
-      case CURL_SSLVERSION_TLSv1:
-        schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_0_CLIENT |
-                                              SP_PROT_TLS1_1_CLIENT |
-                                              SP_PROT_TLS1_2_CLIENT;
-        break;
-      case CURL_SSLVERSION_TLSv1_0:
-        schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_0_CLIENT;
-        break;
-      case CURL_SSLVERSION_TLSv1_1:
-        schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_1_CLIENT;
-        break;
-      case CURL_SSLVERSION_TLSv1_2:
-        schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT;
-        break;
-      case CURL_SSLVERSION_SSLv3:
-        schannel_cred.grbitEnabledProtocols = SP_PROT_SSL3_CLIENT;
-        break;
-      case CURL_SSLVERSION_SSLv2:
-        schannel_cred.grbitEnabledProtocols = SP_PROT_SSL2_CLIENT;
-        break;
+    default:
+    case CURL_SSLVERSION_DEFAULT:
+    case CURL_SSLVERSION_TLSv1:
+      schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_0_CLIENT |
+        SP_PROT_TLS1_1_CLIENT |
+        SP_PROT_TLS1_2_CLIENT;
+      break;
+    case CURL_SSLVERSION_TLSv1_0:
+      schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_0_CLIENT;
+      break;
+    case CURL_SSLVERSION_TLSv1_1:
+      schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_1_CLIENT;
+      break;
+    case CURL_SSLVERSION_TLSv1_2:
+      schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT;
+      break;
+    case CURL_SSLVERSION_SSLv3:
+      schannel_cred.grbitEnabledProtocols = SP_PROT_SSL3_CLIENT;
+      break;
+    case CURL_SSLVERSION_SSLv2:
+      schannel_cred.grbitEnabledProtocols = SP_PROT_SSL2_CLIENT;
+      break;
     }
 
     /* allocate memory for the re-usable credential handle */
     connssl->cred = (struct curl_schannel_cred *)
-                     malloc(sizeof(struct curl_schannel_cred));
+      malloc(sizeof(struct curl_schannel_cred));
     if(!connssl->cred) {
       failf(data, "schannel: unable to allocate memory");
       return CURLE_OUT_OF_MEMORY;
@@ -198,9 +190,12 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
     memset(connssl->cred, 0, sizeof(struct curl_schannel_cred));
 
     /* http://msdn.microsoft.com/en-us/library/windows/desktop/aa374716.aspx */
-    sspi_status = s_pSecFn->AcquireCredentialsHandle(NULL, (TCHAR *)UNISP_NAME,
-      SECPKG_CRED_OUTBOUND, NULL, &schannel_cred, NULL, NULL,
-      &connssl->cred->cred_handle, &connssl->cred->time_stamp);
+    sspi_status =
+      s_pSecFn->AcquireCredentialsHandle(NULL, (TCHAR *)UNISP_NAME,
+                                         SECPKG_CRED_OUTBOUND, NULL,
+                                         &schannel_cred, NULL, NULL,
+                                         &connssl->cred->cred_handle,
+                                         &connssl->cred->time_stamp);
 
     if(sspi_status != SEC_E_OK) {
       if(sspi_status == SEC_E_WRONG_PRINCIPAL)
@@ -229,12 +224,12 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
 
   /* setup request flags */
   connssl->req_flags = ISC_REQ_SEQUENCE_DETECT | ISC_REQ_REPLAY_DETECT |
-                       ISC_REQ_CONFIDENTIALITY | ISC_REQ_ALLOCATE_MEMORY |
-                       ISC_REQ_STREAM;
+    ISC_REQ_CONFIDENTIALITY | ISC_REQ_ALLOCATE_MEMORY |
+    ISC_REQ_STREAM;
 
   /* allocate memory for the security context handle */
   connssl->ctxt = (struct curl_schannel_ctxt *)
-                   malloc(sizeof(struct curl_schannel_ctxt));
+    malloc(sizeof(struct curl_schannel_ctxt));
   if(!connssl->ctxt) {
     failf(data, "schannel: unable to allocate memory");
     return CURLE_OUT_OF_MEMORY;
@@ -269,10 +264,10 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
         "sending %lu bytes...\n", outbuf.cbBuffer);
 
   /* send initial handshake data which is now stored in output buffer */
-  code = Curl_write_plain(conn, conn->sock[sockindex], outbuf.pvBuffer,
-                          outbuf.cbBuffer, &written);
+  result = Curl_write_plain(conn, conn->sock[sockindex], outbuf.pvBuffer,
+                            outbuf.cbBuffer, &written);
   s_pSecFn->FreeContextBuffer(outbuf.pvBuffer);
-  if((code != CURLE_OK) || (outbuf.cbBuffer != (size_t)written)) {
+  if((result != CURLE_OK) || (outbuf.cbBuffer != (size_t) written)) {
     failf(data, "schannel: failed to send initial handshake data: "
           "sent %zd of %lu bytes", written, outbuf.cbBuffer);
     return CURLE_SSL_CONNECT_ERROR;
@@ -281,6 +276,10 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
   infof(data, "schannel: sent initial handshake data: "
         "sent %zd bytes\n", written);
 
+  connssl->recv_unrecoverable_err = CURLE_OK;
+  connssl->recv_sspi_close_notify = false;
+  connssl->recv_connection_closed = false;
+
   /* continue to second handshake step */
   connssl->connecting_state = ssl_connect_2;
 
@@ -296,13 +295,13 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   unsigned char *reallocated_buffer;
   size_t reallocated_length;
-  SecBuffer outbuf[2];
+  SecBuffer outbuf[3];
   SecBufferDesc outbuf_desc;
   SecBuffer inbuf[2];
   SecBufferDesc inbuf_desc;
   SECURITY_STATUS sspi_status = SEC_E_OK;
   TCHAR *host_name;
-  CURLcode code;
+  CURLcode result;
   bool doread;
 
   doread = (connssl->connecting_state != ssl_connect_2_writing) ? TRUE : FALSE;
@@ -313,6 +312,17 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
   if(!connssl->cred || !connssl->ctxt)
     return CURLE_SSL_CONNECT_ERROR;
 
+  /* buffer to store previously received and decrypted data */
+  if(connssl->decdata_buffer == NULL) {
+    connssl->decdata_offset = 0;
+    connssl->decdata_length = CURL_SCHANNEL_BUFFER_INIT_SIZE;
+    connssl->decdata_buffer = malloc(connssl->decdata_length);
+    if(connssl->decdata_buffer == NULL) {
+      failf(data, "schannel: unable to allocate memory");
+      return CURLE_OUT_OF_MEMORY;
+    }
+  }
+
   /* buffer to store previously received and encrypted data */
   if(connssl->encdata_buffer == NULL) {
     connssl->encdata_offset = 0;
@@ -329,7 +339,7 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
      CURL_SCHANNEL_BUFFER_FREE_SIZE) {
     /* increase internal encrypted data buffer */
     reallocated_length = connssl->encdata_offset +
-                         CURL_SCHANNEL_BUFFER_FREE_SIZE;
+      CURL_SCHANNEL_BUFFER_FREE_SIZE;
     reallocated_buffer = realloc(connssl->encdata_buffer,
                                  reallocated_length);
 
@@ -346,18 +356,20 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
   for(;;) {
     if(doread) {
       /* read encrypted handshake data from socket */
-      code = Curl_read_plain(conn->sock[sockindex],
-                (char *) (connssl->encdata_buffer + connssl->encdata_offset),
-                          connssl->encdata_length - connssl->encdata_offset,
-                          &nread);
-      if(code == CURLE_AGAIN) {
+      result = Curl_read_plain(conn->sock[sockindex],
+                               (char *) (connssl->encdata_buffer +
+                                         connssl->encdata_offset),
+                               connssl->encdata_length -
+                               connssl->encdata_offset,
+                               &nread);
+      if(result == CURLE_AGAIN) {
         if(connssl->connecting_state != ssl_connect_2_writing)
           connssl->connecting_state = ssl_connect_2_reading;
         infof(data, "schannel: failed to receive handshake, "
               "need more data\n");
         return CURLE_OK;
       }
-      else if((code != CURLE_OK) || (nread == 0)) {
+      else if((result != CURLE_OK) || (nread == 0)) {
         failf(data, "schannel: failed to receive handshake, "
               "SSL/TLS connection failed");
         return CURLE_SSL_CONNECT_ERROR;
@@ -368,7 +380,7 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
     }
 
     infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
-        connssl->encdata_offset, connssl->encdata_length);
+          connssl->encdata_offset, connssl->encdata_length);
 
     /* setup input buffers */
     InitSecBuffer(&inbuf[0], SECBUFFER_TOKEN, malloc(connssl->encdata_offset),
@@ -379,7 +391,8 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
     /* setup output buffers */
     InitSecBuffer(&outbuf[0], SECBUFFER_TOKEN, NULL, 0);
     InitSecBuffer(&outbuf[1], SECBUFFER_ALERT, NULL, 0);
-    InitSecBufferDesc(&outbuf_desc, outbuf, 2);
+    InitSecBuffer(&outbuf[2], SECBUFFER_EMPTY, NULL, 0);
+    InitSecBufferDesc(&outbuf_desc, outbuf, 3);
 
     if(inbuf[0].pvBuffer == NULL) {
       failf(data, "schannel: unable to allocate memory");
@@ -413,19 +426,31 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
       return CURLE_OK;
     }
 
+    /* If the server has requested a client certificate, attempt to continue
+       the handshake without one. This will allow connections to servers which
+       request a client certificate but do not require it. */
+    if(sspi_status == SEC_I_INCOMPLETE_CREDENTIALS &&
+       !(connssl->req_flags & ISC_REQ_USE_SUPPLIED_CREDS)) {
+      connssl->req_flags |= ISC_REQ_USE_SUPPLIED_CREDS;
+      connssl->connecting_state = ssl_connect_2_writing;
+      infof(data, "schannel: a client certificate has been requested\n");
+      return CURLE_OK;
+    }
+
     /* check if the handshake needs to be continued */
     if(sspi_status == SEC_I_CONTINUE_NEEDED || sspi_status == SEC_E_OK) {
-      for(i = 0; i < 2; i++) {
+      for(i = 0; i < 3; i++) {
         /* search for handshake tokens that need to be send */
         if(outbuf[i].BufferType == SECBUFFER_TOKEN && outbuf[i].cbBuffer > 0) {
           infof(data, "schannel: sending next handshake data: "
                 "sending %lu bytes...\n", outbuf[i].cbBuffer);
 
           /* send handshake token to server */
-          code = Curl_write_plain(conn, conn->sock[sockindex],
-                                  outbuf[i].pvBuffer, outbuf[i].cbBuffer,
-                                  &written);
-          if((code != CURLE_OK) || (outbuf[i].cbBuffer != (size_t)written)) {
+          result = Curl_write_plain(conn, conn->sock[sockindex],
+                                    outbuf[i].pvBuffer, outbuf[i].cbBuffer,
+                                    &written);
+          if((result != CURLE_OK) ||
+             (outbuf[i].cbBuffer != (size_t) written)) {
             failf(data, "schannel: failed to send next handshake data: "
                   "sent %zd of %lu bytes", written, outbuf[i].cbBuffer);
             return CURLE_SSL_CONNECT_ERROR;
@@ -452,21 +477,21 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
     if(inbuf[1].BufferType == SECBUFFER_EXTRA && inbuf[1].cbBuffer > 0) {
       infof(data, "schannel: encrypted data length: %lu\n", inbuf[1].cbBuffer);
       /*
-         There are two cases where we could be getting extra data here:
-         1) If we're renegotiating a connection and the handshake is already
-            complete (from the server perspective), it can encrypted app data
-            (not handshake data) in an extra buffer at this point.
-         2) (sspi_status == SEC_I_CONTINUE_NEEDED) We are negotiating a
-            connection and this extra data is part of the handshake.
-            We should process the data immediately; waiting for the socket to
-            be ready may fail since the server is done sending handshake data.
-       */
+        There are two cases where we could be getting extra data here:
+        1) If we're renegotiating a connection and the handshake is already
+        complete (from the server perspective), it can encrypted app data
+        (not handshake data) in an extra buffer at this point.
+        2) (sspi_status == SEC_I_CONTINUE_NEEDED) We are negotiating a
+        connection and this extra data is part of the handshake.
+        We should process the data immediately; waiting for the socket to
+        be ready may fail since the server is done sending handshake data.
+      */
       /* check if the remaining data is less than the total amount
          and therefore begins after the already processed data */
       if(connssl->encdata_offset > inbuf[1].cbBuffer) {
         memmove(connssl->encdata_buffer,
                 (connssl->encdata_buffer + connssl->encdata_offset) -
-                  inbuf[1].cbBuffer, inbuf[1].cbBuffer);
+                inbuf[1].cbBuffer, inbuf[1].cbBuffer);
         connssl->encdata_offset = inbuf[1].cbBuffer;
         if(sspi_status == SEC_I_CONTINUE_NEEDED) {
           doread = FALSE;
@@ -691,14 +716,14 @@ schannel_send(struct connectdata *conn, int sockindex,
   SecBuffer outbuf[4];
   SecBufferDesc outbuf_desc;
   SECURITY_STATUS sspi_status = SEC_E_OK;
-  CURLcode code;
+  CURLcode result;
 
   /* check if the maximum stream sizes were queried */
   if(connssl->stream_sizes.cbMaximumMessage == 0) {
     sspi_status = s_pSecFn->QueryContextAttributes(
-                              &connssl->ctxt->ctxt_handle,
-                              SECPKG_ATTR_STREAM_SIZES,
-                              &connssl->stream_sizes);
+      &connssl->ctxt->ctxt_handle,
+      SECPKG_ATTR_STREAM_SIZES,
+      &connssl->stream_sizes);
     if(sspi_status != SEC_E_OK) {
       *err = CURLE_SEND_ERROR;
       return -1;
@@ -713,7 +738,7 @@ schannel_send(struct connectdata *conn, int sockindex,
 
   /* calculate the complete message length and allocate a buffer for it */
   data_len = connssl->stream_sizes.cbHeader + len +
-              connssl->stream_sizes.cbTrailer;
+    connssl->stream_sizes.cbTrailer;
   data = (unsigned char *) malloc(data_len);
   if(data == NULL) {
     *err = CURLE_OUT_OF_MEMORY;
@@ -746,19 +771,19 @@ schannel_send(struct connectdata *conn, int sockindex,
     len = outbuf[0].cbBuffer + outbuf[1].cbBuffer + outbuf[2].cbBuffer;
 
     /*
-       It's important to send the full message which includes the header,
-       encrypted payload, and trailer.  Until the client receives all the
-       data a coherent message has not been delivered and the client
-       can't read any of it.
-
-       If we wanted to buffer the unwritten encrypted bytes, we would
-       tell the client that all data it has requested to be sent has been
-       sent. The unwritten encrypted bytes would be the first bytes to
-       send on the next invocation.
-       Here's the catch with this - if we tell the client that all the
-       bytes have been sent, will the client call this method again to
-       send the buffered data?  Looking at who calls this function, it
-       seems the answer is NO.
+      It's important to send the full message which includes the header,
+      encrypted payload, and trailer.  Until the client receives all the
+      data a coherent message has not been delivered and the client
+      can't read any of it.
+
+      If we wanted to buffer the unwritten encrypted bytes, we would
+      tell the client that all data it has requested to be sent has been
+      sent. The unwritten encrypted bytes would be the first bytes to
+      send on the next invocation.
+      Here's the catch with this - if we tell the client that all the
+      bytes have been sent, will the client call this method again to
+      send the buffered data?  Looking at who calls this function, it
+      seems the answer is NO.
     */
 
     /* send entire message or fail */
@@ -797,12 +822,12 @@ schannel_send(struct connectdata *conn, int sockindex,
       }
       /* socket is writable */
 
-      code = Curl_write_plain(conn, conn->sock[sockindex], data + written,
-                              len - written, &this_write);
-      if(code == CURLE_AGAIN)
+      result = Curl_write_plain(conn, conn->sock[sockindex], data + written,
+                                len - written, &this_write);
+      if(result == CURLE_AGAIN)
         continue;
-      else if(code != CURLE_OK) {
-        *err = code;
+      else if(result != CURLE_OK) {
+        *err = result;
         written = -1;
         break;
       }
@@ -832,8 +857,7 @@ schannel_recv(struct connectdata *conn, int sockindex,
               char *buf, size_t len, CURLcode *err)
 {
   size_t size = 0;
-  ssize_t nread = 0, ret = -1;
-  CURLcode result;
+  ssize_t nread = -1;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   unsigned char *reallocated_buffer;
@@ -842,72 +866,103 @@ schannel_recv(struct connectdata *conn, int sockindex,
   SecBuffer inbuf[4];
   SecBufferDesc inbuf_desc;
   SECURITY_STATUS sspi_status = SEC_E_OK;
+  /* we want the length of the encrypted buffer to be at least large enough
+     that it can hold all the bytes requested and some TLS record overhead. */
+  size_t min_encdata_length = len + CURL_SCHANNEL_BUFFER_FREE_SIZE;
+
+  /****************************************************************************
+   * Don't return or set connssl->recv_unrecoverable_err unless in the cleanup.
+   * The pattern for return error is set *err, optional infof, goto cleanup.
+   *
+   * Our priority is to always return as much decrypted data to the caller as
+   * possible, even if an error occurs. The state of the decrypted buffer must
+   * always be valid. Transfer of decrypted data to the caller's buffer is
+   * handled in the cleanup.
+   */
 
   infof(data, "schannel: client wants to read %zu bytes\n", len);
   *err = CURLE_OK;
 
-  /* buffer to store previously received and decrypted data */
-  if(connssl->decdata_buffer == NULL) {
-    connssl->decdata_offset = 0;
-    connssl->decdata_length = CURL_SCHANNEL_BUFFER_INIT_SIZE;
-    connssl->decdata_buffer = malloc(connssl->decdata_length);
-    if(connssl->decdata_buffer == NULL) {
-      failf(data, "schannel: unable to allocate memory");
-      *err = CURLE_OUT_OF_MEMORY;
-      return -1;
-    }
+  if(len && len <= connssl->decdata_offset) {
+    infof(data, "schannel: enough decrypted data is already available\n");
+    goto cleanup;
   }
+  else if(connssl->recv_unrecoverable_err) {
+    *err = connssl->recv_unrecoverable_err;
+    infof(data, "schannel: an unrecoverable error occurred in a prior call\n");
+    goto cleanup;
+  }
+  else if(connssl->recv_sspi_close_notify) {
+    /* once a server has indicated shutdown there is no more encrypted data */
+    infof(data, "schannel: server indicated shutdown in a prior call\n");
+    goto cleanup;
+  }
+  else if(!len) {
+    /* It's debatable what to return when !len. Regardless we can't return
+    immediately because there may be data to decrypt (in the case we want to
+    decrypt all encrypted cached data) so handle !len later in cleanup.
+    */
+    ; /* do nothing */
+  }
+  else if(!connssl->recv_connection_closed) {
+    /* increase enc buffer in order to fit the requested amount of data */
+    size = connssl->encdata_length - connssl->encdata_offset;
+    if(size < CURL_SCHANNEL_BUFFER_FREE_SIZE ||
+       connssl->encdata_length < min_encdata_length) {
+      reallocated_length = connssl->encdata_offset +
+                           CURL_SCHANNEL_BUFFER_FREE_SIZE;
+      if(reallocated_length < min_encdata_length) {
+        reallocated_length = min_encdata_length;
+      }
+      reallocated_buffer = realloc(connssl->encdata_buffer,
+                                   reallocated_length);
+      if(reallocated_buffer == NULL) {
+        *err = CURLE_OUT_OF_MEMORY;
+        failf(data, "schannel: unable to re-allocate memory");
+        goto cleanup;
+      }
 
-  /* increase buffer in order to fit the requested amount of data */
-  if(connssl->encdata_length - connssl->encdata_offset <
-     CURL_SCHANNEL_BUFFER_FREE_SIZE || connssl->encdata_length < len) {
-    /* increase internal encrypted data buffer */
-    reallocated_length = connssl->encdata_offset +
-                         CURL_SCHANNEL_BUFFER_FREE_SIZE;
-    /* make sure that the requested amount of data fits */
-    if(reallocated_length < len) {
-      reallocated_length = len;
-    }
-    reallocated_buffer = realloc(connssl->encdata_buffer,
-                                 reallocated_length);
-
-    if(reallocated_buffer == NULL) {
-      failf(data, "schannel: unable to re-allocate memory");
-      *err = CURLE_OUT_OF_MEMORY;
-      return -1;
-    }
-    else {
       connssl->encdata_buffer = reallocated_buffer;
       connssl->encdata_length = reallocated_length;
+      size = connssl->encdata_length - connssl->encdata_offset;
+      infof(data, "schannel: encdata_buffer resized %zu\n",
+            connssl->encdata_length);
     }
-  }
 
-  /* read encrypted data from socket */
-  infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
-        connssl->encdata_offset, connssl->encdata_length);
-  size = connssl->encdata_length - connssl->encdata_offset;
-  if(size > 0) {
+    infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
+          connssl->encdata_offset, connssl->encdata_length);
+
+    /* read encrypted data from socket */
     *err = Curl_read_plain(conn->sock[sockindex],
-                  (char *) (connssl->encdata_buffer + connssl->encdata_offset),
+                           (char *)(connssl->encdata_buffer +
+                                    connssl->encdata_offset),
                            size, &nread);
-    /* check for received data */
-    if(*err != CURLE_OK)
-      ret = -1;
-    else {
-      if(nread > 0)
-        /* increase encrypted data buffer offset */
-        connssl->encdata_offset += nread;
-      ret = nread;
+    if(*err) {
+      nread = -1;
+      if(*err == CURLE_AGAIN)
+        infof(data, "schannel: Curl_read_plain returned CURLE_AGAIN\n");
+      else if(*err == CURLE_RECV_ERROR)
+        infof(data, "schannel: Curl_read_plain returned CURLE_RECV_ERROR\n");
+      else
+        infof(data, "schannel: Curl_read_plain returned error %d\n", *err);
+    }
+    else if(nread == 0) {
+      connssl->recv_connection_closed = true;
+      infof(data, "schannel: server closed the connection\n");
+    }
+    else if(nread > 0) {
+      connssl->encdata_offset += (size_t)nread;
+      infof(data, "schannel: encrypted data got %zd\n", nread);
     }
-    infof(data, "schannel: encrypted data got %zd\n", ret);
   }
 
   infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
         connssl->encdata_offset, connssl->encdata_length);
 
-  /* check if we still have some data in our buffers */
+  /* decrypt loop */
   while(connssl->encdata_offset > 0 && sspi_status == SEC_E_OK &&
-        connssl->decdata_offset < len) {
+        (!len || connssl->decdata_offset < len ||
+         connssl->recv_connection_closed)) {
     /* prepare data buffer for DecryptMessage call */
     InitSecBuffer(&inbuf[0], SECBUFFER_DATA, connssl->encdata_buffer,
                   curlx_uztoul(connssl->encdata_offset));
@@ -916,24 +971,16 @@ schannel_recv(struct connectdata *conn, int sockindex,
     InitSecBuffer(&inbuf[1], SECBUFFER_EMPTY, NULL, 0);
     InitSecBuffer(&inbuf[2], SECBUFFER_EMPTY, NULL, 0);
     InitSecBuffer(&inbuf[3], SECBUFFER_EMPTY, NULL, 0);
-
     InitSecBufferDesc(&inbuf_desc, inbuf, 4);
 
     /* http://msdn.microsoft.com/en-us/library/windows/desktop/aa375348.aspx */
     sspi_status = s_pSecFn->DecryptMessage(&connssl->ctxt->ctxt_handle,
                                            &inbuf_desc, 0, NULL);
 
-    /* check if we need more data */
-    if(sspi_status == SEC_E_INCOMPLETE_MESSAGE) {
-      infof(data, "schannel: failed to decrypt data, need more data\n");
-      *err = CURLE_AGAIN;
-      return -1;
-    }
-
     /* check if everything went fine (server may want to renegotiate
        or shutdown the connection context) */
     if(sspi_status == SEC_E_OK || sspi_status == SEC_I_RENEGOTIATE ||
-                                  sspi_status == SEC_I_CONTEXT_EXPIRED) {
+       sspi_status == SEC_I_CONTEXT_EXPIRED) {
       /* check for successfully decrypted data, even before actual
          renegotiation or shutdown of the connection context */
       if(inbuf[1].BufferType == SECBUFFER_DATA) {
@@ -953,21 +1000,18 @@ schannel_recv(struct connectdata *conn, int sockindex,
           }
           reallocated_buffer = realloc(connssl->decdata_buffer,
                                        reallocated_length);
-
           if(reallocated_buffer == NULL) {
-            failf(data, "schannel: unable to re-allocate memory");
             *err = CURLE_OUT_OF_MEMORY;
-            return -1;
-          }
-          else {
-            connssl->decdata_buffer = reallocated_buffer;
-            connssl->decdata_length = reallocated_length;
+            failf(data, "schannel: unable to re-allocate memory");
+            goto cleanup;
           }
+          connssl->decdata_buffer = reallocated_buffer;
+          connssl->decdata_length = reallocated_length;
         }
 
         /* copy decrypted data to internal buffer */
         size = inbuf[1].cbBuffer;
-        if(size > 0) {
+        if(size) {
           memcpy(connssl->decdata_buffer + connssl->decdata_offset,
                  inbuf[1].pvBuffer, size);
           connssl->decdata_offset += size;
@@ -985,83 +1029,151 @@ schannel_recv(struct connectdata *conn, int sockindex,
 
         /* check if the remaining data is less than the total amount
          * and therefore begins after the already processed data
-        */
+         */
         if(connssl->encdata_offset > inbuf[3].cbBuffer) {
           /* move remaining encrypted data forward to the beginning of
              buffer */
           memmove(connssl->encdata_buffer,
                   (connssl->encdata_buffer + connssl->encdata_offset) -
-                    inbuf[3].cbBuffer, inbuf[3].cbBuffer);
+                  inbuf[3].cbBuffer, inbuf[3].cbBuffer);
           connssl->encdata_offset = inbuf[3].cbBuffer;
         }
 
         infof(data, "schannel: encrypted data cached: offset %zu length %zu\n",
               connssl->encdata_offset, connssl->encdata_length);
       }
-      else{
+      else {
         /* reset encrypted buffer offset, because there is no data remaining */
         connssl->encdata_offset = 0;
       }
-    }
 
-    /* check if server wants to renegotiate the connection context */
-    if(sspi_status == SEC_I_RENEGOTIATE) {
-      infof(data, "schannel: remote party requests SSL/TLS renegotiation\n");
-
-      /* begin renegotiation */
-      infof(data, "schannel: renegotiating SSL/TLS connection\n");
-      connssl->state = ssl_connection_negotiating;
-      connssl->connecting_state = ssl_connect_2_writing;
-      result = schannel_connect_common(conn, sockindex, FALSE, &done);
-      if(result)
-        *err = result;
-      else {
-        infof(data, "schannel: SSL/TLS connection renegotiated\n");
+      /* check if server wants to renegotiate the connection context */
+      if(sspi_status == SEC_I_RENEGOTIATE) {
+        infof(data, "schannel: remote party requests renegotiation\n");
+        if(*err && *err != CURLE_AGAIN) {
+          infof(data, "schannel: can't renogotiate, an error is pending\n");
+          goto cleanup;
+        }
+        if(connssl->encdata_offset) {
+          *err = CURLE_RECV_ERROR;
+          infof(data, "schannel: can't renogotiate, "
+                      "encrypted data available\n");
+          goto cleanup;
+        }
+        /* begin renegotiation */
+        infof(data, "schannel: renegotiating SSL/TLS connection\n");
+        connssl->state = ssl_connection_negotiating;
+        connssl->connecting_state = ssl_connect_2_writing;
+        *err = schannel_connect_common(conn, sockindex, FALSE, &done);
+        if(*err) {
+          infof(data, "schannel: renegotiation failed\n");
+          goto cleanup;
+        }
         /* now retry receiving data */
-        return schannel_recv(conn, sockindex, buf, len, err);
+        sspi_status = SEC_E_OK;
+        infof(data, "schannel: SSL/TLS connection renegotiated\n");
+        continue;
+      }
+      /* check if the server closed the connection */
+      else if(sspi_status == SEC_I_CONTEXT_EXPIRED) {
+        /* In Windows 2000 SEC_I_CONTEXT_EXPIRED (close_notify) is not
+           returned so we have to work around that in cleanup. */
+        connssl->recv_sspi_close_notify = true;
+        if(!connssl->recv_connection_closed) {
+          connssl->recv_connection_closed = true;
+          infof(data, "schannel: server closed the connection\n");
+        }
+        goto cleanup;
       }
     }
+    else if(sspi_status == SEC_E_INCOMPLETE_MESSAGE) {
+      if(!*err)
+        *err = CURLE_AGAIN;
+      infof(data, "schannel: failed to decrypt data, need more data\n");
+      goto cleanup;
+    }
+    else {
+      *err = CURLE_RECV_ERROR;
+      infof(data, "schannel: failed to read data from server: %s\n",
+            Curl_sspi_strerror(conn, sspi_status));
+      goto cleanup;
+    }
   }
 
+  infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
+        connssl->encdata_offset, connssl->encdata_length);
+
   infof(data, "schannel: decrypted data buffer: offset %zu length %zu\n",
         connssl->decdata_offset, connssl->decdata_length);
 
-  /* copy requested decrypted data to supplied buffer */
+cleanup:
+  /* Warning- there is no guarantee the encdata state is valid at this point */
+  infof(data, "schannel: schannel_recv cleanup\n");
+
+  /* Error if the connection has closed without a close_notify.
+  Behavior here is a matter of debate. We don't want to be vulnerable to a
+  truncation attack however there's some browser precedent for ignoring the
+  close_notify for compatibility reasons.
+  Additionally, Windows 2000 (v5.0) is a special case since it seems it doesn't
+  return close_notify. In that case if the connection was closed we assume it
+  was graceful (close_notify) since there doesn't seem to be a way to tell.
+  */
+  if(len && !connssl->decdata_offset && connssl->recv_connection_closed &&
+     !connssl->recv_sspi_close_notify) {
+    BOOL isWin2k;
+    ULONGLONG cm;
+    OSVERSIONINFOEX osver;
+
+    memset(&osver, 0, sizeof(osver));
+    osver.dwOSVersionInfoSize = sizeof(osver);
+    osver.dwMajorVersion = 5;
+
+    cm = VerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL);
+    cm = VerSetConditionMask(cm, VER_MINORVERSION, VER_EQUAL);
+    cm = VerSetConditionMask(cm, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
+    cm = VerSetConditionMask(cm, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
+
+    isWin2k = VerifyVersionInfo(&osver,
+                                (VER_MAJORVERSION | VER_MINORVERSION |
+                                 VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR),
+                                cm);
+
+    if(isWin2k && sspi_status == SEC_E_OK)
+      connssl->recv_sspi_close_notify = true;
+    else {
+      *err = CURLE_RECV_ERROR;
+      infof(data, "schannel: server closed abruptly (missing close_notify)\n");
+    }
+  }
+
+  /* Any error other than CURLE_AGAIN is an unrecoverable error. */
+  if(*err && *err != CURLE_AGAIN)
+      connssl->recv_unrecoverable_err = *err;
+
   size = len < connssl->decdata_offset ? len : connssl->decdata_offset;
-  if(size > 0) {
+  if(size) {
     memcpy(buf, connssl->decdata_buffer, size);
-    ret = size;
-
-    /* move remaining decrypted data forward to the beginning of buffer */
     memmove(connssl->decdata_buffer, connssl->decdata_buffer + size,
             connssl->decdata_offset - size);
     connssl->decdata_offset -= size;
 
-    infof(data, "schannel: decrypted data returned %zd\n", size);
+    infof(data, "schannel: decrypted data returned %zu\n", size);
     infof(data, "schannel: decrypted data buffer: offset %zu length %zu\n",
           connssl->decdata_offset, connssl->decdata_length);
-  }
-  else
-    ret = 0;
-
-  /* check if the server closed the connection */
-  if(ret <= 0 && ( /* special check for Windows 2000 Professional */
-      sspi_status == SEC_I_CONTEXT_EXPIRED || (sspi_status == SEC_E_OK &&
-        connssl->encdata_offset > 0 && connssl->encdata_buffer[0] == 0x15))) {
-    infof(data, "schannel: server closed the connection\n");
     *err = CURLE_OK;
-    return 0;
+    return (ssize_t)size;
   }
 
-  /* check if something went wrong and we need to return an error */
-  if(ret < 0 && sspi_status != SEC_E_OK) {
-    infof(data, "schannel: failed to read data from server: %s\n",
-          Curl_sspi_strerror(conn, sspi_status));
-    *err = CURLE_RECV_ERROR;
-    return -1;
-  }
+  if(!*err && !connssl->recv_connection_closed)
+      *err = CURLE_AGAIN;
+
+  /* It's debatable what to return when !len. We could return whatever error we
+  got from decryption but instead we override here so the return is consistent.
+  */
+  if(!len)
+    *err = CURLE_OK;
 
-  return ret;
+  return *err ? -1 : 0;
 }
 
 CURLcode
@@ -1121,7 +1233,7 @@ int Curl_schannel_shutdown(struct connectdata *conn, int sockindex)
     SECURITY_STATUS sspi_status;
     SecBuffer outbuf;
     SecBufferDesc outbuf_desc;
-    CURLcode code;
+    CURLcode result;
     TCHAR *host_name;
     DWORD dwshut = SCHANNEL_SHUTDOWN;
 
@@ -1144,31 +1256,31 @@ int Curl_schannel_shutdown(struct connectdata *conn, int sockindex)
     InitSecBufferDesc(&outbuf_desc, &outbuf, 1);
 
     sspi_status = s_pSecFn->InitializeSecurityContext(
-         &connssl->cred->cred_handle,
-         &connssl->ctxt->ctxt_handle,
-         host_name,
-         connssl->req_flags,
-         0,
-         0,
-         NULL,
-         0,
-         &connssl->ctxt->ctxt_handle,
-         &outbuf_desc,
-         &connssl->ret_flags,
-         &connssl->ctxt->time_stamp);
+      &connssl->cred->cred_handle,
+      &connssl->ctxt->ctxt_handle,
+      host_name,
+      connssl->req_flags,
+      0,
+      0,
+      NULL,
+      0,
+      &connssl->ctxt->ctxt_handle,
+      &outbuf_desc,
+      &connssl->ret_flags,
+      &connssl->ctxt->time_stamp);
 
     Curl_unicodefree(host_name);
 
     if((sspi_status == SEC_E_OK) || (sspi_status == SEC_I_CONTEXT_EXPIRED)) {
       /* send close message which is in output buffer */
       ssize_t written;
-      code = Curl_write_plain(conn, conn->sock[sockindex], outbuf.pvBuffer,
-                              outbuf.cbBuffer, &written);
+      result = Curl_write_plain(conn, conn->sock[sockindex], outbuf.pvBuffer,
+                                outbuf.cbBuffer, &written);
 
       s_pSecFn->FreeContextBuffer(outbuf.pvBuffer);
-      if((code != CURLE_OK) || (outbuf.cbBuffer != (size_t)written)) {
+      if((result != CURLE_OK) || (outbuf.cbBuffer != (size_t) written)) {
         infof(data, "schannel: failed to send close msg: %s"
-              " (bytes written: %zd)\n", curl_easy_strerror(code), written);
+              " (bytes written: %zd)\n", curl_easy_strerror(result), written);
       }
     }
   }
@@ -1218,9 +1330,14 @@ void Curl_schannel_session_free(void *ptr)
 {
   struct curl_schannel_cred *cred = ptr;
 
-  if(cred && cred->cached && cred->refcount == 0) {
-    s_pSecFn->FreeCredentialsHandle(&cred->cred_handle);
-    Curl_safefree(cred);
+  if(cred && cred->cached) {
+    if(cred->refcount == 0) {
+      s_pSecFn->FreeCredentialsHandle(&cred->cred_handle);
+      Curl_safefree(cred);
+    }
+    else {
+      cred->cached = FALSE;
+    }
   }
 }
 
@@ -1288,7 +1405,8 @@ static CURLcode verify_certificate(struct connectdata *conn, int sockindex)
                                 NULL,
                                 pCertContextServer->hCertStore,
                                 &ChainPara,
-                                0,
+                                (data->set.ssl_no_revoke ? 0 :
+                                 CERT_CHAIN_REVOCATION_CHECK_CHAIN),
                                 NULL,
                                 &pChainContext)) {
       failf(data, "schannel: CertGetCertificateChain failed: %s",
@@ -1299,21 +1417,24 @@ static CURLcode verify_certificate(struct connectdata *conn, int sockindex)
 
     if(result == CURLE_OK) {
       CERT_SIMPLE_CHAIN *pSimpleChain = pChainContext->rgpChain[0];
-      DWORD dwTrustErrorMask = ~(DWORD)(CERT_TRUST_IS_NOT_TIME_NESTED|
-                                 CERT_TRUST_REVOCATION_STATUS_UNKNOWN);
+      DWORD dwTrustErrorMask = ~(DWORD)(CERT_TRUST_IS_NOT_TIME_NESTED);
       dwTrustErrorMask &= pSimpleChain->TrustStatus.dwErrorStatus;
       if(dwTrustErrorMask) {
-        if(dwTrustErrorMask & CERT_TRUST_IS_PARTIAL_CHAIN)
+        if(dwTrustErrorMask & CERT_TRUST_IS_REVOKED)
+          failf(data, "schannel: CertGetCertificateChain trust error"
+                " CERT_TRUST_IS_REVOKED");
+        else if(dwTrustErrorMask & CERT_TRUST_IS_PARTIAL_CHAIN)
           failf(data, "schannel: CertGetCertificateChain trust error"
-                      " CERT_TRUST_IS_PARTIAL_CHAIN");
-        if(dwTrustErrorMask & CERT_TRUST_IS_UNTRUSTED_ROOT)
+                " CERT_TRUST_IS_PARTIAL_CHAIN");
+        else if(dwTrustErrorMask & CERT_TRUST_IS_UNTRUSTED_ROOT)
           failf(data, "schannel: CertGetCertificateChain trust error"
-                      " CERT_TRUST_IS_UNTRUSTED_ROOT");
-        if(dwTrustErrorMask & CERT_TRUST_IS_NOT_TIME_VALID)
+                " CERT_TRUST_IS_UNTRUSTED_ROOT");
+        else if(dwTrustErrorMask & CERT_TRUST_IS_NOT_TIME_VALID)
           failf(data, "schannel: CertGetCertificateChain trust error"
-                      " CERT_TRUST_IS_NOT_TIME_VALID");
-        failf(data, "schannel: CertGetCertificateChain error mask: 0x%08x",
-              dwTrustErrorMask);
+                " CERT_TRUST_IS_NOT_TIME_VALID");
+        else
+          failf(data, "schannel: CertGetCertificateChain error mask: 0x%08x",
+                dwTrustErrorMask);
         result = CURLE_PEER_FAILED_VERIFICATION;
       }
     }
@@ -1329,6 +1450,14 @@ static CURLcode verify_certificate(struct connectdata *conn, int sockindex)
       cert_hostname.const_tchar_ptr = cert_hostname_buff;
       hostname.tchar_ptr = Curl_convert_UTF8_to_tchar(conn->host.name);
 
+      /* TODO: Fix this for certificates with multiple alternative names.
+      Right now we're only asking for the first preferred alternative name.
+      Instead we'd need to do all via CERT_NAME_SEARCH_ALL_NAMES_FLAG
+      (if WinCE supports that?) and run this section in a loop for each.
+      https://msdn.microsoft.com/en-us/library/windows/desktop/aa376086.aspx
+      curl: (51) schannel: CertGetNameString() certificate hostname
+      (.google.com) did not match connection (google.com)
+      */
       len = CertGetNameString(pCertContextServer,
                               CERT_NAME_DNS_TYPE,
                               0,
similarity index 96%
rename from lib/vtls/curl_schannel.h
rename to lib/vtls/schannel.h
index 11e83f9..5329584 100644 (file)
@@ -8,7 +8,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2012, Marc Hoersken, <info@marc-hoersken.de>, et al.
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -72,6 +72,7 @@
 #define SECBUFFER_ALERT                 17
 #endif
 
+/* Both schannel buffer sizes must be > 0 */
 #define CURL_SCHANNEL_BUFFER_INIT_SIZE   4096
 #define CURL_SCHANNEL_BUFFER_FREE_SIZE   1024
 
@@ -93,6 +94,9 @@ size_t Curl_schannel_version(char *buffer, size_t size);
 
 int Curl_schannel_random(unsigned char *entropy, size_t length);
 
+/* Set the API backend definition to Schannel */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_SCHANNEL
+
 /* API setup for Schannel */
 #define curlssl_init Curl_schannel_init
 #define curlssl_cleanup Curl_schannel_cleanup
@@ -108,7 +112,6 @@ int Curl_schannel_random(unsigned char *entropy, size_t length);
 #define curlssl_version Curl_schannel_version
 #define curlssl_check_cxn(x) ((void)x, -1)
 #define curlssl_data_pending Curl_schannel_data_pending
-#define CURL_SSL_BACKEND CURLSSLBACKEND_SCHANNEL
 #define curlssl_random(x,y,z) ((void)x, Curl_schannel_random(y,z))
 
 #endif /* USE_SCHANNEL */
index a53ff4a..01bbc61 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "sendf.h"
 #include "rawstr.h"
 #include "url.h"
-#include "curl_memory.h"
 #include "progress.h"
 #include "share.h"
 #include "timeval.h"
 #include "curl_md5.h"
 #include "warnless.h"
 #include "curl_base64.h"
+#include "curl_printf.h"
 
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-/* The last #include file should be: */
+/* The last #include files should be: */
+#include "curl_memory.h"
 #include "memdebug.h"
 
 /* convenience macro to check if this handle is using a shared SSL session */
@@ -278,10 +276,25 @@ void Curl_ssl_cleanup(void)
   }
 }
 
+static bool ssl_prefs_check(struct SessionHandle *data)
+{
+  /* check for CURLOPT_SSLVERSION invalid parameter value */
+  if((data->set.ssl.version < 0)
+     || (data->set.ssl.version >= CURL_SSLVERSION_LAST)) {
+    failf(data, "Unrecognized parameter value passed via CURLOPT_SSLVERSION");
+    return FALSE;
+  }
+  return TRUE;
+}
+
 CURLcode
 Curl_ssl_connect(struct connectdata *conn, int sockindex)
 {
   CURLcode result;
+
+  if(!ssl_prefs_check(conn->data))
+    return CURLE_SSL_CONNECT_ERROR;
+
   /* mark this is being ssl-enabled from here on. */
   conn->ssl[sockindex].use = TRUE;
   conn->ssl[sockindex].state = ssl_connection_negotiating;
@@ -299,6 +312,10 @@ Curl_ssl_connect_nonblocking(struct connectdata *conn, int sockindex,
                              bool *done)
 {
   CURLcode result;
+
+  if(!ssl_prefs_check(conn->data))
+    return CURLE_SSL_CONNECT_ERROR;
+
   /* mark this is being ssl requested from here on. */
   conn->ssl[sockindex].use = TRUE;
 #ifdef curlssl_connect_nonblocking
@@ -465,9 +482,8 @@ CURLcode Curl_ssl_addsessionid(struct connectdata *conn,
   store->sessionid = ssl_sessionid;
   store->idsize = idsize;
   store->age = *general_age;    /* set current age */
-  if(store->name)
     /* free it if there's one already present */
-    free(store->name);
+  free(store->name);
   store->name = clone_host;               /* clone host name */
   store->remote_port = conn->remote_port; /* port number */
 
@@ -758,12 +774,78 @@ CURLcode Curl_pin_peer_pubkey(const char *pinnedpubkey,
   size_t size, pem_len;
   CURLcode pem_read;
   CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+#ifdef curlssl_sha256sum
+  size_t pinkeylen;
+  char *pinkeycopy, *begin_pos, *end_pos;
+  unsigned char *sha256sumdigest = NULL, *expectedsha256sumdigest = NULL;
+#endif
 
   /* if a path wasn't specified, don't pin */
   if(!pinnedpubkey)
     return CURLE_OK;
   if(!pubkey || !pubkeylen)
     return result;
+
+#ifdef curlssl_sha256sum
+  /* only do this if pinnedpubkey starts with "sha256//", length 8 */
+  if(strncmp(pinnedpubkey, "sha256//", 8) == 0) {
+    /* compute sha256sum of public key */
+    sha256sumdigest = malloc(SHA256_DIGEST_LENGTH);
+    if(!sha256sumdigest)
+      return CURLE_OUT_OF_MEMORY;
+    curlssl_sha256sum(pubkey, pubkeylen,
+                      sha256sumdigest, SHA256_DIGEST_LENGTH);
+
+    /* it starts with sha256//, copy so we can modify it */
+    pinkeylen = strlen(pinnedpubkey) + 1;
+    pinkeycopy = malloc(pinkeylen);
+    if(!pinkeycopy) {
+      Curl_safefree(sha256sumdigest);
+      return CURLE_OUT_OF_MEMORY;
+    }
+    memcpy(pinkeycopy, pinnedpubkey, pinkeylen);
+    /* point begin_pos to the copy, and start extracting keys */
+    begin_pos = pinkeycopy;
+    do {
+      end_pos = strstr(begin_pos, ";sha256//");
+      /*
+       * if there is an end_pos, null terminate,
+       * otherwise it'll go to the end of the original string
+       */
+      if(end_pos)
+        end_pos[0] = '\0';
+
+      /* decode base64 pinnedpubkey, 8 is length of "sha256//" */
+      pem_read = Curl_base64_decode(begin_pos + 8,
+                                    &expectedsha256sumdigest, &size);
+      /* if not valid base64, don't bother comparing or freeing */
+      if(!pem_read) {
+        /* compare sha256 digests directly */
+        if(SHA256_DIGEST_LENGTH == size &&
+           !memcmp(sha256sumdigest, expectedsha256sumdigest,
+                   SHA256_DIGEST_LENGTH)) {
+          result = CURLE_OK;
+          Curl_safefree(expectedsha256sumdigest);
+          break;
+        }
+        Curl_safefree(expectedsha256sumdigest);
+      }
+
+      /*
+       * change back the null-terminator we changed earlier,
+       * and look for next begin
+       */
+      if(end_pos) {
+        end_pos[0] = ';';
+        begin_pos = strstr(end_pos, "sha256//");
+      }
+    } while(end_pos && begin_pos);
+    Curl_safefree(sha256sumdigest);
+    Curl_safefree(pinkeycopy);
+    return result;
+  }
+#endif
+
   fp = fopen(pinnedpubkey, "rb");
   if(!fp)
     return result;
@@ -830,10 +912,11 @@ CURLcode Curl_pin_peer_pubkey(const char *pinnedpubkey,
   return result;
 }
 
-void Curl_ssl_md5sum(unsigned char *tmp, /* input */
-                     size_t tmplen,
-                     unsigned char *md5sum, /* output */
-                     size_t md5len)
+#ifndef CURL_DISABLE_CRYPTO_AUTH
+CURLcode Curl_ssl_md5sum(unsigned char *tmp, /* input */
+                         size_t tmplen,
+                         unsigned char *md5sum, /* output */
+                         size_t md5len)
 {
 #ifdef curlssl_md5sum
   curlssl_md5sum(tmp, tmplen, md5sum, md5len);
@@ -843,9 +926,37 @@ void Curl_ssl_md5sum(unsigned char *tmp, /* input */
   (void) md5len;
 
   MD5pw = Curl_MD5_init(Curl_DIGEST_MD5);
+  if(!MD5pw)
+    return CURLE_OUT_OF_MEMORY;
   Curl_MD5_update(MD5pw, tmp, curlx_uztoui(tmplen));
   Curl_MD5_final(MD5pw, md5sum);
 #endif
+  return CURLE_OK;
+}
+#endif
+
+/*
+ * Check whether the SSL backend supports the status_request extension.
+ */
+bool Curl_ssl_cert_status_request(void)
+{
+#ifdef curlssl_cert_status_request
+  return curlssl_cert_status_request();
+#else
+  return FALSE;
+#endif
+}
+
+/*
+ * Check whether the SSL backend supports false start.
+ */
+bool Curl_ssl_false_start(void)
+{
+#ifdef curlssl_false_start
+  return curlssl_false_start();
+#else
+  return FALSE;
+#endif
 }
 
 #endif /* USE_SSL */
index 19ef1cd..2349e5b 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -30,8 +30,8 @@
 #include "polarssl.h"       /* PolarSSL versions */
 #include "axtls.h"          /* axTLS versions */
 #include "cyassl.h"         /* CyaSSL versions */
-#include "curl_schannel.h"  /* Schannel SSPI version */
-#include "curl_darwinssl.h" /* SecureTransport (Darwin) version */
+#include "schannel.h"       /* Schannel SSPI version */
+#include "darwinssl.h"      /* SecureTransport (Darwin) version */
 
 #ifndef MAX_PINNED_PUBKEY_SIZE
 #define MAX_PINNED_PUBKEY_SIZE 1048576 /* 1MB */
 #define MD5_DIGEST_LENGTH 16 /* fixed size */
 #endif
 
+#ifndef SHA256_DIGEST_LENGTH
+#define SHA256_DIGEST_LENGTH 32 /* fixed size */
+#endif
+
 /* see http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04 */
 #define ALPN_HTTP_1_1_LENGTH 8
 #define ALPN_HTTP_1_1 "http/1.1"
@@ -108,17 +112,24 @@ void Curl_ssl_delsessionid(struct connectdata *conn, void *ssl_sessionid);
    in */
 int Curl_ssl_random(struct SessionHandle *data, unsigned char *buffer,
                     size_t length);
-void Curl_ssl_md5sum(unsigned char *tmp, /* input */
-                     size_t tmplen,
-                     unsigned char *md5sum, /* output */
-                     size_t md5len);
+CURLcode Curl_ssl_md5sum(unsigned char *tmp, /* input */
+                         size_t tmplen,
+                         unsigned char *md5sum, /* output */
+                         size_t md5len);
 /* Check pinned public key. */
 CURLcode Curl_pin_peer_pubkey(const char *pinnedpubkey,
                               const unsigned char *pubkey, size_t pubkeylen);
 
+bool Curl_ssl_cert_status_request(void);
+
+bool Curl_ssl_false_start(void);
+
 #define SSL_SHUTDOWN_TIMEOUT 10000 /* ms */
 
 #else
+/* Set the API backend definition to none */
+#define CURL_SSL_BACKEND CURLSSLBACKEND_NONE
+
 /* When SSL support is not present, just define away these function calls */
 #define Curl_ssl_init() 1
 #define Curl_ssl_cleanup() Curl_nop_stmt
@@ -139,7 +150,8 @@ CURLcode Curl_pin_peer_pubkey(const char *pinnedpubkey,
 #define Curl_ssl_connect_nonblocking(x,y,z) CURLE_NOT_BUILT_IN
 #define Curl_ssl_kill_session(x) Curl_nop_stmt
 #define Curl_ssl_random(x,y,z) ((void)x, CURLE_NOT_BUILT_IN)
-#define CURL_SSL_BACKEND CURLSSLBACKEND_NONE
+#define Curl_ssl_cert_status_request() FALSE
+#define Curl_ssl_false_start() FALSE
 #endif
 
 #endif /* HEADER_CURL_VTLS_H */
index 7130d5e..6f55839 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "wildcard.h"
 #include "llist.h"
 #include "fileinfo.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -62,15 +59,10 @@ void Curl_wildcard_dtor(struct WildcardData *wc)
     wc->filelist = NULL;
   }
 
-  if(wc->path) {
-    free(wc->path);
-    wc->path = NULL;
-  }
-
-  if(wc->pattern) {
-    free(wc->pattern);
-    wc->pattern = NULL;
-  }
+  free(wc->path);
+  wc->path = NULL;
+  free(wc->pattern);
+  wc->pattern = NULL;
 
   wc->customptr = NULL;
   wc->state = CURLWC_INIT;
index af08cee..a3dfd64 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,7 +22,8 @@
 
 #include "curl_setup.h"
 
-#if defined(USE_GSKIT) || defined(USE_NSS)
+#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
+    defined(USE_CYASSL)
 
 #include <curl/curl.h>
 #include "urldata.h"
 #include "inet_pton.h"
 #include "curl_base64.h"
 #include "x509asn1.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
+#include "curl_printf.h"
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -212,7 +210,6 @@ static const char * octet2str(const char * beg, const char * end)
 }
 
 static const char * bit2str(const char * beg, const char * end)
-
 {
   /* Convert an ASN.1 bit string to a printable string.
      Return the dynamically allocated string, or NULL if an error occurs. */
@@ -301,8 +298,10 @@ utf8asn1str(char * * to, int type, const char * from, const char * end)
       case 4:
         wc = (wc << 8) | *(const unsigned char *) from++;
         wc = (wc << 8) | *(const unsigned char *) from++;
+        /* fallthrough */
       case 2:
         wc = (wc << 8) | *(const unsigned char *) from++;
+        /* fallthrough */
       default: /* case 1: */
         wc = (wc << 8) | *(const unsigned char *) from++;
       }
@@ -540,8 +539,6 @@ static const char * UTime2str(const char * beg, const char * end)
 
 const char * Curl_ASN1tostr(curl_asn1Element * elem, int type)
 {
-  static const char zero = '\0';
-
   /* Convert an ASN.1 element to a printable string.
      Return the dynamically allocated string, or NULL if an error occurs. */
 
@@ -562,7 +559,7 @@ const char * Curl_ASN1tostr(curl_asn1Element * elem, int type)
   case CURL_ASN1_OCTET_STRING:
     return octet2str(elem->beg, elem->end);
   case CURL_ASN1_NULL:
-    return strdup(&zero);
+    return strdup("");
   case CURL_ASN1_OBJECT_IDENTIFIER:
     return OID2str(elem->beg, elem->end, TRUE);
   case CURL_ASN1_UTC_TIME:
@@ -824,7 +821,7 @@ static void do_pubkey(struct SessionHandle * data, int certnum,
     /* Compute key length. */
     for(q = elem.beg; !*q && q < elem.end; q++)
       ;
-    len = (elem.end - q) * 8;
+    len = (unsigned long)((elem.end - q) * 8);
     if(len)
       for(i = *(unsigned char *) q; !(i & 0x80); i <<= 1)
         len--;
@@ -1027,7 +1024,7 @@ CURLcode Curl_extract_certinfo(struct connectdata * conn,
   return CURLE_OK;
 }
 
-#endif /* USE_GSKIT or USE_NSS */
+#endif /* USE_GSKIT or USE_NSS or USE_GNUTLS or USE_CYASSL */
 
 #if defined(USE_GSKIT)
 
@@ -1119,8 +1116,7 @@ CURLcode Curl_verifyhost(struct connectdata * conn,
           if(len > 0)
             if(strlen(dnsname) == (size_t) len)
               i = Curl_cert_hostcheck((const char *) dnsname, conn->host.name);
-          if(dnsname)
-            free(dnsname);
+          free(dnsname);
           if(!i)
             return CURLE_PEER_FAILED_VERIFICATION;
           matched = i;
index 075c424..eb23e50 100644 (file)
@@ -8,7 +8,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -25,7 +25,8 @@
 
 #include "curl_setup.h"
 
-#if defined(USE_GSKIT) || defined(USE_NSS)
+#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
+    defined(USE_CYASSL)
 
 #include "urldata.h"
 
@@ -127,5 +128,5 @@ CURLcode Curl_extract_certinfo(struct connectdata * conn, int certnum,
 CURLcode Curl_verifyhost(struct connectdata * conn,
                          const char * beg, const char * end);
 
-#endif /* USE_GSKIT or USE_NSS */
+#endif /* USE_GSKIT or USE_NSS or USE_GNUTLS or USE_CYASSL */
 #endif /* HEADER_CURL_X509ASN1_H */
index 44b018e..05c2d4b 100644 (file)
@@ -316,6 +316,42 @@ dnl     AC_MSG_ERROR([options --enable-ares and --enable-threads are mutually ex
 dnl   fi
 dnl ])
 
+dnl CURL_CHECK_OPTION_RT
+dnl -------------------------------------------------
+dnl Verify if configure has been involed with option
+dnl --disable-rt and set shell variable dontwant_rt
+dnl as appropriate.
+
+AC_DEFUN([CURL_CHECK_OPTION_RT], [
+  AC_BEFORE([$0], [CURL_CHECK_LIB_THREADS])dnl
+  AC_MSG_CHECKING([whether to disable dependency on -lrt])
+  OPT_RT="default"
+  AC_ARG_ENABLE(rt,
+ AC_HELP_STRING([--disable-rt],[disable dependency on -lrt]),
+  OPT_RT=$enableval)
+  case "$OPT_RT" in
+    no)
+      dnl --disable-rt used (reverse logic)
+      dontwant_rt="yes"
+      AC_MSG_RESULT([yes])
+      ;;
+    default)
+      dnl configure option not specified (so not disabled)
+      dontwant_rt="no"
+      AC_MSG_RESULT([(assumed no)]
+      ;;
+    *)
+      dnl --enable-rt option used (reverse logic)
+      dontwant_rt="no"
+      AC_MSG_RESULT([no])
+      ;;
+  esac
+  dnl TODO: may require mutual exclusion
+  if test "$dontwant_rt" = "yes" && test "$want_thres" = "yes" ; then
+    AC_MSG_ERROR([options --disable-rt and --enable-thread-resolver are mutually exclusive, at most one can be selected.])
+  fi
+])
 
 dnl CURL_CHECK_OPTION_WARNINGS
 dnl -------------------------------------------------
index cd9074b..5f5f87a 100644 (file)
@@ -67,6 +67,7 @@ AC_DEFUN([CURL_CHECK_OPENSSL_API_HEADERS], [
     esac
     case $tst_api in
       0x110) tst_show="1.1.0" ;;
+      0x102) tst_show="1.0.2" ;;
       0x101) tst_show="1.0.1" ;;
       0x100) tst_show="1.0.0" ;;
       0x099) tst_show="0.9.9" ;;
@@ -140,6 +141,13 @@ AC_DEFUN([CURL_CHECK_OPENSSL_API_LIBRARY], [
   fi
   if test "$tst_api" = "unknown"; then
     AC_LINK_IFELSE([
+      AC_LANG_FUNC_LINK_TRY([SSL_CONF_CTX_new])
+    ],[
+      tst_api="0x102"
+    ])
+  fi
+  if test "$tst_api" = "unknown"; then
+    AC_LINK_IFELSE([
       AC_LANG_FUNC_LINK_TRY([SSL_renegotiate_abbreviated])
     ],[
       tst_api="0x101"
@@ -210,6 +218,7 @@ AC_DEFUN([CURL_CHECK_OPENSSL_API_LIBRARY], [
   fi
   case $tst_api in
     0x110) tst_show="1.1.0" ;;
+    0x102) tst_show="1.0.2" ;;
     0x101) tst_show="1.0.1" ;;
     0x100) tst_show="1.0.0" ;;
     0x099) tst_show="0.9.9" ;;
diff --git a/maketgz b/maketgz
index 5aba1a3..d80461c 100755 (executable)
--- a/maketgz
+++ b/maketgz
@@ -9,7 +9,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -60,8 +60,9 @@ sed -e 's/^#define LIBCURL_VERSION .*/#define LIBCURL_VERSION "'$libversion'"/g'
 # Replace version number in header file:
 sed 's/#define CURL_VERSION .*/#define CURL_VERSION "'$curlversion'"/g' $CHEADER >$CHEADER.dist
 
-# Generate VC8, VC9, and VC10 versions from the VC6 Makefile versions
-for ver in vc8 vc9 vc10; do
+# Generate VC7, VC8, VC9, VC10, VC11, VC12 and VC14 versions from the VC6
+# Makefile versions
+for ver in vc7 vc8 vc9 vc10 vc11 vc12 vc14; do
   make -f Makefile.dist $ver
   mv src/Makefile.$ver src/Makefile.$ver.dist
   mv lib/Makefile.$ver lib/Makefile.$ver.dist
@@ -128,7 +129,7 @@ echo "make vc-ide"
 make -s vc-ide
 
 echo "produce CHANGES"
-git log --pretty=fuller --no-color --date=short --decorate=full -1000 | ./log2changes.pl > CHANGES.dist
+git log --pretty=fuller --no-color --date=short --decorate=full -1000 | ./scripts/log2changes.pl > CHANGES.dist
 
 ############################################################################
 #
diff --git a/missing b/missing
index a9f9d94..f62bbae 100755 (executable)
--- a/missing
+++ b/missing
@@ -1,7 +1,10 @@
 #! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+# Common wrapper for a few potentially missing GNU programs.
+
+scriptversion=2013-10-28.13; # UTC
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -14,9 +17,7 @@
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # the same distribution terms that you use for the rest of that program.
 
 if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
+  echo 1>&2 "Try '$0 --help' for more information"
   exit 1
 fi
 
-run=:
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
+case $1 in
 
-case "$1" in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  ;;
-esac
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
 
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
 
   -h|--h|--he|--hel|--help)
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
 
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
 
 Options:
   -h, --help      display this help and exit
   -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
 
 Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`curl_config.h.in'
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
+
+Send bug reports to <bug-automake@gnu.org>."
+    exit $?
     ;;
 
   -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing 0.3 - GNU automake"
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
     ;;
 
   -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
+    echo 1>&2 "$0: unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
     exit 1
     ;;
 
-  aclocal)
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf)
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader)
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="curl_config.h"
-    touch_files=
-    for f in $files; do
-      case "$f" in
-      *:*) touch_files="$touch_files "`echo "$f" |
-                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake)
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-          sed 's/\.am$/.in/' |
-          while read f; do touch "$f"; done
-    ;;
-
-  bison|yacc)
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if [ $# -ne 1 ]; then
-        eval LASTARG="\${$#}"
-       case "$LASTARG" in
-       *.y)
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-           if [ -f "$SRCFILE" ]; then
-                cp "$SRCFILE" y.tab.c
-           fi
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-           if [ -f "$SRCFILE" ]; then
-                cp "$SRCFILE" y.tab.h
-           fi
-         ;;
-       esac
-    fi
-    if [ ! -f y.tab.h ]; then
-       echo >y.tab.h
-    fi
-    if [ ! -f y.tab.c ]; then
-       echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex|flex)
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if [ $# -ne 1 ]; then
-        eval LASTARG="\${$#}"
-       case "$LASTARG" in
-       *.l)
-           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-           if [ -f "$SRCFILE" ]; then
-                cp "$SRCFILE" lex.yy.c
-           fi
-         ;;
-       esac
-    fi
-    if [ ! -f lex.yy.c ]; then
-       echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man)
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-        you modified a dependency of a manual page.  You may need the
-        \`Help2man' package in order for those modifications to take
-        effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
-    if test -z "$file"; then
-       file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
-    fi
-    if [ -f "$file" ]; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo ".ab help2man is required to generate this page"
-       exit 1
-    fi
-    ;;
-
-  makeinfo)
-    if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
-       # We have makeinfo, but it failed.
-       exit 1
-    fi
-
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
-    if test -z "$file"; then
-      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
-    fi
-    touch $file
-    ;;
-
-  tar)
-    shift
-    if test -n "$run"; then
-      echo 1>&2 "ERROR: \`tar' requires --run"
-      exit 1
-    fi
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar ${1+"$@"} && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar ${1+"$@"} && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-       case "$firstarg" in
-       *o*)
-           firstarg=`echo "$firstarg" | sed s/o//`
-           tar "$firstarg" ${1+"$@"} && exit 0
-           ;;
-       esac
-       case "$firstarg" in
-       *h*)
-           firstarg=`echo "$firstarg" | sed s/h//`
-           tar "$firstarg" ${1+"$@"} && exit 0
-           ;;
-       esac
-    fi
+esac
 
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
 
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
-         system.  You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequirements for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'autom4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
     ;;
-esac
-
-exit 0
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/mkinstalldirs b/mkinstalldirs
deleted file mode 100755 (executable)
index 55d537f..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-
-scriptversion=2009-04-28.21; # UTC
-
-# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain.
-#
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-nl='
-'
-IFS=" ""       $nl"
-errstatus=0
-dirmode=
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
-
-Create each directory DIR (with mode MODE, if specified), including all
-leading file name components.
-
-Report bugs to <bug-automake@gnu.org>."
-
-# process command line arguments
-while test $# -gt 0 ; do
-  case $1 in
-    -h | --help | --h*)         # -h for help
-      echo "$usage"
-      exit $?
-      ;;
-    -m)                         # -m PERM arg
-      shift
-      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
-      dirmode=$1
-      shift
-      ;;
-    --version)
-      echo "$0 $scriptversion"
-      exit $?
-      ;;
-    --)                         # stop option processing
-      shift
-      break
-      ;;
-    -*)                         # unknown option
-      echo "$usage" 1>&2
-      exit 1
-      ;;
-    *)                          # first non-opt arg
-      break
-      ;;
-  esac
-done
-
-for file
-do
-  if test -d "$file"; then
-    shift
-  else
-    break
-  fi
-done
-
-case $# in
-  0) exit 0 ;;
-esac
-
-# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
-# mkdir -p a/c at the same time, both will detect that a is missing,
-# one will create a, then the other will try to create a and die with
-# a "File exists" error.  This is a problem when calling mkinstalldirs
-# from a parallel make.  We use --version in the probe to restrict
-# ourselves to GNU mkdir, which is thread-safe.
-case $dirmode in
-  '')
-    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-      echo "mkdir -p -- $*"
-      exec mkdir -p -- "$@"
-    else
-      # On NextStep and OpenStep, the 'mkdir' command does not
-      # recognize any option.  It will interpret all options as
-      # directories to create, and then abort because '.' already
-      # exists.
-      test -d ./-p && rmdir ./-p
-      test -d ./--version && rmdir ./--version
-    fi
-    ;;
-  *)
-    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
-       test ! -d ./--version; then
-      echo "mkdir -m $dirmode -p -- $*"
-      exec mkdir -m "$dirmode" -p -- "$@"
-    else
-      # Clean up after NextStep and OpenStep mkdir.
-      for d in ./-m ./-p ./--version "./$dirmode";
-      do
-        test -d $d && rmdir $d
-      done
-    fi
-    ;;
-esac
-
-for file
-do
-  case $file in
-    /*) pathcomp=/ ;;
-    *)  pathcomp= ;;
-  esac
-  oIFS=$IFS
-  IFS=/
-  set fnord $file
-  shift
-  IFS=$oIFS
-
-  for d
-  do
-    test "x$d" = x && continue
-
-    pathcomp=$pathcomp$d
-    case $pathcomp in
-      -*) pathcomp=./$pathcomp ;;
-    esac
-
-    if test ! -d "$pathcomp"; then
-      echo "mkdir $pathcomp"
-
-      mkdir "$pathcomp" || lasterr=$?
-
-      if test ! -d "$pathcomp"; then
-       errstatus=$lasterr
-      else
-       if test ! -z "$dirmode"; then
-         echo "chmod $dirmode $pathcomp"
-         lasterr=
-         chmod "$dirmode" "$pathcomp" || lasterr=$?
-
-         if test ! -z "$lasterr"; then
-           errstatus=$lasterr
-         fi
-       fi
-      fi
-    fi
-
-    pathcomp=$pathcomp/
-  done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
index b898d16..1b8b5de 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = packages/AIX
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -160,6 +169,7 @@ am__define_uniq_tagged_files = \
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -243,7 +253,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -296,6 +306,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -312,7 +323,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -389,7 +399,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/AIX/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign packages/AIX/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -684,6 +693,8 @@ uninstall-am:
        mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
        ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index a8d5ba5..76e6a33 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = packages/AIX/RPM
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs $(srcdir)/curl.spec.in README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES = curl.spec
@@ -125,6 +134,7 @@ am__can_run_installinfo = \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curl.spec.in README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -183,7 +193,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -236,6 +246,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -252,7 +263,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -328,7 +338,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/AIX/RPM/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign packages/AIX/RPM/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -505,6 +514,8 @@ uninstall-am:
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 489dd95..9339d7c 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = packages/EPM
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs $(srcdir)/curl.list.in README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES = curl.list
@@ -125,6 +134,7 @@ am__can_run_installinfo = \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curl.list.in README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -183,7 +193,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -236,6 +246,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -252,7 +263,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -329,7 +339,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/EPM/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign packages/EPM/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -506,6 +515,8 @@ uninstall-am:
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 1ddd000..fa9b565 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = packages/Linux
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -160,6 +169,7 @@ am__define_uniq_tagged_files = \
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -243,7 +253,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -296,6 +306,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -312,7 +323,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -388,7 +398,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Linux/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign packages/Linux/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -683,6 +692,8 @@ uninstall-am:
        mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
        ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 164e0e0..023994b 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -78,9 +88,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = packages/Linux/RPM
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs $(srcdir)/curl.spec.in \
-       $(srcdir)/curl-ssl.spec.in README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -101,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES = curl.spec curl-ssl.spec
@@ -126,6 +134,8 @@ am__can_run_installinfo = \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curl-ssl.spec.in \
+       $(srcdir)/curl.spec.in README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -184,7 +194,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -237,6 +247,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -253,7 +264,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -329,7 +339,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Linux/RPM/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign packages/Linux/RPM/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -508,6 +517,8 @@ uninstall-am:
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 7bbde3d..0d49b63 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = packages
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -160,6 +169,7 @@ am__define_uniq_tagged_files = \
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -243,7 +253,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -296,6 +306,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -312,7 +323,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -420,7 +430,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign packages/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -715,6 +724,8 @@ uninstall-am:
        mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
        ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 99b606c..269ead3 100644 (file)
@@ -93,12 +93,14 @@ options:
         CURLOPT_PROXYPASSWORD
         CURLOPT_PROXYUSERNAME
         CURLOPT_PROXYUSERPWD
+        CURLOPT_PROXY_SERVICE_NAME
         CURLOPT_RANDOM_FILE
         CURLOPT_RANGE
         CURLOPT_REFERER
         CURLOPT_RTSP_SESSION_UID
         CURLOPT_RTSP_STREAM_URI
         CURLOPT_RTSP_TRANSPORT
+        CURLOPT_SERVICE_NAME
         CURLOPT_SOCKS5_GSSAPI_SERVICE
         CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 Note: SSH not available on OS400.
         CURLOPT_SSH_KNOWNHOSTS          Note: SSH not available on OS400.
@@ -146,7 +148,7 @@ parameter/array boundary.
   Please note that CURLFORM_PTRCONTENTS and CURLFORM_BUFFERPTR are considered
 unconvertible strings and thus are NOT followed by a CCSID.
 
-_ curl_easy_getinfo_ccsid
+_ curl_easy_getinfo_ccsid()
   The following options are followed by a 'char * *' and a CCSID. Unlike
 curl_easy_getinfo(), the value returned in the pointer should be freed after
 use:
@@ -167,6 +169,14 @@ CCSID. Returned structures sould be free'ed using curl_certinfo_free_all() after
 use.
   Other options are processed like in curl_easy_getinfo().
 
+_ curl_pushheader_bynum_cssid() and curl_pushheader_byname_ccsid()
+  Although the prototypes are self-explanatory, the returned string pointer
+should be freed after use, as opposite to the non-ccsid versions of these
+procedures.
+  Please note that HTTP2 is not (yet) implemented on OS/400, thus these
+functions will always return NULL.
+
+
   Standard compilation environment does support neither autotools nor make;
 in fact, very few common utilities are available. As a consequence, the
 config-os400.h has been coded manually and the compilation scripts are
@@ -263,14 +273,14 @@ _ Do not use original source include files unless you know what you are doing.
 ILE/RPG support:
 
   Since 95% of the OS/400 programmers use ILE/RPG exclusively, a definition
-  /COPY member is provided for this language. To include all libcurl
+  /INCLUDE member is provided for this language. To include all libcurl
   definitions in an ILE/RPG module, line
 
      h bnddir('CURL/CURL')
 
 must figure in the program header, and line
 
-     d/copy curl/h,curl.inc
+     d/include curl/h,curl.inc
 
 in the global data section of the module's source code.
 
index d0e6827..7b76071 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -1154,12 +1154,14 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
   case CURLOPT_PROXYPASSWORD:
   case CURLOPT_PROXYUSERNAME:
   case CURLOPT_PROXYUSERPWD:
+  case CURLOPT_PROXY_SERVICE_NAME:
   case CURLOPT_RANDOM_FILE:
   case CURLOPT_RANGE:
   case CURLOPT_REFERER:
   case CURLOPT_RTSP_SESSION_ID:
   case CURLOPT_RTSP_STREAM_URI:
   case CURLOPT_RTSP_TRANSPORT:
+  case CURLOPT_SERVICE_NAME:
   case CURLOPT_SOCKS5_GSSAPI_SERVICE:
   case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5:
   case CURLOPT_SSH_KNOWNHOSTS:
@@ -1193,10 +1195,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
       }
 
     result = curl_easy_setopt(curl, tag, s);
-
-    if(s)
-      free(s);
-
+    free(s);
     break;
 
   case CURLOPT_COPYPOSTFIELDS:
@@ -1279,3 +1278,42 @@ curl_form_long_value(long value)
 
   return (char *) value;
 }
+
+
+char *
+curl_pushheader_bynum_cssid(struct curl_pushheaders *h,
+                            size_t num, unsigned int ccsid)
+
+{
+  char *d = (char *) NULL;
+  char *s = curl_pushheader_bynum(h, num);
+
+  if(s)
+    d = dynconvert(ccsid, s, -1, ASCII_CCSID);
+
+  return d;
+}
+
+
+char *
+curl_pushheader_byname_ccsid(struct curl_pushheaders *h, const char *header,
+                             unsigned int ccsidin, unsigned int ccsidout)
+
+{
+  char *d = (char *) NULL;
+  char *s;
+
+  if(header) {
+    header = dynconvert(ASCII_CCSID, header, -1, ccsidin);
+
+    if(header) {
+      s = curl_pushheader_byname(h, header);
+      free((char *) header);
+
+      if(s)
+        d = dynconvert(ccsidout, s, -1, ASCII_CCSID);
+    }
+  }
+
+  return d;
+}
index 3d1fe79..cb15cce 100644 (file)
@@ -61,5 +61,11 @@ CURL_EXTERN int curl_formget_ccsid(struct curl_httppost * form, void * arg,
                                    unsigned int ccsid);
 CURL_EXTERN CURLcode curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...);
 CURL_EXTERN void curl_certinfo_free_all(struct curl_certinfo *info);
+CURL_EXTERN char *curl_pushheader_bynum_cssid(struct curl_pushheaders *h,
+                                              size_t num, unsigned int ccsid);
+CURL_EXTERN char *curl_pushheader_byname_ccsid(struct curl_pushheaders *h,
+                                               const char *header,
+                                               unsigned int ccsidin,
+                                               unsigned int ccsidout);
 
 #endif
index fcbf7c7..1221015 100644 (file)
@@ -5,7 +5,7 @@
       *                            | (__| |_| |  _ <| |___
       *                             \___|\___/|_| \_\_____|
       *
-      * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+      * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
       *
       * This software is licensed as described in the file COPYING, which
       * you should have received as part of this distribution. The terms
      d                 c                   2
      d CURL_HTTP_VERSION_2_0...
      d                 c                   3
+     d CURL_HTTP_VERSION_2...
+     d                 c                   3
       *
      d CURL_NETRC_IGNORED...
      d                 c                   0
      d CURL_CSELECT_ERR...
      d                 c                   X'00000004'
       *
+     d CURL_PUSH_OK    c                   0
+     d CURL_PUSH_DENY  c                   1
+      *
      d CURLPAUSE_RECV  c                   X'00000001'
      d CURLPAUSE_RECV_CONT...
      d                 c                   X'00000000'
      d                 c                   89
      d  CURLE_SSL_PINNEDPUBKEYNOTMATCH...
      d                 c                   90
+     d  CURLE_SSL_INVALIDCERTSTATUS...
+     d                 c                   91
       *
       /if not defined(CURL_NO_OLDIES)
      d  CURLE_URL_MALFORMAT_USER...
      d                 c                   3
       *
      d CURLSSLOPT_ALLOW_BEAST...
-     d                 c                   1
+     d                 c                   X'0001'
+     d CURLSSLOPT_NO_REVOKE...
+     d                 c                   X'0002'
       *
       /if not defined(CURL_NO_OLDIES)
      d curl_ftpssl     s                   like(curl_usessl)
      d                 c                   10230
      d  CURLOPT_UNIX_SOCKET_PATH...
      d                 c                   10231
+     d  CURLOPT_SSL_VERIFYSTATUS...
+     d                 c                   00232
+     d  CURLOPT_SSL_FALSESTART...
+     d                 c                   00233
+     d  CURLOPT_PATH_AS_IS...
+     d                 c                   00234
+     d  CURLOPT_PROXY_SERVICE_NAME...
+     d                 c                   10235
+     d  CURLOPT_SERVICE_NAME...
+     d                 c                   10236
+     d  CURLOPT_PIPEWAIT...
+     d                 c                   00237
       *
       /if not defined(CURL_NO_OLDIES)
      d  CURLOPT_FILE   c                   10001
      d                 c                   10012
      d  CURLMOPT_MAX_TOTAL_CONNECTIONS...
      d                 c                   00013
+     d  CURLMOPT_PUSHFUNCTION...
+     d                 c                   20014
+     d  CURLMOPT_PUSHDATA...
+     d                 c                   10015
+      *
+      * Bitmask bits for CURLMOPT_PIPELING.
+      *
+     d CURLPIPE_NOTHING...
+     d                 c                   x'00000000'
+     d CURLPIPE_HTTP1  c                   x'00000001'
+     d CURLPIPE_MULTIPLEX...
+     d                 c                   x'00000002'
       *
       *  Public API enums for RTSP requests.
       *
      d curl_socket_callback...
      d                 s               *   based(######ptr######) procptr
       *
+     d curl_multi_timer_callback...
+     d                 s               *   based(######ptr######) procptr
+      *
+     d curl_push_callback...
+     d                 s               *   based(######ptr######) procptr
+      *
      d curl_opensocket_callback...
      d                 s               *   based(######ptr######) procptr
       *
      d                 pr              *   extproc('curl_multi_strerror')       char *
      d  code                               value like(CURLMcode)
       *
+     d curl_pushheader_bynum...
+     d                 pr              *   extproc('curl_pushheader_bynum')     char *
+     d  h                              *   value                                curl_pushheaders *
+     d  num                          10u 0 value
+      *
+     d curl_pushheader_byname...
+     d                 pr              *   extproc('curl_pushheader_byname')    char *
+     d  h                              *   value                                curl_pushheaders *
+     d  header                         *   value options(*string)               const char *
+      *
      d curl_multi_socket...
      d                 pr                  extproc('curl_multi_socket')
      d                                     like(CURLMcode)
      d  objectarg                      *   value options(*string: *nopass)
      d  ccsid                        10u 0 value options(*nopass)
       *
+     d curl_pushheader_bynum_ccsid...
+     d                 pr              *   extproc(                             char *
+     d                                       'curl_pushheader_bynum_ccsid')
+     d  h                              *   value                                curl_pushheaders *
+     d  num                          10u 0 value
+     d  ccsid                        10u 0 value
+      *
+     d curl_pushheader_byname_ccsid...
+     d                 pr              *   extproc(                             char *
+     d                                       'curl_pushheader_byname_ccsid')
+     d  h                              *   value                                curl_pushheaders *
+     d  header                         *   value options(*string)               const char *
+     d  ccsidin                      10u 0 value
+     d  ccsidout                     10u 0 value
+      *
       /endif
index d2b6bc9..141d877 100644 (file)
@@ -21,7 +21,7 @@ fi
 #       Create the DOCS source file if it does not exist.
 
 if action_needed "${LIBIFSNAME}/DOCS.FILE"
-then    CMD="CRTSRCPF FILE(${TARGETLIB}/DOCS) RCDLEN(112)"
+then    CMD="CRTSRCPF FILE(${TARGETLIB}/DOCS) RCDLEN(240)"
         CMD="${CMD} CCSID(${TGTCCSID}) TEXT('Documentation texts')"
         system "${CMD}"
 fi
index caeaa95..4be1dea 100644 (file)
@@ -99,9 +99,7 @@ thdbufdestroy(void * private)
     localkey_t i;
 
     for(i = (localkey_t) 0; i < LK_LAST; i++) {
-      if(p->buf)
-        free(p->buf);
-
+      free(p->buf);
       p++;
       }
 
@@ -281,9 +279,7 @@ Curl_getnameinfo_a(const struct sockaddr * sa, curl_socklen_t salen,
 
   if(servname && servnamelen)
     if(!(eservname = malloc(servnamelen))) {
-      if(enodename)
-        free(enodename);
-
+      free(enodename);
       return EAI_MEMORY;
       }
 
@@ -304,12 +300,8 @@ Curl_getnameinfo_a(const struct sockaddr * sa, curl_socklen_t salen,
       }
     }
 
-  if(enodename)
-    free(enodename);
-
-  if(eservname)
-    free(eservname);
-
+  free(enodename);
+  free(eservname);
   return status;
 }
 
@@ -342,9 +334,7 @@ Curl_getaddrinfo_a(const char * nodename, const char * servname,
     i = strlen(servname);
 
     if(!(eservname = malloc(i + 1))) {
-      if(enodename)
-        free(enodename);
-
+      free(enodename);
       return EAI_MEMORY;
       }
 
@@ -353,13 +343,8 @@ Curl_getaddrinfo_a(const char * nodename, const char * servname,
     }
 
   status = getaddrinfo(enodename, eservname, hints, res);
-
-  if(enodename)
-    free(enodename);
-
-  if(eservname)
-    free(eservname);
-
+  free(enodename);
+  free(eservname);
   return status;
 }
 
@@ -886,9 +871,7 @@ Curl_gss_init_sec_context_a(OM_uint32 * minor_status,
                              target_name, mech_type, req_flags, time_req,
                              input_chan_bindings, inp, actual_mech_type,
                              output_token, ret_flags, time_rec);
-
-  if(in.value)
-    free(in.value);
+  free(in.value);
 
   if(rc != GSS_S_COMPLETE || !output_token ||
       !output_token->length || !output_token->value)
@@ -985,9 +968,7 @@ Curl_ldap_simple_bind_s_a(void * ld, char * dn, char * passwd)
     i = strlen(passwd);
 
     if(!(epasswd = malloc(i + 1))) {
-      if(edn)
-        free(edn);
-
+      free(edn);
       return LDAP_NO_MEMORY;
       }
 
@@ -996,13 +977,8 @@ Curl_ldap_simple_bind_s_a(void * ld, char * dn, char * passwd)
     }
 
   i = ldap_simple_bind_s(ld, edn, epasswd);
-
-  if(epasswd)
-    free(epasswd);
-
-  if(edn)
-    free(edn);
-
+  free(epasswd);
+  free(edn);
   return i;
 }
 
@@ -1079,12 +1055,8 @@ Curl_ldap_search_s_a(void * ld, char * base, int scope, char * filter,
     free(eattrs);
     }
 
-  if(efilter)
-    free(efilter);
-
-  if(ebase)
-    free(ebase);
-
+  free(efilter);
+  free(ebase);
   return status;
 }
 
@@ -1112,9 +1084,7 @@ Curl_ldap_get_values_len_a(void * ld, LDAPMessage * entry, const char * attr)
     }
 
   result = ldap_get_values_len(ld, entry, cp);
-
-  if(cp)
-    free(cp);
+  free(cp);
 
   /* Result data are binary in nature, so they haven't been
      converted to EBCDIC. Therefore do not convert. */
index 60a005a..0e43d89 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 #
 #
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -81,8 +91,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = packages/Solaris
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -103,7 +111,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -128,6 +137,7 @@ am__can_run_installinfo = \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -186,7 +196,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -239,6 +249,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -255,7 +266,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -335,7 +345,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Solaris/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign packages/Solaris/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -510,6 +519,8 @@ uninstall-am:
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 package:
        if [ ! -f release ]; then echo 0 > release; fi
index 2419c20..545cdee 100644 (file)
@@ -16,7 +16,7 @@ MACRO       BUILDING_LIBCURL
 MACRO       HAVE_LIBZ
 #endif
 #ifdef ENABLE_SSL
-MACRO       USE_SSLEAY
+MACRO       USE_OPENSSL
 #endif
 
 SOURCEPATH  ../../../lib
@@ -38,9 +38,9 @@ SOURCE \
   vtls/axtls.c idn_win32.c http_negotiate_sspi.c vtls/cyassl.c         \
   http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c     \
   curl_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_ntlm_msgs.c         \
-  curl_sasl.c vtls/curl_schannel.c curl_multibyte.c                    \
-  vtls/curl_darwinssl.c bundles.c conncache.c curl_sasl_sspi.c smb.c   \
-  curl_sasl_gssapi.c curl_endian.c
+  curl_sasl.c vtls/schannel.c curl_multibyte.c vtls/darwinssl.c        \
+  conncache.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c      \
+  curl_endian.c curl_des.c
 
 USERINCLUDE   ../../../lib ../../../include/curl
 #ifdef ENABLE_SSL
index 6e93404..5ef2ae1 100644 (file)
@@ -43,7 +43,6 @@ CFLAGS_CURL += -w
 # use SSL
 # (overrides Curl's lib/config-tpf.h file)
 CFLAGS_CURL += -DUSE_OPENSSL
-CFLAGS_CURL += -DUSE_SSLEAY
 
 # disable all protocols except FTP and HTTP
 # (overrides Curl's lib/config-tpf.h file)
index 9c81836..eb8ec1c 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = packages/Win32
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -160,6 +169,7 @@ am__define_uniq_tagged_files = \
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -243,7 +253,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -296,6 +306,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -312,7 +323,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -389,7 +399,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Win32/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign packages/Win32/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -684,6 +693,8 @@ uninstall-am:
        mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
        ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index eedce11..1b05aee 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = packages/Win32/cygwin
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -125,6 +134,7 @@ am__can_run_installinfo = \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -183,7 +193,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -236,6 +246,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -252,7 +263,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -345,7 +355,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Win32/cygwin/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign packages/Win32/cygwin/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -520,6 +529,8 @@ uninstall-am:
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 cygwinbin:
        rm -rf $(cygwintmp)
index 99e6313..35cd981 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = packages/vms
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -125,6 +134,7 @@ am__can_run_installinfo = \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -183,7 +193,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -236,6 +246,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -252,7 +263,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -364,7 +374,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/vms/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign packages/vms/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -539,6 +548,8 @@ uninstall-am:
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 572b9b8..3b4cd80 100644 (file)
@@ -113,6 +113,7 @@ $! Required product dependencies.
 $!----------------------------------
 $ vmsprd = "DEC"
 $ if base .eqs. "I64VMS" then vmsprd = "HP"
+$ vsiprd = "VSI"
 $!
 $ write pdsc "   software ''vmsprd' ''base' VMS ;"
 $ arch_type = f$getsyi("ARCH_NAME")
@@ -126,8 +127,11 @@ $ if dashver .eqs. "-" then dashver = ""
 $ vmstag = majver + minver + dashver
 $ code = f$extract(0, 1, arch_type)
 $ arch_code = f$extract(0, 1, arch_type)
-$ write pdsc -
- "   if (not <software ''vmsprd' ''base' VMS version minimum ''node_swvers'>) ;"
+$ line_out = -
+ "   if ((not <software ''vsiprd' ''base' VMS version minimum" + -
+ " ''node_swvers'>) and" + -
+ " (not <software ''vmsprd' ''base' VMS version minimum ''node_swvers'>));"
+$ write pdsc line_out
 $ write pdsc "      error NEED_VMS''vmstag';"
 $ write pdsc "   end if;"
 $!
index d7edc46..e21e57c 100644 (file)
@@ -549,7 +549,7 @@ $ if (.not. nossl)
 $ then
 $   if (f$trnlnm("OPENSSL") .nes. "")
 $   then
-$!        cc_defs = cc_defs + ", USE_SSLEAY=1"
+$!        cc_defs = cc_defs + ", USE_OPENSSL=1"
 $        if ((f$trnlnm("SSL$INCLUDE") .nes. "") .and. (.not. nohpssl))
 $        then
 $!          Use HP SSL.
index 960c243..b7e6083 100644 (file)
@@ -173,9 +173,17 @@ $       full_version = f$element(1, " ", hp_ssl_version)
 $       ver_maj = f$element(0, ".", full_version)
 $       ver_min = f$element(1, ".", full_version)
 $       ver_patch = f$element(2, ".", full_version)
+$!      ! ver_patch is typically both a number and some letters
 $       ver_patch_len = f$length(ver_patch)
-$       ver_patchnum = f$extract(0, ver_patch_len - 1, ver_patch)
-$       ver_patchltr = f$extract(ver_patch_len - 1, 1, ver_patch)
+$       ver_patchltr = ""
+$ver_patch_loop:
+$           ver_patchltr_c = f$extract(ver_patch_len - 1, 1, ver_patch)
+$           if ver_patchltr_c .les. "9" then goto ver_patch_loop_end
+$           ver_patchltr = ver_patchltr_c + ver_patchltr
+$           ver_patch_len = ver_patch_len - 1
+$           goto ver_patch_loop
+$ver_patch_loop_end:
+$       ver_patchnum = ver_patch - ver_patchltr
 $       if 'ver_maj' .ge. 0
 $       then
 $           if 'ver_min' .ge. 9
@@ -186,6 +194,7 @@ $                   if ver_patchltr .ges. "w" then use_hp_ssl = 1
 $               endif
 $           endif
 $       endif
+$set nover
 $       if use_hp_ssl .eq. 0
 $       then
 $           write sys$output -
index b45d783..f833028 100644 (file)
@@ -88,6 +88,46 @@ Building with Visual C++
    well as a configuration that includes both, it is recommend that you use the
    all-in-one configuration.
 
+Running DLL based configurations
+================================
+
+   If you are a developer and plan to run the curl tool from Visual Studio (eg
+   you are debugging) with any third-party libraries (such as OpenSSL, wolfSSL
+   or LibSSH2) then you will need to add the search path of these DLLs to the
+   configuration's PATH environment. To do that:
+
+    * Open the 'curl-all.sln' or 'curl.sln' solutions
+
+    * Right-click on the 'curl' project and select Properties
+
+    * Navigate to 'Configuration Properties > Debugging > Environment'
+
+    * Add PATH='Path to DLL';C:\Windows\system32;C:\Windows;
+               C:\Windows\System32\Wbem
+
+   ... where 'Path to DLL` is the configuration specific path. For example the
+   following configurations in Visual Studio 2010 might be:
+   
+   DLL Debug - DLL OpenSSL (Win32):
+   PATH=..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;C:\Windows\system32;
+        C:\Windows;C:\Windows\System32\Wbem
+
+   DLL Debug - DLL OpenSSL (x64):
+   PATH=..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;C:\Windows\system32;
+        C:\Windows;C:\Windows\System32\Wbem
+
+   DLL Debug - DLL wolfSSL (Win32):
+   PATH=..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Debug;C:\Windows\system32;
+        C:\Windows;C:\Windows\System32\Wbem
+
+   DLL Debug - DLL wolfSSL (x64):
+   PATH=..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Debug;C:\Windows\system32;
+        C:\Windows;C:\Windows\System32\Wbem
+
+   If you are using a configuration that uses multiple third-party library DLLs
+   (such as DLL Debug - DLL OpenSSL - DLL LibSSH2) then 'Path to DLL' will need
+   to contain the path to both of these.
+
 Notes
 =====
 
@@ -110,6 +150,16 @@ Notes
    stored in the git repositoty) will need to be modified rather than the
    generated project files that Visual Studio uses.
 
+Legacy Windows and SSL
+======================
+
+   Some of the project configurations allow the use of WinSSL (specifically
+   SChannel from Windows SSPI), the native SSL library in Windows. However,
+   WinSSL in Windows <= XP is unable to connect to servers that no longer
+   support the legacy handshakes and algorithms used by those versions. If
+   you will be using curl in one of those earlier versions of Windows you
+   should choose another SSL backend such as OpenSSL.
+
 TODO
 ====
 
@@ -121,5 +171,6 @@ TODO
    * Generate *.vcxproj.filters files for VC10, VC11 and VC12
    * Add the Test Suite components
    * Support for other development IDEs
+   * Add PATH environment variables for third-party DLLs
 
    Any additional help would be appreciated ;-)
\ No newline at end of file
similarity index 86%
rename from projects/Windows/VC10/curl.sln
rename to projects/Windows/VC10/curl-all.sln
index 4501272..7bd131c 100644 (file)
@@ -1,6 +1,6 @@
 Microsoft Visual Studio Solution File, Format Version 11.00
 # Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
        ProjectSection(ProjectDependencies) = postProject
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
        EndProjectSection
@@ -17,6 +17,8 @@ Global
                DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
                DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
                DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
                DLL Debug|Win32 = DLL Debug|Win32
                DLL Debug|x64 = DLL Debug|x64
                DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -27,6 +29,8 @@ Global
                DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
                DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
                DLL Release|Win32 = DLL Release|Win32
                DLL Release|x64 = DLL Release|x64
                LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -41,6 +45,8 @@ Global
                LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
                LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
                LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
                LIB Debug|Win32 = LIB Debug|Win32
                LIB Debug|x64 = LIB Debug|x64
                LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -55,6 +61,8 @@ Global
                LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
                LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
                LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
                LIB Release|Win32 = LIB Release|Win32
                LIB Release|x64 = LIB Release|x64
        EndGlobalSection
@@ -75,6 +83,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -95,6 +107,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -123,6 +139,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -151,6 +171,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
@@ -171,6 +195,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -191,6 +219,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -219,6 +251,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -247,6 +283,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
index f29eccd..15461ef 100644 (file)
@@ -12,6 +12,8 @@ Global
                DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
                DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
                DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
                DLL Debug|Win32 = DLL Debug|Win32
                DLL Debug|x64 = DLL Debug|x64
                DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -22,6 +24,8 @@ Global
                DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
                DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
                DLL Release|Win32 = DLL Release|Win32
                DLL Release|x64 = DLL Release|x64
                LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -36,6 +40,8 @@ Global
                LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
                LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
                LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
                LIB Debug|Win32 = LIB Debug|Win32
                LIB Debug|x64 = LIB Debug|x64
                LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -50,6 +56,8 @@ Global
                LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
                LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
                LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
                LIB Release|Win32 = LIB Release|Win32
                LIB Release|x64 = LIB Release|x64
        EndGlobalSection
@@ -70,26 +78,34 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -118,6 +134,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -146,6 +166,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
index 5023bf7..ed43a15 100644 (file)
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
       <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>DLL Debug</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
       <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
       <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
       <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <PropertyGroup Label="UserMacros" />\r
   <PropertyGroup>\r
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
     <ClCompile>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
     <Midl>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
     <ClCompile>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <ClCompile>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
     <Midl>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
     <Midl>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\..\..\..\lib\amigaos.c" />\r
     <ClCompile Include="..\..\..\..\lib\asyn-ares.c" />\r
     <ClCompile Include="..\..\..\..\lib\asyn-thread.c" />\r
     <ClCompile Include="..\..\..\..\lib\base64.c" />\r
-    <ClCompile Include="..\..\..\..\lib\bundles.c" />\r
     <ClCompile Include="..\..\..\..\lib\conncache.c" />\r
     <ClCompile Include="..\..\..\..\lib\connect.c" />\r
     <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
     <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_des.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />\r
     <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
     <ClCompile Include="..\..\..\..\lib\x509asn1.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\axtls.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\curl_darwinssl.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\curl_schannel.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\darwinssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\..\..\..\lib\amigaos.h" />\r
     <ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />\r
     <ClInclude Include="..\..\..\..\lib\asyn.h" />\r
-    <ClInclude Include="..\..\..\..\lib\bundles.h" />\r
     <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\conncache.h" />\r
     <ClInclude Include="..\..\..\..\lib\connect.h" />\r
     <ClInclude Include="..\..\..\..\lib\cookie.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_base64.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_des.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_endian.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_ntlm.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_ntlm_msgs.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_printf.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_sec.h" />\r
     <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
     <ClInclude Include="..\..\..\..\lib\x509asn1.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\axtls.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\curl_darwinssl.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\curl_schannel.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\darwinssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
   </ItemGroup>\r
   <ItemGroup>\r
similarity index 86%
rename from projects/Windows/VC10/src/curlsrc.sln
rename to projects/Windows/VC10/src/curl.sln
index 13fc1d3..131f27b 100644 (file)
@@ -1,6 +1,6 @@
 Microsoft Visual Studio Solution File, Format Version 11.00
 # Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -12,6 +12,8 @@ Global
                DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
                DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
                DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
                DLL Debug|Win32 = DLL Debug|Win32
                DLL Debug|x64 = DLL Debug|x64
                DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -22,6 +24,8 @@ Global
                DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
                DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
                DLL Release|Win32 = DLL Release|Win32
                DLL Release|x64 = DLL Release|x64
                LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -36,6 +40,8 @@ Global
                LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
                LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
                LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
                LIB Debug|Win32 = LIB Debug|Win32
                LIB Debug|x64 = LIB Debug|x64
                LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -50,6 +56,8 @@ Global
                LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
                LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
                LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
                LIB Release|Win32 = LIB Release|Win32
                LIB Release|x64 = LIB Release|x64
        EndGlobalSection
@@ -70,6 +78,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -90,6 +102,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -118,6 +134,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -146,6 +166,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
similarity index 81%
rename from projects/Windows/VC10/src/curlsrc.vcxproj
rename to projects/Windows/VC10/src/curl.vcxproj
index d259465..13ee0b5 100644 (file)
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
       <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>DLL Debug</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
       <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
       <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
       <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
   </ItemGroup>\r
   <PropertyGroup Label="Globals">\r
     <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>\r
-    <RootNamespace>curlsrc</RootNamespace>\r
+    <RootNamespace>curl</RootNamespace>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <PropertyGroup Label="UserMacros" />\r
   <PropertyGroup>\r
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(ProjectName)</TargetName>\r
   </PropertyGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
similarity index 86%
rename from projects/Windows/VC11/curl.sln
rename to projects/Windows/VC11/curl-all.sln
index c9085a9..bec0ad8 100644 (file)
@@ -1,6 +1,6 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 2012
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
        ProjectSection(ProjectDependencies) = postProject
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
        EndProjectSection
@@ -17,6 +17,8 @@ Global
                DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
                DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
                DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
                DLL Debug|Win32 = DLL Debug|Win32
                DLL Debug|x64 = DLL Debug|x64
                DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -27,6 +29,8 @@ Global
                DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
                DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
                DLL Release|Win32 = DLL Release|Win32
                DLL Release|x64 = DLL Release|x64
                LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -41,6 +45,8 @@ Global
                LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
                LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
                LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
                LIB Debug|Win32 = LIB Debug|Win32
                LIB Debug|x64 = LIB Debug|x64
                LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -55,6 +61,8 @@ Global
                LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
                LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
                LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
                LIB Release|Win32 = LIB Release|Win32
                LIB Release|x64 = LIB Release|x64
        EndGlobalSection
@@ -75,6 +83,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -95,6 +107,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -123,6 +139,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -151,6 +171,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
@@ -171,6 +195,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -191,6 +219,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -219,6 +251,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -247,6 +283,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
index 9e3b9ed..780dc91 100644 (file)
@@ -12,6 +12,8 @@ Global
                DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
                DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
                DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
                DLL Debug|Win32 = DLL Debug|Win32
                DLL Debug|x64 = DLL Debug|x64
                DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -22,6 +24,8 @@ Global
                DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
                DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
                DLL Release|Win32 = DLL Release|Win32
                DLL Release|x64 = DLL Release|x64
                LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -36,6 +40,8 @@ Global
                LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
                LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
                LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
                LIB Debug|Win32 = LIB Debug|Win32
                LIB Debug|x64 = LIB Debug|x64
                LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -50,6 +56,8 @@ Global
                LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
                LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
                LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
                LIB Release|Win32 = LIB Release|Win32
                LIB Release|x64 = LIB Release|x64
        EndGlobalSection
@@ -70,26 +78,34 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -118,6 +134,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -146,6 +166,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
index 6a13105..714e36a 100644 (file)
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
       <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>DLL Debug</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
       <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
       <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
       <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <PropertyGroup Label="UserMacros" />\r
   <PropertyGroup>\r
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
     <ClCompile>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
     <Midl>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
     <ClCompile>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <ClCompile>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
     <Midl>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
     <Midl>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\..\..\..\lib\amigaos.c" />\r
     <ClCompile Include="..\..\..\..\lib\asyn-ares.c" />\r
     <ClCompile Include="..\..\..\..\lib\asyn-thread.c" />\r
     <ClCompile Include="..\..\..\..\lib\base64.c" />\r
-    <ClCompile Include="..\..\..\..\lib\bundles.c" />\r
     <ClCompile Include="..\..\..\..\lib\conncache.c" />\r
     <ClCompile Include="..\..\..\..\lib\connect.c" />\r
     <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
     <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_des.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />\r
     <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
     <ClCompile Include="..\..\..\..\lib\x509asn1.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\axtls.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\curl_darwinssl.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\curl_schannel.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\darwinssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\..\..\..\lib\amigaos.h" />\r
     <ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />\r
     <ClInclude Include="..\..\..\..\lib\asyn.h" />\r
-    <ClInclude Include="..\..\..\..\lib\bundles.h" />\r
     <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\conncache.h" />\r
     <ClInclude Include="..\..\..\..\lib\connect.h" />\r
     <ClInclude Include="..\..\..\..\lib\cookie.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_base64.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_des.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_endian.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_ntlm.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_ntlm_msgs.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_printf.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_sec.h" />\r
     <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
     <ClInclude Include="..\..\..\..\lib\x509asn1.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\axtls.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\curl_darwinssl.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\curl_schannel.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\darwinssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
   </ItemGroup>\r
   <ItemGroup>\r
similarity index 86%
rename from projects/Windows/VC11/src/curlsrc.sln
rename to projects/Windows/VC11/src/curl.sln
index 88b4f7e..e12253e 100644 (file)
@@ -1,6 +1,6 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 2012
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -12,6 +12,8 @@ Global
                DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
                DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
                DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
                DLL Debug|Win32 = DLL Debug|Win32
                DLL Debug|x64 = DLL Debug|x64
                DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -22,6 +24,8 @@ Global
                DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
                DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
                DLL Release|Win32 = DLL Release|Win32
                DLL Release|x64 = DLL Release|x64
                LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -36,6 +40,8 @@ Global
                LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
                LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
                LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
                LIB Debug|Win32 = LIB Debug|Win32
                LIB Debug|x64 = LIB Debug|x64
                LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -50,6 +56,8 @@ Global
                LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
                LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
                LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
                LIB Release|Win32 = LIB Release|Win32
                LIB Release|x64 = LIB Release|x64
        EndGlobalSection
@@ -70,6 +78,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -90,6 +102,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -118,6 +134,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -146,6 +166,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
similarity index 81%
rename from projects/Windows/VC11/src/curlsrc.vcxproj
rename to projects/Windows/VC11/src/curl.vcxproj
index 297262d..92463c0 100644 (file)
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
       <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>DLL Debug</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
       <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
       <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
       <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
   </ItemGroup>\r
   <PropertyGroup Label="Globals">\r
     <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>\r
-    <RootNamespace>curlsrc</RootNamespace>\r
+    <RootNamespace>curl</RootNamespace>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <PropertyGroup Label="UserMacros" />\r
   <PropertyGroup>\r
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(ProjectName)</TargetName>\r
   </PropertyGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
similarity index 86%
rename from projects/Windows/VC12/curl.sln
rename to projects/Windows/VC12/curl-all.sln
index 57064c4..38b33e6 100644 (file)
@@ -1,6 +1,6 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 2013
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
        ProjectSection(ProjectDependencies) = postProject
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
        EndProjectSection
@@ -17,6 +17,8 @@ Global
                DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
                DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
                DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
                DLL Debug|Win32 = DLL Debug|Win32
                DLL Debug|x64 = DLL Debug|x64
                DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -27,6 +29,8 @@ Global
                DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
                DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
                DLL Release|Win32 = DLL Release|Win32
                DLL Release|x64 = DLL Release|x64
                LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -41,6 +45,8 @@ Global
                LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
                LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
                LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
                LIB Debug|Win32 = LIB Debug|Win32
                LIB Debug|x64 = LIB Debug|x64
                LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -55,6 +61,8 @@ Global
                LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
                LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
                LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
                LIB Release|Win32 = LIB Release|Win32
                LIB Release|x64 = LIB Release|x64
        EndGlobalSection
@@ -75,6 +83,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -95,6 +107,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -123,6 +139,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -151,6 +171,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
@@ -171,6 +195,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -191,6 +219,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -219,6 +251,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -247,6 +283,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
index 6fe2772..860a060 100644 (file)
@@ -12,6 +12,8 @@ Global
                DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
                DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
                DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
                DLL Debug|Win32 = DLL Debug|Win32
                DLL Debug|x64 = DLL Debug|x64
                DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -22,6 +24,8 @@ Global
                DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
                DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
                DLL Release|Win32 = DLL Release|Win32
                DLL Release|x64 = DLL Release|x64
                LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -36,6 +40,8 @@ Global
                LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
                LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
                LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
                LIB Debug|Win32 = LIB Debug|Win32
                LIB Debug|x64 = LIB Debug|x64
                LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -50,6 +56,8 @@ Global
                LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
                LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
                LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
                LIB Release|Win32 = LIB Release|Win32
                LIB Release|x64 = LIB Release|x64
        EndGlobalSection
@@ -70,26 +78,34 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -118,6 +134,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -146,6 +166,10 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
index 739efa2..bab12fb 100644 (file)
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
       <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>DLL Debug</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
       <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
       <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
       <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <PropertyGroup Label="UserMacros" />\r
   <PropertyGroup>\r
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
     <ClCompile>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>Win32</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
       <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
       <HeaderFileName>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
     <Midl>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
     <ClCompile>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <ClCompile>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
     <Midl>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
     <Midl>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ResourceCompile>\r
     <Lib>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Lib>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\..\..\..\lib\amigaos.c" />\r
     <ClCompile Include="..\..\..\..\lib\asyn-ares.c" />\r
     <ClCompile Include="..\..\..\..\lib\asyn-thread.c" />\r
     <ClCompile Include="..\..\..\..\lib\base64.c" />\r
-    <ClCompile Include="..\..\..\..\lib\bundles.c" />\r
     <ClCompile Include="..\..\..\..\lib\conncache.c" />\r
     <ClCompile Include="..\..\..\..\lib\connect.c" />\r
     <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
     <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_des.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />\r
     <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
     <ClCompile Include="..\..\..\..\lib\x509asn1.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\axtls.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\curl_darwinssl.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\curl_schannel.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\darwinssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\..\..\..\lib\amigaos.h" />\r
     <ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />\r
     <ClInclude Include="..\..\..\..\lib\asyn.h" />\r
-    <ClInclude Include="..\..\..\..\lib\bundles.h" />\r
     <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\conncache.h" />\r
     <ClInclude Include="..\..\..\..\lib\connect.h" />\r
     <ClInclude Include="..\..\..\..\lib\cookie.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_base64.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_des.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_endian.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_ntlm.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_ntlm_msgs.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_printf.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />\r
     <ClInclude Include="..\..\..\..\lib\curl_sec.h" />\r
     <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
     <ClInclude Include="..\..\..\..\lib\x509asn1.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\axtls.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\curl_darwinssl.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\curl_schannel.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\darwinssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
   </ItemGroup>\r
   <ItemGroup>\r
similarity index 86%
rename from projects/Windows/VC12/src/curlsrc.sln
rename to projects/Windows/VC12/src/curl.sln
index 292699c..7b5244c 100644 (file)
@@ -1,6 +1,6 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 2013
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -12,6 +12,8 @@ Global
                DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
                DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
                DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
                DLL Debug|Win32 = DLL Debug|Win32
                DLL Debug|x64 = DLL Debug|x64
                DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -22,6 +24,8 @@ Global
                DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
                DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
                DLL Release|Win32 = DLL Release|Win32
                DLL Release|x64 = DLL Release|x64
                LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
@@ -36,6 +40,8 @@ Global
                LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
                LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
                LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
                LIB Debug|Win32 = LIB Debug|Win32
                LIB Debug|x64 = LIB Debug|x64
                LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
@@ -50,6 +56,8 @@ Global
                LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
                LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
                LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
                LIB Release|Win32 = LIB Release|Win32
                LIB Release|x64 = LIB Release|x64
        EndGlobalSection
@@ -70,6 +78,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
@@ -90,6 +102,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
@@ -118,6 +134,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
@@ -146,6 +166,10 @@ Global
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
                {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
similarity index 81%
rename from projects/Windows/VC12/src/curlsrc.vcxproj
rename to projects/Windows/VC12/src/curl.vcxproj
index 7fc0c29..24d0a62 100644 (file)
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
       <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>DLL Debug</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
       <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
       <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
       <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
     <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
       <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
       <Platform>Win32</Platform>\r
   </ItemGroup>\r
   <PropertyGroup Label="Globals">\r
     <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>\r
-    <RootNamespace>curlsrc</RootNamespace>\r
+    <RootNamespace>curl</RootNamespace>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>MultiByte</CharacterSet>\r
     <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
   </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
   <PropertyGroup Label="UserMacros" />\r
   <PropertyGroup>\r
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">curld</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">curl</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(ProjectName)</TargetName>\r
   </PropertyGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ResourceCompile>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
     <Midl>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <Link>\r
       <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
-    <Bscmake>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
-    </Bscmake>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
diff --git a/projects/Windows/VC14/curl-all.sln b/projects/Windows/VC14/curl-all.sln
new file mode 100644 (file)
index 0000000..05820e1
--- /dev/null
@@ -0,0 +1,298 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2015
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+       ProjectSection(ProjectDependencies) = postProject
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
+       EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC14/lib/libcurl.sln b/projects/Windows/VC14/lib/libcurl.sln
new file mode 100644 (file)
index 0000000..cd8afe2
--- /dev/null
@@ -0,0 +1,181 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2015
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC14/lib/libcurl.vcxproj b/projects/Windows/VC14/lib/libcurl.vcxproj
new file mode 100644 (file)
index 0000000..e5fc80e
--- /dev/null
@@ -0,0 +1,2617 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|Win32">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|x64">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|Win32">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|x64">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|Win32">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|x64">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|Win32">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|x64">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid>\r
+    <RootNamespace>libcurl</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\..\..\..\lib\amigaos.c" />\r
+    <ClCompile Include="..\..\..\..\lib\asyn-ares.c" />\r
+    <ClCompile Include="..\..\..\..\lib\asyn-thread.c" />\r
+    <ClCompile Include="..\..\..\..\lib\base64.c" />\r
+    <ClCompile Include="..\..\..\..\lib\conncache.c" />\r
+    <ClCompile Include="..\..\..\..\lib\connect.c" />\r
+    <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
+    <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_des.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_msgs.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_threads.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dict.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dotdot.c" />\r
+    <ClCompile Include="..\..\..\..\lib\easy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\escape.c" />\r
+    <ClCompile Include="..\..\..\..\lib\file.c" />\r
+    <ClCompile Include="..\..\..\..\lib\fileinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\formdata.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ftplistparser.c" />\r
+    <ClCompile Include="..\..\..\..\lib\getenv.c" />\r
+    <ClCompile Include="..\..\..\..\lib\getinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\gopher.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hash.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hmac.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostasyn.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostcheck.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip6.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostsyn.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http2.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_chunks.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_digest.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_negotiate.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_negotiate_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_proxy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\idn_win32.c" />\r
+    <ClCompile Include="..\..\..\..\lib\if2ip.c" />\r
+    <ClCompile Include="..\..\..\..\lib\imap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\inet_ntop.c" />\r
+    <ClCompile Include="..\..\..\..\lib\inet_pton.c" />\r
+    <ClCompile Include="..\..\..\..\lib\krb5.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ldap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\llist.c" />\r
+    <ClCompile Include="..\..\..\..\lib\md4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\md5.c" />\r
+    <ClCompile Include="..\..\..\..\lib\memdebug.c" />\r
+    <ClCompile Include="..\..\..\..\lib\mprintf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\multi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\netrc.c" />\r
+    <ClCompile Include="..\..\..\..\lib\non-ascii.c" />\r
+    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\openldap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\parsedate.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pingpong.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pipeline.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pop3.c" />\r
+    <ClCompile Include="..\..\..\..\lib\progress.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rawstr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rtsp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\security.c" />\r
+    <ClCompile Include="..\..\..\..\lib\select.c" />\r
+    <ClCompile Include="..\..\..\..\lib\sendf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\share.c" />\r
+    <ClCompile Include="..\..\..\..\lib\slist.c" />\r
+    <ClCompile Include="..\..\..\..\lib\smb.c" />\r
+    <ClCompile Include="..\..\..\..\lib\smtp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />\r
+    <ClCompile Include="..\..\..\..\lib\splay.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ssh.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strdup.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strequal.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strerror.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtok.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\telnet.c" />\r
+    <ClCompile Include="..\..\..\..\lib\tftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timeval.c" />\r
+    <ClCompile Include="..\..\..\..\lib\transfer.c" />\r
+    <ClCompile Include="..\..\..\..\lib\url.c" />\r
+    <ClCompile Include="..\..\..\..\lib\version.c" />\r
+    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
+    <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
+    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\axtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\darwinssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\..\..\..\lib\amigaos.h" />\r
+    <ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />\r
+    <ClInclude Include="..\..\..\..\lib\asyn.h" />\r
+    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\conncache.h" />\r
+    <ClInclude Include="..\..\..\..\lib\connect.h" />\r
+    <ClInclude Include="..\..\..\..\lib\content_encoding.h" />\r
+    <ClInclude Include="..\..\..\..\lib\cookie.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_base64.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_des.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_endian.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_hmac.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ldap.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_md4.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_md5.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_memory.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_multibyte.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_core.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_msgs.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_printf.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sec.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup_once.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sspi.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_threads.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curlx.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dict.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dotdot.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easyif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\escape.h" />\r
+    <ClInclude Include="..\..\..\..\lib\file.h" />\r
+    <ClInclude Include="..\..\..\..\lib\fileinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\formdata.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ftplistparser.h" />\r
+    <ClInclude Include="..\..\..\..\lib\getinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\gopher.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hash.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hostcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hostip.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http2.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_chunks.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_digest.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_negotiate.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_proxy.h" />\r
+    <ClInclude Include="..\..\..\..\lib\if2ip.h" />\r
+    <ClInclude Include="..\..\..\..\lib\imap.h" />\r
+    <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />\r
+    <ClInclude Include="..\..\..\..\lib\inet_pton.h" />\r
+    <ClInclude Include="..\..\..\..\lib\llist.h" />\r
+    <ClInclude Include="..\..\..\..\lib\memdebug.h" />\r
+    <ClInclude Include="..\..\..\..\lib\multihandle.h" />\r
+    <ClInclude Include="..\..\..\..\lib\multiif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\netrc.h" />\r
+    <ClInclude Include="..\..\..\..\lib\non-ascii.h" />\r
+    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\parsedate.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pingpong.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pipeline.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pop3.h" />\r
+    <ClInclude Include="..\..\..\..\lib\progress.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rawstr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rtsp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\select.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sendf.h" />\r
+    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />\r
+    <ClInclude Include="..\..\..\..\lib\share.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />\r
+    <ClInclude Include="..\..\..\..\lib\slist.h" />\r
+    <ClInclude Include="..\..\..\..\lib\smb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\smtp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\socks.h" />\r
+    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\splay.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ssh.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strdup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strequal.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strerror.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtok.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\telnet.h" />\r
+    <ClInclude Include="..\..\..\..\lib\tftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timeval.h" />\r
+    <ClInclude Include="..\..\..\..\lib\transfer.h" />\r
+    <ClInclude Include="..\..\..\..\lib\urldata.h" />\r
+    <ClInclude Include="..\..\..\..\lib\url.h" />\r
+    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
+    <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
+    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\axtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\darwinssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>\r
diff --git a/projects/Windows/VC14/src/curl.sln b/projects/Windows/VC14/src/curl.sln
new file mode 100644 (file)
index 0000000..b40c18b
--- /dev/null
@@ -0,0 +1,181 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2015
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC14/src/curl.vcxproj b/projects/Windows/VC14/src/curl.vcxproj
new file mode 100644 (file)
index 0000000..91c090b
--- /dev/null
@@ -0,0 +1,2786 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|Win32">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|x64">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|Win32">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|x64">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|Win32">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|x64">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|Win32">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|x64">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>\r
+    <RootNamespace>curl</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(ProjectName)</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC14\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC14\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rawstr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_binmode.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_bname.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_dbg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_hdr.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_prg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_rea.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_see.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cfgable.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_convert.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_doswin.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_formparse.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_getparam.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_getpass.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_help.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_helpers.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_homedir.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_hugehelp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_libinfo.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_main.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_metalink.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_mfiles.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_msgs.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_operate.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_operhlp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_panykey.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_setopt.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_sleep.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_strdup.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_urlglob.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_util.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_vms.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_writeenv.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_writeout.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_xattr.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rawstr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_binmode.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_bname.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_dbg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_hdr.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_prg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_rea.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_see.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cfgable.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_convert.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_doswin.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_formparse.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_getparam.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_getpass.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_helpers.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_help.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_homedir.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_hugehelp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_libinfo.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_main.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_metalink.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_mfiles.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_msgs.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_operate.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_operhlp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_panykey.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_sdecls.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_setopt.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_setup.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_sleep.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_strdup.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_urlglob.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_util.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_version.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_vms.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_writeenv.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_writeout.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_xattr.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\..\..\..\src\curl.rc" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>\r
similarity index 87%
rename from projects/Windows/VC6/curl.dsw
rename to projects/Windows/VC6/curl-all.dsw
index 0d368d6..a718e59 100644 (file)
@@ -15,7 +15,7 @@ Package=<4>
 \r
 ###############################################################################\r
 \r
-Project: "curlsrc"=".\src\curlsrc.dsp" - Package Owner=<4>\r
+Project: "curl"=".\src\curl.dsp" - Package Owner=<4>\r
 \r
 Package=<5>\r
 {{{\r
index 2c0f531..dbffdfe 100644 (file)
@@ -63,8 +63,8 @@ CFG=libcurl - Win32 LIB Debug
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
 MTL=midl.exe\r
 # ADD BASE MTL /nologo /D "_DEBUG" /win32\r
 # ADD MTL /nologo /D "_DEBUG" /win32\r
@@ -93,8 +93,8 @@ LINK32=link.exe
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
 MTL=midl.exe\r
 # ADD BASE MTL /nologo /D "_DEBUG" /win32\r
 # ADD MTL /nologo /D "_DEBUG" /win32\r
@@ -123,8 +123,8 @@ LINK32=link.exe
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
 MTL=midl.exe\r
 # ADD BASE MTL /nologo /D "_DEBUG" /win32\r
 # ADD MTL /nologo /D "_DEBUG" /win32\r
@@ -153,8 +153,8 @@ LINK32=link.exe
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c\r
 MTL=midl.exe\r
 # ADD BASE MTL /nologo /D "_DEBUG" /win32\r
 # ADD MTL /nologo /D "_DEBUG" /win32\r
@@ -183,8 +183,8 @@ LINK32=link.exe
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
 MTL=midl.exe\r
 # ADD BASE MTL /nologo /D "_DEBUG" /win32\r
 # ADD MTL /nologo /D "_DEBUG" /win32\r
@@ -242,8 +242,8 @@ LINK32=link.exe
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c\r
 MTL=midl.exe\r
 # ADD BASE MTL /nologo /D "NDEBUG" /win32\r
 # ADD MTL /nologo /D "NDEBUG" /win32\r
@@ -272,8 +272,8 @@ LINK32=link.exe
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
 MTL=midl.exe\r
 # ADD BASE MTL /nologo /D "NDEBUG" /win32\r
 # ADD MTL /nologo /D "NDEBUG" /win32\r
@@ -360,8 +360,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\lib"\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
 RSC=rc.exe\r
 # ADD BASE RSC /l 0x409 /d "_DEBUG"\r
 # ADD RSC /l 0x409 /d "_DEBUG"\r
@@ -385,8 +385,8 @@ LIB32=link.exe -lib
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\lib"\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
 RSC=rc.exe\r
 # ADD BASE RSC /l 0x409 /d "_DEBUG"\r
 # ADD RSC /l 0x409 /d "_DEBUG"\r
@@ -410,8 +410,8 @@ LIB32=link.exe -lib
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\lib"\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
 RSC=rc.exe\r
 # ADD BASE RSC /l 0x409 /d "_DEBUG"\r
 # ADD RSC /l 0x409 /d "_DEBUG"\r
@@ -435,8 +435,8 @@ LIB32=link.exe -lib
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\lib"\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c\r
 RSC=rc.exe\r
 # ADD BASE RSC /l 0x409 /d "_DEBUG"\r
 # ADD RSC /l 0x409 /d "_DEBUG"\r
@@ -460,8 +460,8 @@ LIB32=link.exe -lib
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\lib"\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
 RSC=rc.exe\r
 # ADD BASE RSC /l 0x409 /d "_DEBUG"\r
 # ADD RSC /l 0x409 /d "_DEBUG"\r
@@ -485,8 +485,8 @@ LIB32=link.exe -lib
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\lib"\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
 RSC=rc.exe\r
 # ADD BASE RSC /l 0x409 /d "_DEBUG"\r
 # ADD RSC /l 0x409 /d "_DEBUG"\r
@@ -510,8 +510,8 @@ LIB32=link.exe -lib
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\lib"\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
 RSC=rc.exe\r
 # ADD BASE RSC /l 0x409 /d "_DEBUG"\r
 # ADD RSC /l 0x409 /d "_DEBUG"\r
@@ -560,8 +560,8 @@ LIB32=link.exe -lib
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\lib"\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c\r
 RSC=rc.exe\r
 # ADD BASE RSC /l 0x409 /d "NDEBUG"\r
 # ADD RSC /l 0x409 /d "NDEBUG"\r
@@ -585,8 +585,8 @@ LIB32=link.exe -lib
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\lib"\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
 RSC=rc.exe\r
 # ADD BASE RSC /l 0x409 /d "NDEBUG"\r
 # ADD RSC /l 0x409 /d "NDEBUG"\r
@@ -660,8 +660,8 @@ LIB32=link.exe -lib
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\lib"\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c\r
 RSC=rc.exe\r
 # ADD BASE RSC /l 0x409 /d "NDEBUG"\r
 # ADD RSC /l 0x409 /d "NDEBUG"\r
@@ -685,8 +685,8 @@ LIB32=link.exe -lib
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\lib"\r
 # PROP Target_Dir ""\r
 CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
 RSC=rc.exe\r
 # ADD BASE RSC /l 0x409 /d "NDEBUG"\r
 # ADD RSC /l 0x409 /d "NDEBUG"\r
@@ -746,10 +746,6 @@ SOURCE=..\..\..\..\lib\base64.c
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\..\..\lib\bundles.c\r
-# End Source File\r
-# Begin Source File\r
-\r
 SOURCE=..\..\..\..\lib\conncache.c\r
 # End Source File\r
 # Begin Source File\r
@@ -770,6 +766,10 @@ SOURCE=..\..\..\..\lib\curl_addrinfo.c
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=..\..\..\..\lib\curl_des.c\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=..\..\..\..\lib\curl_endian.c\r
 # End Source File\r
 # Begin Source File\r
@@ -1150,15 +1150,11 @@ SOURCE=..\..\..\..\lib\vtls\axtls.c
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\..\..\lib\vtls\curl_darwinssl.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\curl_schannel.c\r
+SOURCE=..\..\..\..\lib\vtls\cyassl.c\r
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\..\..\lib\vtls\cyassl.c\r
+SOURCE=..\..\..\..\lib\vtls\darwinssl.c\r
 # End Source File\r
 # Begin Source File\r
 \r
@@ -1186,6 +1182,10 @@ SOURCE=..\..\..\..\lib\vtls\polarssl_threadlock.c
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=..\..\..\..\lib\vtls\schannel.c\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=..\..\..\..\lib\vtls\vtls.c\r
 # End Source File\r
 # End Group\r
@@ -1206,10 +1206,6 @@ SOURCE=..\..\..\..\lib\asyn.h
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\..\..\lib\bundles.h\r
-# End Source File\r
-# Begin Source File\r
-\r
 SOURCE=..\..\..\..\lib\config-win32.h\r
 # End Source File\r
 # Begin Source File\r
@@ -1238,6 +1234,10 @@ SOURCE=..\..\..\..\lib\curl_base64.h
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=..\..\..\..\lib\curl_des.h\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=..\..\..\..\lib\curl_endian.h\r
 # End Source File\r
 # Begin Source File\r
@@ -1298,6 +1298,10 @@ SOURCE=..\..\..\..\lib\curl_ntlm_wb.h
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=..\..\..\..\lib\curl_printf.h\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=..\..\..\..\lib\curl_rtmp.h\r
 # End Source File\r
 # Begin Source File\r
@@ -1594,15 +1598,11 @@ SOURCE=..\..\..\..\lib\vtls\axtls.h
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\..\..\lib\vtls\curl_darwinssl.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\curl_schannel.h\r
+SOURCE=..\..\..\..\lib\vtls\cyassl.h\r
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\..\..\lib\vtls\cyassl.h\r
+SOURCE=..\..\..\..\lib\vtls\darwinssl.h\r
 # End Source File\r
 # Begin Source File\r
 \r
@@ -1630,6 +1630,10 @@ SOURCE=..\..\..\..\lib\vtls\polarssl_threadlock.h
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=..\..\..\..\lib\vtls\schannel.h\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=..\..\..\..\lib\vtls\vtls.h\r
 # End Source File\r
 # End Group\r
similarity index 85%
rename from projects/Windows/VC6/src/curlsrc.dsp
rename to projects/Windows/VC6/src/curl.dsp
index e13674c..902d168 100644 (file)
@@ -1,46 +1,46 @@
-# Microsoft Developer Studio Project File - Name="curlsrc" - Package Owner=<4>\r
+# Microsoft Developer Studio Project File - Name="curl" - Package Owner=<4>\r
 # Microsoft Developer Studio Generated Build File, Format Version 6.00\r
 # ** DO NOT EDIT **\r
 \r
 # TARGTYPE "Win32 (x86) Console Application" 0x0103\r
 \r
-CFG=curlsrc - Win32 LIB Debug\r
+CFG=curl - Win32 LIB Debug\r
 !MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
 !MESSAGE use the Export Makefile command and run\r
 !MESSAGE \r
-!MESSAGE NMAKE /f "curlsrc.mak".\r
+!MESSAGE NMAKE /f "curl.mak".\r
 !MESSAGE \r
 !MESSAGE You can specify a configuration when running NMAKE\r
 !MESSAGE by defining the macro CFG on the command line. For example:\r
 !MESSAGE \r
-!MESSAGE NMAKE /f "curlsrc.mak" CFG="curlsrc - Win32 LIB Debug"\r
+!MESSAGE NMAKE /f "curl.mak" CFG="curl - Win32 LIB Debug"\r
 !MESSAGE \r
 !MESSAGE Possible choices for configuration are:\r
 !MESSAGE \r
-!MESSAGE "curlsrc - Win32 DLL Debug" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 DLL Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 DLL Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 DLL Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 DLL Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 DLL Release" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 DLL Release DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 DLL Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 DLL Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 DLL Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Debug" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Debug LIB OpenSSL" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Debug LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Release" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Release DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Release LIB OpenSSL" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curlsrc - Win32 LIB Release LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 DLL Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 DLL Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 DLL Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 DLL Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 DLL Release DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 DLL Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 DLL Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 DLL Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Debug LIB OpenSSL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Release DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Release LIB OpenSSL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")\r
 !MESSAGE \r
 \r
 # Begin Project\r
@@ -50,7 +50,7 @@ CFG=curlsrc - Win32 LIB Debug
 CPP=cl.exe\r
 RSC=rc.exe\r
 \r
-!IF  "$(CFG)" == "curlsrc - Win32 DLL Debug"\r
+!IF  "$(CFG)" == "curl - Win32 DLL Debug"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 1\r
@@ -63,8 +63,8 @@ RSC=rc.exe
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\src"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_CONSOLE" /D "_DEBUG" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
 # ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 # ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 BSC32=bscmake.exe\r
@@ -74,7 +74,7 @@ LINK32=link.exe
 # ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug" /fixed:no\r
 # ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Debug DLL OpenSSL"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 DLL Debug DLL OpenSSL"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 1\r
@@ -88,8 +88,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\src"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
 # ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 # ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 BSC32=bscmake.exe\r
@@ -99,7 +99,7 @@ LINK32=link.exe
 # ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no\r
 # ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 1\r
@@ -113,8 +113,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\src"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
 # ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 # ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 BSC32=bscmake.exe\r
@@ -124,7 +124,7 @@ LINK32=link.exe
 # ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no\r
 # ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Debug DLL Windows SSPI"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 DLL Debug DLL Windows SSPI"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 1\r
@@ -138,8 +138,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\src"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
 # ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 # ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 BSC32=bscmake.exe\r
@@ -149,7 +149,7 @@ LINK32=link.exe
 # ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI" /fixed:no\r
 # ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 1\r
@@ -163,8 +163,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\src"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
 # ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 # ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 BSC32=bscmake.exe\r
@@ -174,7 +174,7 @@ LINK32=link.exe
 # ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
 # ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Release"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 DLL Release"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 0\r
@@ -198,7 +198,7 @@ LINK32=link.exe
 # ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release" /fixed:no\r
 # ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Release DLL OpenSSL"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 DLL Release DLL OpenSSL"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 0\r
@@ -223,7 +223,7 @@ LINK32=link.exe
 # ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no\r
 # ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Release DLL OpenSSL DLL LibSSH2"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 0\r
@@ -248,7 +248,7 @@ LINK32=link.exe
 # ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no\r
 # ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Release DLL Windows SSPI"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 DLL Release DLL Windows SSPI"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 0\r
@@ -273,7 +273,7 @@ LINK32=link.exe
 # ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI" /fixed:no\r
 # ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Release DLL Windows SSPI DLL WinIDN"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 0\r
@@ -298,7 +298,7 @@ LINK32=link.exe
 # ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
 # ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 1\r
@@ -311,8 +311,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\src"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_CONSOLE" /D "_DEBUG" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
 # ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 # ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 BSC32=bscmake.exe\r
@@ -322,7 +322,7 @@ LINK32=link.exe
 # ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug\curl.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug" /fixed:no\r
 # ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug DLL OpenSSL"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug DLL OpenSSL"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 1\r
@@ -336,8 +336,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\src"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
 # ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 # ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 BSC32=bscmake.exe\r
@@ -347,7 +347,7 @@ LINK32=link.exe
 # ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /fixed:no\r
 # ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 1\r
@@ -361,8 +361,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\src"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
 # ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 # ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 BSC32=bscmake.exe\r
@@ -372,7 +372,7 @@ LINK32=link.exe
 # ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no\r
 # ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug DLL Windows SSPI"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug DLL Windows SSPI"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 1\r
@@ -386,8 +386,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\src"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
 # ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 # ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 BSC32=bscmake.exe\r
@@ -397,7 +397,7 @@ LINK32=link.exe
 # ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI" /fixed:no\r
 # ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 1\r
@@ -411,8 +411,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\src"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
 # ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 # ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 BSC32=bscmake.exe\r
@@ -422,7 +422,7 @@ LINK32=link.exe
 # ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
 # ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug LIB OpenSSL"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug LIB OpenSSL"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 1\r
@@ -436,8 +436,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\src"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
 # ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 # ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 BSC32=bscmake.exe\r
@@ -447,7 +447,7 @@ LINK32=link.exe
 # ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /fixed:no\r
 # ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 1\r
@@ -461,8 +461,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\src"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
 # ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 # ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
 BSC32=bscmake.exe\r
@@ -472,7 +472,7 @@ LINK32=link.exe
 # ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Debug" /fixed:no\r
 # ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Debug" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 0\r
@@ -496,7 +496,7 @@ LINK32=link.exe
 # ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release" /fixed:no\r
 # ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release DLL OpenSSL"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release DLL OpenSSL"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 0\r
@@ -521,7 +521,7 @@ LINK32=link.exe
 # ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /fixed:no\r
 # ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release DLL OpenSSL DLL LibSSH2"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 0\r
@@ -546,7 +546,7 @@ LINK32=link.exe
 # ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no\r
 # ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release DLL Windows SSPI"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release DLL Windows SSPI"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 0\r
@@ -571,7 +571,7 @@ LINK32=link.exe
 # ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI" /fixed:no\r
 # ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release DLL Windows SSPI DLL WinIDN"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 0\r
@@ -596,7 +596,7 @@ LINK32=link.exe
 # ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
 # ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release LIB OpenSSL"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release LIB OpenSSL"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 0\r
@@ -621,7 +621,7 @@ LINK32=link.exe
 # ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /fixed:no\r
 # ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /fixed:no\r
 \r
-!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release LIB OpenSSL LIB LibSSH2"\r
+!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"\r
 \r
 # PROP BASE Use_MFC 0\r
 # PROP BASE Use_Debug_Libraries 0\r
@@ -650,30 +650,30 @@ LINK32=link.exe
 \r
 # Begin Target\r
 \r
-# Name "curlsrc - Win32 DLL Debug"\r
-# Name "curlsrc - Win32 DLL Debug DLL OpenSSL"\r
-# Name "curlsrc - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"\r
-# Name "curlsrc - Win32 DLL Debug DLL Windows SSPI"\r
-# Name "curlsrc - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"\r
-# Name "curlsrc - Win32 DLL Release"\r
-# Name "curlsrc - Win32 DLL Release DLL OpenSSL"\r
-# Name "curlsrc - Win32 DLL Release DLL OpenSSL DLL LibSSH2"\r
-# Name "curlsrc - Win32 DLL Release DLL Windows SSPI"\r
-# Name "curlsrc - Win32 DLL Release DLL Windows SSPI DLL WinIDN"\r
-# Name "curlsrc - Win32 LIB Debug"\r
-# Name "curlsrc - Win32 LIB Debug DLL OpenSSL"\r
-# Name "curlsrc - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"\r
-# Name "curlsrc - Win32 LIB Debug DLL Windows SSPI"\r
-# Name "curlsrc - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"\r
-# Name "curlsrc - Win32 LIB Debug LIB OpenSSL"\r
-# Name "curlsrc - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"\r
-# Name "curlsrc - Win32 LIB Release"\r
-# Name "curlsrc - Win32 LIB Release DLL OpenSSL"\r
-# Name "curlsrc - Win32 LIB Release DLL OpenSSL DLL LibSSH2"\r
-# Name "curlsrc - Win32 LIB Release DLL Windows SSPI"\r
-# Name "curlsrc - Win32 LIB Release DLL Windows SSPI DLL WinIDN"\r
-# Name "curlsrc - Win32 LIB Release LIB OpenSSL"\r
-# Name "curlsrc - Win32 LIB Release LIB OpenSSL LIB LibSSH2"\r
+# Name "curl - Win32 DLL Debug"\r
+# Name "curl - Win32 DLL Debug DLL OpenSSL"\r
+# Name "curl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"\r
+# Name "curl - Win32 DLL Debug DLL Windows SSPI"\r
+# Name "curl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"\r
+# Name "curl - Win32 DLL Release"\r
+# Name "curl - Win32 DLL Release DLL OpenSSL"\r
+# Name "curl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"\r
+# Name "curl - Win32 DLL Release DLL Windows SSPI"\r
+# Name "curl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"\r
+# Name "curl - Win32 LIB Debug"\r
+# Name "curl - Win32 LIB Debug DLL OpenSSL"\r
+# Name "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"\r
+# Name "curl - Win32 LIB Debug DLL Windows SSPI"\r
+# Name "curl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"\r
+# Name "curl - Win32 LIB Debug LIB OpenSSL"\r
+# Name "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"\r
+# Name "curl - Win32 LIB Release"\r
+# Name "curl - Win32 LIB Release DLL OpenSSL"\r
+# Name "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"\r
+# Name "curl - Win32 LIB Release DLL Windows SSPI"\r
+# Name "curl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"\r
+# Name "curl - Win32 LIB Release LIB OpenSSL"\r
+# Name "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"\r
 # Begin Group "Source Files"\r
 \r
 # PROP Default_Filter ""\r
similarity index 84%
rename from projects/Windows/VC6/src/curlsrc.dsw
rename to projects/Windows/VC6/src/curl.dsw
index 2aec010..a7adbce 100644 (file)
@@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
 \r
 ###############################################################################\r
 \r
-Project: "curlsrc"=".\curlsrc.dsp" - Package Owner=<4>\r
+Project: "curl"=".\curl.dsp" - Package Owner=<4>\r
 \r
 Package=<5>\r
 {{{\r
similarity index 99%
rename from projects/Windows/VC7.1/curl.sln
rename to projects/Windows/VC7.1/curl-all.sln
index 4475c77..fc51b9d 100644 (file)
@@ -1,5 +1,5 @@
 Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
        ProjectSection(ProjectDependencies) = postProject
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
        EndProjectSection
index a7d5bf3..5b750e9 100644 (file)
@@ -23,7 +23,7 @@
                                AdditionalOptions="/EHsc "\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="TRUE"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="TRUE"\r
@@ -81,7 +81,7 @@
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
                                StringPooling="TRUE"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="TRUE"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"\r
                                StringPooling="TRUE"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="TRUE"\r
                                AdditionalOptions="/EHsc "\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
                                StringPooling="TRUE"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="TRUE"\r
                                AdditionalOptions="/EHsc "\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="TRUE"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="TRUE"\r
                                AdditionalOptions="/EHsc "\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="TRUE"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="TRUE"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                RelativePath="..\..\..\..\lib\base64.c">\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\..\lib\bundles.c">\r
-                       </File>\r
-                       <File\r
                                RelativePath="..\..\..\..\lib\conncache.c">\r
                        </File>\r
                        <File\r
                                RelativePath="..\..\..\..\lib\curl_addrinfo.c">\r
                        </File>\r
                        <File\r
+                               RelativePath="..\..\..\..\lib\curl_des.c">\r
+                       </File>\r
+                       <File\r
                                RelativePath="..\..\..\..\lib\curl_endian.c">\r
                        </File>\r
                        <File\r
                                RelativePath="..\..\..\..\lib\asyn.h">\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\..\lib\bundles.h">\r
-                       </File>\r
-                       <File\r
                                RelativePath="..\..\..\..\lib\config-win32.h">\r
                        </File>\r
                        <File\r
                                RelativePath="..\..\..\..\lib\curl_base64.h">\r
                        </File>\r
                        <File\r
+                               RelativePath="..\..\..\..\lib\curl_des.h">\r
+                       </File>\r
+                       <File\r
                                RelativePath="..\..\..\..\lib\curl_endian.h">\r
                        </File>\r
                        <File\r
                                RelativePath="..\..\..\..\lib\curl_ntlm_wb.h">\r
                        </File>\r
                        <File\r
+                               RelativePath="..\..\..\..\lib\curl_printf.h">\r
+                       </File>\r
+                       <File\r
                                RelativePath="..\..\..\..\lib\curl_rtmp.h">\r
                        </File>\r
                        <File\r
                                        RelativePath="..\..\..\..\lib\vtls\axtls.c">\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.c">\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.c">\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\cyassl.c">\r
+                                       RelativePath="..\..\..\..\lib\vtls\darwinssl.c">\r
                                </File>\r
                                <File\r
                                        RelativePath="..\..\..\..\lib\vtls\gskit.c">\r
                                        RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.c">\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\schannel.c">\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\..\..\..\lib\vtls\vtls.c">\r
                                </File>\r
                        </Filter>\r
                                        RelativePath="..\..\..\..\lib\vtls\axtls.h">\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.h">\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.h">\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\cyassl.h">\r
+                                       RelativePath="..\..\..\..\lib\vtls\darwinssl.h">\r
                                </File>\r
                                <File\r
                                        RelativePath="..\..\..\..\lib\vtls\gskit.h">\r
                                        RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.h">\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\schannel.h">\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\..\..\..\lib\vtls\vtls.h">\r
                                </File>\r
                        </Filter>\r
similarity index 98%
rename from projects/Windows/VC7.1/src/curlsrc.sln
rename to projects/Windows/VC7.1/src/curl.sln
index cba3b60..41ebb61 100644 (file)
@@ -1,5 +1,5 @@
 Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
        ProjectSection(ProjectDependencies) = postProject
        EndProjectSection
 EndProject
similarity index 93%
rename from projects/Windows/VC7.1/src/curlsrc.vcproj
rename to projects/Windows/VC7.1/src/curl.vcproj
index 024e9d7..954f0e5 100644 (file)
@@ -2,7 +2,7 @@
 <VisualStudioProject\r
        ProjectType="Visual C++"\r
        Version="7.10"\r
-       Name="curlsrc"\r
+       Name="curl"\r
        SccProjectName=""\r
        SccLocalPath="">\r
        <Platforms>\r
@@ -35,7 +35,7 @@
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release"\r
@@ -90,7 +90,7 @@
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Debug"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Debug"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Release"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Release"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
similarity index 99%
rename from projects/Windows/VC7/curl.sln
rename to projects/Windows/VC7/curl-all.sln
index fb7b89a..b0746d8 100644 (file)
@@ -1,5 +1,5 @@
 Microsoft Visual Studio Solution File, Format Version 7.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
 EndProject
index e3cbba1..ee17474 100644 (file)
@@ -23,7 +23,7 @@
                                AdditionalOptions="/EHsc "\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="TRUE"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="TRUE"\r
@@ -75,7 +75,7 @@
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
                                StringPooling="TRUE"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="TRUE"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"\r
                                StringPooling="TRUE"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="TRUE"\r
                                AdditionalOptions="/EHsc "\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
                                StringPooling="TRUE"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="TRUE"\r
                                AdditionalOptions="/EHsc "\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="TRUE"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="TRUE"\r
                                AdditionalOptions="/EHsc "\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="TRUE"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="TRUE"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                RelativePath="..\..\..\..\lib\base64.c">\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\..\lib\bundles.c">\r
-                       </File>\r
-                       <File\r
                                RelativePath="..\..\..\..\lib\conncache.c">\r
                        </File>\r
                        <File\r
                                RelativePath="..\..\..\..\lib\curl_addrinfo.c">\r
                        </File>\r
                        <File\r
+                               RelativePath="..\..\..\..\lib\curl_des.c">\r
+                       </File>\r
+                       <File\r
                                RelativePath="..\..\..\..\lib\curl_endian.c">\r
                        </File>\r
                        <File\r
                                RelativePath="..\..\..\..\lib\asyn.h">\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\..\lib\bundles.h">\r
-                       </File>\r
-                       <File\r
                                RelativePath="..\..\..\..\lib\config-win32.h">\r
                        </File>\r
                        <File\r
                                RelativePath="..\..\..\..\lib\curl_base64.h">\r
                        </File>\r
                        <File\r
+                               RelativePath="..\..\..\..\lib\curl_des.h">\r
+                       </File>\r
+                       <File\r
                                RelativePath="..\..\..\..\lib\curl_endian.h">\r
                        </File>\r
                        <File\r
                                RelativePath="..\..\..\..\lib\curl_ntlm_wb.h">\r
                        </File>\r
                        <File\r
+                               RelativePath="..\..\..\..\lib\curl_printf.h">\r
+                       </File>\r
+                       <File\r
                                RelativePath="..\..\..\..\lib\curl_rtmp.h">\r
                        </File>\r
                        <File\r
                                        RelativePath="..\..\..\..\lib\vtls\axtls.c">\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.c">\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.c">\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\cyassl.c">\r
+                                       RelativePath="..\..\..\..\lib\vtls\darwinssl.c">\r
                                </File>\r
                                <File\r
                                        RelativePath="..\..\..\..\lib\vtls\gskit.c">\r
                                        RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.c">\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\schannel.c">\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\..\..\..\lib\vtls\vtls.c">\r
                                </File>\r
                        </Filter>\r
                                        RelativePath="..\..\..\..\lib\vtls\axtls.h">\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.h">\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.h">\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\cyassl.h">\r
+                                       RelativePath="..\..\..\..\lib\vtls\darwinssl.h">\r
                                </File>\r
                                <File\r
                                        RelativePath="..\..\..\..\lib\vtls\gskit.h">\r
                                        RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.h">\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\schannel.h">\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\..\..\..\lib\vtls\vtls.h">\r
                                </File>\r
                        </Filter>\r
similarity index 98%
rename from projects/Windows/VC7/src/curlsrc.sln
rename to projects/Windows/VC7/src/curl.sln
index 651c9b2..6955461 100644 (file)
@@ -1,5 +1,5 @@
 Microsoft Visual Studio Solution File, Format Version 7.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
 EndProject
 Global
        GlobalSection(SolutionConfiguration) = preSolution
similarity index 92%
rename from projects/Windows/VC7/src/curlsrc.vcproj
rename to projects/Windows/VC7/src/curl.vcproj
index bab5237..b032c54 100644 (file)
@@ -2,7 +2,7 @@
 <VisualStudioProject\r
        ProjectType="Visual C++"\r
        Version="7.00"\r
-       Name="curlsrc"\r
+       Name="curl"\r
        SccProjectName=""\r
        SccLocalPath="">\r
        <Platforms>\r
@@ -35,7 +35,7 @@
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release"\r
@@ -84,7 +84,7 @@
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Debug"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Debug"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Release"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Release"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                AdditionalOptions="/EHsc "\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
                                Name="VCLinkerTool"\r
                                AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
                                AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="TRUE"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
similarity index 99%
rename from projects/Windows/VC8/curl.sln
rename to projects/Windows/VC8/curl-all.sln
index 0dfbd1a..9e2c22d 100644 (file)
@@ -1,6 +1,6 @@
 Microsoft Visual Studio Solution File, Format Version 9.00
 # Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
        ProjectSection(ProjectDependencies) = postProject
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
        EndProjectSection
index e0cd36c..f844fdf 100644 (file)
@@ -74,20 +74,20 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
index 06ace96..8bfb8e3 100644 (file)
@@ -42,7 +42,6 @@
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
@@ -75,7 +73,6 @@
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                GenerateDebugInformation="true"\r
@@ -94,8 +91,6 @@
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                GenerateDebugInformation="true"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                GenerateDebugInformation="true"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                GenerateDebugInformation="true"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                GenerateDebugInformation="true"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                        >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\..\lib\bundles.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
                                RelativePath="..\..\..\..\lib\conncache.c"\r
                        >\r
                        </File>\r
                        >\r
                        </File>\r
                        <File\r
+                               RelativePath="..\..\..\..\lib\curl_des.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
                                RelativePath="..\..\..\..\lib\curl_endian.c"\r
                        >\r
                        </File>\r
                        >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\..\lib\bundles.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
                                RelativePath="..\..\..\..\lib\config-win32.h"\r
                        >\r
                        </File>\r
                        >\r
                        </File>\r
                        <File\r
+                               RelativePath="..\..\..\..\lib\curl_des.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
                                RelativePath="..\..\..\..\lib\curl_endian.h"\r
                        >\r
                        </File>\r
                        >\r
                        </File>\r
                        <File\r
+                               RelativePath="..\..\..\..\lib\curl_printf.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
                                RelativePath="..\..\..\..\lib\curl_rtmp.h"\r
                        >\r
                        </File>\r
                                >\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.c"\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.c"\r
                                >\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\cyassl.c"\r
+                                       RelativePath="..\..\..\..\lib\vtls\darwinssl.c"\r
                                >\r
                                </File>\r
                                <File\r
                                >\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\schannel.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\..\..\..\lib\vtls\vtls.c"\r
                                >\r
                                </File>\r
                                >\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.h"\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.h"\r
                                >\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\cyassl.h"\r
+                                       RelativePath="..\..\..\..\lib\vtls\darwinssl.h"\r
                                >\r
                                </File>\r
                                <File\r
                                >\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\schannel.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\..\..\..\lib\vtls\vtls.h"\r
                                >\r
                                </File>\r
similarity index 99%
rename from projects/Windows/VC8/src/curlsrc.sln
rename to projects/Windows/VC8/src/curl.sln
index 2e8ad07..0c43cbe 100644 (file)
@@ -1,6 +1,6 @@
 Microsoft Visual Studio Solution File, Format Version 9.00
 # Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
similarity index 86%
rename from projects/Windows/VC8/src/curlsrc.vcproj
rename to projects/Windows/VC8/src/curl.vcproj
index 627bf97..6b3fdae 100644 (file)
@@ -2,9 +2,9 @@
 <VisualStudioProject\r
        ProjectType="Visual C++"\r
        Version="8.00"\r
-       Name="curlsrc"\r
+       Name="curl"\r
        ProjectGUID="{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-       RootNamespace="curlsrc"\r
+       RootNamespace="curl"\r
        >\r
        <Platforms>\r
                <Platform\r
@@ -53,7 +53,6 @@
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
@@ -70,9 +69,8 @@
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="1"\r
@@ -88,8 +86,6 @@
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release"\r
                                SubSystem="1"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release"\r
                                SubSystem="1"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Release"\r
                                SubSystem="1"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Release"\r
                                SubSystem="1"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"\r
                                SubSystem="1"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"\r
                                SubSystem="1"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"\r
                                SubSystem="1"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"\r
                                SubSystem="1"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
                                SubSystem="1"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
similarity index 99%
rename from projects/Windows/VC9/curl.sln
rename to projects/Windows/VC9/curl-all.sln
index 4415186..2007cf7 100644 (file)
@@ -1,6 +1,6 @@
 Microsoft Visual Studio Solution File, Format Version 10.00
 # Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
        ProjectSection(ProjectDependencies) = postProject
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
        EndProjectSection
index acfbaca..a6619d5 100644 (file)
@@ -74,20 +74,20 @@ Global
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
                {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
index d609a54..7f5f81c 100644 (file)
@@ -43,7 +43,6 @@
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="1"\r
                        />\r
@@ -97,8 +92,6 @@
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="1"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="1"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="1"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="1"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="1"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="1"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="1"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="1"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="_DEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="1"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
                                ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="1"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCMIDLTool"\r
                                PreprocessorDefinitions="NDEBUG"\r
                                MkTypLibCompatible="true"\r
-                               SuppressStartupBanner="true"\r
                                TargetEnvironment="3"\r
                                TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
                                HeaderFileName=""\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
                                OutputFile="$(OutDir)\$(ProjectName).dll"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories=""\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                ImportLibrary="$(TargetDir)$(TargetName).lib"\r
                                TargetMachine="17"\r
                        />\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLibrarianTool"\r
                                OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCALinkTool"\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                        >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\..\lib\bundles.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
                                RelativePath="..\..\..\..\lib\conncache.c"\r
                        >\r
                        </File>\r
                        >\r
                        </File>\r
                        <File\r
+                               RelativePath="..\..\..\..\lib\curl_des.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
                                RelativePath="..\..\..\..\lib\curl_endian.c"\r
                        >\r
                        </File>\r
                        >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\..\lib\bundles.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
                                RelativePath="..\..\..\..\lib\config-win32.h"\r
                        >\r
                        </File>\r
                        >\r
                        </File>\r
                        <File\r
+                               RelativePath="..\..\..\..\lib\curl_des.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
                                RelativePath="..\..\..\..\lib\curl_endian.h"\r
                        >\r
                        </File>\r
                        >\r
                        </File>\r
                        <File\r
+                               RelativePath="..\..\..\..\lib\curl_printf.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
                                RelativePath="..\..\..\..\lib\curl_rtmp.h"\r
                        >\r
                        </File>\r
                                >\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.c"\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.c"\r
                                >\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\cyassl.c"\r
+                                       RelativePath="..\..\..\..\lib\vtls\darwinssl.c"\r
                                >\r
                                </File>\r
                                <File\r
                                >\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\schannel.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\..\..\..\lib\vtls\vtls.c"\r
                                >\r
                                </File>\r
                                >\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.h"\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.h"\r
                                >\r
                                </File>\r
                                <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\cyassl.h"\r
+                                       RelativePath="..\..\..\..\lib\vtls\darwinssl.h"\r
                                >\r
                                </File>\r
                                <File\r
                                >\r
                                </File>\r
                                <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\schannel.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
                                        RelativePath="..\..\..\..\lib\vtls\vtls.h"\r
                                >\r
                                </File>\r
similarity index 99%
rename from projects/Windows/VC9/src/curlsrc.sln
rename to projects/Windows/VC9/src/curl.sln
index d673349..0fb0586 100644 (file)
@@ -1,6 +1,6 @@
 Microsoft Visual Studio Solution File, Format Version 10.00
 # Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
similarity index 84%
rename from projects/Windows/VC9/src/curlsrc.vcproj
rename to projects/Windows/VC9/src/curl.vcproj
index d074b79..a3d06e1 100644 (file)
@@ -2,9 +2,9 @@
 <VisualStudioProject\r
        ProjectType="Visual C++"\r
        Version="9.00"\r
-       Name="curlsrc"\r
+       Name="curl"\r
        ProjectGUID="{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-       RootNamespace="curlsrc"\r
+       RootNamespace="curl"\r
        TargetFrameworkVersion="131072"\r
        >\r
        <Platforms>\r
@@ -54,7 +54,6 @@
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
@@ -91,8 +87,6 @@
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Release"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Release"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libeay32.lib ssleay32.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                                DebugInformationFormat="3"\r
                        />\r
                        <Tool\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\curld.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="1"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
                                RuntimeLibrary="2"\r
                                EnableFunctionLevelLinking="true"\r
                                WarningLevel="3"\r
-                               SuppressStartupBanner="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                        <Tool\r
                                Name="VCLinkerTool"\r
                                AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\curl.exe"\r
+                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
                                LinkIncremental="1"\r
-                               SuppressStartupBanner="true"\r
                                AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
                                SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
                                TargetMachine="17"\r
                        />\r
                        <Tool\r
                        />\r
                        <Tool\r
                                Name="VCBscMakeTool"\r
-                               SuppressStartupBanner="true"\r
-                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
                        />\r
                        <Tool\r
                                Name="VCFxCopTool"\r
index 3703a3f..19b7357 100644 (file)
@@ -6,7 +6,7 @@ rem *                             / __| | | | |_) | |
 rem *                            | (__| |_| |  _ <| |___
 rem *                             \___|\___/|_| \_\_____|
 rem *
-rem * Copyright (C) 2012 - 2014, Steve Holme, <steve_holme@hotmail.com>.
+rem * Copyright (C) 2012 - 2015, Steve Holme, <steve_holme@hotmail.com>.
 rem *
 rem * This software is licensed as described in the file COPYING, which
 rem * you should have received as part of this distribution. The terms
@@ -24,13 +24,14 @@ rem ***************************************************************************
 :begin
   rem Check we are running on a Windows NT derived OS
   if not "%OS%" == "Windows_NT" goto nodos
+
+  rem Set our variables
   setlocal
-  
-  rem Display the help
+  set VC_VER=
+  set BUILD_PLATFORM=
+
+  rem Ensure we have the required arguments
   if /i "%~1" == "" goto syntax
-  if /i "%~1" == "-?" goto syntax
-  if /i "%~1" == "-h" goto syntax
-  if /i "%~1" == "-help" goto syntax
 
 :parseArgs
   if "%~1" == "" goto prerequisites
@@ -67,6 +68,10 @@ rem ***************************************************************************
     set VC_VER=12.0
     set VC_DESC=VC12
     set "VC_PATH=Microsoft Visual Studio 12.0\VC"
+  ) else if /i "%~1" == "vc14" (
+    set VC_VER=14.0
+    set VC_DESC=VC14
+    set "VC_PATH=Microsoft Visual Studio 14.0\VC"
   ) else if /i "%~1%" == "x86" (
     set BUILD_PLATFORM=x86
   ) else if /i "%~1%" == "x64" (
@@ -75,6 +80,12 @@ rem ***************************************************************************
     set BUILD_CONFIG=debug
   ) else if /i "%~1%" == "release" (
     set BUILD_CONFIG=release
+  ) else if /i "%~1" == "-?" (
+    goto syntax
+  ) else if /i "%~1" == "-h" (
+    goto syntax
+  ) else if /i "%~1" == "-help" (
+    goto syntax
   ) else (
     if not defined START_DIR (
       set START_DIR=%~1%
@@ -86,6 +97,10 @@ rem ***************************************************************************
   shift & goto parseArgs
 
 :prerequisites
+  rem Compiler and platform are required parameters.
+  if not defined VC_VER goto syntax
+  if not defined BUILD_PLATFORM goto syntax
+
   rem Default the start directory if one isn't specified
   if not defined START_DIR set START_DIR=..\..\openssl
 
@@ -105,6 +120,14 @@ rem ***************************************************************************
   rem Check we have Visual Studio installed
   if not exist "%PF%\%VC_PATH%" goto novc
 
+  rem Check we have Perl installed
+  echo %PATH% | findstr /I /C:"\Perl" 1>nul
+  if errorlevel 1 (
+    if not exist "%SystemDrive%\Perl" (
+      if not exist "%SystemDrive%\Perl64" goto noperl
+    )
+  )
+
   rem Check the start directory exists
   if not exist "%START_DIR%" goto noopenssl
 
@@ -132,6 +155,7 @@ rem ***************************************************************************
     if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM%
     if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64
     if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64
+    if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64
   )
 
 :start
@@ -156,7 +180,7 @@ rem ***************************************************************************
   set OUTDIR=build\Win64\%VC_DESC%
   if not exist %OUTDIR% md %OUTDIR%
 
-  if "%BUILD_CONFIG%" == "release" goto x64release\r
+  if "%BUILD_CONFIG%" == "release" goto x64release
 
 :x64debug
   rem Configuring 64-bit Debug Build
@@ -272,6 +296,7 @@ rem ***************************************************************************
   echo vc10      - Use Visual Studio 2010
   echo vc11      - Use Visual Studio 2012
   echo vc12      - Use Visual Studio 2013
+  echo vc14      - Use Visual Studio 2015
   echo.
   echo Platform:
   echo.
@@ -308,6 +333,11 @@ rem ***************************************************************************
   echo Error: %VC_DESC% is not installed
   goto error
 
+:noperl
+  echo.
+  echo Error: Perl is not installed
+  goto error
+
 :nox64
   echo.
   echo Error: %VC_DESC% does not support 64-bit builds
diff --git a/projects/build-wolfssl.bat b/projects/build-wolfssl.bat
new file mode 100644 (file)
index 0000000..52f714d
--- /dev/null
@@ -0,0 +1,353 @@
+@echo off
+rem ***************************************************************************
+rem *                                  _   _ ____  _
+rem *  Project                     ___| | | |  _ \| |
+rem *                             / __| | | | |_) | |
+rem *                            | (__| |_| |  _ <| |___
+rem *                             \___|\___/|_| \_\_____|
+rem *
+rem * Copyright (C) 2012 - 2015, Steve Holme, <steve_holme@hotmail.com>.
+rem * Copyright (C) 2015, Jay Satiro, <raysatiro@yahoo.com>.
+rem *
+rem * This software is licensed as described in the file COPYING, which
+rem * you should have received as part of this distribution. The terms
+rem * are also available at http://curl.haxx.se/docs/copyright.html.
+rem *
+rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+rem * copies of the Software, and permit persons to whom the Software is
+rem * furnished to do so, under the terms of the COPYING file.
+rem *
+rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+rem * KIND, either express or implied.
+rem *
+rem ***************************************************************************
+
+:begin
+  rem Check we are running on a Windows NT derived OS
+  if not "%OS%" == "Windows_NT" goto nodos
+
+  rem Set our variables
+  setlocal
+  set SUCCESSFUL_BUILDS=
+  set VC_VER=
+  set BUILD_PLATFORM=
+
+  rem Ensure we have the required arguments
+  if /i "%~1" == "" goto syntax
+
+:parseArgs
+  if "%~1" == "" goto prerequisites
+
+  if /i "%~1" == "vc10" (
+    set VC_VER=10.0
+    set VC_DESC=VC10
+    set VC_TOOLSET=v100
+    set "VC_PATH=Microsoft Visual Studio 10.0\VC"
+  ) else if /i "%~1" == "vc11" (
+    set VC_VER=11.0
+    set VC_DESC=VC11
+    set VC_TOOLSET=v110
+    set "VC_PATH=Microsoft Visual Studio 11.0\VC"
+  ) else if /i "%~1" == "vc12" (
+    set VC_VER=12.0
+    set VC_DESC=VC12
+    set VC_TOOLSET=v120
+    set "VC_PATH=Microsoft Visual Studio 12.0\VC"
+  ) else if /i "%~1" == "vc14" (
+    set VC_VER=14.0
+    set VC_DESC=VC14
+    set VC_TOOLSET=v140
+    set "VC_PATH=Microsoft Visual Studio 14.0\VC"
+  ) else if /i "%~1" == "x86" (
+    set BUILD_PLATFORM=x86
+  ) else if /i "%~1" == "x64" (
+    set BUILD_PLATFORM=x64
+  ) else if /i "%~1" == "debug" (
+    set BUILD_CONFIG=debug
+  ) else if /i "%~1" == "release" (
+    set BUILD_CONFIG=release
+  ) else if /i "%~1" == "-?" (
+    goto syntax
+  ) else if /i "%~1" == "-h" (
+    goto syntax
+  ) else if /i "%~1" == "-help" (
+    goto syntax
+  ) else (
+    if not defined START_DIR (
+      set START_DIR=%~1
+    ) else (
+      goto unknown
+    )
+  )
+
+  shift & goto parseArgs
+
+:prerequisites
+  rem Compiler and platform are required parameters.
+  if not defined VC_VER goto syntax
+  if not defined BUILD_PLATFORM goto syntax
+
+  rem Default the start directory if one isn't specified
+  if not defined START_DIR set START_DIR=..\..\wolfssl
+
+  rem Calculate the program files directory
+  if defined PROGRAMFILES (
+    set "PF=%PROGRAMFILES%"
+    set OS_PLATFORM=x86
+  )
+  if defined PROGRAMFILES(x86) (
+    set "PF=%PROGRAMFILES(x86)%"
+    set OS_PLATFORM=x64
+  )
+
+  rem Check we have a program files directory
+  if not defined PF goto nopf
+
+  rem Check we have Visual Studio installed
+  if not exist "%PF%\%VC_PATH%" goto novc
+
+  rem Check the start directory exists
+  if not exist "%START_DIR%" goto nowolfssl
+
+:configure
+  if "%BUILD_PLATFORM%" == "" set BUILD_PLATFORM=%OS_PLATFORM%
+
+  if "%BUILD_PLATFORM%" == "x86" (
+    set VCVARS_PLATFORM=x86
+  ) else if "%BUILD_PLATFORM%" == "x64" (
+    if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM%
+    if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64
+    if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64
+    if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64
+  )
+
+:start
+  echo.
+  call "%PF%\%VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
+
+  echo.
+  set SAVED_PATH=%CD%
+  cd %START_DIR%
+  goto %BUILD_PLATFORM%
+
+:x64
+  rem Calculate our output directory
+  set OUTDIR=build\Win64\%VC_DESC%
+  if not exist %OUTDIR% md %OUTDIR%
+
+  if "%BUILD_CONFIG%" == "release" goto x64release
+
+:x64debug
+  rem Perform 64-bit Debug Build
+
+  call :build Debug x64
+  if errorlevel 1 goto error
+
+  call :build "DLL Debug" x64
+  if errorlevel 1 goto error
+
+  if "%BUILD_CONFIG%" == "debug" goto success
+
+:x64release
+  rem Perform 64-bit Release Build
+
+  call :build Release x64
+  if errorlevel 1 goto error
+
+  call :build "DLL Release" x64
+  if errorlevel 1 goto error
+
+  goto success
+
+:x86
+  rem Calculate our output directory
+  set OUTDIR=build\Win32\%VC_DESC%
+  if not exist %OUTDIR% md %OUTDIR%
+
+  if "%BUILD_CONFIG%" == "release" goto x86release
+
+:x86debug
+  rem Perform 32-bit Debug Build
+
+  call :build Debug Win32
+  if errorlevel 1 goto error
+
+  call :build "DLL Debug" Win32
+  if errorlevel 1 goto error
+
+  if "%BUILD_CONFIG%" == "debug" goto success
+
+:x86release
+  rem Perform 32-bit Release Build
+
+  call :build Release Win32
+  if errorlevel 1 goto error
+
+  call :build "DLL Release" Win32
+  if errorlevel 1 goto error
+
+  goto success
+
+:build
+  rem This function builds wolfSSL.
+  rem Usage: CALL :build <configuration> <platform>
+  rem The current directory must be the wolfSSL directory.
+  rem VS Configuration: Debug, Release, DLL Debug or DLL Release.
+  rem VS Platform: Win32 or x64.
+  rem Returns: 1 on fail, 0 on success.
+  rem An informational message should be shown before any return.
+  setlocal
+  set MSBUILD_CONFIG=%~1
+  set MSBUILD_PLATFORM=%~2
+
+  if not exist wolfssl64.sln (
+    echo.
+    echo Error: build: wolfssl64.sln not found in "%CD%"
+    exit /b 1
+  )
+
+  rem OUTDIR isn't a full path, only relative. MSBUILD_OUTDIR must be full and
+  rem not have trailing backslashes, which are handled later.
+  if "%MSBUILD_CONFIG%" == "Debug" (
+    set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\LIB Debug"
+  ) else if "%MSBUILD_CONFIG%" == "Release" (
+    set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\LIB Release"
+  ) else if "%MSBUILD_CONFIG%" == "DLL Debug" (
+    set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\DLL Debug"
+  ) else if "%MSBUILD_CONFIG%" == "DLL Release" (
+    set "MSBUILD_OUTDIR=%CD%\%OUTDIR%\DLL Release"
+  ) else (
+    echo.
+    echo Error: build: Configuration not recognized.
+    exit /b 1
+  )
+
+  if not "%MSBUILD_PLATFORM%" == "Win32" if not "%MSBUILD_PLATFORM%" == "x64" (
+    echo.
+    echo Error: build: Platform not recognized.
+    exit /b 1
+  )
+
+  copy /v /y "%~dp0\wolfssl_options.h" .\cyassl\options.h
+  if %ERRORLEVEL% neq 0 (
+    echo.
+    echo Error: build: Couldn't replace .\cyassl\options.h
+    exit /b 1
+  )
+
+  copy /v /y "%~dp0\wolfssl_options.h" .\wolfssl\options.h
+  if %ERRORLEVEL% neq 0 (
+    echo.
+    echo Error: build: Couldn't replace .\wolfssl\options.h
+    exit /b 1
+  )
+
+  rem Extra trailing \ in Dirs because otherwise it thinks a quote is escaped
+  msbuild wolfssl64.sln ^
+    -p:CustomAfterMicrosoftCommonTargets="%~dp0\wolfssl_override.props" ^
+    -p:Configuration="%MSBUILD_CONFIG%" ^
+    -p:Platform="%MSBUILD_PLATFORM%" ^
+    -p:PlatformToolset="%VC_TOOLSET%" ^
+    -p:OutDir="%MSBUILD_OUTDIR%\\" ^
+    -p:IntDir="%MSBUILD_OUTDIR%\obj\\"
+
+  if %ERRORLEVEL% neq 0 (
+    echo.
+    echo Error: Failed building wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%.
+    exit /b 1
+  )
+
+  rem For tests to run properly the wolfSSL directory must remain the current.
+  set "PATH=%MSBUILD_OUTDIR%;%PATH%"
+  "%MSBUILD_OUTDIR%\testsuite.exe"
+
+  if %ERRORLEVEL% neq 0 (
+    echo.
+    echo Error: Failed testing wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%.
+    exit /b 1
+  )
+
+  echo.
+  echo Success: Built and tested wolfSSL %MSBUILD_CONFIG%^|%MSBUILD_PLATFORM%.
+  echo.
+  echo.
+  rem This is necessary to export our local variables back to the caller.
+  endlocal & set SUCCESSFUL_BUILDS="%MSBUILD_CONFIG%|%MSBUILD_PLATFORM%" ^
+    %SUCCESSFUL_BUILDS%
+  exit /b 0
+
+:syntax
+  rem Display the help
+  echo.
+  echo Usage: build-wolfssl ^<compiler^> ^<platform^> [configuration] [directory]
+  echo.
+  echo Compiler:
+  echo.
+  echo vc10      - Use Visual Studio 2010
+  echo vc11      - Use Visual Studio 2012
+  echo vc12      - Use Visual Studio 2013
+  echo vc14      - Use Visual Studio 2015
+  echo.
+  echo Platform:
+  echo.
+  echo x86       - Perform a 32-bit build
+  echo x64       - Perform a 64-bit build
+  echo.
+  echo Configuration:
+  echo.
+  echo debug     - Perform a debug build
+  echo release   - Perform a release build
+  echo.
+  echo Other:
+  echo.
+  echo directory - Specifies the wolfSSL source directory
+  goto error
+
+:unknown
+  echo.
+  echo Error: Unknown argument '%1'
+  goto error
+
+:nodos
+  echo.
+  echo Error: Only a Windows NT based Operating System is supported
+  goto error
+
+:nopf
+  echo.
+  echo Error: Cannot obtain the directory for Program Files
+  goto error
+
+:novc
+  echo.
+  echo Error: %VC_DESC% is not installed
+  goto error
+
+:nox64
+  echo.
+  echo Error: %VC_DESC% does not support 64-bit builds
+  goto error
+
+:nowolfssl
+  echo.
+  echo Error: Cannot locate wolfSSL source directory, expected "%START_DIR%"
+  goto error
+
+:error
+  if "%OS%" == "Windows_NT" endlocal
+  exit /B 1
+
+:success
+  if defined SUCCESSFUL_BUILDS (
+    echo.
+    echo.
+    echo Build complete.
+    echo.
+    echo The following configurations were built and tested successfully:
+    echo.
+    echo %SUCCESSFUL_BUILDS%
+    echo.
+  )
+  cd %SAVED_PATH%
+  endlocal
+  exit /B 0
index 139914d..fa7a7fb 100644 (file)
@@ -6,7 +6,7 @@ rem *                             / __| | | | |_) | |
 rem *                            | (__| |_| |  _ <| |___
 rem *                             \___|\___/|_| \_\_____|
 rem *
-rem * Copyright (C) 2014, Steve Holme, <steve_holme@hotmail.com>.
+rem * Copyright (C) 2014 - 2015, Steve Holme, <steve_holme@hotmail.com>.
 rem *
 rem * This software is licensed as described in the file COPYING, which
 rem * you should have received as part of this distribution. The terms
@@ -24,29 +24,61 @@ rem ***************************************************************************
 :begin
   rem Check we are running on a Windows NT derived OS
   if not "%OS%" == "Windows_NT" goto nodos
+
+  rem Set our variables
   setlocal
 
-  rem Display the help
-  if /i "%~1" == "-?" goto syntax
-  if /i "%~1" == "-h" goto syntax
-  if /i "%~1" == "-help" goto syntax
+:parseArgs
+  if "%~1" == "" goto prerequisites
+
+  if /i "%~1" == "-?" (
+    goto syntax
+  ) else if /i "%~1" == "-h" (
+    goto syntax
+  ) else if /i "%~1" == "-help" (
+    goto syntax
+  ) else (
+    if not defined SRC_DIR (
+      set SRC_DIR=%~1%
+    ) else (
+      goto unknown
+    )
+  )
+
+  shift & goto parseArgs
 
 :prerequisites
   rem Check we have Perl installed
-  if not exist "C:\Perl" (
-    if not exist "C:\Perl64" goto noperl
+  echo %PATH% | findstr /I /C:"\Perl" 1>nul
+  if errorlevel 1 (
+    if not exist "%SystemDrive%\Perl" (
+      if not exist "%SystemDrive%\Perl64" goto noperl
+    )
   )
 
 :configure
-  if "%1" == "" set SRC_DIR=..
-  if not "%1" == "" set SRC_DIR=%~1%
+  if "%SRC_DIR%" == "" set SRC_DIR=..
   if not exist "%SRC_DIR%" goto nosrc
 
 :start
-  for /f "delims=" %%i in ('dir %SRC_DIR%\src\*.c.* /b') do @perl %SRC_DIR%\lib\checksrc.pl -D%SRC_DIR%\src "%%i"
-  for /f "delims=" %%i in ('dir %SRC_DIR%\src\*.h.* /b') do @perl %SRC_DIR%\lib\checksrc.pl -D%SRC_DIR%\src "%%i"
-  for /f "delims=" %%i in ('dir %SRC_DIR%\lib\*.c.* /b') do @perl %SRC_DIR%\lib\checksrc.pl -D%SRC_DIR%\lib "%%i"
-  for /f "delims=" %%i in ('dir %SRC_DIR%\lib\*.h.* /b') do @perl %SRC_DIR%\lib\checksrc.pl -D%SRC_DIR%\lib -Wcurl_config.h.cmake "%%i"
+  rem Check the src directory
+  if exist %SRC_DIR%\src (
+    for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\src" -Wtool_hugehelp.c "%%i"
+    for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\src" "%%i"
+  )
+
+  rem Check the lib directory
+  if exist %SRC_DIR%\lib (
+    for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib" "%%i"
+    for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib" -Wcurl_config.h.cmake "%%i"
+  )
+
+  rem Check the lib\vtls directory
+  if exist %SRC_DIR%\lib\vtls (
+    for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"
+    for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"
+  )
+
   goto success
 
 :syntax
@@ -57,6 +89,11 @@ rem ***************************************************************************
   echo directory - Specifies the curl source directory
   goto success
 
+:unknown
+  echo.
+  echo Error: Unknown argument '%1'
+  goto error
+
 :nodos
   echo.
   echo Error: Only a Windows NT based Operating System is supported
diff --git a/scripts/zsh.pl b/scripts/zsh.pl
new file mode 100755 (executable)
index 0000000..7520a15
--- /dev/null
@@ -0,0 +1,77 @@
+#!/usr/bin/perl
+
+# Generate ZSH completion
+
+use strict;
+use warnings;
+
+my $curl = $ARGV[0] || 'curl';
+
+my $regex = '\s+(?:(-[^\s]+),\s)?(--[^\s]+)\s([^\s.]+)?\s+(.*)';
+my @opts = parse_main_opts('--help', $regex);
+
+my $opts_str;
+
+$opts_str .= qq{  $_ \\\n} foreach (@opts);
+chomp $opts_str;
+
+my $tmpl = <<"EOS";
+#compdef curl
+
+# curl zsh completion
+
+local curcontext="\$curcontext" state state_descr line
+typeset -A opt_args
+
+local rc=1
+
+_arguments -C -S \\
+$opts_str
+  '*:URL:_urls' && rc=0
+
+return rc
+EOS
+
+print $tmpl;
+
+sub parse_main_opts {
+    my ($cmd, $regex) = @_;
+
+    my @list;
+    my @lines = split /\n/, `"$curl" $cmd`;
+
+    foreach my $line (@lines) {
+        my ($short, $long, $arg, $desc) = ($line =~ /^$regex/) or next;
+
+        my $option = '';
+
+        $desc =~ s/'/''/g if defined $desc;
+        $desc =~ s/\[/\\\[/g if defined $desc;
+        $desc =~ s/\]/\\\]/g if defined $desc;
+
+        $option .= '{' . trim($short) . ',' if defined $short;
+        $option .= trim($long)  if defined $long;
+        $option .= '}' if defined $short;
+        $option .= '\'[' . trim($desc) . ']\'' if defined $desc;
+
+        $option .= ":$arg" if defined $arg;
+
+        $option .= ':_files'
+            if defined $arg and ($arg eq 'FILE' || $arg eq 'DIR');
+
+        push @list, $option;
+    }
+
+    # Sort longest first, because zsh won't complete an option listed
+    # after one that's a prefix of it.
+    @list = sort {
+        $a =~ /([^=]*)/; my $ma = $1;
+        $b =~ /([^=]*)/; my $mb = $1;
+
+        length($mb) <=> length($ma)
+    } @list;
+
+    return @list;
+}
+
+sub  trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };
index 9c1fd54..bfb866b 100644 (file)
@@ -6,18 +6,18 @@ if(USE_MANUAL)
   # embedded text. NROFF and MANOPT are set in the parent CMakeLists.txt
   add_custom_command(
     OUTPUT tool_hugehelp.c
-    COMMAND echo "#include \"tool_setup.h\"" > tool_hugehelp.c
-    COMMAND echo "#ifndef HAVE_LIBZ" >> tool_hugehelp.c
+    COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_setup.h\"" > tool_hugehelp.c
+    COMMAND ${CMAKE_COMMAND} -E echo "#ifndef HAVE_LIBZ" >> tool_hugehelp.c
     COMMAND env LC_ALL=C "${NROFF}" ${NROFF_MANOPT}
             "${CURL_SOURCE_DIR}/docs/curl.1" |
             "${PERL}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl"
             "${CURL_SOURCE_DIR}/docs/MANUAL" >> tool_hugehelp.c
-    COMMAND echo "#else" >> tool_hugehelp.c
+    COMMAND ${CMAKE_COMMAND} -E echo "#else" >> tool_hugehelp.c
     COMMAND env LC_ALL=C "${NROFF}" ${NROFF_MANOPT}
             "${CURL_SOURCE_DIR}/docs/curl.1" |
             "${PERL}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" -c
             "${CURL_SOURCE_DIR}/docs/MANUAL" >> tool_hugehelp.c
-    COMMAND echo "#endif /* HAVE_LIBZ */" >> tool_hugehelp.c
+    COMMAND ${CMAKE_COMMAND} -E echo "#endif /* HAVE_LIBZ */" >> tool_hugehelp.c
     DEPENDS
       "${CURL_SOURCE_DIR}/docs/MANUAL"
       "${CURL_SOURCE_DIR}/docs/curl.1"
@@ -27,12 +27,13 @@ if(USE_MANUAL)
 else()
   add_custom_command(
     OUTPUT tool_hugehelp.c
-    COMMAND echo "/* built-in manual is disabled, blank function */" > tool_hugehelp.c
-    COMMAND echo "#include \"tool_hugehelp.h\"" >> tool_hugehelp.c
-    COMMAND echo "void hugehelp(void) {}" >> tool_hugehelp.c
+    COMMAND ${CMAKE_COMMAND} -E echo "/* built-in manual is disabled, blank function */" > tool_hugehelp.c
+    COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_hugehelp.h\"" >> tool_hugehelp.c
+    COMMAND ${CMAKE_COMMAND} -E echo "void hugehelp(void) {}" >> tool_hugehelp.c
     DEPENDS
       "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h"
     VERBATIM)
+
 endif()
 
 transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
index c485665..6ec598d 100644 (file)
@@ -75,7 +75,7 @@ CFLAGS += -d_WIN32_WINNT=0x0501 -dENABLE_IPV6
 !endif
 
 !ifdef %use_ssl
-CFLAGS += -wcd=138 -dUSE_OPENSSL -dUSE_SSLEAY -I"$(OPENSSL_ROOT)/inc32"
+CFLAGS += -wcd=138 -dUSE_OPENSSL -dUSE_OPENSSL -I"$(OPENSSL_ROOT)/inc32"
 !endif
 
 !ifdef %curl_static
@@ -96,7 +96,7 @@ ZLIB_ROOT = ../../zlib-1.2.8
 !ifdef %libssh2_root
 LIBSSH2_ROOT = $(%libssh2_root)
 !else
-LIBSSH2_ROOT = ../../libssh2-1.4.3
+LIBSSH2_ROOT = ../../libssh2-1.5.0
 !endif
 
 !ifdef %librtmp_root
@@ -108,7 +108,7 @@ LIBRTMP_ROOT = ../../rtmpdump-2.3
 !ifdef %openssl_root
 OPENSSL_ROOT = $(%openssl_root)
 !else
-OPENSSL_ROOT = ../../openssl-0.9.8zc
+OPENSSL_ROOT = ../../openssl-1.0.2a
 !endif
 
 !ifdef %ares_root
index f96618e..f4bc6c9 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -62,7 +62,7 @@ LIBS = $(BLANK_AT_MAKETIME)
 if USE_EXPLICIT_LIB_DEPS
 curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @LIBCURL_LIBS@
 else
-curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @NSS_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
+curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @NSS_LIBS@ @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
 endif
 
 curl_LDFLAGS = @LIBMETALINK_LDFLAGS@
@@ -84,11 +84,11 @@ CLEANFILES = tool_hugehelp.c
 # embedded text.
 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 \
      macos/curl.mcp.xml.sit.hqx                                        \
      macos/MACINSTALL.TXT macos/src/curl_GUSIConfig.cpp \
      macos/src/macos_main.cpp makefile.amiga curl.rc                   \
      Makefile.netware Makefile.inc Makefile.Watcom CMakeLists.txt
+EXTRA_DIST = mkhelp.pl makefile.dj Makefile.vc6 Makefile.b32           \
Makefile.m32 macos/curl.mcp.xml.sit.hqx macos/MACINSTALL.TXT          \
macos/src/curl_GUSIConfig.cpp macos/src/macos_main.cpp makefile.amiga \
curl.rc Makefile.netware Makefile.inc Makefile.Watcom CMakeLists.txt  \
checksrc.whitelist
 
 MANPAGE=$(top_srcdir)/docs/curl.1
 README=$(top_srcdir)/docs/MANUAL
index 6638a01..85fe49f 100644 (file)
@@ -27,7 +27,7 @@ ZLIB_PATH = ..\..\zlib-1.2.8
 
 # Edit the path below to point to the base of your OpenSSL package.
 !ifndef OPENSSL_PATH
-OPENSSL_PATH = ..\..\openssl-0.9.8zc
+OPENSSL_PATH = ..\..\openssl-1.0.2a
 !endif
 
 # Set program's name
@@ -67,7 +67,7 @@ LINKLIB  = $(LINKLIB) $(ZLIB_PATH)\zlib.lib
 
 # SSL support is enabled setting WITH_SSL=1
 !ifdef WITH_SSL
-DEFINES  = $(DEFINES) -DUSE_SSLEAY
+DEFINES  = $(DEFINES) -DUSE_OPENSSL
 INCDIRS  = $(INCDIRS);$(OPENSSL_PATH)\inc32;$(OPENSSL_PATH)\inc32\openssl
 LINKLIB  = $(LINKLIB) $(OPENSSL_PATH)\out32\ssleay32.lib $(OPENSSL_PATH)\out32\libeay32.lib
 !endif
index ed6cc0d..8fae4cd 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -90,9 +100,6 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = curl$(EXEEXT)
 @USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
-       $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs \
-       $(top_srcdir)/depcomp
 subdir = src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
@@ -114,7 +121,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -273,6 +281,8 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
+       $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -333,7 +343,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -390,6 +400,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -406,7 +417,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -474,7 +484,7 @@ top_srcdir = @top_srcdir@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -609,7 +619,7 @@ CURL_HFILES = \
 
 CURL_RCFILES = curl.rc
 curl_SOURCES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES)
-@USE_EXPLICIT_LIB_DEPS_FALSE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @NSS_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
+@USE_EXPLICIT_LIB_DEPS_FALSE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @NSS_LIBS@ @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
 @USE_EXPLICIT_LIB_DEPS_TRUE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @LIBCURL_LIBS@
 curl_LDFLAGS = @LIBMETALINK_LDFLAGS@
 curl_CPPFLAGS = $(AM_CPPFLAGS) $(LIBMETALINK_CPPFLAGS)
@@ -623,11 +633,11 @@ curl_DEPENDENCIES = $(top_builddir)/lib/libcurl.la
 @BUILD_UNITTESTS_TRUE@libcurltool_la_SOURCES = $(curl_SOURCES)
 BUILT_SOURCES = tool_hugehelp.c
 CLEANFILES = tool_hugehelp.c
-EXTRA_DIST = mkhelp.pl makefile.dj Makefile.vc6 Makefile.b32 Makefile.m32 \
      macos/curl.mcp.xml.sit.hqx                                        \
      macos/MACINSTALL.TXT macos/src/curl_GUSIConfig.cpp \
      macos/src/macos_main.cpp makefile.amiga curl.rc                   \
      Makefile.netware Makefile.inc Makefile.Watcom CMakeLists.txt
+EXTRA_DIST = mkhelp.pl makefile.dj Makefile.vc6 Makefile.b32           \
Makefile.m32 macos/curl.mcp.xml.sit.hqx macos/MACINSTALL.TXT          \
macos/src/curl_GUSIConfig.cpp macos/src/macos_main.cpp makefile.amiga \
curl.rc Makefile.netware Makefile.inc Makefile.Watcom CMakeLists.txt  \
checksrc.whitelist
 
 MANPAGE = $(top_srcdir)/docs/curl.1
 README = $(top_srcdir)/docs/MANUAL
@@ -650,7 +660,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign src/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -659,7 +668,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -2002,6 +2011,8 @@ uninstall-am: uninstall-binPROGRAMS
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
+.PRECIOUS: Makefile
+
 
 # remove targets if the command fails
 .DELETE_ON_ERROR:
index e54175c..5093806 100644 (file)
@@ -1,7 +1,7 @@
 ###########################################################################
 #
 ## Makefile for building curl.exe with MingW (GCC-3.2 or later)
-## and optionally OpenSSL (0.9.8), libssh2 (1.3), zlib (1.2.5), librtmp (2.3)
+## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4)
 ##
 ## Usage:   mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
 ## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-spi-winidn
@@ -18,19 +18,19 @@ ZLIB_PATH = ../../zlib-1.2.8
 endif
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
 endif
 # Edit the path below to point to the base of your LibSSH2 package.
 ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.4.3
+LIBSSH2_PATH = ../../libssh2-1.5.0
 endif
 # Edit the path below to point to the base of your librtmp package.
 ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../librtmp-2.3
+LIBRTMP_PATH = ../../librtmp-2.4
 endif
 # Edit the path below to point to the base of your libmetalink package.
 ifndef LIBMETALINK_PATH
-LIBMETALINK_PATH = ../../libmetalink-0.1.2
+LIBMETALINK_PATH = ../../libmetalink-0.1.3
 endif
 # Edit the path below to point to the base of your libexpat package.
 ifndef LIBEXPAT_PATH
@@ -38,15 +38,15 @@ LIBEXPAT_PATH = ../../expat-2.1.0
 endif
 # Edit the path below to point to the base of your libxml2 package.
 ifndef LIBXML2_PATH
-LIBXML2_PATH = ../../libxml2-2.9.0
+LIBXML2_PATH = ../../libxml2-2.9.2
 endif
 # Edit the path below to point to the base of your libidn package.
 ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../libidn-1.18
+LIBIDN_PATH = ../../libidn-1.32
 endif
 # Edit the path below to point to the base of your MS IDN package.
 # Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
-# http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ad6158d7-ddba-416a-9109-07607425a815
+# https://www.microsoft.com/en-us/download/details.aspx?id=734
 ifndef WINIDN_PATH
 WINIDN_PATH = ../../Microsoft IDN Mitigation APIs
 endif
@@ -56,7 +56,7 @@ LDAP_SDK = c:/novell/ndk/cldapsdk/win32
 endif
 # Edit the path below to point to the base of your nghttp2 package.
 ifndef NGHTTP2_PATH
-NGHTTP2_PATH = ../../nghttp2-0.6.7
+NGHTTP2_PATH = ../../nghttp2-1.0.0
 endif
 
 PROOT = ..
@@ -90,10 +90,12 @@ endif
 endif
 
 ifeq ($(ARCH),w64)
-CFLAGS += -D_AMD64_
+CFLAGS += -m64 -D_AMD64_
+LDFLAGS += -m64
 RCFLAGS += -F pe-x86-64
 else
 CFLAGS += -m32
+LDFLAGS += -m32
 RCFLAGS += -F pe-i386
 endif
 
@@ -241,7 +243,7 @@ ifdef SSL
     OPENSSL_LIBS += -lgdi32 -lcrypt32
   endif
   INCLUDES += -I"$(OPENSSL_INCLUDE)"
-  CFLAGS += -DUSE_SSLEAY -DUSE_OPENSSL
+  CFLAGS += -DUSE_OPENSSL
   curl_LDADD += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
 endif
 ifdef ZLIB
@@ -340,4 +342,3 @@ endif
 
 distclean vclean: clean
        @$(call DEL, $(curl_PROGRAMS))
-
index b6b4861..5065cbf 100644 (file)
@@ -19,12 +19,12 @@ endif
 
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8zc
+OPENSSL_PATH = ../../openssl-1.0.2a
 endif
 
 # Edit the path below to point to the base of your LibSSH2 package.
 ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.4.3
+LIBSSH2_PATH = ../../libssh2-1.5.0
 endif
 
 # Edit the path below to point to the base of your axTLS package.
index 348a763..82af5ce 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -56,7 +56,7 @@ PROGRAM_NAME = curl.exe
 \r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH = ../../openssl-0.9.8zc\r
+OPENSSL_PATH = ../../openssl-1.0.2a\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
@@ -77,7 +77,7 @@ MACHINE  = X86
 # If, for some reason the Windows SDK is installed but not installed\r
 # in the default location, you can specify WINDOWS_SDK_PATH.\r
 # It can be downloaded from:\r
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
 \r
 # WINDOWS_SSPI = 1\r
 \r
@@ -95,7 +95,7 @@ ZLIB_LFLAGS    = "/LIBPATH:$(ZLIB_PATH)"
 ZLIB_LIBS      = zlib.lib\r
 ZLIB_IMP_LIBS  = zdll.lib\r
 \r
-SSL_CFLAGS     = /DUSE_SSLEAY\r
+SSL_CFLAGS     = /DUSE_OPENSSL\r
 SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
 SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
diff --git a/src/Makefile.vc11 b/src/Makefile.vc11
new file mode 100644 (file)
index 0000000..cb7fc20
--- /dev/null
@@ -0,0 +1,544 @@
+#***************************************************************************\r
+#                                  _   _ ____  _\r
+#  Project                     ___| | | |  _ \| |\r
+#                             / __| | | | |_) | |\r
+#                            | (__| |_| |  _ <| |___\r
+#                             \___|\___/|_| \_\_____|\r
+#\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+#\r
+# This software is licensed as described in the file COPYING, which\r
+# you should have received as part of this distribution. The terms\r
+# are also available at http://curl.haxx.se/docs/copyright.html.\r
+#\r
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
+# copies of the Software, and permit persons to whom the Software is\r
+# furnished to do so, under the terms of the COPYING file.\r
+#\r
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
+# KIND, either express or implied.\r
+#\r
+#***************************************************************************\r
+\r
+# All files in the Makefile.vc* series are generated automatically from the\r
+# one made for MSVC version 6. Alas, if you want to do changes to any of the\r
+# files and send back to the project, edit the version six, make your diff and\r
+# mail curl-users.\r
+\r
+#############################################################\r
+#\r
+## Makefile for building curl.exe with MSVC11\r
+## Use: nmake -f makefile.vc11 [release | debug] [CFG=release-ssl]\r
+##      (default is release)\r
+## "nmake -f makefile.vc11 CFG=release-ssl" statically links OpenSSL\r
+## into curl.exe producing a standalone SSL-enabled executable.\r
+##\r
+#\r
+#############################################################\r
+\r
+PROGRAM_NAME = curl.exe\r
+\r
+# -------------------------------------------\r
+# Verify that current subdir is curl's 'src'\r
+# -------------------------------------------\r
+\r
+!IF ! EXIST(.\tool_main.c)\r
+!  MESSAGE Can not process this makefile from outside of curl's 'src' subdirectory.\r
+!  MESSAGE Change to curl's 'src' subdirectory, and try again.\r
+!  ERROR   See previous message.\r
+!ENDIF\r
+\r
+# ------------------------------------------------\r
+# Makefile.msvc.names provides libcurl file names\r
+# ------------------------------------------------\r
+\r
+!INCLUDE ..\winbuild\Makefile.msvc.names\r
+\r
+\r
+!IFNDEF OPENSSL_PATH\r
+OPENSSL_PATH = ../../openssl-1.0.2a\r
+!ENDIF\r
+\r
+!IFNDEF ZLIB_PATH\r
+ZLIB_PATH = ../../zlib-1.2.8\r
+!ENDIF\r
+\r
+!IFNDEF MACHINE\r
+MACHINE  = X86\r
+!ENDIF\r
+\r
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication\r
+# without an openssl installation and offers the ability to authenticate\r
+# using the "current logged in user". Since at least with MSVC11 the sspi.h\r
+# header is broken it is either required to install the Windows SDK,\r
+# or to fix sspi.h with adding this define at the beginning of sspi.h:\r
+# #define FreeCredentialHandle FreeCredentialsHandle\r
+#\r
+# If, for some reason the Windows SDK is installed but not installed\r
+# in the default location, you can specify WINDOWS_SDK_PATH.\r
+# It can be downloaded from:\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
+\r
+# WINDOWS_SSPI = 1\r
+\r
+!IFDEF WINDOWS_SSPI\r
+!IFNDEF WINDOWS_SDK_PATH\r
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"\r
+!ENDIF\r
+!ENDIF\r
+\r
+########################################################\r
+## Nothing more to do below this line!\r
+\r
+ZLIB_CFLAGS    = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
+ZLIB_LFLAGS    = "/LIBPATH:$(ZLIB_PATH)"\r
+ZLIB_LIBS      = zlib.lib\r
+ZLIB_IMP_LIBS  = zdll.lib\r
+\r
+SSL_CFLAGS     = /DUSE_OPENSSL\r
+SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
+SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
+SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
+WINLIBS        = ws2_32.lib wldap32.lib advapi32.lib\r
+\r
+WINSSL_CFLAGS  = /DUSE_SCHANNEL\r
+#WINSSL_LIBS    = gdi32.lib user32.lib\r
+\r
+!IFDEF USE_IDN\r
+WINLIBS        = $(WINLIBS) normaliz.lib\r
+!ENDIF\r
+\r
+# Runtime library configuration\r
+RTLIB   = /MD\r
+RTLIBD  = /MDd\r
+\r
+!IF "$(RTLIBCFG)" == "static"\r
+RTLIB  = /MT\r
+RTLIBD = /MTd\r
+!ENDIF\r
+\r
+## Release\r
+CCR   = cl.exe $(RTLIB) /O2 /DNDEBUG\r
+LINKR = link.exe /incremental:no /libpath:"../lib"\r
+RCR   = rc.exe /dDEBUGBUILD=0\r
+\r
+## Debug\r
+CCD   = cl.exe $(RTLIBD) /Gm /ZI /Od /D_DEBUG /RTC1\r
+LINKD = link.exe /incremental:yes /debug /libpath:"../lib"\r
+RCD   = rc.exe /dDEBUGBUILD=1\r
+\r
+CFLAGS   = /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /D_BIND_TO_CURRENT_VCLIBS_VERSION=1\r
+LFLAGS   = /nologo /out:$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE)\r
+RESFLAGS = /i../include\r
+\r
+# This manifest thing is for VC8, enabled by the maketgz script that\r
+# builds the VC8 version of this makefile. Left commented out in the VC11\r
+# version!\r
+#MANIFESTTOOL = mt -manifest $(PROGRAM_NAME).manifest -outputresource:$(PROGRAM_NAME);1\r
+\r
+!IFDEF WINDOWS_SSPI\r
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include\r
+!ENDIF\r
+\r
+RELEASE_OBJS= \\r
+       nonblockr.obj \\r
+       rawstrr.obj \\r
+       strtoofftr.obj \\r
+       warnless.obj \\r
+       tool_binmoder.obj \\r
+       tool_bnamer.obj \\r
+       tool_cb_dbgr.obj \\r
+       tool_cb_hdrr.obj \\r
+       tool_cb_prgr.obj \\r
+       tool_cb_rear.obj \\r
+       tool_cb_seer.obj \\r
+       tool_cb_wrtr.obj \\r
+       tool_cfgabler.obj \\r
+       tool_convertr.obj \\r
+       tool_dirhier.obj \\r
+       tool_doswinr.obj \\r
+       tool_easysrcr.obj \\r
+       tool_formparser.obj \\r
+       tool_getparamr.obj \\r
+       tool_getpassr.obj \\r
+       tool_helpr.obj \\r
+       tool_helpersr.obj \\r
+       tool_homedirr.obj \\r
+       tool_hugehelpr.obj \\r
+       tool_libinfor.obj \\r
+       tool_mainr.obj \\r
+       tool_metalinkr.obj \\r
+       tool_mfilesr.obj \\r
+       tool_msgsr.obj \\r
+       tool_operater.obj \\r
+       tool_operhlpr.obj \\r
+       tool_panykeyr.obj \\r
+       tool_paramhlpr.obj \\r
+       tool_parsecfgr.obj \\r
+       tool_setoptr.obj \\r
+       tool_sleepr.obj \\r
+       tool_urlglobr.obj \\r
+       tool_utilr.obj \\r
+       tool_vmsr.obj \\r
+       tool_writeenvr.obj \\r
+       tool_writeoutr.obj \\r
+       tool_xattrr.obj \\r
+       curlr.res\r
+\r
+DEBUG_OBJS= \\r
+       nonblockd.obj \\r
+       rawstrd.obj \\r
+       strtoofftd.obj \\r
+       warnlessd.obj \\r
+       tool_binmoded.obj \\r
+       tool_bnamed.obj \\r
+       tool_cb_dbgd.obj \\r
+       tool_cb_hdrd.obj \\r
+       tool_cb_prgd.obj \\r
+       tool_cb_read.obj \\r
+       tool_cb_seed.obj \\r
+       tool_cb_wrtd.obj \\r
+       tool_cfgabled.obj \\r
+       tool_convertd.obj \\r
+       tool_dirhied.obj \\r
+       tool_doswind.obj \\r
+       tool_easysrcd.obj \\r
+       tool_formparsed.obj \\r
+       tool_getparamd.obj \\r
+       tool_getpassd.obj \\r
+       tool_helpd.obj \\r
+       tool_helpersd.obj \\r
+       tool_homedird.obj \\r
+       tool_hugehelpd.obj \\r
+       tool_libinfod.obj \\r
+       tool_maind.obj \\r
+       tool_metalinkd.obj \\r
+       tool_mfilesd.obj \\r
+       tool_msgsd.obj \\r
+       tool_operated.obj \\r
+       tool_operhlpd.obj \\r
+       tool_panykeyd.obj \\r
+       tool_paramhlpd.obj \\r
+       tool_parsecfgd.obj \\r
+       tool_setoptd.obj \\r
+       tool_sleepd.obj \\r
+       tool_urlglobd.obj \\r
+       tool_utild.obj \\r
+       tool_vmsd.obj \\r
+       tool_writeenvd.obj \\r
+       tool_writeoutd.obj \\r
+       tool_xattrd.obj \\r
+       curld.res\r
+\r
+#################################################\r
+# If CFG not specified, use static libs\r
+\r
+CFLAGS         = $(CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG)\r
+\r
+#################################################\r
+# release dynamic library\r
+\r
+!IF "$(CFG)" == "release-dll"\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with zlib\r
+\r
+!IF "$(CFG)" == "release-zlib"\r
+CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(ZLIB_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_LIBS)\r
+LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with ssl\r
+\r
+!IF "$(CFG)" == "release-ssl"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release dynamic library with dynamic ssl\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS)\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with ssl and zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-zlib"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with winssl and zlib\r
+\r
+!IF "$(CFG)" == "release-winssl-zlib"\r
+CFLAGS         = $(CFLAGS) $(WINSSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(WINSSL_LIBS) $(ZLIB_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(WINSSL_LIBS) $(ZLIB_LIBS)\r
+LFLAGS         = $(LFLAGS) $(WINSSL_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with dynamic ssl\r
+\r
+!IF "$(CFG)" == "release-ssl-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release dynamic library with dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-dll-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS)\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with dynamic ssl and dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release dynamic library with dynamic ssl and dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS)\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+LINKLIBS       = $(LINKLIBS) $(WINLIBS)\r
+LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) $(WINLIBS)\r
+\r
+all : release\r
+\r
+release: $(RELEASE_OBJS)\r
+       $(LINKR) $(LFLAGS) $(LINKLIBS) $(RELEASE_OBJS)\r
+        $(MANIFESTTOOL)\r
+\r
+debug: $(DEBUG_OBJS)\r
+       $(LINKD) $(LFLAGS) $(LINKLIBS_DEBUG) $(DEBUG_OBJS)\r
+        $(MANIFESTTOOL)\r
+\r
+## Release\r
+nonblockr.obj: ../lib/nonblock.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/nonblock.c\r
+rawstrr.obj: ../lib/rawstr.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
+strtoofftr.obj: ../lib/strtoofft.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnless.obj: ../lib/warnless.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
+tool_binmoder.obj: tool_binmode.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c\r
+tool_bnamer.obj: tool_bname.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_bname.c\r
+tool_cb_dbgr.obj: tool_cb_dbg.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_dbg.c\r
+tool_cb_hdrr.obj: tool_cb_hdr.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_hdr.c\r
+tool_cb_prgr.obj: tool_cb_prg.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_prg.c\r
+tool_cb_rear.obj: tool_cb_rea.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_rea.c\r
+tool_cb_seer.obj: tool_cb_see.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_see.c\r
+tool_cb_wrtr.obj: tool_cb_wrt.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_wrt.c\r
+tool_cfgabler.obj: tool_cfgable.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cfgable.c\r
+tool_convertr.obj: tool_convert.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_convert.c\r
+tool_dirhier.obj: tool_dirhie.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_dirhie.c\r
+tool_doswinr.obj: tool_doswin.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_doswin.c\r
+tool_easysrcr.obj: tool_easysrc.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_easysrc.c\r
+tool_formparser.obj: tool_formparse.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_formparse.c\r
+tool_getparamr.obj: tool_getparam.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_getparam.c\r
+tool_getpassr.obj: tool_getpass.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_getpass.c\r
+tool_helpr.obj: tool_help.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_help.c\r
+tool_helpersr.obj: tool_helpers.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_helpers.c\r
+tool_homedirr.obj: tool_homedir.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_homedir.c\r
+tool_hugehelpr.obj: tool_hugehelp.c\r
+       $(CCR) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c\r
+tool_libinfor.obj: tool_libinfo.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_libinfo.c\r
+tool_mainr.obj: tool_main.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_main.c\r
+tool_metalinkr.obj: tool_metalink.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_metalink.c\r
+tool_mfilesr.obj: tool_mfiles.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_mfiles.c\r
+tool_msgsr.obj: tool_msgs.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_msgs.c\r
+tool_operater.obj: tool_operate.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_operate.c\r
+tool_operhlpr.obj: tool_operhlp.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_operhlp.c\r
+tool_panykeyr.obj: tool_panykey.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_panykey.c\r
+tool_paramhlpr.obj: tool_paramhlp.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_paramhlp.c\r
+tool_parsecfgr.obj: tool_parsecfg.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_parsecfg.c\r
+tool_setoptr.obj: tool_setopt.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_setopt.c\r
+tool_sleepr.obj: tool_sleep.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_sleep.c\r
+tool_urlglobr.obj: tool_urlglob.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_urlglob.c\r
+tool_utilr.obj: tool_util.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_util.c\r
+tool_vmsr.obj: tool_vms.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_vms.c\r
+tool_writeenvr.obj: tool_writeenv.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_writeenv.c\r
+tool_writeoutr.obj: tool_writeout.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_writeout.c\r
+tool_xattrr.obj: tool_xattr.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_xattr.c\r
+curlr.res : curl.rc\r
+       $(RCR) $(RESFLAGS) /Fo"$@" curl.rc\r
+\r
+## Debug\r
+nonblockd.obj: ../lib/nonblock.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/nonblock.c\r
+rawstrd.obj: ../lib/rawstr.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
+strtoofftd.obj: ../lib/strtoofft.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnlessd.obj: ../lib/warnless.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
+tool_binmoded.obj: tool_binmode.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c\r
+tool_bnamed.obj: tool_bname.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_bname.c\r
+tool_cb_dbgd.obj: tool_cb_dbg.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_dbg.c\r
+tool_cb_hdrd.obj: tool_cb_hdr.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_hdr.c\r
+tool_cb_prgd.obj: tool_cb_prg.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_prg.c\r
+tool_cb_read.obj: tool_cb_rea.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_rea.c\r
+tool_cb_seed.obj: tool_cb_see.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_see.c\r
+tool_cb_wrtd.obj: tool_cb_wrt.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_wrt.c\r
+tool_cfgabled.obj: tool_cfgable.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cfgable.c\r
+tool_convertd.obj: tool_convert.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_convert.c\r
+tool_dirhied.obj: tool_dirhie.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_dirhie.c\r
+tool_doswind.obj: tool_doswin.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_doswin.c\r
+tool_easysrcd.obj: tool_easysrc.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_easysrc.c\r
+tool_formparsed.obj: tool_formparse.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_formparse.c\r
+tool_getparamd.obj: tool_getparam.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_getparam.c\r
+tool_getpassd.obj: tool_getpass.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_getpass.c\r
+tool_helpd.obj: tool_help.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_help.c\r
+tool_helpersd.obj: tool_helpers.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_helpers.c\r
+tool_homedird.obj: tool_homedir.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_homedir.c\r
+tool_hugehelpd.obj: tool_hugehelp.c\r
+       $(CCD) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c\r
+tool_libinfod.obj: tool_libinfo.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_libinfo.c\r
+tool_maind.obj: tool_main.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_main.c\r
+tool_metalinkd.obj: tool_metalink.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_metalink.c\r
+tool_mfilesd.obj: tool_mfiles.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_mfiles.c\r
+tool_msgsd.obj: tool_msgs.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_msgs.c\r
+tool_operated.obj: tool_operate.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_operate.c\r
+tool_operhlpd.obj: tool_operhlp.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_operhlp.c\r
+tool_panykeyd.obj: tool_panykey.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_panykey.c\r
+tool_paramhlpd.obj: tool_paramhlp.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_paramhlp.c\r
+tool_parsecfgd.obj: tool_parsecfg.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_parsecfg.c\r
+tool_setoptd.obj: tool_setopt.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_setopt.c\r
+tool_sleepd.obj: tool_sleep.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_sleep.c\r
+tool_urlglobd.obj: tool_urlglob.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_urlglob.c\r
+tool_utild.obj: tool_util.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_util.c\r
+tool_vmsd.obj: tool_vms.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_vms.c\r
+tool_writeenvd.obj: tool_writeenv.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_writeenv.c\r
+tool_writeoutd.obj: tool_writeout.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_writeout.c\r
+tool_xattrd.obj: tool_xattr.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_xattr.c\r
+curld.res : curl.rc\r
+       $(RCD) $(RESFLAGS) /Fo"$@" curl.rc\r
+\r
+clean:\r
+       @-erase $(PROGRAM_NAME) 2> NUL\r
+       @-erase $(RELEASE_OBJS) 2> NUL\r
+       @-erase $(DEBUG_OBJS) 2> NUL\r
+       @-erase *.idb 2> NUL\r
+       @-erase *.pdb 2> NUL\r
+       @-erase *.pch 2> NUL\r
+       @-erase *.ilk 2> NUL\r
diff --git a/src/Makefile.vc12 b/src/Makefile.vc12
new file mode 100644 (file)
index 0000000..c81ffbf
--- /dev/null
@@ -0,0 +1,544 @@
+#***************************************************************************\r
+#                                  _   _ ____  _\r
+#  Project                     ___| | | |  _ \| |\r
+#                             / __| | | | |_) | |\r
+#                            | (__| |_| |  _ <| |___\r
+#                             \___|\___/|_| \_\_____|\r
+#\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+#\r
+# This software is licensed as described in the file COPYING, which\r
+# you should have received as part of this distribution. The terms\r
+# are also available at http://curl.haxx.se/docs/copyright.html.\r
+#\r
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
+# copies of the Software, and permit persons to whom the Software is\r
+# furnished to do so, under the terms of the COPYING file.\r
+#\r
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
+# KIND, either express or implied.\r
+#\r
+#***************************************************************************\r
+\r
+# All files in the Makefile.vc* series are generated automatically from the\r
+# one made for MSVC version 6. Alas, if you want to do changes to any of the\r
+# files and send back to the project, edit the version six, make your diff and\r
+# mail curl-users.\r
+\r
+#############################################################\r
+#\r
+## Makefile for building curl.exe with MSVC12\r
+## Use: nmake -f makefile.vc12 [release | debug] [CFG=release-ssl]\r
+##      (default is release)\r
+## "nmake -f makefile.vc12 CFG=release-ssl" statically links OpenSSL\r
+## into curl.exe producing a standalone SSL-enabled executable.\r
+##\r
+#\r
+#############################################################\r
+\r
+PROGRAM_NAME = curl.exe\r
+\r
+# -------------------------------------------\r
+# Verify that current subdir is curl's 'src'\r
+# -------------------------------------------\r
+\r
+!IF ! EXIST(.\tool_main.c)\r
+!  MESSAGE Can not process this makefile from outside of curl's 'src' subdirectory.\r
+!  MESSAGE Change to curl's 'src' subdirectory, and try again.\r
+!  ERROR   See previous message.\r
+!ENDIF\r
+\r
+# ------------------------------------------------\r
+# Makefile.msvc.names provides libcurl file names\r
+# ------------------------------------------------\r
+\r
+!INCLUDE ..\winbuild\Makefile.msvc.names\r
+\r
+\r
+!IFNDEF OPENSSL_PATH\r
+OPENSSL_PATH = ../../openssl-1.0.2a\r
+!ENDIF\r
+\r
+!IFNDEF ZLIB_PATH\r
+ZLIB_PATH = ../../zlib-1.2.8\r
+!ENDIF\r
+\r
+!IFNDEF MACHINE\r
+MACHINE  = X86\r
+!ENDIF\r
+\r
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication\r
+# without an openssl installation and offers the ability to authenticate\r
+# using the "current logged in user". Since at least with MSVC12 the sspi.h\r
+# header is broken it is either required to install the Windows SDK,\r
+# or to fix sspi.h with adding this define at the beginning of sspi.h:\r
+# #define FreeCredentialHandle FreeCredentialsHandle\r
+#\r
+# If, for some reason the Windows SDK is installed but not installed\r
+# in the default location, you can specify WINDOWS_SDK_PATH.\r
+# It can be downloaded from:\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
+\r
+# WINDOWS_SSPI = 1\r
+\r
+!IFDEF WINDOWS_SSPI\r
+!IFNDEF WINDOWS_SDK_PATH\r
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"\r
+!ENDIF\r
+!ENDIF\r
+\r
+########################################################\r
+## Nothing more to do below this line!\r
+\r
+ZLIB_CFLAGS    = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
+ZLIB_LFLAGS    = "/LIBPATH:$(ZLIB_PATH)"\r
+ZLIB_LIBS      = zlib.lib\r
+ZLIB_IMP_LIBS  = zdll.lib\r
+\r
+SSL_CFLAGS     = /DUSE_OPENSSL\r
+SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
+SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
+SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
+WINLIBS        = ws2_32.lib wldap32.lib advapi32.lib\r
+\r
+WINSSL_CFLAGS  = /DUSE_SCHANNEL\r
+#WINSSL_LIBS    = gdi32.lib user32.lib\r
+\r
+!IFDEF USE_IDN\r
+WINLIBS        = $(WINLIBS) normaliz.lib\r
+!ENDIF\r
+\r
+# Runtime library configuration\r
+RTLIB   = /MD\r
+RTLIBD  = /MDd\r
+\r
+!IF "$(RTLIBCFG)" == "static"\r
+RTLIB  = /MT\r
+RTLIBD = /MTd\r
+!ENDIF\r
+\r
+## Release\r
+CCR   = cl.exe $(RTLIB) /O2 /DNDEBUG\r
+LINKR = link.exe /incremental:no /libpath:"../lib"\r
+RCR   = rc.exe /dDEBUGBUILD=0\r
+\r
+## Debug\r
+CCD   = cl.exe $(RTLIBD) /Gm /ZI /Od /D_DEBUG /RTC1\r
+LINKD = link.exe /incremental:yes /debug /libpath:"../lib"\r
+RCD   = rc.exe /dDEBUGBUILD=1\r
+\r
+CFLAGS   = /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /D_BIND_TO_CURRENT_VCLIBS_VERSION=1\r
+LFLAGS   = /nologo /out:$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE)\r
+RESFLAGS = /i../include\r
+\r
+# This manifest thing is for VC8, enabled by the maketgz script that\r
+# builds the VC8 version of this makefile. Left commented out in the VC12\r
+# version!\r
+#MANIFESTTOOL = mt -manifest $(PROGRAM_NAME).manifest -outputresource:$(PROGRAM_NAME);1\r
+\r
+!IFDEF WINDOWS_SSPI\r
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include\r
+!ENDIF\r
+\r
+RELEASE_OBJS= \\r
+       nonblockr.obj \\r
+       rawstrr.obj \\r
+       strtoofftr.obj \\r
+       warnless.obj \\r
+       tool_binmoder.obj \\r
+       tool_bnamer.obj \\r
+       tool_cb_dbgr.obj \\r
+       tool_cb_hdrr.obj \\r
+       tool_cb_prgr.obj \\r
+       tool_cb_rear.obj \\r
+       tool_cb_seer.obj \\r
+       tool_cb_wrtr.obj \\r
+       tool_cfgabler.obj \\r
+       tool_convertr.obj \\r
+       tool_dirhier.obj \\r
+       tool_doswinr.obj \\r
+       tool_easysrcr.obj \\r
+       tool_formparser.obj \\r
+       tool_getparamr.obj \\r
+       tool_getpassr.obj \\r
+       tool_helpr.obj \\r
+       tool_helpersr.obj \\r
+       tool_homedirr.obj \\r
+       tool_hugehelpr.obj \\r
+       tool_libinfor.obj \\r
+       tool_mainr.obj \\r
+       tool_metalinkr.obj \\r
+       tool_mfilesr.obj \\r
+       tool_msgsr.obj \\r
+       tool_operater.obj \\r
+       tool_operhlpr.obj \\r
+       tool_panykeyr.obj \\r
+       tool_paramhlpr.obj \\r
+       tool_parsecfgr.obj \\r
+       tool_setoptr.obj \\r
+       tool_sleepr.obj \\r
+       tool_urlglobr.obj \\r
+       tool_utilr.obj \\r
+       tool_vmsr.obj \\r
+       tool_writeenvr.obj \\r
+       tool_writeoutr.obj \\r
+       tool_xattrr.obj \\r
+       curlr.res\r
+\r
+DEBUG_OBJS= \\r
+       nonblockd.obj \\r
+       rawstrd.obj \\r
+       strtoofftd.obj \\r
+       warnlessd.obj \\r
+       tool_binmoded.obj \\r
+       tool_bnamed.obj \\r
+       tool_cb_dbgd.obj \\r
+       tool_cb_hdrd.obj \\r
+       tool_cb_prgd.obj \\r
+       tool_cb_read.obj \\r
+       tool_cb_seed.obj \\r
+       tool_cb_wrtd.obj \\r
+       tool_cfgabled.obj \\r
+       tool_convertd.obj \\r
+       tool_dirhied.obj \\r
+       tool_doswind.obj \\r
+       tool_easysrcd.obj \\r
+       tool_formparsed.obj \\r
+       tool_getparamd.obj \\r
+       tool_getpassd.obj \\r
+       tool_helpd.obj \\r
+       tool_helpersd.obj \\r
+       tool_homedird.obj \\r
+       tool_hugehelpd.obj \\r
+       tool_libinfod.obj \\r
+       tool_maind.obj \\r
+       tool_metalinkd.obj \\r
+       tool_mfilesd.obj \\r
+       tool_msgsd.obj \\r
+       tool_operated.obj \\r
+       tool_operhlpd.obj \\r
+       tool_panykeyd.obj \\r
+       tool_paramhlpd.obj \\r
+       tool_parsecfgd.obj \\r
+       tool_setoptd.obj \\r
+       tool_sleepd.obj \\r
+       tool_urlglobd.obj \\r
+       tool_utild.obj \\r
+       tool_vmsd.obj \\r
+       tool_writeenvd.obj \\r
+       tool_writeoutd.obj \\r
+       tool_xattrd.obj \\r
+       curld.res\r
+\r
+#################################################\r
+# If CFG not specified, use static libs\r
+\r
+CFLAGS         = $(CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG)\r
+\r
+#################################################\r
+# release dynamic library\r
+\r
+!IF "$(CFG)" == "release-dll"\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with zlib\r
+\r
+!IF "$(CFG)" == "release-zlib"\r
+CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(ZLIB_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_LIBS)\r
+LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with ssl\r
+\r
+!IF "$(CFG)" == "release-ssl"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release dynamic library with dynamic ssl\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS)\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with ssl and zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-zlib"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with winssl and zlib\r
+\r
+!IF "$(CFG)" == "release-winssl-zlib"\r
+CFLAGS         = $(CFLAGS) $(WINSSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(WINSSL_LIBS) $(ZLIB_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(WINSSL_LIBS) $(ZLIB_LIBS)\r
+LFLAGS         = $(LFLAGS) $(WINSSL_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with dynamic ssl\r
+\r
+!IF "$(CFG)" == "release-ssl-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release dynamic library with dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-dll-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS)\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with dynamic ssl and dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release dynamic library with dynamic ssl and dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS)\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+LINKLIBS       = $(LINKLIBS) $(WINLIBS)\r
+LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) $(WINLIBS)\r
+\r
+all : release\r
+\r
+release: $(RELEASE_OBJS)\r
+       $(LINKR) $(LFLAGS) $(LINKLIBS) $(RELEASE_OBJS)\r
+        $(MANIFESTTOOL)\r
+\r
+debug: $(DEBUG_OBJS)\r
+       $(LINKD) $(LFLAGS) $(LINKLIBS_DEBUG) $(DEBUG_OBJS)\r
+        $(MANIFESTTOOL)\r
+\r
+## Release\r
+nonblockr.obj: ../lib/nonblock.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/nonblock.c\r
+rawstrr.obj: ../lib/rawstr.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
+strtoofftr.obj: ../lib/strtoofft.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnless.obj: ../lib/warnless.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
+tool_binmoder.obj: tool_binmode.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c\r
+tool_bnamer.obj: tool_bname.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_bname.c\r
+tool_cb_dbgr.obj: tool_cb_dbg.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_dbg.c\r
+tool_cb_hdrr.obj: tool_cb_hdr.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_hdr.c\r
+tool_cb_prgr.obj: tool_cb_prg.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_prg.c\r
+tool_cb_rear.obj: tool_cb_rea.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_rea.c\r
+tool_cb_seer.obj: tool_cb_see.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_see.c\r
+tool_cb_wrtr.obj: tool_cb_wrt.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_wrt.c\r
+tool_cfgabler.obj: tool_cfgable.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cfgable.c\r
+tool_convertr.obj: tool_convert.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_convert.c\r
+tool_dirhier.obj: tool_dirhie.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_dirhie.c\r
+tool_doswinr.obj: tool_doswin.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_doswin.c\r
+tool_easysrcr.obj: tool_easysrc.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_easysrc.c\r
+tool_formparser.obj: tool_formparse.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_formparse.c\r
+tool_getparamr.obj: tool_getparam.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_getparam.c\r
+tool_getpassr.obj: tool_getpass.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_getpass.c\r
+tool_helpr.obj: tool_help.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_help.c\r
+tool_helpersr.obj: tool_helpers.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_helpers.c\r
+tool_homedirr.obj: tool_homedir.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_homedir.c\r
+tool_hugehelpr.obj: tool_hugehelp.c\r
+       $(CCR) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c\r
+tool_libinfor.obj: tool_libinfo.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_libinfo.c\r
+tool_mainr.obj: tool_main.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_main.c\r
+tool_metalinkr.obj: tool_metalink.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_metalink.c\r
+tool_mfilesr.obj: tool_mfiles.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_mfiles.c\r
+tool_msgsr.obj: tool_msgs.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_msgs.c\r
+tool_operater.obj: tool_operate.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_operate.c\r
+tool_operhlpr.obj: tool_operhlp.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_operhlp.c\r
+tool_panykeyr.obj: tool_panykey.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_panykey.c\r
+tool_paramhlpr.obj: tool_paramhlp.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_paramhlp.c\r
+tool_parsecfgr.obj: tool_parsecfg.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_parsecfg.c\r
+tool_setoptr.obj: tool_setopt.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_setopt.c\r
+tool_sleepr.obj: tool_sleep.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_sleep.c\r
+tool_urlglobr.obj: tool_urlglob.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_urlglob.c\r
+tool_utilr.obj: tool_util.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_util.c\r
+tool_vmsr.obj: tool_vms.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_vms.c\r
+tool_writeenvr.obj: tool_writeenv.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_writeenv.c\r
+tool_writeoutr.obj: tool_writeout.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_writeout.c\r
+tool_xattrr.obj: tool_xattr.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_xattr.c\r
+curlr.res : curl.rc\r
+       $(RCR) $(RESFLAGS) /Fo"$@" curl.rc\r
+\r
+## Debug\r
+nonblockd.obj: ../lib/nonblock.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/nonblock.c\r
+rawstrd.obj: ../lib/rawstr.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
+strtoofftd.obj: ../lib/strtoofft.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnlessd.obj: ../lib/warnless.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
+tool_binmoded.obj: tool_binmode.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c\r
+tool_bnamed.obj: tool_bname.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_bname.c\r
+tool_cb_dbgd.obj: tool_cb_dbg.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_dbg.c\r
+tool_cb_hdrd.obj: tool_cb_hdr.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_hdr.c\r
+tool_cb_prgd.obj: tool_cb_prg.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_prg.c\r
+tool_cb_read.obj: tool_cb_rea.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_rea.c\r
+tool_cb_seed.obj: tool_cb_see.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_see.c\r
+tool_cb_wrtd.obj: tool_cb_wrt.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_wrt.c\r
+tool_cfgabled.obj: tool_cfgable.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cfgable.c\r
+tool_convertd.obj: tool_convert.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_convert.c\r
+tool_dirhied.obj: tool_dirhie.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_dirhie.c\r
+tool_doswind.obj: tool_doswin.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_doswin.c\r
+tool_easysrcd.obj: tool_easysrc.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_easysrc.c\r
+tool_formparsed.obj: tool_formparse.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_formparse.c\r
+tool_getparamd.obj: tool_getparam.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_getparam.c\r
+tool_getpassd.obj: tool_getpass.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_getpass.c\r
+tool_helpd.obj: tool_help.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_help.c\r
+tool_helpersd.obj: tool_helpers.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_helpers.c\r
+tool_homedird.obj: tool_homedir.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_homedir.c\r
+tool_hugehelpd.obj: tool_hugehelp.c\r
+       $(CCD) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c\r
+tool_libinfod.obj: tool_libinfo.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_libinfo.c\r
+tool_maind.obj: tool_main.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_main.c\r
+tool_metalinkd.obj: tool_metalink.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_metalink.c\r
+tool_mfilesd.obj: tool_mfiles.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_mfiles.c\r
+tool_msgsd.obj: tool_msgs.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_msgs.c\r
+tool_operated.obj: tool_operate.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_operate.c\r
+tool_operhlpd.obj: tool_operhlp.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_operhlp.c\r
+tool_panykeyd.obj: tool_panykey.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_panykey.c\r
+tool_paramhlpd.obj: tool_paramhlp.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_paramhlp.c\r
+tool_parsecfgd.obj: tool_parsecfg.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_parsecfg.c\r
+tool_setoptd.obj: tool_setopt.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_setopt.c\r
+tool_sleepd.obj: tool_sleep.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_sleep.c\r
+tool_urlglobd.obj: tool_urlglob.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_urlglob.c\r
+tool_utild.obj: tool_util.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_util.c\r
+tool_vmsd.obj: tool_vms.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_vms.c\r
+tool_writeenvd.obj: tool_writeenv.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_writeenv.c\r
+tool_writeoutd.obj: tool_writeout.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_writeout.c\r
+tool_xattrd.obj: tool_xattr.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_xattr.c\r
+curld.res : curl.rc\r
+       $(RCD) $(RESFLAGS) /Fo"$@" curl.rc\r
+\r
+clean:\r
+       @-erase $(PROGRAM_NAME) 2> NUL\r
+       @-erase $(RELEASE_OBJS) 2> NUL\r
+       @-erase $(DEBUG_OBJS) 2> NUL\r
+       @-erase *.idb 2> NUL\r
+       @-erase *.pdb 2> NUL\r
+       @-erase *.pch 2> NUL\r
+       @-erase *.ilk 2> NUL\r
diff --git a/src/Makefile.vc14 b/src/Makefile.vc14
new file mode 100644 (file)
index 0000000..16c4667
--- /dev/null
@@ -0,0 +1,544 @@
+#***************************************************************************\r
+#                                  _   _ ____  _\r
+#  Project                     ___| | | |  _ \| |\r
+#                             / __| | | | |_) | |\r
+#                            | (__| |_| |  _ <| |___\r
+#                             \___|\___/|_| \_\_____|\r
+#\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+#\r
+# This software is licensed as described in the file COPYING, which\r
+# you should have received as part of this distribution. The terms\r
+# are also available at http://curl.haxx.se/docs/copyright.html.\r
+#\r
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
+# copies of the Software, and permit persons to whom the Software is\r
+# furnished to do so, under the terms of the COPYING file.\r
+#\r
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
+# KIND, either express or implied.\r
+#\r
+#***************************************************************************\r
+\r
+# All files in the Makefile.vc* series are generated automatically from the\r
+# one made for MSVC version 6. Alas, if you want to do changes to any of the\r
+# files and send back to the project, edit the version six, make your diff and\r
+# mail curl-users.\r
+\r
+#############################################################\r
+#\r
+## Makefile for building curl.exe with MSVC14\r
+## Use: nmake -f makefile.vc14 [release | debug] [CFG=release-ssl]\r
+##      (default is release)\r
+## "nmake -f makefile.vc14 CFG=release-ssl" statically links OpenSSL\r
+## into curl.exe producing a standalone SSL-enabled executable.\r
+##\r
+#\r
+#############################################################\r
+\r
+PROGRAM_NAME = curl.exe\r
+\r
+# -------------------------------------------\r
+# Verify that current subdir is curl's 'src'\r
+# -------------------------------------------\r
+\r
+!IF ! EXIST(.\tool_main.c)\r
+!  MESSAGE Can not process this makefile from outside of curl's 'src' subdirectory.\r
+!  MESSAGE Change to curl's 'src' subdirectory, and try again.\r
+!  ERROR   See previous message.\r
+!ENDIF\r
+\r
+# ------------------------------------------------\r
+# Makefile.msvc.names provides libcurl file names\r
+# ------------------------------------------------\r
+\r
+!INCLUDE ..\winbuild\Makefile.msvc.names\r
+\r
+\r
+!IFNDEF OPENSSL_PATH\r
+OPENSSL_PATH = ../../openssl-1.0.2a\r
+!ENDIF\r
+\r
+!IFNDEF ZLIB_PATH\r
+ZLIB_PATH = ../../zlib-1.2.8\r
+!ENDIF\r
+\r
+!IFNDEF MACHINE\r
+MACHINE  = X86\r
+!ENDIF\r
+\r
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication\r
+# without an openssl installation and offers the ability to authenticate\r
+# using the "current logged in user". Since at least with MSVC14 the sspi.h\r
+# header is broken it is either required to install the Windows SDK,\r
+# or to fix sspi.h with adding this define at the beginning of sspi.h:\r
+# #define FreeCredentialHandle FreeCredentialsHandle\r
+#\r
+# If, for some reason the Windows SDK is installed but not installed\r
+# in the default location, you can specify WINDOWS_SDK_PATH.\r
+# It can be downloaded from:\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
+\r
+# WINDOWS_SSPI = 1\r
+\r
+!IFDEF WINDOWS_SSPI\r
+!IFNDEF WINDOWS_SDK_PATH\r
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"\r
+!ENDIF\r
+!ENDIF\r
+\r
+########################################################\r
+## Nothing more to do below this line!\r
+\r
+ZLIB_CFLAGS    = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
+ZLIB_LFLAGS    = "/LIBPATH:$(ZLIB_PATH)"\r
+ZLIB_LIBS      = zlib.lib\r
+ZLIB_IMP_LIBS  = zdll.lib\r
+\r
+SSL_CFLAGS     = /DUSE_OPENSSL\r
+SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
+SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
+SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
+WINLIBS        = ws2_32.lib wldap32.lib advapi32.lib\r
+\r
+WINSSL_CFLAGS  = /DUSE_SCHANNEL\r
+#WINSSL_LIBS    = gdi32.lib user32.lib\r
+\r
+!IFDEF USE_IDN\r
+WINLIBS        = $(WINLIBS) normaliz.lib\r
+!ENDIF\r
+\r
+# Runtime library configuration\r
+RTLIB   = /MD\r
+RTLIBD  = /MDd\r
+\r
+!IF "$(RTLIBCFG)" == "static"\r
+RTLIB  = /MT\r
+RTLIBD = /MTd\r
+!ENDIF\r
+\r
+## Release\r
+CCR   = cl.exe $(RTLIB) /O2 /DNDEBUG\r
+LINKR = link.exe /incremental:no /libpath:"../lib"\r
+RCR   = rc.exe /dDEBUGBUILD=0\r
+\r
+## Debug\r
+CCD   = cl.exe $(RTLIBD) /Gm /ZI /Od /D_DEBUG /RTC1\r
+LINKD = link.exe /incremental:yes /debug /libpath:"../lib"\r
+RCD   = rc.exe /dDEBUGBUILD=1\r
+\r
+CFLAGS   = /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /D_BIND_TO_CURRENT_VCLIBS_VERSION=1\r
+LFLAGS   = /nologo /out:$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE)\r
+RESFLAGS = /i../include\r
+\r
+# This manifest thing is for VC8, enabled by the maketgz script that\r
+# builds the VC8 version of this makefile. Left commented out in the VC14\r
+# version!\r
+#MANIFESTTOOL = mt -manifest $(PROGRAM_NAME).manifest -outputresource:$(PROGRAM_NAME);1\r
+\r
+!IFDEF WINDOWS_SSPI\r
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include\r
+!ENDIF\r
+\r
+RELEASE_OBJS= \\r
+       nonblockr.obj \\r
+       rawstrr.obj \\r
+       strtoofftr.obj \\r
+       warnless.obj \\r
+       tool_binmoder.obj \\r
+       tool_bnamer.obj \\r
+       tool_cb_dbgr.obj \\r
+       tool_cb_hdrr.obj \\r
+       tool_cb_prgr.obj \\r
+       tool_cb_rear.obj \\r
+       tool_cb_seer.obj \\r
+       tool_cb_wrtr.obj \\r
+       tool_cfgabler.obj \\r
+       tool_convertr.obj \\r
+       tool_dirhier.obj \\r
+       tool_doswinr.obj \\r
+       tool_easysrcr.obj \\r
+       tool_formparser.obj \\r
+       tool_getparamr.obj \\r
+       tool_getpassr.obj \\r
+       tool_helpr.obj \\r
+       tool_helpersr.obj \\r
+       tool_homedirr.obj \\r
+       tool_hugehelpr.obj \\r
+       tool_libinfor.obj \\r
+       tool_mainr.obj \\r
+       tool_metalinkr.obj \\r
+       tool_mfilesr.obj \\r
+       tool_msgsr.obj \\r
+       tool_operater.obj \\r
+       tool_operhlpr.obj \\r
+       tool_panykeyr.obj \\r
+       tool_paramhlpr.obj \\r
+       tool_parsecfgr.obj \\r
+       tool_setoptr.obj \\r
+       tool_sleepr.obj \\r
+       tool_urlglobr.obj \\r
+       tool_utilr.obj \\r
+       tool_vmsr.obj \\r
+       tool_writeenvr.obj \\r
+       tool_writeoutr.obj \\r
+       tool_xattrr.obj \\r
+       curlr.res\r
+\r
+DEBUG_OBJS= \\r
+       nonblockd.obj \\r
+       rawstrd.obj \\r
+       strtoofftd.obj \\r
+       warnlessd.obj \\r
+       tool_binmoded.obj \\r
+       tool_bnamed.obj \\r
+       tool_cb_dbgd.obj \\r
+       tool_cb_hdrd.obj \\r
+       tool_cb_prgd.obj \\r
+       tool_cb_read.obj \\r
+       tool_cb_seed.obj \\r
+       tool_cb_wrtd.obj \\r
+       tool_cfgabled.obj \\r
+       tool_convertd.obj \\r
+       tool_dirhied.obj \\r
+       tool_doswind.obj \\r
+       tool_easysrcd.obj \\r
+       tool_formparsed.obj \\r
+       tool_getparamd.obj \\r
+       tool_getpassd.obj \\r
+       tool_helpd.obj \\r
+       tool_helpersd.obj \\r
+       tool_homedird.obj \\r
+       tool_hugehelpd.obj \\r
+       tool_libinfod.obj \\r
+       tool_maind.obj \\r
+       tool_metalinkd.obj \\r
+       tool_mfilesd.obj \\r
+       tool_msgsd.obj \\r
+       tool_operated.obj \\r
+       tool_operhlpd.obj \\r
+       tool_panykeyd.obj \\r
+       tool_paramhlpd.obj \\r
+       tool_parsecfgd.obj \\r
+       tool_setoptd.obj \\r
+       tool_sleepd.obj \\r
+       tool_urlglobd.obj \\r
+       tool_utild.obj \\r
+       tool_vmsd.obj \\r
+       tool_writeenvd.obj \\r
+       tool_writeoutd.obj \\r
+       tool_xattrd.obj \\r
+       curld.res\r
+\r
+#################################################\r
+# If CFG not specified, use static libs\r
+\r
+CFLAGS         = $(CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG)\r
+\r
+#################################################\r
+# release dynamic library\r
+\r
+!IF "$(CFG)" == "release-dll"\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with zlib\r
+\r
+!IF "$(CFG)" == "release-zlib"\r
+CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(ZLIB_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_LIBS)\r
+LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with ssl\r
+\r
+!IF "$(CFG)" == "release-ssl"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release dynamic library with dynamic ssl\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS)\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with ssl and zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-zlib"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with winssl and zlib\r
+\r
+!IF "$(CFG)" == "release-winssl-zlib"\r
+CFLAGS         = $(CFLAGS) $(WINSSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(WINSSL_LIBS) $(ZLIB_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(WINSSL_LIBS) $(ZLIB_LIBS)\r
+LFLAGS         = $(LFLAGS) $(WINSSL_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with dynamic ssl\r
+\r
+!IF "$(CFG)" == "release-ssl-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release dynamic library with dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-dll-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS)\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with dynamic ssl and dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release dynamic library with dynamic ssl and dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS)\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+LINKLIBS       = $(LINKLIBS) $(WINLIBS)\r
+LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) $(WINLIBS)\r
+\r
+all : release\r
+\r
+release: $(RELEASE_OBJS)\r
+       $(LINKR) $(LFLAGS) $(LINKLIBS) $(RELEASE_OBJS)\r
+        $(MANIFESTTOOL)\r
+\r
+debug: $(DEBUG_OBJS)\r
+       $(LINKD) $(LFLAGS) $(LINKLIBS_DEBUG) $(DEBUG_OBJS)\r
+        $(MANIFESTTOOL)\r
+\r
+## Release\r
+nonblockr.obj: ../lib/nonblock.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/nonblock.c\r
+rawstrr.obj: ../lib/rawstr.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
+strtoofftr.obj: ../lib/strtoofft.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnless.obj: ../lib/warnless.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
+tool_binmoder.obj: tool_binmode.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c\r
+tool_bnamer.obj: tool_bname.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_bname.c\r
+tool_cb_dbgr.obj: tool_cb_dbg.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_dbg.c\r
+tool_cb_hdrr.obj: tool_cb_hdr.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_hdr.c\r
+tool_cb_prgr.obj: tool_cb_prg.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_prg.c\r
+tool_cb_rear.obj: tool_cb_rea.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_rea.c\r
+tool_cb_seer.obj: tool_cb_see.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_see.c\r
+tool_cb_wrtr.obj: tool_cb_wrt.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_wrt.c\r
+tool_cfgabler.obj: tool_cfgable.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cfgable.c\r
+tool_convertr.obj: tool_convert.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_convert.c\r
+tool_dirhier.obj: tool_dirhie.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_dirhie.c\r
+tool_doswinr.obj: tool_doswin.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_doswin.c\r
+tool_easysrcr.obj: tool_easysrc.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_easysrc.c\r
+tool_formparser.obj: tool_formparse.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_formparse.c\r
+tool_getparamr.obj: tool_getparam.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_getparam.c\r
+tool_getpassr.obj: tool_getpass.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_getpass.c\r
+tool_helpr.obj: tool_help.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_help.c\r
+tool_helpersr.obj: tool_helpers.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_helpers.c\r
+tool_homedirr.obj: tool_homedir.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_homedir.c\r
+tool_hugehelpr.obj: tool_hugehelp.c\r
+       $(CCR) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c\r
+tool_libinfor.obj: tool_libinfo.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_libinfo.c\r
+tool_mainr.obj: tool_main.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_main.c\r
+tool_metalinkr.obj: tool_metalink.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_metalink.c\r
+tool_mfilesr.obj: tool_mfiles.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_mfiles.c\r
+tool_msgsr.obj: tool_msgs.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_msgs.c\r
+tool_operater.obj: tool_operate.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_operate.c\r
+tool_operhlpr.obj: tool_operhlp.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_operhlp.c\r
+tool_panykeyr.obj: tool_panykey.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_panykey.c\r
+tool_paramhlpr.obj: tool_paramhlp.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_paramhlp.c\r
+tool_parsecfgr.obj: tool_parsecfg.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_parsecfg.c\r
+tool_setoptr.obj: tool_setopt.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_setopt.c\r
+tool_sleepr.obj: tool_sleep.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_sleep.c\r
+tool_urlglobr.obj: tool_urlglob.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_urlglob.c\r
+tool_utilr.obj: tool_util.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_util.c\r
+tool_vmsr.obj: tool_vms.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_vms.c\r
+tool_writeenvr.obj: tool_writeenv.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_writeenv.c\r
+tool_writeoutr.obj: tool_writeout.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_writeout.c\r
+tool_xattrr.obj: tool_xattr.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_xattr.c\r
+curlr.res : curl.rc\r
+       $(RCR) $(RESFLAGS) /Fo"$@" curl.rc\r
+\r
+## Debug\r
+nonblockd.obj: ../lib/nonblock.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/nonblock.c\r
+rawstrd.obj: ../lib/rawstr.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
+strtoofftd.obj: ../lib/strtoofft.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnlessd.obj: ../lib/warnless.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
+tool_binmoded.obj: tool_binmode.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c\r
+tool_bnamed.obj: tool_bname.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_bname.c\r
+tool_cb_dbgd.obj: tool_cb_dbg.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_dbg.c\r
+tool_cb_hdrd.obj: tool_cb_hdr.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_hdr.c\r
+tool_cb_prgd.obj: tool_cb_prg.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_prg.c\r
+tool_cb_read.obj: tool_cb_rea.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_rea.c\r
+tool_cb_seed.obj: tool_cb_see.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_see.c\r
+tool_cb_wrtd.obj: tool_cb_wrt.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_wrt.c\r
+tool_cfgabled.obj: tool_cfgable.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cfgable.c\r
+tool_convertd.obj: tool_convert.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_convert.c\r
+tool_dirhied.obj: tool_dirhie.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_dirhie.c\r
+tool_doswind.obj: tool_doswin.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_doswin.c\r
+tool_easysrcd.obj: tool_easysrc.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_easysrc.c\r
+tool_formparsed.obj: tool_formparse.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_formparse.c\r
+tool_getparamd.obj: tool_getparam.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_getparam.c\r
+tool_getpassd.obj: tool_getpass.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_getpass.c\r
+tool_helpd.obj: tool_help.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_help.c\r
+tool_helpersd.obj: tool_helpers.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_helpers.c\r
+tool_homedird.obj: tool_homedir.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_homedir.c\r
+tool_hugehelpd.obj: tool_hugehelp.c\r
+       $(CCD) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c\r
+tool_libinfod.obj: tool_libinfo.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_libinfo.c\r
+tool_maind.obj: tool_main.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_main.c\r
+tool_metalinkd.obj: tool_metalink.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_metalink.c\r
+tool_mfilesd.obj: tool_mfiles.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_mfiles.c\r
+tool_msgsd.obj: tool_msgs.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_msgs.c\r
+tool_operated.obj: tool_operate.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_operate.c\r
+tool_operhlpd.obj: tool_operhlp.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_operhlp.c\r
+tool_panykeyd.obj: tool_panykey.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_panykey.c\r
+tool_paramhlpd.obj: tool_paramhlp.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_paramhlp.c\r
+tool_parsecfgd.obj: tool_parsecfg.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_parsecfg.c\r
+tool_setoptd.obj: tool_setopt.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_setopt.c\r
+tool_sleepd.obj: tool_sleep.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_sleep.c\r
+tool_urlglobd.obj: tool_urlglob.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_urlglob.c\r
+tool_utild.obj: tool_util.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_util.c\r
+tool_vmsd.obj: tool_vms.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_vms.c\r
+tool_writeenvd.obj: tool_writeenv.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_writeenv.c\r
+tool_writeoutd.obj: tool_writeout.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_writeout.c\r
+tool_xattrd.obj: tool_xattr.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_xattr.c\r
+curld.res : curl.rc\r
+       $(RCD) $(RESFLAGS) /Fo"$@" curl.rc\r
+\r
+clean:\r
+       @-erase $(PROGRAM_NAME) 2> NUL\r
+       @-erase $(RELEASE_OBJS) 2> NUL\r
+       @-erase $(DEBUG_OBJS) 2> NUL\r
+       @-erase *.idb 2> NUL\r
+       @-erase *.pdb 2> NUL\r
+       @-erase *.pch 2> NUL\r
+       @-erase *.ilk 2> NUL\r
index c8693af..eec89c2 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -56,7 +56,7 @@ PROGRAM_NAME = curl.exe
 \r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH = ../../openssl-0.9.8zc\r
+OPENSSL_PATH = ../../openssl-1.0.2a\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
@@ -77,7 +77,7 @@ MACHINE  = X86
 # If, for some reason the Windows SDK is installed but not installed\r
 # in the default location, you can specify WINDOWS_SDK_PATH.\r
 # It can be downloaded from:\r
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
 \r
 # WINDOWS_SSPI = 1\r
 \r
@@ -95,7 +95,7 @@ ZLIB_LFLAGS    = "/LIBPATH:$(ZLIB_PATH)"
 ZLIB_LIBS      = zlib.lib\r
 ZLIB_IMP_LIBS  = zdll.lib\r
 \r
-SSL_CFLAGS     = /DUSE_SSLEAY\r
+SSL_CFLAGS     = /DUSE_OPENSSL\r
 SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
 SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
diff --git a/src/Makefile.vc7 b/src/Makefile.vc7
new file mode 100644 (file)
index 0000000..2420d2b
--- /dev/null
@@ -0,0 +1,544 @@
+#***************************************************************************\r
+#                                  _   _ ____  _\r
+#  Project                     ___| | | |  _ \| |\r
+#                             / __| | | | |_) | |\r
+#                            | (__| |_| |  _ <| |___\r
+#                             \___|\___/|_| \_\_____|\r
+#\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+#\r
+# This software is licensed as described in the file COPYING, which\r
+# you should have received as part of this distribution. The terms\r
+# are also available at http://curl.haxx.se/docs/copyright.html.\r
+#\r
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
+# copies of the Software, and permit persons to whom the Software is\r
+# furnished to do so, under the terms of the COPYING file.\r
+#\r
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
+# KIND, either express or implied.\r
+#\r
+#***************************************************************************\r
+\r
+# All files in the Makefile.vc* series are generated automatically from the\r
+# one made for MSVC version 6. Alas, if you want to do changes to any of the\r
+# files and send back to the project, edit the version six, make your diff and\r
+# mail curl-users.\r
+\r
+#############################################################\r
+#\r
+## Makefile for building curl.exe with MSVC7\r
+## Use: nmake -f makefile.vc6 [release | debug] [CFG=release-ssl]\r
+##      (default is release)\r
+## "nmake -f makefile.vc6 CFG=release-ssl" statically links OpenSSL\r
+## into curl.exe producing a standalone SSL-enabled executable.\r
+##\r
+#\r
+#############################################################\r
+\r
+PROGRAM_NAME = curl.exe\r
+\r
+# -------------------------------------------\r
+# Verify that current subdir is curl's 'src'\r
+# -------------------------------------------\r
+\r
+!IF ! EXIST(.\tool_main.c)\r
+!  MESSAGE Can not process this makefile from outside of curl's 'src' subdirectory.\r
+!  MESSAGE Change to curl's 'src' subdirectory, and try again.\r
+!  ERROR   See previous message.\r
+!ENDIF\r
+\r
+# ------------------------------------------------\r
+# Makefile.msvc.names provides libcurl file names\r
+# ------------------------------------------------\r
+\r
+!INCLUDE ..\winbuild\Makefile.msvc.names\r
+\r
+\r
+!IFNDEF OPENSSL_PATH\r
+OPENSSL_PATH = ../../openssl-1.0.2a\r
+!ENDIF\r
+\r
+!IFNDEF ZLIB_PATH\r
+ZLIB_PATH = ../../zlib-1.2.8\r
+!ENDIF\r
+\r
+!IFNDEF MACHINE\r
+MACHINE  = X86\r
+!ENDIF\r
+\r
+# USE_WINDOWS_SSPI uses windows libraries to allow NTLM authentication\r
+# without an openssl installation and offers the ability to authenticate\r
+# using the "current logged in user". Since at least with MSVC7 the sspi.h\r
+# header is broken it is either required to install the Windows SDK,\r
+# or to fix sspi.h with adding this define at the beginning of sspi.h:\r
+# #define FreeCredentialHandle FreeCredentialsHandle\r
+#\r
+# If, for some reason the Windows SDK is installed but not installed\r
+# in the default location, you can specify WINDOWS_SDK_PATH.\r
+# It can be downloaded from:\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
+\r
+# WINDOWS_SSPI = 1\r
+\r
+!IFDEF WINDOWS_SSPI\r
+!IFNDEF WINDOWS_SDK_PATH\r
+WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"\r
+!ENDIF\r
+!ENDIF\r
+\r
+########################################################\r
+## Nothing more to do below this line!\r
+\r
+ZLIB_CFLAGS    = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
+ZLIB_LFLAGS    = "/LIBPATH:$(ZLIB_PATH)"\r
+ZLIB_LIBS      = zlib.lib\r
+ZLIB_IMP_LIBS  = zdll.lib\r
+\r
+SSL_CFLAGS     = /DUSE_OPENSSL\r
+SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
+SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
+SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
+WINLIBS        = ws2_32.lib wldap32.lib advapi32.lib\r
+\r
+WINSSL_CFLAGS  = /DUSE_SCHANNEL\r
+#WINSSL_LIBS    = gdi32.lib user32.lib\r
+\r
+!IFDEF USE_IDN\r
+WINLIBS        = $(WINLIBS) normaliz.lib\r
+!ENDIF\r
+\r
+# Runtime library configuration\r
+RTLIB   = /MD\r
+RTLIBD  = /MDd\r
+\r
+!IF "$(RTLIBCFG)" == "static"\r
+RTLIB  = /MT\r
+RTLIBD = /MTd\r
+!ENDIF\r
+\r
+## Release\r
+CCR   = cl.exe $(RTLIB) /O2 /DNDEBUG\r
+LINKR = link.exe /incremental:no /libpath:"../lib"\r
+RCR   = rc.exe /dDEBUGBUILD=0\r
+\r
+## Debug\r
+CCD   = cl.exe $(RTLIBD) /Gm /ZI /Od /D_DEBUG /GZ\r
+LINKD = link.exe /incremental:yes /debug /libpath:"../lib"\r
+RCD   = rc.exe /dDEBUGBUILD=1\r
+\r
+CFLAGS   = /I../lib /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /D_BIND_TO_CURRENT_VCLIBS_VERSION=1\r
+LFLAGS   = /nologo /out:$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE)\r
+RESFLAGS = /i../include\r
+\r
+# This manifest thing is for VC8, enabled by the maketgz script that\r
+# builds the VC8 version of this makefile. Left commented out in the VC7\r
+# version!\r
+#MANIFESTTOOL = mt -manifest $(PROGRAM_NAME).manifest -outputresource:$(PROGRAM_NAME);1\r
+\r
+!IFDEF WINDOWS_SSPI\r
+CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include\r
+!ENDIF\r
+\r
+RELEASE_OBJS= \\r
+       nonblockr.obj \\r
+       rawstrr.obj \\r
+       strtoofftr.obj \\r
+       warnless.obj \\r
+       tool_binmoder.obj \\r
+       tool_bnamer.obj \\r
+       tool_cb_dbgr.obj \\r
+       tool_cb_hdrr.obj \\r
+       tool_cb_prgr.obj \\r
+       tool_cb_rear.obj \\r
+       tool_cb_seer.obj \\r
+       tool_cb_wrtr.obj \\r
+       tool_cfgabler.obj \\r
+       tool_convertr.obj \\r
+       tool_dirhier.obj \\r
+       tool_doswinr.obj \\r
+       tool_easysrcr.obj \\r
+       tool_formparser.obj \\r
+       tool_getparamr.obj \\r
+       tool_getpassr.obj \\r
+       tool_helpr.obj \\r
+       tool_helpersr.obj \\r
+       tool_homedirr.obj \\r
+       tool_hugehelpr.obj \\r
+       tool_libinfor.obj \\r
+       tool_mainr.obj \\r
+       tool_metalinkr.obj \\r
+       tool_mfilesr.obj \\r
+       tool_msgsr.obj \\r
+       tool_operater.obj \\r
+       tool_operhlpr.obj \\r
+       tool_panykeyr.obj \\r
+       tool_paramhlpr.obj \\r
+       tool_parsecfgr.obj \\r
+       tool_setoptr.obj \\r
+       tool_sleepr.obj \\r
+       tool_urlglobr.obj \\r
+       tool_utilr.obj \\r
+       tool_vmsr.obj \\r
+       tool_writeenvr.obj \\r
+       tool_writeoutr.obj \\r
+       tool_xattrr.obj \\r
+       curlr.res\r
+\r
+DEBUG_OBJS= \\r
+       nonblockd.obj \\r
+       rawstrd.obj \\r
+       strtoofftd.obj \\r
+       warnlessd.obj \\r
+       tool_binmoded.obj \\r
+       tool_bnamed.obj \\r
+       tool_cb_dbgd.obj \\r
+       tool_cb_hdrd.obj \\r
+       tool_cb_prgd.obj \\r
+       tool_cb_read.obj \\r
+       tool_cb_seed.obj \\r
+       tool_cb_wrtd.obj \\r
+       tool_cfgabled.obj \\r
+       tool_convertd.obj \\r
+       tool_dirhied.obj \\r
+       tool_doswind.obj \\r
+       tool_easysrcd.obj \\r
+       tool_formparsed.obj \\r
+       tool_getparamd.obj \\r
+       tool_getpassd.obj \\r
+       tool_helpd.obj \\r
+       tool_helpersd.obj \\r
+       tool_homedird.obj \\r
+       tool_hugehelpd.obj \\r
+       tool_libinfod.obj \\r
+       tool_maind.obj \\r
+       tool_metalinkd.obj \\r
+       tool_mfilesd.obj \\r
+       tool_msgsd.obj \\r
+       tool_operated.obj \\r
+       tool_operhlpd.obj \\r
+       tool_panykeyd.obj \\r
+       tool_paramhlpd.obj \\r
+       tool_parsecfgd.obj \\r
+       tool_setoptd.obj \\r
+       tool_sleepd.obj \\r
+       tool_urlglobd.obj \\r
+       tool_utild.obj \\r
+       tool_vmsd.obj \\r
+       tool_writeenvd.obj \\r
+       tool_writeoutd.obj \\r
+       tool_xattrd.obj \\r
+       curld.res\r
+\r
+#################################################\r
+# If CFG not specified, use static libs\r
+\r
+CFLAGS         = $(CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG)\r
+\r
+#################################################\r
+# release dynamic library\r
+\r
+!IF "$(CFG)" == "release-dll"\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with zlib\r
+\r
+!IF "$(CFG)" == "release-zlib"\r
+CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(ZLIB_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_LIBS)\r
+LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with ssl\r
+\r
+!IF "$(CFG)" == "release-ssl"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release dynamic library with dynamic ssl\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS)\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with ssl and zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-zlib"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with winssl and zlib\r
+\r
+!IF "$(CFG)" == "release-winssl-zlib"\r
+CFLAGS         = $(CFLAGS) $(WINSSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(WINSSL_LIBS) $(ZLIB_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(WINSSL_LIBS) $(ZLIB_LIBS)\r
+LFLAGS         = $(LFLAGS) $(WINSSL_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with dynamic ssl\r
+\r
+!IF "$(CFG)" == "release-ssl-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release dynamic library with dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-dll-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(ZLIB_CFLAGS)\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release static library with dynamic ssl and dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-ssl-dll-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS) /DCURL_STATICLIB\r
+LINKLIBS       = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+#################################################\r
+# release dynamic library with dynamic ssl and dynamic zlib\r
+\r
+!IF "$(CFG)" == "release-dll-ssl-dll-zlib-dll"\r
+CFLAGS         = $(CFLAGS) $(SSL_CFLAGS) $(ZLIB_CFLAGS)\r
+LINKLIBS       = $(LIBCURL_IMP_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
+LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
+!ENDIF\r
+\r
+LINKLIBS       = $(LINKLIBS) $(WINLIBS)\r
+LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) $(WINLIBS)\r
+\r
+all : release\r
+\r
+release: $(RELEASE_OBJS)\r
+       $(LINKR) $(LFLAGS) $(LINKLIBS) $(RELEASE_OBJS)\r
+        $(MANIFESTTOOL)\r
+\r
+debug: $(DEBUG_OBJS)\r
+       $(LINKD) $(LFLAGS) $(LINKLIBS_DEBUG) $(DEBUG_OBJS)\r
+        $(MANIFESTTOOL)\r
+\r
+## Release\r
+nonblockr.obj: ../lib/nonblock.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/nonblock.c\r
+rawstrr.obj: ../lib/rawstr.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
+strtoofftr.obj: ../lib/strtoofft.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnless.obj: ../lib/warnless.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
+tool_binmoder.obj: tool_binmode.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c\r
+tool_bnamer.obj: tool_bname.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_bname.c\r
+tool_cb_dbgr.obj: tool_cb_dbg.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_dbg.c\r
+tool_cb_hdrr.obj: tool_cb_hdr.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_hdr.c\r
+tool_cb_prgr.obj: tool_cb_prg.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_prg.c\r
+tool_cb_rear.obj: tool_cb_rea.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_rea.c\r
+tool_cb_seer.obj: tool_cb_see.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_see.c\r
+tool_cb_wrtr.obj: tool_cb_wrt.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cb_wrt.c\r
+tool_cfgabler.obj: tool_cfgable.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cfgable.c\r
+tool_convertr.obj: tool_convert.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_convert.c\r
+tool_dirhier.obj: tool_dirhie.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_dirhie.c\r
+tool_doswinr.obj: tool_doswin.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_doswin.c\r
+tool_easysrcr.obj: tool_easysrc.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_easysrc.c\r
+tool_formparser.obj: tool_formparse.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_formparse.c\r
+tool_getparamr.obj: tool_getparam.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_getparam.c\r
+tool_getpassr.obj: tool_getpass.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_getpass.c\r
+tool_helpr.obj: tool_help.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_help.c\r
+tool_helpersr.obj: tool_helpers.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_helpers.c\r
+tool_homedirr.obj: tool_homedir.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_homedir.c\r
+tool_hugehelpr.obj: tool_hugehelp.c\r
+       $(CCR) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c\r
+tool_libinfor.obj: tool_libinfo.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_libinfo.c\r
+tool_mainr.obj: tool_main.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_main.c\r
+tool_metalinkr.obj: tool_metalink.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_metalink.c\r
+tool_mfilesr.obj: tool_mfiles.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_mfiles.c\r
+tool_msgsr.obj: tool_msgs.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_msgs.c\r
+tool_operater.obj: tool_operate.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_operate.c\r
+tool_operhlpr.obj: tool_operhlp.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_operhlp.c\r
+tool_panykeyr.obj: tool_panykey.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_panykey.c\r
+tool_paramhlpr.obj: tool_paramhlp.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_paramhlp.c\r
+tool_parsecfgr.obj: tool_parsecfg.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_parsecfg.c\r
+tool_setoptr.obj: tool_setopt.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_setopt.c\r
+tool_sleepr.obj: tool_sleep.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_sleep.c\r
+tool_urlglobr.obj: tool_urlglob.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_urlglob.c\r
+tool_utilr.obj: tool_util.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_util.c\r
+tool_vmsr.obj: tool_vms.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_vms.c\r
+tool_writeenvr.obj: tool_writeenv.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_writeenv.c\r
+tool_writeoutr.obj: tool_writeout.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_writeout.c\r
+tool_xattrr.obj: tool_xattr.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_xattr.c\r
+curlr.res : curl.rc\r
+       $(RCR) $(RESFLAGS) /Fo"$@" curl.rc\r
+\r
+## Debug\r
+nonblockd.obj: ../lib/nonblock.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/nonblock.c\r
+rawstrd.obj: ../lib/rawstr.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
+strtoofftd.obj: ../lib/strtoofft.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnlessd.obj: ../lib/warnless.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
+tool_binmoded.obj: tool_binmode.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c\r
+tool_bnamed.obj: tool_bname.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_bname.c\r
+tool_cb_dbgd.obj: tool_cb_dbg.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_dbg.c\r
+tool_cb_hdrd.obj: tool_cb_hdr.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_hdr.c\r
+tool_cb_prgd.obj: tool_cb_prg.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_prg.c\r
+tool_cb_read.obj: tool_cb_rea.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_rea.c\r
+tool_cb_seed.obj: tool_cb_see.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_see.c\r
+tool_cb_wrtd.obj: tool_cb_wrt.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cb_wrt.c\r
+tool_cfgabled.obj: tool_cfgable.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cfgable.c\r
+tool_convertd.obj: tool_convert.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_convert.c\r
+tool_dirhied.obj: tool_dirhie.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_dirhie.c\r
+tool_doswind.obj: tool_doswin.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_doswin.c\r
+tool_easysrcd.obj: tool_easysrc.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_easysrc.c\r
+tool_formparsed.obj: tool_formparse.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_formparse.c\r
+tool_getparamd.obj: tool_getparam.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_getparam.c\r
+tool_getpassd.obj: tool_getpass.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_getpass.c\r
+tool_helpd.obj: tool_help.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_help.c\r
+tool_helpersd.obj: tool_helpers.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_helpers.c\r
+tool_homedird.obj: tool_homedir.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_homedir.c\r
+tool_hugehelpd.obj: tool_hugehelp.c\r
+       $(CCD) $(CFLAGS) /Zm200 /Fo"$@" tool_hugehelp.c\r
+tool_libinfod.obj: tool_libinfo.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_libinfo.c\r
+tool_maind.obj: tool_main.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_main.c\r
+tool_metalinkd.obj: tool_metalink.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_metalink.c\r
+tool_mfilesd.obj: tool_mfiles.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_mfiles.c\r
+tool_msgsd.obj: tool_msgs.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_msgs.c\r
+tool_operated.obj: tool_operate.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_operate.c\r
+tool_operhlpd.obj: tool_operhlp.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_operhlp.c\r
+tool_panykeyd.obj: tool_panykey.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_panykey.c\r
+tool_paramhlpd.obj: tool_paramhlp.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_paramhlp.c\r
+tool_parsecfgd.obj: tool_parsecfg.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_parsecfg.c\r
+tool_setoptd.obj: tool_setopt.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_setopt.c\r
+tool_sleepd.obj: tool_sleep.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_sleep.c\r
+tool_urlglobd.obj: tool_urlglob.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_urlglob.c\r
+tool_utild.obj: tool_util.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_util.c\r
+tool_vmsd.obj: tool_vms.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_vms.c\r
+tool_writeenvd.obj: tool_writeenv.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_writeenv.c\r
+tool_writeoutd.obj: tool_writeout.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_writeout.c\r
+tool_xattrd.obj: tool_xattr.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_xattr.c\r
+curld.res : curl.rc\r
+       $(RCD) $(RESFLAGS) /Fo"$@" curl.rc\r
+\r
+clean:\r
+       @-erase $(PROGRAM_NAME) 2> NUL\r
+       @-erase $(RELEASE_OBJS) 2> NUL\r
+       @-erase $(DEBUG_OBJS) 2> NUL\r
+       @-erase *.idb 2> NUL\r
+       @-erase *.pdb 2> NUL\r
+       @-erase *.pch 2> NUL\r
+       @-erase *.ilk 2> NUL\r
index 7243799..4399c28 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -56,7 +56,7 @@ PROGRAM_NAME = curl.exe
 \r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH = ../../openssl-0.9.8zc\r
+OPENSSL_PATH = ../../openssl-1.0.2a\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
@@ -77,7 +77,7 @@ MACHINE  = X86
 # If, for some reason the Windows SDK is installed but not installed\r
 # in the default location, you can specify WINDOWS_SDK_PATH.\r
 # It can be downloaded from:\r
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
 \r
 # WINDOWS_SSPI = 1\r
 \r
@@ -95,7 +95,7 @@ ZLIB_LFLAGS    = "/LIBPATH:$(ZLIB_PATH)"
 ZLIB_LIBS      = zlib.lib\r
 ZLIB_IMP_LIBS  = zdll.lib\r
 \r
-SSL_CFLAGS     = /DUSE_SSLEAY\r
+SSL_CFLAGS     = /DUSE_OPENSSL\r
 SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
 SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
index 9d60e63..b149a93 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -56,7 +56,7 @@ PROGRAM_NAME = curl.exe
 \r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH = ../../openssl-0.9.8zc\r
+OPENSSL_PATH = ../../openssl-1.0.2a\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
@@ -77,7 +77,7 @@ MACHINE  = X86
 # If, for some reason the Windows SDK is installed but not installed\r
 # in the default location, you can specify WINDOWS_SDK_PATH.\r
 # It can be downloaded from:\r
-# http://www.microsoft.com/msdownload/platformsdk/sdkupdate/\r
+# https://msdn.microsoft.com/windows/bb980924.aspx\r
 \r
 # WINDOWS_SSPI = 1\r
 \r
@@ -95,7 +95,7 @@ ZLIB_LFLAGS    = "/LIBPATH:$(ZLIB_PATH)"
 ZLIB_LIBS      = zlib.lib\r
 ZLIB_IMP_LIBS  = zdll.lib\r
 \r
-SSL_CFLAGS     = /DUSE_SSLEAY\r
+SSL_CFLAGS     = /DUSE_OPENSSL\r
 SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
 SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
diff --git a/src/checksrc.whitelist b/src/checksrc.whitelist
new file mode 100644 (file)
index 0000000..b078ac1
--- /dev/null
@@ -0,0 +1,3 @@
+ * 'name=@filename,filename2,filename3'
+ * 'name=@filename;type=image/gif,filename2,filename3'
+  file = fopen(name, "r"); /* VMS */
index 7ed86f7..088a09a 100644 (file)
@@ -54,6 +54,9 @@ while (<STDIN>) {
     # this should be removed:
     $line =~ s/(\b.|_\b)//g;
 
+    # remove trailing CR from line. msysgit checks out files as line+CRLF
+    $line =~ s/\r$//;
+
     if($line =~ /^([ \t]*\n|curl)/i) {
         # cut off headers and empty lines
         $wline++; # count number of cut off lines
@@ -90,7 +93,12 @@ open(READ, "<$README") ||
     die "couldn't read the README infile $README";
 
 while(<READ>) {
-    push @out, $_;
+    my $line = $_;
+
+    # remove trailing CR from line. msysgit checks out files as line+CRLF
+    $line =~ s/\r$//;
+
+    push @out, $line;
 }
 close(READ);
 
index 4add67c..f527146 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -79,7 +79,7 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
       /* Ok, this is somewhat hackish but we do it undocumented for now */
       config->trace_stream = config->errors;  /* aka stderr */
     else {
-      config->trace_stream = fopen(config->trace_dump, "w");
+      config->trace_stream = fopen(config->trace_dump, FOPEN_WRITETEXT);
       config->trace_fopened = TRUE;
     }
   }
@@ -88,7 +88,7 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
     output = config->trace_stream;
 
   if(!output) {
-    warnf(operation, "Failed to create/open output");
+    warnf(config, "Failed to create/open output");
     return 0;
   }
 
index ef340f7..fd208e8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -61,7 +61,8 @@ size_t tool_header_cb(void *ptr, size_t size, size_t nmemb, void *userdata)
 
 #ifdef DEBUGBUILD
   if(size * nmemb > (size_t)CURL_MAX_HTTP_HEADER) {
-    warnf(heads->config, "Header data exceeds single call write limit!\n");
+    warnf(heads->config->global, "Header data exceeds single call write "
+          "limit!\n");
     return failure;
   }
 #endif
@@ -74,6 +75,8 @@ size_t tool_header_cb(void *ptr, size_t size, size_t nmemb, void *userdata)
     size_t rc = fwrite(ptr, size, nmemb, heads->stream);
     if(rc != cb)
       return rc;
+    /* flush the stream to send off what we got earlier */
+    (void)fflush(heads->stream);
   }
 
   /*
index dfbf95c..9be393f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include "memdebug.h" /* keep this as LAST include */
 
+/* create a local file for writing, return TRUE on success */
+bool tool_create_output_file(struct OutStruct *outs)
+{
+  struct GlobalConfig *global = outs->config->global;
+  FILE *file;
+
+  if(!outs->filename || !*outs->filename) {
+    warnf(global, "Remote filename has no length!\n");
+    return FALSE;
+  }
+
+  if(outs->is_cd_filename) {
+    /* don't overwrite existing files */
+    file = fopen(outs->filename, "rb");
+    if(file) {
+      fclose(file);
+      warnf(global, "Refusing to overwrite %s: %s\n", outs->filename,
+            strerror(EEXIST));
+      return FALSE;
+    }
+  }
+
+  /* open file for writing */
+  file = fopen(outs->filename, "wb");
+  if(!file) {
+    warnf(global, "Failed to create the file %s: %s\n", outs->filename,
+          strerror(errno));
+    return FALSE;
+  }
+  outs->s_isreg = TRUE;
+  outs->fopened = TRUE;
+  outs->stream = file;
+  outs->bytes = 0;
+  outs->init = 0;
+  return TRUE;
+}
+
 /*
 ** callback for CURLOPT_WRITEFUNCTION
 */
@@ -55,13 +92,14 @@ size_t tool_write_cb(void *buffer, size_t sz, size_t nmemb, void *userdata)
 #ifdef DEBUGBUILD
   if(config->include_headers) {
     if(sz * nmemb > (size_t)CURL_MAX_HTTP_HEADER) {
-      warnf(config, "Header data size exceeds single call write limit!\n");
+      warnf(config->global, "Header data size exceeds single call write "
+            "limit!\n");
       return failure;
     }
   }
   else {
     if(sz * nmemb > (size_t)CURL_MAX_WRITE_SIZE) {
-      warnf(config, "Data size exceeds single call write limit!\n");
+      warnf(config->global, "Data size exceeds single call write limit!\n");
       return failure;
     }
   }
@@ -90,44 +128,14 @@ size_t tool_write_cb(void *buffer, size_t sz, size_t nmemb, void *userdata)
         check_fails = TRUE;
     }
     if(check_fails) {
-      warnf(config, "Invalid output struct data for write callback\n");
+      warnf(config->global, "Invalid output struct data for write callback\n");
       return failure;
     }
   }
 #endif
 
-  if(!outs->stream) {
-    FILE *file;
-
-    if(!outs->filename || !*outs->filename) {
-      warnf(config, "Remote filename has no length!\n");
-      return failure;
-    }
-
-    if(outs->is_cd_filename) {
-      /* don't overwrite existing files */
-      file = fopen(outs->filename, "rb");
-      if(file) {
-        fclose(file);
-        warnf(config, "Refusing to overwrite %s: %s\n", outs->filename,
-              strerror(EEXIST));
-        return failure;
-      }
-    }
-
-    /* open file for writing */
-    file = fopen(outs->filename, "wb");
-    if(!file) {
-      warnf(config, "Failed to create the file %s: %s\n", outs->filename,
-            strerror(errno));
-      return failure;
-    }
-    outs->s_isreg = TRUE;
-    outs->fopened = TRUE;
-    outs->stream = file;
-    outs->bytes = 0;
-    outs->init = 0;
-  }
+  if(!outs->stream && !tool_create_output_file(outs))
+    return failure;
 
   rc = fwrite(buffer, sz, nmemb, outs->stream);
 
@@ -149,4 +157,3 @@ size_t tool_write_cb(void *buffer, size_t sz, size_t nmemb, void *userdata)
 
   return rc;
 }
-
index 380d8dd..ecbefa8 100644 (file)
@@ -29,5 +29,8 @@
 
 size_t tool_write_cb(void *buffer, size_t sz, size_t nmemb, void *userdata);
 
+/* create a local file for writing, return TRUE on success */
+bool tool_create_output_file(struct OutStruct *outs);
+
 #endif /* HEADER_CURL_TOOL_CB_WRT_H */
 
index c9ee417..ba6c468 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -136,6 +136,8 @@ static void free_config_fields(struct OperationConfig *config)
 
   Curl_safefree(config->socksproxy);
   Curl_safefree(config->socks5_gssapi_service);
+  Curl_safefree(config->proxy_service_name);
+  Curl_safefree(config->service_name);
 
   Curl_safefree(config->ftp_account);
   Curl_safefree(config->ftp_alternative_to_user);
index cf8d563..c6a6914 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -126,6 +126,7 @@ struct OperationConfig {
   bool globoff;
   bool use_httpget;
   bool insecure_ok;         /* set TRUE to allow insecure SSL connects */
+  bool verifystatus;
   bool create_dirs;
   bool ftp_create_dirs;
   bool ftp_skip_ip;
@@ -165,8 +166,12 @@ struct OperationConfig {
   int socksver;             /* set to CURLPROXY_SOCKS* define */
   char *socks5_gssapi_service;  /* set service name for gssapi principal
                                  * default rcmd */
+  char *proxy_service_name; /* set service name for proxy negotiation
+                             * default HTTP */
   int socks5_gssapi_nec ;   /* The NEC reference server does not protect
                              * the encryption type exchange */
+  char *service_name;       /* set negotiation service name
+                             * default HTTP */
 
   bool tcp_nodelay;
   long req_retry;           /* number of retries */
@@ -194,6 +199,7 @@ struct OperationConfig {
   bool xattr;               /* store metadata in extended attributes */
   long gssapi_delegation;
   bool ssl_allow_beast;     /* allow this SSL vulnerability */
+  bool ssl_no_revoke;       /* disable SSL certificate revocation checks */
 
   bool use_metalink;        /* process given URLs as metalink XML file */
   metalinkfile *metalinkfile_list; /* point to the first node */
@@ -205,7 +211,8 @@ struct OperationConfig {
   bool nonpn;                     /* enable/disable TLS NPN extension */
   bool noalpn;                    /* enable/disable TLS ALPN extension */
   char *unix_socket_path;         /* path to Unix domain socket */
-
+  bool falsestart;
+  bool path_as_is;
   struct GlobalConfig *global;
   struct OperationConfig *prev;
   struct OperationConfig *next;   /* Always last in the struct */
index 5965f7a..b6a8067 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -129,7 +129,7 @@ CURLcode create_dir_hierarchy(const char *outfile, FILE *errors)
           snprintf(dirbuildup, outlen, "%s%s", DIR_CHAR, tempdir);
       }
       if(access(dirbuildup, F_OK) == -1) {
-        if(-1 == mkdir(dirbuildup,(mode_t)0000750)) {
+        if(-1 == mkdir(dirbuildup, (mode_t)0000750)) {
           show_dir_errno(errors, dirbuildup);
           result = CURLE_WRITE_ERROR;
           break; /* get out of loop */
index 3db27bb..0482ef6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -176,13 +176,13 @@ void dumpeasysrc(struct GlobalConfig *config)
     FILE *out;
     bool fopened = FALSE;
     if(strcmp(o, "-")) {
-      out = fopen(o, "w");
+      out = fopen(o, FOPEN_WRITETEXT);
       fopened = TRUE;
     }
     else
       out = stdout;
     if(!out)
-      warnf(config->current, "Failed to open %s to write libcurl code!\n", o);
+      warnf(config, "Failed to open %s to write libcurl code!\n", o);
     else {
       int i;
       const char *c;
index 1dcd897..f26f259 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -206,7 +206,8 @@ int formparse(struct OperationConfig *config,
             /* verify that this is a fine type specifier */
             if(2 != sscanf(type, "%127[^/]/%127[^;,\n]",
                            type_major, type_minor)) {
-              warnf(config, "Illegally formatted content-type field!\n");
+              warnf(config->global,
+                    "Illegally formatted content-type field!\n");
               Curl_safefree(contents);
               FreeMultiInfo(&multi_start, &multi_current);
               return 2; /* illegal content-type syntax! */
@@ -246,7 +247,7 @@ int formparse(struct OperationConfig *config,
             semicolon = (';' == *ptr) ? TRUE : FALSE;
             if(*unknown) {
               *word_end = '\0';
-              warnf(config, "skip unknown form field: %s\n", unknown);
+              warnf(config->global, "skip unknown form field: %s\n", unknown);
             }
           }
         }
@@ -257,7 +258,7 @@ int formparse(struct OperationConfig *config,
 
         if(*contp && !AddMultiFiles(contp, type, filename, &multi_start,
                           &multi_current)) {
-          warnf(config, "Error building form post!\n");
+          warnf(config->global, "Error building form post!\n");
           Curl_safefree(contents);
           FreeMultiInfo(&multi_start, &multi_current);
           return 3;
@@ -291,7 +292,7 @@ int formparse(struct OperationConfig *config,
         if(curl_formadd(httppost, last_post,
                         CURLFORM_COPYNAME, name,
                         CURLFORM_ARRAY, forms, CURLFORM_END) != 0) {
-          warnf(config, "curl_formadd failed!\n");
+          warnf(config->global, "curl_formadd failed!\n");
           Curl_safefree(forms);
           Curl_safefree(contents);
           return 5;
@@ -323,8 +324,8 @@ int formparse(struct OperationConfig *config,
 
         if(curl_formadd(httppost, last_post,
                         CURLFORM_ARRAY, info, CURLFORM_END ) != 0) {
-          warnf(config, "curl_formadd failed, possibly the file %s is bad!\n",
-                contp+1);
+          warnf(config->global, "curl_formadd failed, possibly the file %s is "
+                "bad!\n", contp + 1);
           Curl_safefree(contents);
           return 6;
         }
@@ -332,7 +333,7 @@ int formparse(struct OperationConfig *config,
       else {
 #ifdef CURL_DOES_CONVERSIONS
         if(convert_to_network(contp, strlen(contp))) {
-          warnf(config, "curl_formadd failed!\n");
+          warnf(config->global, "curl_formadd failed!\n");
           Curl_safefree(contents);
           return 7;
         }
@@ -343,7 +344,7 @@ int formparse(struct OperationConfig *config,
         info[i].option = CURLFORM_END;
         if(curl_formadd(httppost, last_post,
                         CURLFORM_ARRAY, info, CURLFORM_END) != 0) {
-          warnf(config, "curl_formadd failed!\n");
+          warnf(config->global, "curl_formadd failed!\n");
           Curl_safefree(contents);
           return 8;
         }
@@ -352,10 +353,9 @@ int formparse(struct OperationConfig *config,
 
   }
   else {
-    warnf(config, "Illegally formatted input field!\n");
+    warnf(config->global, "Illegally formatted input field!\n");
     return 1;
   }
   Curl_safefree(contents);
   return 0;
 }
-
index 3932ccb..4405bce 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -145,7 +145,7 @@ static const struct LongShort aliases[]= {
   {"$v", "ssl-reqd",                 FALSE},
          /* 'ssl-reqd' new in 7.20.0, previously this was ftp-ssl-reqd */
   {"$w", "sessionid",                FALSE},
-         /* ¡sessionid' listed as --no-sessionid in the help */
+         /* 'sessionid' listed as --no-sessionid in the help */
   {"$x", "ftp-ssl-control",          FALSE},
   {"$y", "ftp-ssl-ccc",              FALSE},
   {"$j", "ftp-ssl-ccc-mode",         TRUE},
@@ -158,10 +158,10 @@ static const struct LongShort aliases[]= {
   {"$3", "keepalive-time",           TRUE},
   {"$4", "post302",                  FALSE},
   {"$5", "noproxy",                  TRUE},
-#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   {"$6", "socks5-gssapi-service",    TRUE},
   {"$7", "socks5-gssapi-nec",        FALSE},
-#endif
+  {"$O", "proxy-service-name",       TRUE},
+  {"$P", "service-name",             TRUE},
   {"$8", "proxy1.0",                 TRUE},
   {"$9", "tftp-blksize",             TRUE},
   {"$A", "mail-from",                TRUE},
@@ -177,6 +177,7 @@ static const struct LongShort aliases[]= {
   {"$K", "sasl-ir",                  FALSE},
   {"$L", "test-event",               FALSE},
   {"$M", "unix-socket",              TRUE},
+  {"$N", "path-as-is",               FALSE},
   {"0",   "http1.0",                 FALSE},
   {"01",  "http1.1",                 FALSE},
   {"02",  "http2",                   FALSE},
@@ -195,6 +196,7 @@ static const struct LongShort aliases[]= {
   {"c",  "cookie-jar",               TRUE},
   {"C",  "continue-at",              TRUE},
   {"d",  "data",                     TRUE},
+  {"dr", "data-raw",                 TRUE},
   {"da", "data-ascii",               TRUE},
   {"db", "data-binary",              TRUE},
   {"de", "data-urlencode",           TRUE},
@@ -217,6 +219,9 @@ static const struct LongShort aliases[]= {
   {"En", "ssl-allow-beast",          FALSE},
   {"Eo", "login-options",            TRUE},
   {"Ep", "pinnedpubkey",             TRUE},
+  {"Eq", "cert-status",              FALSE},
+  {"Er", "false-start",              FALSE},
+  {"Es", "ssl-no-revoke",            FALSE},
   {"f",  "fail",                     FALSE},
   {"F",  "form",                     TRUE},
   {"Fs", "form-string",              TRUE},
@@ -522,7 +527,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
       case 'g': /* --trace */
         GetStr(&global->trace_dump, nextarg);
         if(global->tracetype && (global->tracetype != TRACE_BIN))
-          warnf(config, "--trace overrides an earlier trace/verbose option\n");
+          warnf(global, "--trace overrides an earlier trace/verbose option\n");
         global->tracetype = TRACE_BIN;
         break;
       case 'G': /* --npn */
@@ -531,7 +536,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
       case 'h': /* --trace-ascii */
         GetStr(&global->trace_dump, nextarg);
         if(global->tracetype && (global->tracetype != TRACE_ASCII))
-          warnf(config,
+          warnf(global,
                 "--trace-ascii overrides an earlier trace/verbose option\n");
         global->tracetype = TRACE_ASCII;
         break;
@@ -567,7 +572,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
           /* for plain bytes, leave as-is */
           break;
         default:
-          warnf(config, "unsupported rate unit. Use G, M, K or B!\n");
+          warnf(global, "unsupported rate unit. Use G, M, K or B!\n");
           return PARAM_BAD_USE;
         }
         config->recvpersecond = value;
@@ -675,9 +680,9 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
 
       case 'v': /* --stderr */
         if(strcmp(nextarg, "-")) {
-          FILE *newfile = fopen(nextarg, "wt");
+          FILE *newfile = fopen(nextarg, FOPEN_WRITETEXT);
           if(!newfile)
-            warnf(config, "Failed to open %s!\n", nextarg);
+            warnf(global, "Failed to open %s!\n", nextarg);
           else {
             if(global->errors_fopened)
               fclose(global->errors);
@@ -829,7 +834,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         else {
           config->localportrange -= config->localport;
           if(config->localportrange < 1) {
-            warnf(config, "bad range input\n");
+            warnf(global, "bad range input\n");
             return PARAM_BAD_USE;
           }
         }
@@ -861,7 +866,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         break;
       case 'z': /* --libcurl */
 #ifdef CURL_DISABLE_LIBCURL_OPTION
-        warnf(config,
+        warnf(global,
               "--libcurl option was disabled at build-time!\n");
         return PARAM_OPTION_UNKNOWN;
 #else
@@ -892,14 +897,18 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         /* This specifies the noproxy list */
         GetStr(&config->noproxy, nextarg);
         break;
-#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
       case '6': /* --socks5-gssapi-service */
         GetStr(&config->socks5_gssapi_service, nextarg);
         break;
       case '7': /* --socks5-gssapi-nec*/
         config->socks5_gssapi_nec = toggle;
         break;
-#endif
+      case 'O': /* --proxy-service-name */
+        GetStr(&config->proxy_service_name, nextarg);
+        break;
+      case 'P': /* --service-name */
+        GetStr(&config->service_name, nextarg);
+        break;
       case '8': /* --proxy1.0 */
         /* http 1.0 proxy */
         GetStr(&config->proxy, nextarg);
@@ -949,7 +958,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
           int mlmaj, mlmin, mlpatch;
           metalink_get_version(&mlmaj, &mlmin, &mlpatch);
           if((mlmaj*10000)+(mlmin*100)+mlpatch < CURL_REQ_LIBMETALINK_VERS) {
-            warnf(config,
+            warnf(global,
                   "--metalink option cannot be used because the version of "
                   "the linked libmetalink library is too old. "
                   "Required: %d.%d.%d, found %d.%d.%d\n",
@@ -962,7 +971,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
           else
             config->use_metalink = toggle;
 #else
-          warnf(config, "--metalink option is ignored because the binary is "
+          warnf(global, "--metalink option is ignored because the binary is "
                 "built without the Metalink support.\n");
 #endif
           break;
@@ -974,12 +983,15 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
 #ifdef CURLDEBUG
         config->test_event_based = toggle;
 #else
-        warnf(config, "--test-event is ignored unless a debug build!\n");
+        warnf(global, "--test-event is ignored unless a debug build!\n");
 #endif
         break;
       case 'M': /* --unix-socket */
         GetStr(&config->unix_socket_path, nextarg);
         break;
+      case 'N': /* --path-as-is */
+        config->path_as_is = toggle;
+        break;
       }
       break;
     case '#': /* --progress-bar */
@@ -1093,6 +1105,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
       char *postdata = NULL;
       FILE *file;
       size_t size = 0;
+      bool raw_mode = (subletter == 'r');
 
       if(subletter == 'e') { /* --data-urlencode*/
         /* [name]=[content], we encode the content part only
@@ -1118,7 +1131,6 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         }
         if('@' == is_file) {
           /* a '@' letter, it means that a file name or - (stdin) follows */
-
           if(curlx_strequal("-", p)) {
             file = stdin;
             set_binmode(stdin);
@@ -1126,7 +1138,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
           else {
             file = fopen(p, "rb");
             if(!file)
-              warnf(config,
+              warnf(global,
                     "Couldn't read data from file \"%s\", this makes "
                     "an empty POST.\n", nextarg);
           }
@@ -1179,7 +1191,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
             return PARAM_NO_MEM;
         }
       }
-      else if('@' == *nextarg) {
+      else if('@' == *nextarg && !raw_mode) {
         /* the data begins with a '@' letter, it means that a file name
            or - (stdin) follows */
         nextarg++; /* pass the @ */
@@ -1192,7 +1204,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         else {
           file = fopen(nextarg, "rb");
           if(!file)
-            warnf(config, "Couldn't read data from file \"%s\", this makes "
+            warnf(global, "Couldn't read data from file \"%s\", this makes "
                   "an empty POST.\n", nextarg);
         }
 
@@ -1309,7 +1321,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         break;
       case 'f': /* crypto engine */
         GetStr(&config->engine, nextarg);
-        if(config->engine && curlx_raw_equal(config->engine,"list"))
+        if(config->engine && curlx_raw_equal(config->engine, "list"))
           return PARAM_ENGINES_REQUESTED;
         break;
       case 'g': /* CA info PEM file */
@@ -1363,6 +1375,19 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         GetStr(&config->pinnedpubkey, nextarg);
         break;
 
+      case 'q': /* --cert-status */
+        config->verifystatus = TRUE;
+        break;
+
+      case 'r': /* --false-start */
+        config->falsestart = TRUE;
+        break;
+
+      case 's': /* --ssl-no-revoke */
+        if(curlinfo->features & CURL_VERSION_SSL)
+          config->ssl_no_revoke = TRUE;
+        break;
+
       default: /* certificate file */
       {
         char *certname, *passphrase;
@@ -1436,7 +1461,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
       break;
     case 'J': /* --remote-header-name */
       if(config->include_headers) {
-        warnf(config,
+        warnf(global,
               "--include and --remote-header-name cannot be combined.\n");
         return PARAM_BAD_USE;
       }
@@ -1447,7 +1472,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
       break;
     case 'K': /* parse config file */
       if(parseconfig(nextarg, global))
-        warnf(config, "error trying read config from the '%s' file\n",
+        warnf(global, "error trying read config from the '%s' file\n",
               nextarg);
       break;
     case 'l':
@@ -1474,7 +1499,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
 #ifdef USE_MANUAL
         return PARAM_MANUAL_REQUESTED;
 #else
-        warnf(config,
+        warnf(global,
               "built-in manual was disabled at build-time!\n");
         return PARAM_OPTION_UNKNOWN;
 #endif
@@ -1593,7 +1618,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
       if(ISDIGIT(*nextarg) && !strchr(nextarg, '-')) {
         char buffer[32];
         curl_off_t off;
-        warnf(config,
+        warnf(global,
               "A specified range MUST include at least one dash (-). "
               "Appending one for you!\n");
         off = curlx_strtoofft(nextarg, NULL, 10);
@@ -1609,7 +1634,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         tmp_range = nextarg;
         while(*tmp_range != '\0') {
           if(!ISDIGIT(*tmp_range) && *tmp_range != '-' && *tmp_range != ',') {
-            warnf(config,"Invalid character is found in given range. "
+            warnf(global, "Invalid character is found in given range. "
                   "A specified range MUST have only digits in "
                   "\'start\'-\'stop\'. The server's response to this "
                   "request is uncertain.\n");
@@ -1698,7 +1723,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         if(!global->trace_dump)
           return PARAM_NO_MEM;
         if(global->tracetype && (global->tracetype != TRACE_PLAIN))
-          warnf(config,
+          warnf(global,
                 "-v, --verbose overrides an earlier trace/verbose option\n");
         global->tracetype = TRACE_PLAIN;
       }
@@ -1725,7 +1750,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         }
         else {
           fname = nextarg;
-          file = fopen(nextarg, "r");
+          file = fopen(nextarg, FOPEN_READTEXT);
         }
         err = file2string(&config->writeout, file);
         if(file && (file != stdin))
@@ -1733,7 +1758,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         if(err)
           return err;
         if(!config->writeout)
-          warnf(config, "Failed to read %s", fname);
+          warnf(global, "Failed to read %s", fname);
       }
       else
         GetStr(&config->writeout, nextarg);
@@ -1791,7 +1816,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         if(-1 == stat(nextarg, &statbuf)) {
           /* failed, remove time condition */
           config->timecond = CURL_TIMECOND_NONE;
-          warnf(config,
+          warnf(global,
                 "Illegal date format for -z, --timecond (and not "
                 "a file name). Disabling time condition. "
                 "See curl_getdate(3) for valid date syntax.\n");
index 4c8dcb9..0f7ed01 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -52,9 +52,9 @@
 #  endif
 #endif
 
-#define _MPRINTF_REPLACE
-#include <curl/mprintf.h>
-
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
 #include "tool_getpass.h"
 
 #include "memdebug.h" /* keep this as LAST include */
@@ -229,7 +229,7 @@ char *getpass_r(const char *prompt, /* prompt to display */
   bool disabled;
   int fd = open("/dev/tty", O_RDONLY);
   if(-1 == fd)
-    fd = 1; /* use stdin if the tty couldn't be used */
+    fd = STDIN_FILENO; /* use stdin if the tty couldn't be used */
 
   disabled = ttyecho(FALSE, fd); /* disable terminal echo */
 
@@ -246,7 +246,7 @@ char *getpass_r(const char *prompt, /* prompt to display */
     (void)ttyecho(TRUE, fd); /* enable echo */
   }
 
-  if(1 != fd)
+  if(STDIN_FILENO != fd)
     close(fd);
 
   return password; /* return pointer to buffer */
index 424a2fa..6ad51cb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -52,6 +52,7 @@ static const char *const helptext[] = {
   "     --cacert FILE   CA certificate to verify peer against (SSL)",
   "     --capath DIR    CA directory to verify peer against (SSL)",
   " -E, --cert CERT[:PASSWD]  Client certificate file and password (SSL)",
+  "     --cert-status   Verify the status of the server certificate (SSL)",
   "     --cert-type TYPE  Certificate file type (DER/PEM/ENG) (SSL)",
   "     --ciphers LIST  SSL ciphers to use (SSL)",
   "     --compressed    Request compressed response (using deflate or gzip)",
@@ -64,6 +65,7 @@ static const char *const helptext[] = {
   "     --crlf          Convert LF to CRLF in upload",
   "     --crlfile FILE  Get a CRL list in PEM format from the given file",
   " -d, --data DATA     HTTP POST data (H)",
+  "     --data-raw DATA  HTTP POST data, '@' allowed (H)",
   "     --data-ascii DATA  HTTP POST ASCII data (H)",
   "     --data-binary DATA  HTTP POST binary data (H)",
   "     --data-urlencode DATA  HTTP POST data url encoded (H)",
@@ -82,6 +84,7 @@ static const char *const helptext[] = {
   "     --environment   Write results to environment variables (RISC OS)",
 #endif
   " -f, --fail          Fail silently (no output at all) on HTTP errors (H)",
+  "     --false-start   Enable TLS False Start.",
   " -F, --form CONTENT  Specify HTTP multipart POST data (H)",
   "     --form-string STRING  Specify HTTP multipart POST data (H)",
   "     --ftp-account DATA  Account data string (F)",
@@ -140,7 +143,7 @@ static const char *const helptext[] = {
   " -n, --netrc         Must read .netrc for user name and password",
   "     --netrc-optional  Use either .netrc or URL; overrides -n",
   "     --netrc-file FILE  Specify FILE for netrc",
-  " -:  --next          "
+  " -:, --next          "
   "Allows the following URL to use a separate set of options",
   "     --no-alpn       Disable the ALPN TLS extension (H)",
   " -N, --no-buffer     Disable buffering of the output stream",
@@ -152,8 +155,8 @@ static const char *const helptext[] = {
   "     --oauth2-bearer TOKEN  OAuth 2 Bearer Token (IMAP, POP3, SMTP)",
   " -o, --output FILE   Write to FILE instead of stdout",
   "     --pass PASS     Pass phrase for the private key (SSL/SSH)",
-  "     --pinnedpubkey FILE  Public key (PEM/DER) to verify peer against "
-  "(OpenSSL/GnuTLS/GSKit only)",
+  "     --path-as-is    Do not squash .. sequences in URL path",
+  "     --pinnedpubkey FILE/HASHES Public key to verify peer against (SSL)",
   "     --post301       "
   "Do not switch to GET after following a 301 redirect (H)",
   "     --post302       "
@@ -170,6 +173,8 @@ static const char *const helptext[] = {
   "     --proxy-negotiate  "
   "Use HTTP Negotiate (SPNEGO) authentication on the proxy (H)",
   "     --proxy-ntlm    Use NTLM authentication on the proxy (H)",
+  "     --proxy-service-name NAME  SPNEGO proxy service name",
+  "     --service-name NAME  SPNEGO service name",
   " -U, --proxy-user USER[:PASSWORD]  Proxy user and password",
   "     --proxy1.0 HOST[:PORT]  Use HTTP/1.0 proxy on given port",
   " -p, --proxytunnel   Operate through a HTTP proxy tunnel (using CONNECT)",
@@ -198,10 +203,8 @@ static const char *const helptext[] = {
   "     --socks5 HOST[:PORT]  SOCKS5 proxy on given host + port",
   "     --socks5-hostname HOST[:PORT]  "
   "SOCKS5 proxy, pass host name to proxy",
-#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   "     --socks5-gssapi-service NAME  SOCKS5 proxy service name for GSS-API",
   "     --socks5-gssapi-nec  Compatibility with NEC SOCKS5 server",
-#endif
   " -Y, --speed-limit RATE  "
   "Stop transfers below RATE for 'speed-time' secs",
   " -y, --speed-time SECONDS  "
@@ -211,12 +214,13 @@ static const char *const helptext[] = {
   " -2, --sslv2         Use SSLv2 (SSL)",
   " -3, --sslv3         Use SSLv3 (SSL)",
   "     --ssl-allow-beast  Allow security flaw to improve interop (SSL)",
+  "     --ssl-no-revoke    Disable cert revocation checks (WinSSL)",
   "     --stderr FILE   Where to redirect stderr (use \"-\" for stdout)",
   "     --tcp-nodelay   Use the TCP_NODELAY option",
   " -t, --telnet-option OPT=VAL  Set telnet option",
   "     --tftp-blksize VALUE  Set TFTP BLKSIZE option (must be >512)",
   " -z, --time-cond TIME  Transfer based on a time condition",
-  " -1, --tlsv1         Use => TLSv1 (SSL)",
+  " -1, --tlsv1         Use >= TLSv1 (SSL)",
   "     --tlsv1.0       Use TLSv1.0 (SSL)",
   "     --tlsv1.1       Use TLSv1.1 (SSL)",
   "     --tlsv1.2       Use TLSv1.2 (SSL)",
index dbf32f8..5479a1c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -72,6 +72,8 @@ int SetHTTPrequest(struct OperationConfig *config, HttpReq req, HttpReq *store)
     *store = req;
     return 0;
   }
-  warnf(config, "You can only select one HTTP request!\n");
+
+  warnf(config->global, "You can only select one HTTP request!\n");
+
   return 1;
 }
index 11bb4ef..73a66f8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -44,11 +44,11 @@ static char *GetEnv(const char *variable, char do_expand)
     env = buf1;
     variable = buf1;
   }
-  if(do_expand && strchr(variable,'%')) {
+  if(do_expand && strchr(variable, '%')) {
     /* buf2 == variable if not expanded */
     rc = ExpandEnvironmentStrings (variable, buf2, sizeof(buf2));
     if(rc > 0 && rc < sizeof(buf2) &&
-       !strchr(buf2,'%'))    /* no vars still unexpanded */
+       !strchr(buf2, '%'))    /* no vars still unexpanded */
       env = buf2;
   }
 #else
index 3010880..0a2970a 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef HAVE_LIBZ
 /*
  * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
- * Generation time: Sun Dec 28 14:36:38 2014
+ * Generation time: Mon Aug  3 00:00:36 2015
  */
 #ifdef USE_MANUAL
 #include "tool_hugehelp.h"
@@ -359,13 +359,13 @@ void hugehelp(void)
 "              (SSL) Specifies which ciphers to use in the connection. The list\n"
 "              of  ciphers  must  specify  valid ciphers. Read up on SSL cipher\n"
 "              list          details           on           this           URL:\n"
-"              http://www.openssl.org/docs/apps/ciphers.html\n"
+"              https://www.openssl.org/docs/apps/ciphers.html\n"
 "\n"
 "              NSS  ciphers  are  done differently than OpenSSL and GnuTLS. The\n"
 , stdout);
  fputs(
 "              full list of NSS ciphers is in the NSSCipherSuite entry at  this\n"
-"              URL:                                          http://git.fedora-\n"
+"              URL:                                         https://git.fedora-\n"
 "              hosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
@@ -425,38 +425,44 @@ void hugehelp(void)
  fputs(
 "              application/x-www-form-urlencoded.  Compare to -F, --form.\n"
 "\n"
-"              -d,  --data  is  the  same  as --data-ascii. To post data purely\n"
-"              binary, you should instead use the --data-binary option. To URL-\n"
-"              encode the value of a form field you may use --data-urlencode.\n"
+"              -d, --data is the same as --data-ascii. --data-raw is almost the\n"
+"              same but does not have a special interpretation of the @ charac-\n"
+"              ter.  To  post  data  purely  binary, you should instead use the\n"
+"              --data-binary option.  To URL-encode the value of a  form  field\n"
+"              you may use --data-urlencode.\n"
 "\n"
-"              If  any of these options is used more than once on the same com-\n"
-"              mand line, the data pieces specified  will  be  merged  together\n"
 , stdout);
  fputs(
+"              If  any of these options is used more than once on the same com-\n"
+"              mand line, the data pieces specified  will  be  merged  together\n"
 "              with  a  separating  &-symbol.  Thus,  using  '-d name=daniel -d\n"
 "              skill=lousy'  would  generate  a  post  chunk  that  looks  like\n"
 "              'name=daniel&skill=lousy'.\n"
 "\n"
 "              If  you  start  the data with the letter @, the rest should be a\n"
-"              file name to read the data from, or - if you want curl  to  read\n"
-"              the data from stdin. Multiple files can also be specified. Post-\n"
 , stdout);
  fputs(
+"              file name to read the data from, or - if you want curl  to  read\n"
+"              the data from stdin. Multiple files can also be specified. Post-\n"
 "              ing data from a file named 'foobar'  would  thus  be  done  with\n"
 "              --data  @foobar.  When  --data  is told to read from a file like\n"
-"              that, carriage returns and newlines will be stripped out.\n"
+"              that, carriage returns and newlines will be stripped out. If you\n"
+"              don't  want the @ character to have a special interpretation use\n"
+, stdout);
+ fputs(
+"              --data-raw instead.\n"
 "\n"
 "       -D, --dump-header <file>\n"
 "              Write the protocol headers to the specified file.\n"
 "\n"
 "              This option is handy to use when you want to store  the  headers\n"
 "              that  an  HTTP site sends to you. Cookies from the headers could\n"
-, stdout);
- fputs(
 "              then be read in a  second  curl  invocation  by  using  the  -b,\n"
 "              --cookie  option! The -c, --cookie-jar option is a better way to\n"
 "              store cookies.\n"
 "\n"
+, stdout);
+ fputs(
 "              When used in FTP, the FTP server response lines  are  considered\n"
 "              being \"headers\" and thus are saved there.\n"
 "\n"
@@ -466,30 +472,35 @@ void hugehelp(void)
 "              See -d, --data.\n"
 "\n"
 "       --data-binary <data>\n"
-, stdout);
- fputs(
 "              (HTTP)  This  posts data exactly as specified with no extra pro-\n"
 "              cessing whatsoever.\n"
 "\n"
 "              If you start the data with the letter @, the rest  should  be  a\n"
+, stdout);
+ fputs(
 "              filename.   Data  is  posted in a similar manner as --data-ascii\n"
 "              does, except that newlines and carriage  returns  are  preserved\n"
 "              and conversions are never done.\n"
 "\n"
 "              If  this  option  is  used several times, the ones following the\n"
+"              first will append data as described in -d, --data.\n"
+"\n"
+"       --data-raw <data>\n"
+"              (HTTP) This posts data similarly to --data but without the  spe-\n"
 , stdout);
  fputs(
-"              first will append data as described in -d, --data.\n"
+"              cial  interpretation of the @ character. See -d, --data.  (Added\n"
+"              in 7.43.0)\n"
 "\n"
 "       --data-urlencode <data>\n"
 "              (HTTP) This posts data, similar to the other --data options with\n"
 "              the exception that this performs URL-encoding. (Added in 7.18.0)\n"
 "              To  be  CGI-compliant,  the <data> part should begin with a name\n"
 "              followed by a separator and a content specification. The  <data>\n"
-"              part can be passed to curl using one of the following syntaxes:\n"
-"\n"
 , stdout);
  fputs(
+"              part can be passed to curl using one of the following syntaxes:\n"
+"\n"
 "              content\n"
 "                     This  will make curl URL-encode the content and pass that\n"
 "                     on. Just be careful so that the content  doesn't  contain\n"
@@ -498,10 +509,10 @@ void hugehelp(void)
 "\n"
 "              =content\n"
 "                     This will make curl URL-encode the content and pass  that\n"
-"                     on. The preceding = symbol is not included in the data.\n"
-"\n"
 , stdout);
  fputs(
+"                     on. The preceding = symbol is not included in the data.\n"
+"\n"
 "              name=content\n"
 "                     This  will make curl URL-encode the content part and pass\n"
 "                     that on. Note that the name part is expected to  be  URL-\n"
@@ -510,11 +521,11 @@ void hugehelp(void)
 "              @filename\n"
 "                     This  will  make  curl  load  data  from  the  given file\n"
 "                     (including any newlines), URL-encode that data  and  pass\n"
+, stdout);
+ fputs(
 "                     it on in the POST.\n"
 "\n"
 "              name@filename\n"
-, stdout);
- fputs(
 "                     This  will  make  curl  load  data  from  the  given file\n"
 "                     (including any newlines), URL-encode that data  and  pass\n"
 "                     it  on  in  the  POST.  The  name part gets an equal sign\n"
@@ -522,9 +533,9 @@ void hugehelp(void)
 "                     that the name is expected to be URL-encoded already.\n"
 "\n"
 "       --delegation LEVEL\n"
-"              Set LEVEL to tell the server what it is allowed to delegate when\n"
 , stdout);
  fputs(
+"              Set LEVEL to tell the server what it is allowed to delegate when\n"
 "              it comes to user credentials. Used with GSS/kerberos.\n"
 "\n"
 "              none   Don't allow any delegation.\n"
@@ -536,9 +547,9 @@ void hugehelp(void)
 "              always Unconditionally allow the server to delegate.\n"
 "\n"
 "       --digest\n"
-"              (HTTP) Enables HTTP Digest authentication. This is an  authenti-\n"
 , stdout);
  fputs(
+"              (HTTP) Enables HTTP Digest authentication. This is an  authenti-\n"
 "              cation  scheme  that  prevents the password from being sent over\n"
 "              the wire in clear text. Use this in combination with the  normal\n"
 "              -u,  --user  option  to  set  user  name  and password. See also\n"
@@ -547,9 +558,9 @@ void hugehelp(void)
 "              If this option is used several times,  only  the  first  one  is\n"
 "              used.\n"
 "\n"
-"       --disable-eprt\n"
 , stdout);
  fputs(
+"       --disable-eprt\n"
 "              (FTP) Tell curl to disable the use of the EPRT and LPRT commands\n"
 "              when doing active FTP transfers. Curl will normally always first\n"
 "              attempt  to use EPRT, then LPRT before using PORT, but with this\n"
@@ -752,35 +763,68 @@ void hugehelp(void)
 "              If this option is set, the default capath value will be ignored,\n"
 "              and if it is used several times, the last one will be used.\n"
 "\n"
-"       --pinnedpubkey <pinned public key>\n"
-"              (SSL) Tells curl to use the specified public key file to  verify\n"
-"              the  peer.  The  file must contain a single public key in PEM or\n"
-"              DER format.\n"
-"\n"
-"              When negotiating a TLS or SSL connection,  the  server  sends  a\n"
+"       --pinnedpubkey <pinned public key (hashes)>\n"
+"              (SSL) Tells curl to  use  the  specified  public  key  file  (or\n"
+"              hashes)  to  verify the peer. This can be a path to a file which\n"
+"              contains a single public key in PEM or DER format, or any number\n"
 , stdout);
  fputs(
+"              of  base64  encoded  sha256  hashes  preceded  by 'sha256//' and\n"
+"              seperated by ';'\n"
+"\n"
+"              When negotiating a TLS or SSL connection,  the  server  sends  a\n"
 "              certificate  indicating  its identity. A public key is extracted\n"
 "              from this certificate and if it does not exactly match the  pub-\n"
 "              lic  key provided to this option, curl will abort the connection\n"
 "              before sending or receiving any data.\n"
 "\n"
-"              This is currently only implemented in the  OpenSSL,  GnuTLS  and\n"
-"              GSKit backends.\n"
+, stdout);
+ fputs(
+"              Added in 7.39.0 for OpenSSL, GnuTLS and GSKit. Added  in  7.43.0\n"
+"              for  NSS  and wolfSSL/CyaSSL. sha256 support added in 7.44.0 for\n"
+"              OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL. Other SSL backends  not\n"
+"              supported.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
+"\n"
+"       --cert-status\n"
+"              (SSL)  Tells curl to verify the status of the server certificate\n"
+, stdout);
+ fputs(
+"              by using the Certificate Status Request (aka. OCSP stapling) TLS\n"
+"              extension.\n"
+"\n"
+"              If  this option is enabled and the server sends an invalid (e.g.\n"
+"              expired) response, if the response suggests that the server cer-\n"
+"              tificate  has  been  revoked, or no response at all is received,\n"
+"              the verification fails.\n"
+"\n"
+"              This is currently only implemented in the  OpenSSL,  GnuTLS  and\n"
+, stdout);
+ fputs(
+"              NSS backends.  (Added in 7.41.0)\n"
+"\n"
+"       --false-start\n"
+"\n"
+"              (SSL)  Tells  curl  to use false start during the TLS handshake.\n"
+"              False start is a mode where a  TLS  client  will  start  sending\n"
+"              application data before verifying the server's Finished message,\n"
+"              thus saving a round trip when performing a full handshake.\n"
+"\n"
+"              This is currently only implemented in the NSS and Secure  Trans-\n"
 , stdout);
  fputs(
-"              (Added in 7.39.0)\n"
+"              port  (on  iOS  7.0  or  later, or OS X 10.9 or later) backends.\n"
+"              (Added in 7.42.0)\n"
 "\n"
 "       -f, --fail\n"
 "              (HTTP) Fail silently (no output at all) on server  errors.  This\n"
 "              is  mostly done to better enable scripts etc to better deal with\n"
 "              failed attempts. In normal cases when an HTTP  server  fails  to\n"
 "              deliver  a  document,  it  returns  an  HTML document stating so\n"
-"              (which often also describes why and more). This flag  will  pre-\n"
 , stdout);
  fputs(
+"              (which often also describes why and more). This flag  will  pre-\n"
 "              vent curl from outputting that and return error 22.\n"
 "\n"
 "              This  method is not fail-safe and there are occasions where non-\n"
@@ -789,17 +833,17 @@ void hugehelp(void)
 "\n"
 "       -F, --form <name=content>\n"
 "              (HTTP)  This  lets curl emulate a filled-in form in which a user\n"
-"              has pressed the submit button. This causes  curl  to  POST  data\n"
 , stdout);
  fputs(
+"              has pressed the submit button. This causes  curl  to  POST  data\n"
 "              using  the  Content-Type  multipart/form-data  according  to RFC\n"
 "              2388. This enables uploading of binary files etc. To  force  the\n"
 "              'content'  part  to  be  a  file, prefix the file name with an @\n"
 "              sign. To just get the content part from a file, prefix the  file\n"
 "              name  with  the symbol <. The difference between @ and < is then\n"
-"              that @ makes a file get attached in the post as a  file  upload,\n"
 , stdout);
  fputs(
+"              that @ makes a file get attached in the post as a  file  upload,\n"
 "              while  the  <  makes  a text field and just get the contents for\n"
 "              that text field from a file.\n"
 "\n"
@@ -809,16 +853,20 @@ void hugehelp(void)
 "\n"
 "              curl -F password=@/etc/passwd www.mypasswords.com\n"
 "\n"
-"              To read content from stdin instead of a file, use - as the file-\n"
 , stdout);
  fputs(
-"              name. This goes for both @ and < constructs.\n"
+"              To read content from stdin instead of a file, use - as the file-\n"
+"              name.  This  goes  for both @ and < constructs. Unfortunately it\n"
+"              does not support reading the file from a named pipe or  similar,\n"
+"              as it needs the full size before the transfer starts.\n"
 "\n"
 "              You  can  also  tell  curl  what  Content-Type  to  use by using\n"
 "              'type=', in a manner similar to:\n"
 "\n"
 "              curl -F \"web=@index.html;type=text/html\" url.com\n"
 "\n"
+, stdout);
+ fputs(
 "              or\n"
 "\n"
 "              curl -F \"name=daniel;type=text/foo\" url.com\n"
@@ -826,8 +874,6 @@ void hugehelp(void)
 "              You can also explicitly change the name field of a  file  upload\n"
 "              part by setting filename=, like this:\n"
 "\n"
-, stdout);
- fputs(
 "              curl -F \"file=@localfile;filename=nameinpost\" url.com\n"
 "\n"
 "              If  filename/path contains ',' or ';', it must be quoted by dou-\n"
@@ -837,11 +883,11 @@ void hugehelp(void)
 "\n"
 "              or\n"
 "\n"
+, stdout);
+ fputs(
 "              curl -F 'file=@\"localfile\";filename=\"nameinpost\"' url.com\n"
 "\n"
 "              Note that if a filename/path is  quoted  by  double-quotes,  any\n"
-, stdout);
- fputs(
 "              double-quote or backslash within the filename must be escaped by\n"
 "              backslash.\n"
 "\n"
@@ -851,22 +897,22 @@ void hugehelp(void)
 "\n"
 "       --ftp-account [data]\n"
 "              (FTP) When an FTP server asks for \"account data\" after user name\n"
+, stdout);
+ fputs(
 "              and  password has been provided, this data is sent off using the\n"
 "              ACCT command. (Added in 7.13.0)\n"
 "\n"
-, stdout);
- fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --ftp-alternative-to-user <command>\n"
 "              (FTP) If authenticating with the USER and PASS  commands  fails,\n"
 "              send  this  command.   When  connecting  to  Tumbleweed's Secure\n"
 "              Transport server over FTPS using  a  client  certificate,  using\n"
+, stdout);
+ fputs(
 "              \"SITE  AUTH\"  will tell the server to retrieve the username from\n"
 "              the certificate. (Added in 7.15.5)\n"
 "\n"
-, stdout);
- fputs(
 "       --ftp-create-dirs\n"
 "              (FTP/SFTP) When an FTP or SFTP URL/operation uses  a  path  that\n"
 "              doesn't  currently exist on the server, the standard behavior of\n"
@@ -874,146 +920,149 @@ void hugehelp(void)
 "              create missing directories.\n"
 "\n"
 "       --ftp-method [method]\n"
-"              (FTP)  Control what method curl should use to reach a file on an\n"
-"              FTP(S) server. The method argument should be one of the  follow-\n"
 , stdout);
  fputs(
+"              (FTP)  Control what method curl should use to reach a file on an\n"
+"              FTP(S) server. The method argument should be one of the  follow-\n"
 "              ing alternatives:\n"
 "\n"
 "              multicwd\n"
 "                     curl  does  a  single CWD operation for each path part in\n"
 "                     the given URL. For deep hierarchies this means very  many\n"
 "                     commands.  This  is  how RFC 1738 says it should be done.\n"
+, stdout);
+ fputs(
 "                     This is the default but the slowest behavior.\n"
 "\n"
 "              nocwd  curl does no CWD at all. curl will do  SIZE,  RETR,  STOR\n"
-, stdout);
- fputs(
 "                     etc and give a full path to the server for all these com-\n"
 "                     mands. This is the fastest behavior.\n"
 "\n"
 "              singlecwd\n"
 "                     curl does one CWD with the full target directory and then\n"
 "                     operates  on  the  file  \"normally\" (like in the multicwd\n"
+, stdout);
+ fputs(
 "                     case). This is somewhat  more  standards  compliant  than\n"
 "                     'nocwd' but without the full penalty of 'multicwd'.\n"
-"       (Added in 7.15.1)\n"
 "\n"
-, stdout);
- fputs(
+"              (Added in 7.15.1)\n"
+"\n"
 "       --ftp-pasv\n"
 "              (FTP)  Use  passive mode for the data connection. Passive is the\n"
 "              internal default behavior, but using this option can be used  to\n"
 "              override a previous -P/-ftp-port option. (Added in 7.11.0)\n"
 "\n"
+, stdout);
+ fputs(
 "              If  this  option  is  used  several times, only the first one is\n"
 "              used. Undoing an enforced passive really isn't  doable  but  you\n"
 "              must then instead enforce the correct -P, --ftp-port again.\n"
 "\n"
-, stdout);
- fputs(
 "              Passive mode means that curl will try the EPSV command first and\n"
 "              then PASV, unless --disable-epsv is used.\n"
 "\n"
 "       --ftp-skip-pasv-ip\n"
 "              (FTP) Tell curl to not use the IP address the server suggests in\n"
+, stdout);
+ fputs(
 "              its  response to curl's PASV command when curl connects the data\n"
 "              connection. Instead curl will re-use  the  same  IP  address  it\n"
 "              already uses for the control connection. (Added in 7.14.2)\n"
 "\n"
-, stdout);
- fputs(
 "              This  option has no effect if PORT, EPRT or EPSV is used instead\n"
 "              of PASV.\n"
 "\n"
 "       --ftp-pret\n"
 "              (FTP) Tell curl to send a PRET command before PASV  (and  EPSV).\n"
+, stdout);
+ fputs(
 "              Certain  FTP  servers,  mainly drftpd, require this non-standard\n"
 "              command for directory listings as well as up  and  downloads  in\n"
 "              PASV mode.  (Added in 7.20.x)\n"
 "\n"
 "       --ftp-ssl-ccc\n"
-, stdout);
- fputs(
 "              (FTP)  Use  CCC  (Clear  Command Channel) Shuts down the SSL/TLS\n"
 "              layer after authenticating. The rest of the control channel com-\n"
 "              munication  will be unencrypted. This allows NAT routers to fol-\n"
+, stdout);
+ fputs(
 "              low the FTP transaction. The default mode is passive. See --ftp-\n"
 "              ssl-ccc-mode for other modes.  (Added in 7.16.1)\n"
 "\n"
 "       --ftp-ssl-ccc-mode [active/passive]\n"
-, stdout);
- fputs(
 "              (FTP)  Use  CCC  (Clear  Command Channel) Sets the CCC mode. The\n"
 "              passive mode will not initiate the shutdown,  but  instead  wait\n"
 "              for the server to do it, and will not reply to the shutdown from\n"
+, stdout);
+ fputs(
 "              the server. The active mode initiates the shutdown and waits for\n"
 "              a reply from the server.  (Added in 7.16.2)\n"
 "\n"
 "       --ftp-ssl-control\n"
 "              (FTP)  Require  SSL/TLS  for  the FTP login, clear for transfer.\n"
-, stdout);
- fputs(
 "              Allows secure authentication, but non-encrypted  data  transfers\n"
 "              for  efficiency.   Fails the transfer if the server doesn't sup-\n"
 "              port SSL/TLS.  (Added in 7.16.0) that can still be used but will\n"
+, stdout);
+ fputs(
 "              be removed in a future version.\n"
 "\n"
 "       --form-string <name=string>\n"
 "              (HTTP)  Similar  to  --form except that the value string for the\n"
 "              named parameter is used literally. Leading '@' and  '<'  charac-\n"
-, stdout);
- fputs(
 "              ters, and the ';type=' string in the value have no special mean-\n"
 "              ing. Use this in preference to --form if there's any possibility\n"
 "              that  the  string  value may accidentally trigger the '@' or '<'\n"
+, stdout);
+ fputs(
 "              features of --form.\n"
 "\n"
 "       -g, --globoff\n"
 "              This option switches off the \"URL globbing parser\". When you set\n"
 "              this  option, you can specify URLs that contain the letters {}[]\n"
-, stdout);
- fputs(
 "              without having them being interpreted by curl itself. Note  that\n"
 "              these  letters are not normal legal URL contents but they should\n"
 "              be encoded according to the URI standard.\n"
 "\n"
 "       -G, --get\n"
+, stdout);
+ fputs(
 "              When used, this option will make all  data  specified  with  -d,\n"
 "              --data,  --data-binary or --data-urlencode to be used in an HTTP\n"
 "              GET request instead of the POST request that otherwise would  be\n"
-, stdout);
- fputs(
 "              used. The data will be appended to the URL with a '?' separator.\n"
 "              If  used  in  combination with -I, the POST data will instead be\n"
 "              appended to the URL with a HEAD request.\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is used several times,  only  the  first  one  is\n"
 "              used.  This is because undoing a GET doesn't make sense, but you\n"
 "              should then instead enforce the alternative method you prefer.\n"
 "\n"
 "       -H, --header <header>\n"
-, stdout);
- fputs(
 "              (HTTP) Extra header to include in the request when sending  HTTP\n"
 "              to  a  server. You may specify any number of extra headers. Note\n"
+, stdout);
+ fputs(
 "              that if you should add a custom header that has the same name as\n"
 "              one  of  the  internal  ones curl would use, your externally set\n"
 "              header will be used instead of the internal one. This allows you\n"
 "              to  make  even  trickier  stuff than curl would normally do. You\n"
-, stdout);
- fputs(
 "              should not replace internally set headers without  knowing  per-\n"
 "              fectly well what you're doing. Remove an internal header by giv-\n"
+, stdout);
+ fputs(
 "              ing a replacement without content  on  the  right  side  of  the\n"
 "              colon, as in: -H \"Host:\". If you send the custom header with no-\n"
 "              value then its header must be terminated with a semicolon,  such\n"
 "              as -H \"X-Custom-Header;\" to send \"X-Custom-Header:\".\n"
 "\n"
-, stdout);
- fputs(
 "              curl  will  make  sure  that each header you add/replace is sent\n"
 "              with the proper end-of-line marker, you should thus not add that\n"
+, stdout);
+ fputs(
 "              as a part of the header content: do not add newlines or carriage\n"
 "              returns, they will only mess things up for you.\n"
 "\n"
@@ -1022,78 +1071,84 @@ void hugehelp(void)
 "              Starting in 7.37.0, you need --proxy-header to send custom head-\n"
 "              ers intended for a proxy.\n"
 "\n"
-, stdout);
- fputs(
 "              Example:\n"
 "\n"
 "              # curl -H \"X-First-Name: Joe\" http://192.168.0.1/\n"
 "\n"
+, stdout);
+ fputs(
+"              WARNING:  headers  set  with  this  option  will  be  set in all\n"
+"              requests - even after redirects are  followed,  like  when  told\n"
+"              with  -L,  --location. This can lead to the header being sent to\n"
+"              other hosts than the original host, so sensitive headers  should\n"
+"              be used with caution combined with following redirects.\n"
+"\n"
 "              This  option  can  be  used multiple times to add/replace/remove\n"
 "              multiple headers.\n"
 "\n"
+, stdout);
+ fputs(
 "       --hostpubmd5 <md5>\n"
 "              (SCP/SFTP) Pass a string containing 32 hexadecimal  digits.  The\n"
 "              string  should  be the 128 bit MD5 checksum of the remote host's\n"
 "              public key, curl will refuse the connection with the host unless\n"
-, stdout);
- fputs(
 "              the md5sums match. (Added in 7.17.1)\n"
 "\n"
 "       --ignore-content-length\n"
 "              (HTTP)  Ignore  the  Content-Length header. This is particularly\n"
+, stdout);
+ fputs(
 "              useful for servers running Apache 1.x, which will report  incor-\n"
 "              rect Content-Length for files larger than 2 gigabytes.\n"
 "\n"
 "       -i, --include\n"
 "              (HTTP)  Include  the  HTTP-header in the output. The HTTP-header\n"
 "              includes things like server-name, date of  the  document,  HTTP-\n"
-, stdout);
- fputs(
 "              version and more...\n"
 "\n"
 "       -I, --head\n"
 "              (HTTP/FTP/FILE) Fetch the HTTP-header only! HTTP-servers feature\n"
+, stdout);
+ fputs(
 "              the command HEAD which this uses to get nothing but  the  header\n"
 "              of  a  document. When used on an FTP or FILE file, curl displays\n"
 "              the file size and last modification time only.\n"
 "\n"
 "       --interface <name>\n"
 "              Perform an operation using a specified interface. You can  enter\n"
-, stdout);
- fputs(
 "              interface  name,  IP address or host name. An example could look\n"
 "              like:\n"
 "\n"
 "               curl --interface eth0:1 http://www.netscape.com/\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -j, --junk-session-cookies\n"
 "              (HTTP) When curl is told to read cookies from a given file, this\n"
 "              option  will  make  it  discard all \"session cookies\". This will\n"
-, stdout);
- fputs(
 "              basically have the same effect as if a new session  is  started.\n"
 "              Typical  browsers  always  discard  session cookies when they're\n"
 "              closed down.\n"
 "\n"
 "       -J, --remote-header-name\n"
+, stdout);
+ fputs(
 "              (HTTP) This option tells the -O, --remote-name option to use the\n"
 "              server-specified   Content-Disposition   filename   instead   of\n"
 "              extracting a filename from the URL.\n"
 "\n"
-, stdout);
- fputs(
 "              There's no attempt to decode %-sequences (yet) in  the  provided\n"
 "              file name, so this option may provide you with rather unexpected\n"
 "              file names.\n"
 "\n"
 "       -k, --insecure\n"
 "              (SSL) This option explicitly allows curl to  perform  \"insecure\"\n"
-"              SSL connections and transfers. All SSL connections are attempted\n"
-"              to be made secure by using the CA certificate  bundle  installed\n"
 , stdout);
  fputs(
+"              SSL connections and transfers. All SSL connections are attempted\n"
+"              to be made secure by using the CA certificate  bundle  installed\n"
 "              by  default.  This  makes  all connections considered \"insecure\"\n"
 "              fail unless -k, --insecure is used.\n"
 "\n"
@@ -1101,73 +1156,73 @@ void hugehelp(void)
 "              http://curl.haxx.se/docs/sslcerts.html\n"
 "\n"
 "       -K, --config <config file>\n"
-"              Specify  which config file to read curl arguments from. The con-\n"
-"              fig file is a text file in which command line arguments  can  be\n"
 , stdout);
  fputs(
+"              Specify  which config file to read curl arguments from. The con-\n"
+"              fig file is a text file in which command line arguments  can  be\n"
 "              written  which  then will be used as if they were written on the\n"
 "              actual command line.\n"
 "\n"
 "              Options and their parameters must be specified on the same  con-\n"
 "              fig  file  line,  separated  by whitespace, colon, or the equals\n"
-"              sign. Long option names can optionally be given  in  the  config\n"
-"              file  without  the initial double dashes and if so, the colon or\n"
 , stdout);
  fputs(
+"              sign. Long option names can optionally be given  in  the  config\n"
+"              file  without  the initial double dashes and if so, the colon or\n"
 "              equals characters can be used as separators. If  the  option  is\n"
 "              specified  with  one  or  two  dashes,  there can be no colon or\n"
 "              equals character between the option and its parameter.\n"
 "\n"
 "              If the parameter is to contain whitespace, the parameter must be\n"
-"              enclosed  within  quotes.  Within  double  quotes, the following\n"
-"              escape sequences are available: \\\\, \\\", \\t, \\n,  \\r  and  \\v.  A\n"
 , stdout);
  fputs(
+"              enclosed  within  quotes.  Within  double  quotes, the following\n"
+"              escape sequences are available: \\\\, \\\", \\t, \\n,  \\r  and  \\v.  A\n"
 "              backslash  preceding  any  other letter is ignored. If the first\n"
 "              column of a config line is a '#' character, the rest of the line\n"
 "              will be treated as a comment. Only write one option per physical\n"
 "              line in the config file.\n"
 "\n"
+, stdout);
+ fputs(
 "              Specify the filename to -K, --config as '-' to  make  curl  read\n"
 "              the file from stdin.\n"
 "\n"
 "              Note  that  to  be able to specify a URL in the config file, you\n"
-, stdout);
- fputs(
 "              need to specify it using the --url option,  and  not  by  simply\n"
 "              writing  the  URL  on its own line. So, it could look similar to\n"
 "              this:\n"
 "\n"
 "              url = \"http://curl.haxx.se/docs/\"\n"
 "\n"
+, stdout);
+ fputs(
 "              When curl is invoked, it always (unless -q is used) checks for a\n"
 "              default  config  file  and  uses it if found. The default config\n"
 "              file is checked for in the following places in this order:\n"
 "\n"
-, stdout);
- fputs(
 "              1) curl tries to find the \"home dir\": It first  checks  for  the\n"
 "              CURL_HOME and then the HOME environment variables. Failing that,\n"
 "              it uses getpwuid() on Unix-like systems (which returns the  home\n"
+, stdout);
+ fputs(
 "              dir  given the current user in your system). On Windows, it then\n"
 "              checks for the APPDATA variable, or as a last resort the '%USER-\n"
 "              PROFILE%\\Application Data'.\n"
 "\n"
-, stdout);
- fputs(
 "              2)  On  windows, if there is no _curlrc file in the home dir, it\n"
 "              checks for one in the same dir the curl executable is placed. On\n"
 "              Unix-like  systems,  it will simply try to load .curlrc from the\n"
 "              determined home dir.\n"
 "\n"
+, stdout);
+ fputs(
 "              # --- Example file ---\n"
 "              # this is a comment\n"
 "              url = \"curl.haxx.se\"\n"
 "              output = \"curlhere.html\"\n"
 "              user-agent = \"superagent/1.0\"\n"
 "\n"
-, stdout);
- fputs(
 "              # and fetch another URL too\n"
 "              url = \"curl.haxx.se/docs/manpage.html\"\n"
 "              -O\n"
@@ -1177,19 +1232,19 @@ void hugehelp(void)
 "              This option can be used multiple times to load  multiple  config\n"
 "              files.\n"
 "\n"
-"       --keepalive-time <seconds>\n"
-"              This  option  sets  the  time  a connection needs to remain idle\n"
 , stdout);
  fputs(
+"       --keepalive-time <seconds>\n"
+"              This  option  sets  the  time  a connection needs to remain idle\n"
 "              before sending keepalive probes and the time between  individual\n"
 "              keepalive probes. It is currently effective on operating systems\n"
 "              offering  the  TCP_KEEPIDLE  and  TCP_KEEPINTVL  socket  options\n"
 "              (meaning  Linux, recent AIX, HP-UX and more). This option has no\n"
 "              effect if --no-keepalive is used. (Added in 7.18.0)\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
 , stdout);
  fputs(
+"              If this option is used several times, the last one will be used.\n"
 "              If unspecified, the option defaults to 60 seconds.\n"
 "\n"
 "       --key <key>\n"
@@ -1198,11 +1253,11 @@ void hugehelp(void)
 "              tries   the  following  candidates  in  order:  '~/.ssh/id_rsa',\n"
 "              '~/.ssh/id_dsa', './id_rsa', './id_dsa'.\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --key-type <type>\n"
-, stdout);
- fputs(
 "              (SSL) Private key file type. Specify which type your --key  pro-\n"
 "              vided  private  key  is. DER, PEM, and ENG are supported. If not\n"
 "              specified, PEM is assumed.\n"
@@ -1211,9 +1266,9 @@ void hugehelp(void)
 "\n"
 "       --krb <level>\n"
 "              (FTP) Enable Kerberos authentication and use. The level must  be\n"
-"              entered and should be one of 'clear', 'safe', 'confidential', or\n"
 , stdout);
  fputs(
+"              entered and should be one of 'clear', 'safe', 'confidential', or\n"
 "              'private'. Should you use a level that  is  not  one  of  these,\n"
 "              'private' will instead be used.\n"
 "\n"
@@ -1224,18 +1279,18 @@ void hugehelp(void)
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -l, --list-only\n"
-"              (FTP)  When listing an FTP directory, this switch forces a name-\n"
 , stdout);
  fputs(
+"              (FTP)  When listing an FTP directory, this switch forces a name-\n"
 "              only view. This is  especially  useful  if  the  user  wants  to\n"
 "              machine-parse  the contents of an FTP directory since the normal\n"
 "              directory view doesn't use a standard look or format. When  used\n"
 "              like  this,  the  option causes a NLST command to be sent to the\n"
 "              server instead of LIST.\n"
 "\n"
-"              Note: Some FTP servers list only  files  in  their  response  to\n"
 , stdout);
  fputs(
+"              Note: Some FTP servers list only  files  in  their  response  to\n"
 "              NLST; they do not include sub-directories and symbolic links.\n"
 "\n"
 "              (POP3)  When  retrieving a specific email from POP3, this switch\n"
@@ -1243,9 +1298,9 @@ void hugehelp(void)
 "              particularly  useful if the user wants to see if a specific mes-\n"
 "              sage id exists on the server and what size it is.\n"
 "\n"
-"              Note: When combined with -X, --request  <command>,  this  option\n"
 , stdout);
  fputs(
+"              Note: When combined with -X, --request  <command>,  this  option\n"
 "              can be used to send an UIDL command instead, so the user may use\n"
 "              the email's unique identifier rather than  it's  message  id  to\n"
 "              make the request. (Added in 7.21.5)\n"
@@ -1253,27 +1308,27 @@ void hugehelp(void)
 "       -L, --location\n"
 "              (HTTP/HTTPS)  If  the server reports that the requested page has\n"
 "              moved to a different location (indicated with a Location: header\n"
-"              and  a  3XX  response code), this option will make curl redo the\n"
 , stdout);
  fputs(
+"              and  a  3XX  response code), this option will make curl redo the\n"
 "              request on the new place. If used together with -i, --include or\n"
 "              -I, --head, headers from all requested pages will be shown. When\n"
 "              authentication is used, curl only sends its credentials  to  the\n"
 "              initial  host.  If a redirect takes curl to a different host, it\n"
 "              won't be able to intercept the user+password. See  also  --loca-\n"
-"              tion-trusted  on how to change this. You can limit the amount of\n"
 , stdout);
  fputs(
+"              tion-trusted  on how to change this. You can limit the amount of\n"
 "              redirects to follow by using the --max-redirs option.\n"
 "\n"
 "              When curl follows a redirect and the request is not a plain  GET\n"
 "              (for example POST or PUT), it will do the following request with\n"
 "              a GET if the HTTP response was 301, 302, or 303. If the response\n"
 "              code  was  any  other  3xx code, curl will re-send the following\n"
-"              request using the same unmodified method.\n"
-"\n"
 , stdout);
  fputs(
+"              request using the same unmodified method.\n"
+"\n"
 "              You can tell curl to not change the non-GET  request  method  to\n"
 "              GET  after  a  30x  response  by using the dedicated options for\n"
 "              that: --post301, --post302 and -post303.\n"
@@ -1281,10 +1336,10 @@ void hugehelp(void)
 "       --libcurl <file>\n"
 "              Append this option to any ordinary curl command  line,  and  you\n"
 "              will  get a libcurl-using C source code written to the file that\n"
-"              does the equivalent of what your command-line operation does!\n"
-"\n"
 , stdout);
  fputs(
+"              does the equivalent of what your command-line operation does!\n"
+"\n"
 "              If this option is used several times, the last given  file  name\n"
 "              will be used. (Added in 7.16.1)\n"
 "\n"
@@ -1292,19 +1347,19 @@ void hugehelp(void)
 "              Specify  the  maximum  transfer  rate you want curl to use - for\n"
 "              both downloads and uploads. This feature is useful if you have a\n"
 "              limited pipe and you'd like your transfer not to use your entire\n"
-"              bandwidth. To make it slower than it otherwise would be.\n"
-"\n"
 , stdout);
  fputs(
+"              bandwidth. To make it slower than it otherwise would be.\n"
+"\n"
 "              The given speed is measured in bytes/second, unless a suffix  is\n"
 "              appended.   Appending  'k' or 'K' will count the number as kilo-\n"
 "              bytes, 'm' or M' makes it megabytes, while 'g' or 'G'  makes  it\n"
 "              gigabytes. Examples: 200K, 3m and 1G.\n"
 "\n"
 "              The  given  rate  is the average speed counted during the entire\n"
-"              transfer. It means that curl might use higher transfer speeds in\n"
 , stdout);
  fputs(
+"              transfer. It means that curl might use higher transfer speeds in\n"
 "              short bursts, but over time it uses no more than the given rate.\n"
 "              If  you  also use the -Y, --speed-limit option, that option will\n"
 "              take precedence and might cripple the rate-limiting slightly, to\n"
@@ -1313,9 +1368,9 @@ void hugehelp(void)
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --local-port <num>[-num]\n"
-"              Set a preferred number or range of local port numbers to use for\n"
 , stdout);
  fputs(
+"              Set a preferred number or range of local port numbers to use for\n"
 "              the connection(s).  Note that  port  numbers  by  nature  are  a\n"
 "              scarce resource that will be busy at times so setting this range\n"
 "              to something too narrow might cause unnecessary connection setup\n"
@@ -1323,18 +1378,18 @@ void hugehelp(void)
 "\n"
 "       --location-trusted\n"
 "              (HTTP/HTTPS)  Like  -L,  --location,  but will allow sending the\n"
-"              name + password to all hosts that the site may redirect to. This\n"
 , stdout);
  fputs(
+"              name + password to all hosts that the site may redirect to. This\n"
 "              may or may not introduce a security breach if the site redirects\n"
 "              you to a site to which  you'll  send  your  authentication  info\n"
 "              (which is plaintext in the case of HTTP Basic authentication).\n"
 "\n"
 "       -m, --max-time <seconds>\n"
 "              Maximum  time  in  seconds that you allow the whole operation to\n"
-"              take.  This is useful for preventing your batch jobs from  hang-\n"
 , stdout);
  fputs(
+"              take.  This is useful for preventing your batch jobs from  hang-\n"
 "              ing  for  hours due to slow networks or links going down.  Since\n"
 "              7.32.0, this option accepts decimal values, but the actual time-\n"
 "              out will decrease in accuracy as the specified timeout increases\n"
@@ -1342,9 +1397,9 @@ void hugehelp(void)
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
-"       --login-options <options>\n"
 , stdout);
  fputs(
+"       --login-options <options>\n"
 "              Specify the login options to use during server authentication.\n"
 "\n"
 "              You can use the  login  options  to  specify  protocol  specific\n"
@@ -1450,13 +1505,13 @@ void hugehelp(void)
 "              Makes curl scan the .netrc  (_netrc  on  Windows)  file  in  the\n"
 "              user's home directory for login name and password. This is typi-\n"
 "              cally used for FTP on Unix. If used with HTTP, curl will  enable\n"
-"              user  authentication.  See netrc(4) or ftp(1) for details on the\n"
-"              file format. Curl will not complain if that  file  doesn't  have\n"
-"              the  right permissions (it should not be either world- or group-\n"
+"              user authentication. See netrc(5) ftp(1) for details on the file\n"
+"              format. Curl will not complain if that  file  doesn't  have  the\n"
+"              right permissions (it should not be either world- or group-read-\n"
 , stdout);
  fputs(
-"              readable). The environment variable \"HOME\" is used to  find  the\n"
-"              home directory.\n"
+"              able). The environment variable \"HOME\" is used to find the  home\n"
+"              directory.\n"
 "\n"
 "              A  quick  and  very  simple  example of how to setup a .netrc to\n"
 "              allow curl to FTP to the machine host.domain.com with user  name\n"
@@ -1688,70 +1743,79 @@ void hugehelp(void)
  fputs(
 "                     for the control connection\n"
 "\n"
-"       If  this  option is used several times, the last one will be used. Dis-\n"
-"       able the use of PORT with --ftp-pasv. Disable the attempt  to  use  the\n"
-"       EPRT  command  instead  of PORT by using --disable-eprt. EPRT is really\n"
-"       PORT++.\n"
+"              If this option is used several times, the last one will be used.\n"
+"              Disable the use of PORT with --ftp-pasv. Disable the attempt  to\n"
+"              use  the  EPRT  command instead of PORT by using --disable-eprt.\n"
+"              EPRT is really PORT++.\n"
 "\n"
-"       Starting in 7.19.5, you can append \":[start]-[end]\" to the right of the\n"
-"       address,  to tell curl what TCP port range to use. That means you spec-\n"
+"              Starting in 7.19.5, you can append \":[start]-[end]\" to the right\n"
+"              of  the  address,  to tell curl what TCP port range to use. That\n"
 , stdout);
  fputs(
-"       ify a port range, from a lower to a  higher  number.  A  single  number\n"
-"       works  as well, but do note that it increases the risk of failure since\n"
-"       the port may not be available.\n"
+"              means you specify a port range, from a lower to a higher number.\n"
+"              A single number works as well, but do note that it increases the\n"
+"              risk of failure since the port may not be available.\n"
 "\n"
 "       --pass <phrase>\n"
 "              (SSL/SSH) Passphrase for the private key\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
-"       --post301\n"
-"              (HTTP) Tells curl to respect RFC  2616/10.3.2  and  not  convert\n"
+"       --path-as-is\n"
+"              Tell curl to not handle sequences of /../ or /./  in  the  given\n"
 , stdout);
  fputs(
+"              URL  path.  Normally curl will squash or merge them according to\n"
+"              standards but with this option set you tell it not to do that.\n"
+"\n"
+"              (Added in 7.42.0)\n"
+"\n"
+"       --post301\n"
+"              (HTTP) Tells curl to respect RFC  2616/10.3.2  and  not  convert\n"
 "              POST  requests  into GET requests when following a 301 redirect-\n"
 "              ion. The non-RFC behaviour is ubiquitous  in  web  browsers,  so\n"
+, stdout);
+ fputs(
 "              curl  does  the  conversion  by default to maintain consistency.\n"
 "              However, a server may require a POST to remain a POST after such\n"
 "              a  redirection.  This  option  is meaningful only when using -L,\n"
 "              --location (Added in 7.17.1)\n"
 "\n"
 "       --post302\n"
-, stdout);
- fputs(
 "              (HTTP) Tells curl to respect RFC  2616/10.3.2  and  not  convert\n"
 "              POST  requests  into GET requests when following a 302 redirect-\n"
+, stdout);
+ fputs(
 "              ion. The non-RFC behaviour is ubiquitous  in  web  browsers,  so\n"
 "              curl  does  the  conversion  by default to maintain consistency.\n"
 "              However, a server may require a POST to remain a POST after such\n"
 "              a  redirection.  This  option  is meaningful only when using -L,\n"
-, stdout);
- fputs(
 "              --location (Added in 7.19.1)\n"
 "\n"
 "       --post303\n"
 "              (HTTP) Tells curl to respect RFC  2616/10.3.2  and  not  convert\n"
+, stdout);
+ fputs(
 "              POST  requests  into GET requests when following a 303 redirect-\n"
 "              ion. The non-RFC behaviour is ubiquitous  in  web  browsers,  so\n"
 "              curl  does  the  conversion  by default to maintain consistency.\n"
 "              However, a server may require a POST to remain a POST after such\n"
-, stdout);
- fputs(
 "              a  redirection.  This  option  is meaningful only when using -L,\n"
 "              --location (Added in 7.26.0)\n"
 "\n"
 "       --proto <protocols>\n"
+, stdout);
+ fputs(
 "              Tells  curl  to  use  the  listed  protocols  for  its   initial\n"
 "              retrieval. Protocols are evaluated left to right, are comma sep-\n"
 "              arated, and are each a protocol name or 'all',  optionally  pre-\n"
 "              fixed by zero or more modifiers. Available modifiers are:\n"
 "\n"
-, stdout);
- fputs(
 "              +  Permit this protocol in addition to protocols already permit-\n"
 "                 ted (this is the default if no modifier is used).\n"
 "\n"
+, stdout);
+ fputs(
 "              -  Deny this protocol, removing it from the  list  of  protocols\n"
 "                 already permitted.\n"
 "\n"
@@ -1759,13 +1823,13 @@ void hugehelp(void)
 "                 ted), though subject  to  later  modification  by  subsequent\n"
 "                 entries in the comma separated list.\n"
 "\n"
-, stdout);
- fputs(
 "              For example:\n"
 "\n"
 "              --proto -ftps  uses the default protocols, but disables ftps\n"
 "\n"
 "              --proto -all,https,+http\n"
+, stdout);
+ fputs(
 "                             only enables http and https\n"
 "\n"
 "              --proto =http,https\n"
@@ -1773,11 +1837,11 @@ void hugehelp(void)
 "\n"
 "              Unknown  protocols  produce  a  warning.  This allows scripts to\n"
 "              safely rely on being able to disable potentially dangerous  pro-\n"
-, stdout);
- fputs(
 "              tocols,  without  relying  upon  support for that protocol being\n"
 "              built into curl to avoid an error.\n"
 "\n"
+, stdout);
+ fputs(
 "              This option can be used multiple times, in which case the effect\n"
 "              is  the same as concatenating the protocols into one instance of\n"
 "              the option.\n"
@@ -1786,23 +1850,23 @@ void hugehelp(void)
 "\n"
 "       --proto-redir <protocols>\n"
 "              Tells curl to use the listed protocols  after  a  redirect.  See\n"
-, stdout);
- fputs(
 "              --proto for how protocols are represented.\n"
 "\n"
 "              (Added in 7.20.2)\n"
 "\n"
 "       --proxy-anyauth\n"
+, stdout);
+ fputs(
 "              Tells  curl to pick a suitable authentication method when commu-\n"
 "              nicating with  the  given  proxy.  This  might  cause  an  extra\n"
 "              request/response round-trip. (Added in 7.13.2)\n"
 "\n"
 "       --proxy-basic\n"
 "              Tells  curl  to use HTTP Basic authentication when communicating\n"
-, stdout);
- fputs(
 "              with the given proxy. Use --basic for enabling HTTP Basic with a\n"
 "              remote  host.  Basic  is  the default authentication method curl\n"
+, stdout);
+ fputs(
 "              uses with proxies.\n"
 "\n"
 "       --proxy-digest\n"
@@ -1811,10 +1875,10 @@ void hugehelp(void)
 "              a remote host.\n"
 "\n"
 "       --proxy-negotiate\n"
-, stdout);
- fputs(
 "              Tells curl to use HTTP Negotiate  (SPNEGO)  authentication  when\n"
 "              communicating with the given proxy. Use --negotiate for enabling\n"
+, stdout);
+ fputs(
 "              HTTP Negotiate (SPNEGO) with a remote host. (Added in 7.17.1)\n"
 "\n"
 "       --proxy-ntlm\n"
@@ -1822,110 +1886,119 @@ void hugehelp(void)
 "              with the given proxy. Use --ntlm for enabling NTLM with a remote\n"
 "              host.\n"
 "\n"
-"       --proxy1.0 <proxyhost[:port]>\n"
+"       --proxy-service-name <servicename>\n"
+"              This option allows you to change  the  service  name  for  proxy\n"
+"              negotiation.\n"
+"\n"
 , stdout);
  fputs(
+"              Examples:   --proxy-negotiate   proxy-name  --proxy-service-name\n"
+"              sockd would use sockd/proxy-name.  (Added in 7.43.0).\n"
+"\n"
+"       --proxy1.0 <proxyhost[:port]>\n"
 "              Use the specified HTTP 1.0 proxy. If  the  port  number  is  not\n"
 "              specified, it is assumed at port 1080.\n"
 "\n"
 "              The  only difference between this and the HTTP proxy option (-x,\n"
 "              --proxy), is that attempts to use CONNECT through the proxy will\n"
+, stdout);
+ fputs(
 "              specify an HTTP 1.0 protocol instead of the default HTTP 1.1.\n"
 "\n"
 "       --pubkey <key>\n"
 "              (SSH)  Public  key  file name. Allows you to provide your public\n"
-, stdout);
- fputs(
 "              key in this separate file.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "              (As of 7.39.0, curl attempts to automatically extract the public\n"
 "              key  from the private key file, so passing this option is gener-\n"
+, stdout);
+ fputs(
 "              ally not required. Note that this public key extraction requires\n"
 "              libcurl  to  be linked against a copy of libssh2 1.2.8 or higher\n"
 "              that is itself linked against OpenSSL.)\n"
 "\n"
-, stdout);
- fputs(
 "       -q     If used as the first parameter on the command line,  the  curlrc\n"
 "              config  file will not be read and used. See the -K, --config for\n"
 "              details on the default config file search path.\n"
 "\n"
 "       -Q, --quote <command>\n"
+, stdout);
+ fputs(
 "              (FTP/SFTP) Send an arbitrary command to the remote FTP  or  SFTP\n"
 "              server.  Quote commands are sent BEFORE the transfer takes place\n"
 "              (just after the initial PWD command in an FTP  transfer,  to  be\n"
-, stdout);
- fputs(
 "              exact). To make commands take place after a successful transfer,\n"
 "              prefix them with a dash '-'.  To make  commands  be  sent  after\n"
 "              curl has changed the working directory, just before the transfer\n"
+, stdout);
+ fputs(
 "              command(s), prefix the command with a '+'  (this  is  only  sup-\n"
 "              ported  for FTP). You may specify any number of commands. If the\n"
 "              server returns failure for one of the commands, the entire oper-\n"
-, stdout);
- fputs(
 "              ation  will  be aborted. You must send syntactically correct FTP\n"
 "              commands as RFC 959 defines to FTP servers, or one of  the  com-\n"
 "              mands  listed  below  to  SFTP servers.  This option can be used\n"
+, stdout);
+ fputs(
 "              multiple times. When speaking to an FTP server, prefix the  com-\n"
 "              mand with an asterisk (*) to make curl continue even if the com-\n"
 "              mand fails as by default curl will stop at first failure.\n"
 "\n"
-, stdout);
- fputs(
 "              SFTP is a binary protocol. Unlike for FTP, curl interprets  SFTP\n"
 "              quote  commands  itself before sending them to the server.  File\n"
 "              names may be quoted shell-style to embed spaces or special char-\n"
+, stdout);
+ fputs(
 "              acters.   Following is the list of all supported SFTP quote com-\n"
 "              mands:\n"
 "\n"
 "              chgrp group file\n"
 "                     The chgrp command sets the group ID of the file named  by\n"
-, stdout);
- fputs(
 "                     the  file  operand to the group ID specified by the group\n"
 "                     operand. The group operand is a decimal integer group ID.\n"
 "\n"
 "              chmod mode file\n"
 "                     The chmod command modifies the  file  mode  bits  of  the\n"
+, stdout);
+ fputs(
 "                     specified file. The mode operand is an octal integer mode\n"
 "                     number.\n"
 "\n"
 "              chown user file\n"
 "                     The chown command sets the owner of the file named by the\n"
-, stdout);
- fputs(
 "                     file  operand  to the user ID specified by the user oper-\n"
 "                     and. The user operand is a decimal integer user ID.\n"
 "\n"
 "              ln source_file target_file\n"
 "                     The ln and symlink commands create a symbolic link at the\n"
+, stdout);
+ fputs(
 "                     target_file  location  pointing  to the source_file loca-\n"
 "                     tion.\n"
 "\n"
 "              mkdir directory_name\n"
 "                     The mkdir command creates  the  directory  named  by  the\n"
-, stdout);
- fputs(
 "                     directory_name operand.\n"
 "\n"
 "              pwd    The pwd command returns the absolute pathname of the cur-\n"
 "                     rent working directory.\n"
 "\n"
 "              rename source target\n"
+, stdout);
+ fputs(
 "                     The rename command renames the file or directory named by\n"
 "                     the  source  operand to the destination path named by the\n"
 "                     target operand.\n"
 "\n"
 "              rm file\n"
-, stdout);
- fputs(
 "                     The rm command removes the file specified by the file op-\n"
 "                     erand.\n"
 "\n"
 "              rmdir directory\n"
 "                     The  rmdir  command removes the directory entry specified\n"
+, stdout);
+ fputs(
 "                     by the directory operand, provided it is empty.\n"
 "\n"
 "              symlink source_file target_file\n"
@@ -1933,13 +2006,13 @@ void hugehelp(void)
 "\n"
 "       -r, --range <range>\n"
 "              (HTTP/FTP/SFTP/FILE) Retrieve a byte range (i.e a partial  docu-\n"
-, stdout);
- fputs(
 "              ment)  from  a  HTTP/1.1,  FTP  or  SFTP server or a local FILE.\n"
 "              Ranges can be specified in a number of ways.\n"
 "\n"
 "              0-499     specifies the first 500 bytes\n"
 "\n"
+, stdout);
+ fputs(
 "              500-999   specifies the second 500 bytes\n"
 "\n"
 "              -500      specifies the last 500 bytes\n"
@@ -1949,36 +2022,36 @@ void hugehelp(void)
 "              0-0,-1    specifies the first and last byte only(*)(H)\n"
 "\n"
 "              500-700,600-799\n"
-, stdout);
- fputs(
 "                        specifies 300 bytes from offset 500(H)\n"
 "\n"
 "              100-199,500-599\n"
 "                        specifies two separate 100-byte ranges(*)(H)\n"
 "\n"
-"       (*) = NOTE that this will cause the server to reply  with  a  multipart\n"
-"       response!\n"
-"\n"
-"       Only  digit characters (0-9) are valid in the 'start' and 'stop' fields\n"
-"       of the 'start-stop' range syntax. If a non-digit character is given  in\n"
-"       the  range, the server's response will be unspecified, depending on the\n"
 , stdout);
  fputs(
-"       server's configuration.\n"
+"              (*) = NOTE that this will cause the server to reply with a  mul-\n"
+"              tipart response!\n"
 "\n"
-"       You should also be aware that many HTTP/1.1 servers do  not  have  this\n"
-"       feature  enabled,  so  that  when  you  attempt  to get a range, you'll\n"
-"       instead get the whole document.\n"
+"              Only  digit characters (0-9) are valid in the 'start' and 'stop'\n"
+"              fields of the 'start-stop' range syntax. If a non-digit  charac-\n"
+"              ter is given in the range, the server's response will be unspec-\n"
+"              ified, depending on the server's configuration.\n"
+"\n"
+"              You should also be aware that many HTTP/1.1 servers do not  have\n"
+, stdout);
+ fputs(
+"              this  feature  enabled, so that when you attempt to get a range,\n"
+"              you'll instead get the whole document.\n"
 "\n"
-"       FTP and SFTP range downloads only support the simple 'start-stop'  syn-\n"
-"       tax  (optionally  with  one of the numbers omitted). FTP use depends on\n"
-"       the extended FTP command SIZE.\n"
+"              FTP and SFTP range downloads only  support  the  simple  'start-\n"
+"              stop'  syntax  (optionally with one of the numbers omitted). FTP\n"
+"              use depends on the extended FTP command SIZE.\n"
 "\n"
-"       If this option is used several times, the last one will be used.\n"
+"              If this option is used several times, the last one will be used.\n"
 "\n"
+"       -R, --remote-time\n"
 , stdout);
  fputs(
-"       -R, --remote-time\n"
 "              When used, this will make curl attempt to figure out  the  time-\n"
 "              stamp  of  the  remote  file,  and if that is available make the\n"
 "              local file get that same timestamp.\n"
@@ -2080,138 +2153,151 @@ void hugehelp(void)
 "              Enable initial  response  in  SASL  authentication.   (Added  in\n"
 "              7.31.0)\n"
 "\n"
-"       -S, --show-error\n"
-"              When  used  with  -s  it  makes curl show an error message if it\n"
-"              fails.\n"
+"       --service-name <servicename>\n"
+"              This option allows you to change the service name for SPNEGO.\n"
 "\n"
-"       --ssl  (FTP, POP3, IMAP, SMTP) Try to use SSL/TLS for  the  connection.\n"
+"              Examples:    --negotiate    --service-name   sockd   would   use\n"
 , stdout);
  fputs(
+"              sockd/server-name.  (Added in 7.43.0).\n"
+"\n"
+"       -S, --show-error\n"
+"              When used with -s it makes curl show  an  error  message  if  it\n"
+"              fails.\n"
+"\n"
+"       --ssl  (FTP,  POP3,  IMAP, SMTP) Try to use SSL/TLS for the connection.\n"
 "              Reverts to a non-secure connection if the server doesn't support\n"
-"              SSL/TLS.  See also --ftp-ssl-control and --ssl-reqd for  differ-\n"
+"              SSL/TLS.   See also --ftp-ssl-control and --ssl-reqd for differ-\n"
 "              ent levels of encryption required. (Added in 7.20.0)\n"
 "\n"
-"              This  option  was formerly known as --ftp-ssl (Added in 7.11.0).\n"
-"              That option name can still be used but  will  be  removed  in  a\n"
+, stdout);
+ fputs(
+"              This option was formerly known as --ftp-ssl (Added  in  7.11.0).\n"
+"              That  option  name  can  still  be used but will be removed in a\n"
 "              future version.\n"
 "\n"
 "       --ssl-reqd\n"
-, stdout);
- fputs(
-"              (FTP,  POP3,  IMAP,  SMTP)  Require  SSL/TLS for the connection.\n"
+"              (FTP, POP3, IMAP, SMTP)  Require  SSL/TLS  for  the  connection.\n"
 "              Terminates the connection if the server doesn't support SSL/TLS.\n"
 "              (Added in 7.20.0)\n"
 "\n"
-"              This  option  was  formerly  known  as  --ftp-ssl-reqd (added in\n"
-"              7.15.5). That option name can still be used but will be  removed\n"
+"              This option was  formerly  known  as  --ftp-ssl-reqd  (added  in\n"
+, stdout);
+ fputs(
+"              7.15.5).  That option name can still be used but will be removed\n"
 "              in a future version.\n"
 "\n"
 "       --ssl-allow-beast\n"
-"              (SSL)  This option tells curl to not work around a security flaw\n"
+"              (SSL) This option tells curl to not work around a security  flaw\n"
+"              in the SSL3 and TLS1.0 protocols known as BEAST.  If this option\n"
+"              isn't used, the SSL layer may use  workarounds  known  to  cause\n"
+"              interoperability  problems  with some older SSL implementations.\n"
 , stdout);
  fputs(
-"              in the SSL3 and TLS1.0 protocols known as BEAST.  If this option\n"
-"              isn't  used,  the  SSL  layer may use workarounds known to cause\n"
-"              interoperability problems with some older  SSL  implementations.\n"
 "              WARNING: this option loosens the SSL security, and by using this\n"
 "              flag you ask for exactly that.  (Added in 7.25.0)\n"
 "\n"
+"       --ssl-no-revoke\n"
+"              (WinSSL)  This  option tells curl to disable certificate revoca-\n"
+"              tion checks.  WARNING: this option loosens the SSL security, and\n"
+"              by using this flag you ask for exactly that.  (Added in 7.44.0)\n"
+"\n"
 "       --socks4 <host[:port]>\n"
-"              Use the specified SOCKS4 proxy. If the port number is not speci-\n"
 , stdout);
  fputs(
+"              Use the specified SOCKS4 proxy. If the port number is not speci-\n"
 "              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"
+"              This option overrides any previous use of -x, --proxy,  as  they\n"
 "              are mutually exclusive.\n"
 "\n"
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
 "              socks4 proxy with -x, --proxy using a socks4:// protocol prefix.\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --socks4a <host[:port]>\n"
-, stdout);
- fputs(
 "              Use the specified SOCKS4a proxy. If the port number is not spec-\n"
 "              ified, it is assumed at port 1080. (Added in 7.18.0)\n"
 "\n"
-"              This option overrides any previous use of -x, --proxy,  as  they\n"
+"              This  option  overrides any previous use of -x, --proxy, as they\n"
 "              are mutually exclusive.\n"
 "\n"
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
-"              socks4a proxy with -x, --proxy using a socks4a:// protocol  pre-\n"
-"              fix.\n"
-"\n"
 , stdout);
  fputs(
+"              socks4a  proxy with -x, --proxy using a socks4a:// protocol pre-\n"
+"              fix.\n"
+"\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --socks5-hostname <host[:port]>\n"
-"              Use  the  specified  SOCKS5 proxy (and let the proxy resolve the\n"
-"              host name). If the port number is not specified, it  is  assumed\n"
+"              Use the specified SOCKS5 proxy (and let the  proxy  resolve  the\n"
+"              host  name).  If the port number is not specified, it is assumed\n"
 "              at port 1080. (Added in 7.18.0)\n"
 "\n"
-"              This  option  overrides any previous use of -x, --proxy, as they\n"
-"              are mutually exclusive.\n"
-"\n"
 , stdout);
  fputs(
+"              This option overrides any previous use of -x, --proxy,  as  they\n"
+"              are mutually exclusive.\n"
+"\n"
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
 "              socks5 hostname proxy with -x, --proxy using a socks5h:// proto-\n"
 "              col prefix.\n"
 "\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"
+"              (This option was  previously  wrongly  documented  and  used  as\n"
+, stdout);
+ fputs(
 "              --socks without the number appended.)\n"
 "\n"
 "       --socks5 <host[:port]>\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"
+"              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"
-"              This option overrides any previous use of -x, --proxy,  as  they\n"
+"              This  option  overrides any previous use of -x, --proxy, as they\n"
 "              are mutually exclusive.\n"
 "\n"
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
-"              socks5 proxy with -x, --proxy using a socks5:// protocol prefix.\n"
 , stdout);
  fputs(
+"              socks5 proxy with -x, --proxy using a socks5:// protocol prefix.\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"
+"              (This option was  previously  wrongly  documented  and  used  as\n"
 "              --socks without the number appended.)\n"
 "\n"
-"              This option (as well as --socks4) does not work with IPV6,  FTPS\n"
+"              This  option (as well as --socks4) does not work with IPV6, FTPS\n"
 "              or LDAP.\n"
 "\n"
 "       --socks5-gssapi-service <servicename>\n"
+, stdout);
+ fputs(
 "              The default service name for a socks server is rcmd/server-fqdn.\n"
 "              This option allows you to change it.\n"
 "\n"
-, stdout);
- fputs(
-"              Examples:  --socks5  proxy-name  --socks5-gssapi-service   sockd\n"
-"              would  use sockd/proxy-name --socks5 proxy-name --socks5-gssapi-\n"
-"              service sockd/real-name  would  use  sockd/real-name  for  cases\n"
-"              where  the proxy-name does not match the principal name.  (Added\n"
+"              Examples:   --socks5  proxy-name  --socks5-gssapi-service  sockd\n"
+"              would use sockd/proxy-name --socks5 proxy-name  --socks5-gssapi-\n"
+"              service  sockd/real-name  would  use  sockd/real-name  for cases\n"
+"              where the proxy-name does not match the principal name.   (Added\n"
 "              in 7.19.4).\n"
 "\n"
-"       --socks5-gssapi-nec\n"
-"              As part of the GSS-API negotiation a protection mode is  negoti-\n"
 , stdout);
  fputs(
-"              ated.  RFC  1961 says in section 4.3/4.4 it should be protected,\n"
-"              but the NEC  reference  implementation  does  not.   The  option\n"
-"              --socks5-gssapi-nec  allows the unprotected exchange of the pro-\n"
+"       --socks5-gssapi-nec\n"
+"              As  part of the GSS-API negotiation a protection mode is negoti-\n"
+"              ated. RFC 1961 says in section 4.3/4.4 it should  be  protected,\n"
+"              but  the  NEC  reference  implementation  does  not.  The option\n"
+"              --socks5-gssapi-nec allows the unprotected exchange of the  pro-\n"
 "              tection mode negotiation. (Added in 7.19.4).\n"
 "\n"
 "       --stderr <file>\n"
-"              Redirect all writes to stderr to the specified file instead.  If\n"
-"              the file name is a plain '-', it is instead written to stdout.\n"
-"\n"
 , stdout);
  fputs(
+"              Redirect  all writes to stderr to the specified file instead. If\n"
+"              the file name is a plain '-', it is instead written to stdout.\n"
+"\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -t, --telnet-option <OPT=val>\n"
@@ -2221,46 +2307,46 @@ void hugehelp(void)
 "\n"
 "              XDISPLOC=<X display> Sets the X display location.\n"
 "\n"
+, stdout);
+ fputs(
 "              NEW_ENV=<var,val> Sets an environment variable.\n"
 "\n"
 "       -T, --upload-file <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"
+"              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"
+, stdout);
+ fputs(
 "              name to use. That will most likely cause the upload operation to\n"
 "              fail. If this is used on an HTTP(S) server, the PUT command will\n"
 "              be used.\n"
 "\n"
+"              Use  the file name \"-\" (a single dash) to use stdin instead of a\n"
+"              given file.  Alternately, the file name \".\"  (a  single  period)\n"
+"              may  be  specified  instead  of \"-\" to use stdin in non-blocking\n"
+"              mode to  allow  reading  server  output  while  stdin  is  being\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(
 "              + 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"
+"              multiple files to a single URL by using the  same  URL  globbing\n"
 "              style supported in the URL, like this:\n"
 "\n"
 "              curl -T \"{file1,file2}\" http://www.uploadtothissite.com\n"
 "\n"
 "              or even\n"
 "\n"
+, stdout);
+ fputs(
 "              curl -T \"img[1-1000].png\" ftp://ftp.picturemania.com/upload/\n"
 "\n"
 "       --tcp-nodelay\n"
-, stdout);
- fputs(
-"              Turn on the TCP_NODELAY option. See the curl_easy_setopt(3)  man\n"
+"              Turn  on the TCP_NODELAY option. See the curl_easy_setopt(3) man\n"
 "              page for details about this option. (Added in 7.11.2)\n"
 "\n"
 "       --tftp-blksize <value>\n"
@@ -2268,37 +2354,37 @@ void hugehelp(void)
 "              size that curl will try to use when transferring data to or from\n"
 "              a TFTP server. By default 512 bytes will be used.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
-"\n"
 , stdout);
  fputs(
+"              If this option is used several times, the last one will be used.\n"
+"\n"
 "              (Added in 7.20.0)\n"
 "\n"
 "       --tlsauthtype <authtype>\n"
-"              Set  TLS  authentication  type.  Currently,  the  only supported\n"
-"              option is \"SRP\",  for  TLS-SRP  (RFC  5054).  If  --tlsuser  and\n"
-"              --tlspassword  are specified but --tlsauthtype is not, then this\n"
+"              Set TLS  authentication  type.  Currently,  the  only  supported\n"
+"              option  is  \"SRP\",  for  TLS-SRP  (RFC  5054).  If --tlsuser and\n"
+"              --tlspassword are specified but --tlsauthtype is not, then  this\n"
 "              option defaults to \"SRP\".  (Added in 7.21.4)\n"
 "\n"
 "       --tlspassword <password>\n"
-"              Set password for use with the TLS authentication  method  speci-\n"
 , stdout);
  fputs(
-"              fied  with  --tlsauthtype.  Requires that --tlsuser also be set.\n"
+"              Set  password  for use with the TLS authentication method speci-\n"
+"              fied with --tlsauthtype. Requires that --tlsuser  also  be  set.\n"
 "              (Added in 7.21.4)\n"
 "\n"
 "       --tlsuser <user>\n"
-"              Set username for use with the TLS authentication  method  speci-\n"
-"              fied  with  --tlsauthtype.  Requires  that --tlspassword also be\n"
+"              Set  username  for use with the TLS authentication method speci-\n"
+"              fied with --tlsauthtype. Requires  that  --tlspassword  also  be\n"
 "              set.  (Added in 7.21.4)\n"
 "\n"
 "       --tlsv1.0\n"
+, stdout);
+ fputs(
 "              (SSL) Forces curl to use TLS version 1.0 when negotiating with a\n"
 "              remote TLS server.  (Added in 7.34.0)\n"
 "\n"
 "       --tlsv1.1\n"
-, stdout);
- fputs(
 "              (SSL) Forces curl to use TLS version 1.1 when negotiating with a\n"
 "              remote TLS server.  (Added in 7.34.0)\n"
 "\n"
@@ -2307,42 +2393,44 @@ void hugehelp(void)
 "              remote TLS server.  (Added in 7.34.0)\n"
 "\n"
 "       --tr-encoding\n"
+, stdout);
+ fputs(
 "              (HTTP) Request a compressed Transfer-Encoding response using one\n"
-"              of the algorithms curl supports, and uncompress the  data  while\n"
+"              of  the  algorithms curl supports, and uncompress the data while\n"
 "              receiving it.\n"
 "\n"
-, stdout);
- fputs(
 "              (Added in 7.21.6)\n"
 "\n"
 "       --trace <file>\n"
-"              Enables  a  full  trace  dump of all incoming and outgoing data,\n"
+"              Enables a full trace dump of all  incoming  and  outgoing  data,\n"
 "              including descriptive information, to the given output file. Use\n"
 "              \"-\" as filename to have the output sent to stdout.\n"
 "\n"
+, stdout);
+ fputs(
 "              This option overrides previous uses of -v, --verbose or --trace-\n"
 "              ascii.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --trace-ascii <file>\n"
-, stdout);
- fputs(
-"              Enables a full trace dump of all  incoming  and  outgoing  data,\n"
+"              Enables  a  full  trace  dump of all incoming and outgoing data,\n"
 "              including descriptive information, to the given output file. Use\n"
 "              \"-\" as filename to have the output sent to stdout.\n"
 "\n"
+, stdout);
+ fputs(
 "              This is very similar to --trace, but leaves out the hex part and\n"
-"              only  shows  the ASCII part of the dump. It makes smaller output\n"
+"              only shows the ASCII part of the dump. It makes  smaller  output\n"
 "              that might be easier to read for untrained humans.\n"
 "\n"
-, stdout);
- fputs(
 "              This option overrides previous uses of -v, --verbose or --trace.\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --trace-time\n"
-"              Prepends a time stamp to each trace or verbose  line  that  curl\n"
+"              Prepends  a  time  stamp to each trace or verbose line that curl\n"
+, stdout);
+ fputs(
 "              displays.  (Added in 7.14.0)\n"
 "\n"
 "       --unix-socket <path>\n"
@@ -2350,167 +2438,167 @@ void hugehelp(void)
 "              the network. (Added in 7.40.0)\n"
 "\n"
 "       -u, --user <user:password>\n"
-, stdout);
- fputs(
 "              Specify the user name and password to use for server authentica-\n"
 "              tion. Overrides -n, --netrc and --netrc-optional.\n"
 "\n"
-"              If  you  simply  specify  the  user name, curl will prompt for a\n"
+"              If you simply specify the user name,  curl  will  prompt  for  a\n"
 "              password.\n"
 "\n"
-"              The user name and passwords are split up  on  the  first  colon,\n"
-"              which  makes  it impossible to use a colon in the user name with\n"
-"              this option. The password can, still.\n"
-"\n"
 , stdout);
  fputs(
-"              When using Kerberos V5 with a Windows based  server  you  should\n"
-"              include  the  Windows domain name in the user name, in order for\n"
-"              the server to succesfully obtain a Kerberos Ticket. If you don't\n"
-"              then the initial authentication handshake may fail.\n"
+"              The  user  name  and  passwords are split up on the first colon,\n"
+"              which makes it impossible to use a colon in the user  name  with\n"
+"              this option. The password can, still.\n"
 "\n"
-"              When  using  NTLM,  the user name can be specified simply as the\n"
-"              user name, without the domain, if there is a single  domain  and\n"
+"              When  using  Kerberos  V5 with a Windows based server you should\n"
+"              include the Windows domain name in the user name, in  order  for\n"
+"              the  server  to  successfully  obtain  a Kerberos Ticket. If you\n"
 , stdout);
  fputs(
+"              don't then the initial authentication handshake may fail.\n"
+"\n"
+"              When using NTLM, the user name can be specified  simply  as  the\n"
+"              user  name,  without the domain, if there is a single domain and\n"
 "              forest in your setup for example.\n"
 "\n"
-"              To  specify  the domain name use either Down-Level Logon Name or\n"
+"              To specify the domain name use either Down-Level Logon  Name  or\n"
 "              UPN (User Principal Name) formats. For example, EXAMPLE\\user and\n"
 "              user@example.com respectively.\n"
 "\n"
-"              If  you  use a Windows SSPI-enabled curl binary and perform Ker-\n"
-"              beros V5, Negotiate, NTLM or Digest authentication then you  can\n"
-"              tell  curl  to select the user name and password from your envi-\n"
 , stdout);
  fputs(
+"              If you use a Windows SSPI-enabled curl binary and  perform  Ker-\n"
+"              beros  V5, Negotiate, NTLM or Digest authentication then you can\n"
+"              tell curl to select the user name and password from  your  envi-\n"
 "              ronment by specifying a single colon with this option: \"-u :\".\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -U, --proxy-user <user:password>\n"
-"              Specify the user name and password to use for proxy  authentica-\n"
-"              tion.\n"
-"\n"
-"              If  you  use  a  Windows  SSPI-enabled curl binary and do either\n"
-"              Negotiate or NTLM authentication  then  you  can  tell  curl  to\n"
 , stdout);
  fputs(
+"              Specify  the user name and password to use for proxy authentica-\n"
+"              tion.\n"
+"\n"
+"              If you use a Windows SSPI-enabled  curl  binary  and  do  either\n"
+"              Negotiate  or  NTLM  authentication  then  you  can tell curl to\n"
 "              select the user name and password from your environment by spec-\n"
 "              ifying a single colon with this option: \"-U :\".\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --url <URL>\n"
-"              Specify a URL to fetch. This option is  mostly  handy  when  you\n"
-"              want to specify URL(s) in a config file.\n"
-"\n"
-"              This  option  may  be used any number of times. To control where\n"
 , stdout);
  fputs(
-"              this URL is written, use the -o, --output or the  -O,  --remote-\n"
+"              Specify  a  URL  to  fetch. This option is mostly handy when you\n"
+"              want to specify URL(s) in a config file.\n"
+"\n"
+"              This option may be used any number of times.  To  control  where\n"
+"              this  URL  is written, use the -o, --output or the -O, --remote-\n"
 "              name options.\n"
 "       -v, --verbose\n"
-"              Be  more  verbose/talkative  during  the  operation.  Useful for\n"
-"              debugging and seeing what's going on \"under the  hood\".  A  line\n"
-"              starting  with  '>'  means \"header data\" sent by curl, '<' means\n"
-"              \"header data\" received by curl that is hidden in  normal  cases,\n"
+"              Be more  verbose/talkative  during  the  operation.  Useful  for\n"
+"              debugging  and  seeing  what's going on \"under the hood\". A line\n"
 , stdout);
  fputs(
-"              and  a  line starting with '*' means additional info provided by\n"
+"              starting with '>' means \"header data\" sent by  curl,  '<'  means\n"
+"              \"header  data\"  received by curl that is hidden in normal cases,\n"
+"              and a line starting with '*' means additional info  provided  by\n"
 "              curl.\n"
 "\n"
-"              Note that if you only want  HTTP  headers  in  the  output,  -i,\n"
+"              Note  that  if  you  only  want  HTTP headers in the output, -i,\n"
 "              --include might be the option you're looking for.\n"
 "\n"
-"              If  you think this option still doesn't give you enough details,\n"
+"              If you think this option still doesn't give you enough  details,\n"
+, stdout);
+ fputs(
 "              consider using --trace or --trace-ascii instead.\n"
 "\n"
 "              This option overrides previous uses of --trace-ascii or --trace.\n"
 "\n"
-, stdout);
- fputs(
 "              Use -s, --silent to make curl quiet.\n"
 "\n"
 "       -w, --write-out <format>\n"
 "              Make curl display information on stdout after a completed trans-\n"
-"              fer.  The  format  is a string that may contain plain text mixed\n"
-"              with any number of variables. The format can be specified  as  a\n"
-"              literal  \"string\",  or  you can have curl read the format from a\n"
-"              file with \"@filename\" and to tell curl to read the  format  from\n"
+"              fer. The format is a string that may contain  plain  text  mixed\n"
+"              with  any  number of variables. The format can be specified as a\n"
 , stdout);
  fputs(
+"              literal \"string\", or you can have curl read the  format  from  a\n"
+"              file  with  \"@filename\" and to tell curl to read the format from\n"
 "              stdin you write \"@-\".\n"
 "\n"
-"              The  variables  present in the output format will be substituted\n"
-"              by the value or text that curl thinks fit, as  described  below.\n"
-"              All  variables are specified as %{variable_name} and to output a\n"
-"              normal % you just write them as %%. You can output a newline  by\n"
-"              using \\n, a carriage return with \\r and a tab space with \\t.\n"
-"\n"
+"              The variables present in the output format will  be  substituted\n"
+"              by  the  value or text that curl thinks fit, as described below.\n"
+"              All variables are specified as %{variable_name} and to output  a\n"
 , stdout);
  fputs(
+"              normal  % you just write them as %%. You can output a newline by\n"
+"              using \\n, a carriage return with \\r and a tab space with \\t.\n"
+"\n"
 "              NOTE: The %-symbol is a special symbol in the win32-environment,\n"
-"              where all occurrences of %  must  be  doubled  when  using  this\n"
+"              where  all  occurrences  of  %  must  be doubled when using this\n"
 "              option.\n"
 "\n"
 "              The variables available are:\n"
 "\n"
-"              content_type   The  Content-Type  of  the requested document, if\n"
+"              content_type   The Content-Type of the  requested  document,  if\n"
+, stdout);
+ fputs(
 "                             there was any.\n"
 "\n"
 "              filename_effective\n"
-"                             The ultimate filename that curl  writes  out  to.\n"
-, stdout);
- fputs(
-"                             This  is only meaningful if curl is told to write\n"
-"                             to a file  with  the  --remote-name  or  --output\n"
-"                             option.  It's most useful in combination with the\n"
+"                             The  ultimate  filename  that curl writes out to.\n"
+"                             This is only meaningful if curl is told to  write\n"
+"                             to  a  file  with  the  --remote-name or --output\n"
+"                             option. It's most useful in combination with  the\n"
 "                             --remote-header-name option. (Added in 7.25.1)\n"
 "\n"
+, stdout);
+ fputs(
 "              ftp_entry_path The initial path curl ended up in when logging on\n"
 "                             to the remote FTP server. (Added in 7.15.4)\n"
 "\n"
-, stdout);
- fputs(
 "              http_code      The numerical response code that was found in the\n"
-"                             last retrieved HTTP(S)  or  FTP(s)  transfer.  In\n"
-"                             7.18.2  the alias response_code was added to show\n"
+"                             last  retrieved  HTTP(S)  or  FTP(s) transfer. In\n"
+"                             7.18.2 the alias response_code was added to  show\n"
 "                             the same info.\n"
 "\n"
-"              http_connect   The numerical code that was  found  in  the  last\n"
-"                             response   (from  a  proxy)  to  a  curl  CONNECT\n"
-"                             request. (Added in 7.12.4)\n"
-"\n"
 , stdout);
  fputs(
-"              local_ip       The IP address of  the  local  end  of  the  most\n"
-"                             recently  done connection - can be either IPv4 or\n"
+"              http_connect   The  numerical  code  that  was found in the last\n"
+"                             response  (from  a  proxy)  to  a  curl   CONNECT\n"
+"                             request. (Added in 7.12.4)\n"
+"\n"
+"              local_ip       The  IP  address  of  the  local  end of the most\n"
+"                             recently done connection - can be either IPv4  or\n"
 "                             IPv6 (Added in 7.29.0)\n"
 "\n"
-"              local_port     The local port number of the most  recently  done\n"
+, stdout);
+ fputs(
+"              local_port     The  local  port number of the most recently done\n"
 "                             connection (Added in 7.29.0)\n"
 "\n"
-"              num_connects   Number  of new connects made in the recent trans-\n"
+"              num_connects   Number of new connects made in the recent  trans-\n"
 "                             fer. (Added in 7.12.3)\n"
 "\n"
-, stdout);
- fputs(
-"              num_redirects  Number of redirects that  were  followed  in  the\n"
+"              num_redirects  Number  of  redirects  that  were followed in the\n"
 "                             request. (Added in 7.12.3)\n"
 "\n"
-"              redirect_url   When  an HTTP request was made without -L to fol-\n"
+"              redirect_url   When an HTTP request was made without -L to  fol-\n"
+, stdout);
+ fputs(
 "                             low redirects, this variable will show the actual\n"
-"                             URL  a  redirect  would  take  you  to. (Added in\n"
+"                             URL a redirect  would  take  you  to.  (Added  in\n"
 "                             7.18.2)\n"
 "\n"
-"              remote_ip      The remote IP address of the most  recently  done\n"
-, stdout);
- fputs(
+"              remote_ip      The  remote  IP address of the most recently done\n"
 "                             connection - can be either IPv4 or IPv6 (Added in\n"
 "                             7.29.0)\n"
 "\n"
-"              remote_port    The remote port number of the most recently  done\n"
+"              remote_port    The  remote port number of the most recently done\n"
+, stdout);
+ fputs(
 "                             connection (Added in 7.29.0)\n"
 "\n"
 "              size_download  The total amount of bytes that were downloaded.\n"
@@ -2518,151 +2606,156 @@ void hugehelp(void)
 "              size_header    The total amount of bytes of the downloaded head-\n"
 "                             ers.\n"
 "\n"
-, stdout);
- fputs(
-"              size_request   The total amount of bytes that were sent  in  the\n"
+"              size_request   The  total  amount of bytes that were sent in the\n"
 "                             HTTP request.\n"
 "\n"
 "              size_upload    The total amount of bytes that were uploaded.\n"
 "\n"
+, stdout);
+ fputs(
 "              speed_download The average download speed that curl measured for\n"
 "                             the complete download. Bytes per second.\n"
 "\n"
-"              speed_upload   The average upload speed that curl  measured  for\n"
+"              speed_upload   The  average  upload speed that curl measured for\n"
 "                             the complete upload. Bytes per second.\n"
 "\n"
-, stdout);
- fputs(
 "              ssl_verify_result\n"
-"                             The  result of the SSL peer certificate verifica-\n"
+"                             The result of the SSL peer certificate  verifica-\n"
 "                             tion that was requested. 0 means the verification\n"
+, stdout);
+ fputs(
 "                             was successful. (Added in 7.19.0)\n"
 "\n"
 "              time_appconnect\n"
-"                             The  time,  in  seconds,  it  took from the start\n"
-"                             until the SSL/SSH/etc  connect/handshake  to  the\n"
-, stdout);
- fputs(
+"                             The time, in seconds,  it  took  from  the  start\n"
+"                             until  the  SSL/SSH/etc  connect/handshake to the\n"
 "                             remote host was completed. (Added in 7.19.0)\n"
 "\n"
-"              time_connect   The  time,  in  seconds,  it  took from the start\n"
-"                             until the TCP connect  to  the  remote  host  (or\n"
+"              time_connect   The time, in seconds,  it  took  from  the  start\n"
+"                             until  the  TCP  connect  to  the remote host (or\n"
+, stdout);
+ fputs(
 "                             proxy) was completed.\n"
 "\n"
 "              time_namelookup\n"
-"                             The  time,  in  seconds,  it  took from the start\n"
+"                             The time, in seconds,  it  took  from  the  start\n"
 "                             until the name resolving was completed.\n"
 "\n"
 "              time_pretransfer\n"
+"                             The  time,  in  seconds,  it  took from the start\n"
+"                             until the file transfer was just about to  begin.\n"
+"                             This includes all pre-transfer commands and nego-\n"
 , stdout);
  fputs(
-"                             The time, in seconds,  it  took  from  the  start\n"
-"                             until  the file transfer was just about to begin.\n"
-"                             This includes all pre-transfer commands and nego-\n"
 "                             tiations that are specific to the particular pro-\n"
 "                             tocol(s) involved.\n"
 "\n"
 "              time_redirect  The time, in seconds, it took for all redirection\n"
+"                             steps include name lookup,  connect,  pretransfer\n"
+"                             and  transfer  before  the  final transaction was\n"
+"                             started. time_redirect shows the complete  execu-\n"
 , stdout);
  fputs(
-"                             steps  include  name lookup, connect, pretransfer\n"
-"                             and transfer before  the  final  transaction  was\n"
-"                             started.  time_redirect shows the complete execu-\n"
-"                             tion time for multiple  redirections.  (Added  in\n"
+"                             tion  time  for  multiple redirections. (Added in\n"
 "                             7.12.3)\n"
 "\n"
 "              time_starttransfer\n"
-"                             The  time,  in  seconds,  it  took from the start\n"
+"                             The time, in seconds,  it  took  from  the  start\n"
+"                             until  the first byte was just about to be trans-\n"
+"                             ferred. This includes time_pretransfer  and  also\n"
+"                             the  time  the  server  needed  to  calculate the\n"
 , stdout);
  fputs(
-"                             until the first byte was just about to be  trans-\n"
-"                             ferred.  This  includes time_pretransfer and also\n"
-"                             the time  the  server  needed  to  calculate  the\n"
 "                             result.\n"
 "\n"
-"              time_total     The  total time, in seconds, that the full opera-\n"
+"              time_total     The total time, in seconds, that the full  opera-\n"
 "                             tion lasted. The time will be displayed with mil-\n"
 "                             lisecond resolution.\n"
 "\n"
-, stdout);
- fputs(
 "              url_effective  The URL that was fetched last. This is most mean-\n"
-"                             ingful if you've told curl  to  follow  location:\n"
+"                             ingful  if  you've  told curl to follow location:\n"
 "                             headers.\n"
 "\n"
-"       If this option is used several times, the last one will be used.\n"
+, stdout);
+ fputs(
+"              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -x, --proxy <[protocol://][user:password@]proxyhost[:port]>\n"
 "              Use the specified proxy.\n"
 "\n"
-"              The  proxy  string can be specified with a protocol:// prefix to\n"
+"              The proxy string can be specified with a protocol://  prefix  to\n"
+"              specify  alternative proxy protocols. Use socks4://, socks4a://,\n"
+"              socks5:// or socks5h:// to request the specific SOCKS version to\n"
 , stdout);
  fputs(
-"              specify alternative proxy protocols. Use socks4://,  socks4a://,\n"
-"              socks5:// or socks5h:// to request the specific SOCKS version to\n"
-"              be used. No protocol specified, http:// and all others  will  be\n"
+"              be  used.  No protocol specified, http:// and all others will be\n"
 "              treated as HTTP proxies. (The protocol support was added in curl\n"
 "              7.21.7)\n"
 "\n"
-"              If the port number is not specified in the proxy string,  it  is\n"
+"              If  the  port number is not specified in the proxy string, it is\n"
 "              assumed to be 1080.\n"
 "\n"
+"              This option overrides existing environment  variables  that  set\n"
+"              the  proxy  to use. If there's an environment variable setting a\n"
 , stdout);
  fputs(
-"              This  option  overrides  existing environment variables that set\n"
-"              the proxy to use. If there's an environment variable  setting  a\n"
 "              proxy, you can set proxy to \"\" to override it.\n"
 "\n"
 "              All operations that are performed over an HTTP proxy will trans-\n"
-"              parently be converted to HTTP. It means  that  certain  protocol\n"
+"              parently  be  converted  to HTTP. It means that certain protocol\n"
 "              specific operations might not be available. This is not the case\n"
-, stdout);
- fputs(
 "              if you can tunnel through the proxy, as one with the -p, --prox-\n"
 "              ytunnel option.\n"
 "\n"
 "              User and password that might be provided in the proxy string are\n"
-"              URL decoded by curl. This allows you to pass in special  charac-\n"
-"              ters such as @ by using %40 or pass in a colon with %3a.\n"
-"\n"
-"              The  proxy host can be specified the exact same way as the proxy\n"
-"              environment variables, including the protocol  prefix  (http://)\n"
 , stdout);
  fputs(
+"              URL  decoded by curl. This allows you to pass in special charac-\n"
+"              ters such as @ by using %40 or pass in a colon with %3a.\n"
+"\n"
+"              The proxy host can be specified the exact same way as the  proxy\n"
+"              environment  variables,  including the protocol prefix (http://)\n"
 "              and the embedded user + password.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -X, --request <command>\n"
-"              (HTTP) Specifies a custom request method to use when communicat-\n"
-"              ing with the HTTP server.  The specified request  will  be  used\n"
-"              instead  of  the  method otherwise used (which defaults to GET).\n"
-"              Read the HTTP 1.1 specification for  details  and  explanations.\n"
 , stdout);
  fputs(
-"              Common  additional  HTTP  requests  include  PUT and DELETE, but\n"
-"              related technologies like WebDAV offers PROPFIND, COPY, MOVE and\n"
-"              more.\n"
+"              (HTTP) Specifies a custom request method to use when communicat-\n"
+"              ing  with the HTTP server.  The specified request method will be\n"
+"              used instead of the method otherwise  used  (which  defaults  to\n"
+"              GET).  Read  the HTTP 1.1 specification for details and explana-\n"
+"              tions. Common additional HTTP requests include PUT  and  DELETE,\n"
+"              but related technologies like WebDAV offers PROPFIND, COPY, MOVE\n"
+"              and more.\n"
 "\n"
-"              Normally  you  don't  need  this option. All sorts of GET, HEAD,\n"
+, stdout);
+ fputs(
+"              Normally you don't need this option. All  sorts  of  GET,  HEAD,\n"
 "              POST and PUT requests are rather invoked by using dedicated com-\n"
 "              mand line options.\n"
 "\n"
-"              This  option  only  changes  the  actual  word  used in the HTTP\n"
+"              This option only changes  the  actual  word  used  in  the  HTTP\n"
+"              request,  it does not alter the way curl behaves. So for example\n"
+"              if you want to make a proper HEAD request, using  -X  HEAD  will\n"
+"              not suffice. You need to use the -I, --head option.\n"
+"\n"
 , stdout);
  fputs(
-"              request, it does not alter the way curl behaves. So for  example\n"
-"              if  you  want  to make a proper HEAD request, using -X HEAD will\n"
-"              not suffice. You need to use the -I, --head option.\n"
+"              The method string you set with -X will be used for all requests,\n"
+"              which if you for example use -L, --location may cause unintended\n"
+"              side-effects  when  curl doesn't change request method according\n"
+"              to the HTTP 30x response codes - and similar.\n"
 "\n"
 "              (FTP) Specifies a custom FTP command to use instead of LIST when\n"
 "              doing file lists with FTP.\n"
 "\n"
 "              (POP3) Specifies a custom POP3 command to use instead of LIST or\n"
-"              RETR. (Added in 7.26.0)\n"
-"\n"
 , stdout);
  fputs(
+"              RETR. (Added in 7.26.0)\n"
+"\n"
 "              (IMAP) Specifies a custom IMAP command to use instead  of  LIST.\n"
 "              (Added in 7.30.0)\n"
 "\n"
@@ -2673,9 +2766,9 @@ void hugehelp(void)
 "\n"
 "       --xattr\n"
 "              When saving output to a file, this option tells  curl  to  store\n"
-"              certain  file  metadata  in extended file attributes. Currently,\n"
 , stdout);
  fputs(
+"              certain  file  metadata  in extended file attributes. Currently,\n"
 "              the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
 "              the  content  type  is stored in the mime_type attribute. If the\n"
 "              file system does not support extended attributes, a  warning  is\n"
@@ -2683,9 +2776,9 @@ void hugehelp(void)
 "\n"
 "       -y, --speed-time <time>\n"
 "              If a download is slower than speed-limit bytes per second during\n"
-"              a speed-time period, the download gets aborted. If speed-time is\n"
 , stdout);
  fputs(
+"              a speed-time period, the download gets aborted. If speed-time is\n"
 "              used, the default speed-limit will be 1 unless set with -Y.\n"
 "\n"
 "              This  option  controls  transfers  and thus will not affect slow\n"
@@ -2695,9 +2788,9 @@ void hugehelp(void)
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -Y, --speed-limit <speed>\n"
-"              If a download is slower than this given speed (in bytes per sec-\n"
 , stdout);
  fputs(
+"              If a download is slower than this given speed (in bytes per sec-\n"
 "              ond) for speed-time seconds it gets aborted. speed-time  is  set\n"
 "              with -y and is 30 if not set.\n"
 "\n"
@@ -2706,9 +2799,9 @@ void hugehelp(void)
 "       -z, --time-cond <date expression>|<file>\n"
 "              (HTTP/FTP)  Request a file that has been modified later than the\n"
 "              given time and date, or one that has been modified  before  that\n"
-"              time.  The <date expression> can be all sorts of date strings or\n"
 , stdout);
  fputs(
+"              time.  The <date expression> can be all sorts of date strings or\n"
 "              if it doesn't match any internal ones, it is taken as a filename\n"
 "              and  tries  to  get  the  modification  date (mtime) from <file>\n"
 "              instead. See the curl_getdate(3) man pages for  date  expression\n"
@@ -2716,10 +2809,10 @@ void hugehelp(void)
 "\n"
 "              Start the date expression with a dash (-) to make it request for\n"
 "              a document that is older than the given date/time, default is  a\n"
-"              document that is newer than the specified date/time.\n"
-"\n"
 , stdout);
  fputs(
+"              document that is newer than the specified date/time.\n"
+"\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -h, --help\n"
@@ -2731,9 +2824,9 @@ void hugehelp(void)
 "\n"
 "       -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(
+"              The first line includes the full version of  curl,  libcurl  and\n"
 "              other 3rd party libraries linked with the executable.\n"
 "\n"
 "              The  second  line (starts with \"Protocols:\") shows all protocols\n"
@@ -2744,10 +2837,10 @@ void hugehelp(void)
 "\n"
 "              IPv6   You can use IPv6 with this.\n"
 "\n"
-"              krb4   Krb4 for FTP is supported.\n"
-"\n"
 , stdout);
  fputs(
+"              krb4   Krb4 for FTP is supported.\n"
+"\n"
 "              SSL    SSL  versions of various protocols are supported, such as\n"
 "                     HTTPS, FTPS, POP3S and so on.\n"
 "\n"
@@ -2757,11 +2850,11 @@ void hugehelp(void)
 "              NTLM   NTLM authentication is supported.\n"
 "\n"
 "              Debug  This  curl  uses a libcurl built with Debug. This enables\n"
+, stdout);
+ fputs(
 "                     more error-tracking and memory debugging etc.  For  curl-\n"
 "                     developers only!\n"
 "\n"
-, stdout);
- fputs(
 "              AsynchDNS\n"
 "                     This  curl  uses asynchronous name resolves. Asynchronous\n"
 "                     name resolves can be done using either the c-ares or  the\n"
@@ -2770,13 +2863,13 @@ void hugehelp(void)
 "              SPNEGO SPNEGO authentication is supported.\n"
 "\n"
 "              Largefile\n"
+, stdout);
+ fputs(
 "                     This curl supports transfers of large files, files larger\n"
 "                     than 2GB.\n"
 "\n"
 "              IDN    This curl supports IDN - international domain names.\n"
 "\n"
-, stdout);
- fputs(
 "              GSS-API\n"
 "                     GSS-API is supported.\n"
 "\n"
@@ -2788,11 +2881,11 @@ void hugehelp(void)
 "\n"
 "              HTTP2  HTTP/2 support has been built-in.\n"
 "\n"
+, stdout);
+ fputs(
 "              Metalink\n"
 "                     This  curl  supports  Metalink (both version 3 and 4 (RFC\n"
 "                     5854)), which describes mirrors and  hashes.   curl  will\n"
-, stdout);
- fputs(
 "                     use mirrors for failover if there are errors (such as the\n"
 "                     file or server not being available).\n"
 "\n"
@@ -2802,11 +2895,11 @@ void hugehelp(void)
 "\n"
 "ENVIRONMENT\n"
 "       The environment variables can be specified in lower case or upper case.\n"
+, stdout);
+ fputs(
 "       The lower case version has precedence. http_proxy is an exception as it\n"
 "       is only available in lower case.\n"
 "\n"
-, stdout);
- fputs(
 "       Using an environment variable to set the proxy has the same  effect  as\n"
 "       using the --proxy option.\n"
 "\n"
@@ -2816,9 +2909,9 @@ void hugehelp(void)
 "              Sets the proxy server to use for HTTPS.\n"
 "\n"
 "       [url-protocol]_PROXY [protocol://]<host>[:port]\n"
-"              Sets  the proxy server to use for [url-protocol], where the pro-\n"
 , stdout);
  fputs(
+"              Sets  the proxy server to use for [url-protocol], where the pro-\n"
 "              tocol is a protocol that curl supports and  as  specified  in  a\n"
 "              URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP etc.\n"
 "\n"
@@ -2828,11 +2921,11 @@ void hugehelp(void)
 "\n"
 "       NO_PROXY <comma-separated list of hosts>\n"
 "              list of host names that shouldn't go through any proxy.  If  set\n"
+, stdout);
+ fputs(
 "              to a asterisk '*' only, it matches all hosts.\n"
 "\n"
 "PROXY PROTOCOL PREFIXES\n"
-, stdout);
- fputs(
 "       Since  curl  version  7.21.7,  the proxy string may be specified with a\n"
 "       protocol:// prefix to specify alternative proxy protocols.\n"
 "\n"
@@ -2843,11 +2936,11 @@ void hugehelp(void)
 "       The supported proxy protocol prefixes are as follows:\n"
 "\n"
 "       socks4://\n"
+, stdout);
+ fputs(
 "              Makes it the equivalent of --socks4\n"
 "\n"
 "       socks4a://\n"
-, stdout);
- fputs(
 "              Makes it the equivalent of --socks4a\n"
 "\n"
 "       socks5://\n"
@@ -2861,9 +2954,9 @@ void hugehelp(void)
 "       error  messages  that  may appear during bad conditions. At the time of\n"
 "       this writing, the exit codes are:\n"
 "\n"
-"       1      Unsupported protocol. This build of curl has no support for this\n"
 , stdout);
  fputs(
+"       1      Unsupported protocol. This build of curl has no support for this\n"
 "              protocol.\n"
 "\n"
 "       2      Failed to initialize.\n"
@@ -2875,11 +2968,11 @@ void hugehelp(void)
 "              time.  To  make  curl able to do this, you probably need another\n"
 "              build of libcurl!\n"
 "\n"
+, stdout);
+ fputs(
 "       5      Couldn't resolve proxy.  The  given  proxy  host  could  not  be\n"
 "              resolved.\n"
 "\n"
-, stdout);
- fputs(
 "       6      Couldn't resolve host. The given remote host was not resolved.\n"
 "\n"
 "       7      Failed to connect to host.\n"
@@ -2889,11 +2982,11 @@ void hugehelp(void)
 "\n"
 "       9      FTP access denied. The server denied login or denied  access  to\n"
 "              the  particular  resource or directory you wanted to reach. Most\n"
+, stdout);
+ fputs(
 "              often you tried to change to a directory that doesn't  exist  on\n"
 "              the server.\n"
 "\n"
-, stdout);
- fputs(
 "       11     FTP  weird PASS reply. Curl couldn't parse the reply sent to the\n"
 "              PASS request.\n"
 "\n"
@@ -2903,11 +2996,11 @@ void hugehelp(void)
 "       14     FTP  weird  227  format.  Curl  couldn't  parse the 227-line the\n"
 "              server sent.\n"
 "\n"
+, stdout);
+ fputs(
 "       15     FTP can't get host. Couldn't resolve the host IP we got  in  the\n"
 "              227-line.\n"
 "\n"
-, stdout);
- fputs(
 "       17     FTP  couldn't  set  binary.  Couldn't  change transfer method to\n"
 "              binary.\n"
 "\n"
@@ -2917,9 +3010,9 @@ void hugehelp(void)
 "              lar) command failed.\n"
 "\n"
 "       21     FTP quote error. A quote command returned error from the server.\n"
-"       22     HTTP  page  not  retrieved.  The  requested url was not found or\n"
 , stdout);
  fputs(
+"       22     HTTP  page  not  retrieved.  The  requested url was not found or\n"
 "              returned another error with the HTTP error  code  being  400  or\n"
 "              above. This return code only appears if -f, --fail is used.\n"
 "\n"
@@ -2929,12 +3022,12 @@ void hugehelp(void)
 "       25     FTP couldn't STOR file. The server denied  the  STOR  operation,\n"
 "              used for FTP uploading.\n"
 "\n"
+, stdout);
+ fputs(
 "       26     Read error. Various reading problems.\n"
 "\n"
 "       27     Out of memory. A memory allocation request failed.\n"
 "\n"
-, stdout);
- fputs(
 "       28     Operation  timeout.  The  specified  time-out period was reached\n"
 "              according to the conditions.\n"
 "\n"
@@ -2942,13 +3035,13 @@ void hugehelp(void)
 "              support  the  PORT  command,  try  doing  a  transfer using PASV\n"
 "              instead!\n"
 "\n"
+, stdout);
+ fputs(
 "       31     FTP couldn't use REST. The REST command failed. This command  is\n"
 "              used for resumed FTP transfers.\n"
 "\n"
 "       33     HTTP range error. The range \"command\" didn't work.\n"
 "\n"
-, stdout);
- fputs(
 "       34     HTTP post error. Internal post-request generation error.\n"
 "\n"
 "       35     SSL connect error. The SSL handshaking failed.\n"
@@ -2956,6 +3049,8 @@ void hugehelp(void)
 "       36     FTP  bad  download  resume. Couldn't continue an earlier aborted\n"
 "              download.\n"
 "\n"
+, stdout);
+ fputs(
 "       37     FILE couldn't read file. Failed to open the file. Permissions?\n"
 "\n"
 "       38     LDAP cannot bind. LDAP bind operation failed.\n"
@@ -2964,13 +3059,13 @@ void hugehelp(void)
 "\n"
 "       41     Function not found. A required LDAP function was not found.\n"
 "\n"
-, stdout);
- fputs(
 "       42     Aborted by callback. An application told curl to abort the oper-\n"
 "              ation.\n"
 "\n"
 "       43     Internal error. A function was called with a bad parameter.\n"
 "\n"
+, stdout);
+ fputs(
 "       45     Interface  error.  A  specified  outgoing interface could not be\n"
 "              used.\n"
 "\n"
@@ -2978,13 +3073,13 @@ void hugehelp(void)
 "              mum amount.\n"
 "\n"
 "       48     Unknown  option  specified  to  libcurl. This indicates that you\n"
-, stdout);
- fputs(
 "              passed a weird option to curl that was passed on to libcurl  and\n"
 "              rejected. Read up in the manual!\n"
 "\n"
 "       49     Malformed telnet option.\n"
 "\n"
+, stdout);
+ fputs(
 "       51     The peer's SSL certificate or SSH MD5 fingerprint was not OK.\n"
 "\n"
 "       52     The  server  didn't  reply anything, which here is considered an\n"
@@ -2996,14 +3091,14 @@ void hugehelp(void)
 "\n"
 "       55     Failed sending network data.\n"
 "\n"
-, stdout);
- fputs(
 "       56     Failure in receiving network data.\n"
 "\n"
 "       58     Problem with the local certificate.\n"
 "\n"
 "       59     Couldn't use specified SSL cipher.\n"
 "\n"
+, stdout);
+ fputs(
 "       60     Peer certificate cannot be authenticated with known CA  certifi-\n"
 "              cates.\n"
 "\n"
@@ -3017,13 +3112,13 @@ void hugehelp(void)
 "\n"
 "       65     Sending the data requires a rewind that failed.\n"
 "\n"
-, stdout);
- fputs(
 "       66     Failed to initialise SSL Engine.\n"
 "\n"
 "       67     The  user  name,  password, or similar was not accepted and curl\n"
 "              failed to log in.\n"
 "\n"
+, stdout);
+ fputs(
 "       68     File not found on TFTP server.\n"
 "\n"
 "       69     Permission problem on TFTP server.\n"
@@ -3038,14 +3133,14 @@ void hugehelp(void)
 "\n"
 "       74     No such user (TFTP).\n"
 "\n"
-, stdout);
- fputs(
 "       75     Character conversion failed.\n"
 "\n"
 "       76     Character conversion functions required.\n"
 "\n"
 "       77     Problem with reading the SSL CA cert (path? access rights?).\n"
 "\n"
+, stdout);
+ fputs(
 "       78     The resource referenced in the URL does not exist.\n"
 "\n"
 "       79     An unspecified error occurred during the SSH session.\n"
@@ -3055,8 +3150,6 @@ void hugehelp(void)
 "       82     Could not load CRL file,  missing  or  wrong  format  (added  in\n"
 "              7.19.0).\n"
 "\n"
-, stdout);
- fputs(
 "       83     Issuer check failed (added in 7.19.0).\n"
 "\n"
 "       84     The FTP PRET command failed\n"
@@ -3065,6 +3158,8 @@ void hugehelp(void)
 "\n"
 "       86     RTSP: mismatch of Session Identifiers\n"
 "\n"
+, stdout);
+ fputs(
 "       87     unable to parse FTP file list\n"
 "\n"
 "       88     FTP chunk callback reported error\n"
@@ -3073,13 +3168,13 @@ void hugehelp(void)
 "\n"
 "       90     SSL public key does not matched pinned public key\n"
 "\n"
-, stdout);
- fputs(
 "       XX     More error codes will appear here in future releases. The exist-\n"
 "              ing ones are meant to never change.\n"
 "\n"
 "AUTHORS / CONTRIBUTORS\n"
 "       Daniel Stenberg is the main author, but the whole list of  contributors\n"
+, stdout);
+ fputs(
 "       is found in the separate THANKS file.\n"
 "\n"
 "WWW\n"
@@ -3094,8 +3189,6 @@ void hugehelp(void)
 "LATEST VERSION\n"
 "\n"
 "  You always find news about what's going on as well as the latest versions\n"
-, stdout);
- fputs(
 "  from the curl web pages, located at:\n"
 "\n"
 "        http://curl.haxx.se\n"
@@ -3107,6 +3200,8 @@ void hugehelp(void)
 "        curl http://www.netscape.com/\n"
 "\n"
 "  Get the README file the user's home directory at funet's ftp-server:\n"
+, stdout);
+ fputs(
 "\n"
 "        curl ftp://ftp.funet.fi/README\n"
 "\n"
@@ -3118,8 +3213,6 @@ void hugehelp(void)
 "\n"
 "        curl ftp://cool.haxx.se/\n"
 "\n"
-, stdout);
- fputs(
 "  Get the definition of curl from a dictionary:\n"
 "\n"
 "        curl dict://dict.org/m:curl\n"
@@ -3132,6 +3225,8 @@ void hugehelp(void)
 "\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"
@@ -3140,8 +3235,6 @@ void hugehelp(void)
 "\n"
 "        curl -u username sftp://example.com/etc/issue\n"
 "\n"
-, stdout);
- fputs(
 "  Get a file from an SSH server using SCP using a private key\n"
 "  (not password-protected) to authenticate:\n"
 "\n"
@@ -3149,6 +3242,8 @@ void hugehelp(void)
 "             scp://example.com/~/file.txt\n"
 "\n"
 "  Get a file from an SSH server using SCP using a private key\n"
+, stdout);
+ fputs(
 "  (password-protected) to authenticate:\n"
 "\n"
 "        curl -u username: --key ~/.ssh/id_rsa --pass private_key_password \\\n"
@@ -3156,8 +3251,6 @@ void hugehelp(void)
 "\n"
 "  Get the main page from an IPv6 web server:\n"
 "\n"
-, stdout);
- fputs(
 "        curl \"http://[2001:1890:1112:1::20]/\"\n"
 "\n"
 "  Get a file from an SMB server:\n"
@@ -3168,14 +3261,14 @@ void hugehelp(void)
 "\n"
 "  Get a web page and store in a local file with a specific name:\n"
 "\n"
+, stdout);
+ fputs(
 "        curl -o thatpage.html http://www.netscape.com/\n"
 "\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"
 "  will fail):\n"
 "\n"
-, stdout);
- fputs(
 "        curl -O http://www.netscape.com/index.html\n"
 "\n"
 "  Fetch two files and store them with their remote names:\n"
@@ -3188,6 +3281,8 @@ void hugehelp(void)
 "\n"
 "   To ftp files using name+passwd, include them in the URL like:\n"
 "\n"
+, stdout);
+ fputs(
 "        curl ftp://name:passwd@machine.domain:port/full/path/to/file\n"
 "\n"
 "   or specify them with the -u flag like\n"
@@ -3196,8 +3291,6 @@ void hugehelp(void)
 "\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"
@@ -3205,16 +3298,18 @@ void hugehelp(void)
 "   standards while the recommended \"explicit\" way is done by using FTP:// and\n"
 "   the --ftp-ssl option.\n"
 "\n"
+, stdout);
+ fputs(
 " SFTP / SCP\n"
 "\n"
 "   This is similar to FTP, but you can use the --key option to specify a\n"
 "   private key to use instead of a password. Note that the private key may\n"
-, stdout);
- fputs(
 "   itself be protected by a password that is unrelated to the login password\n"
 "   of the remote system; this password is specified using the --pass option.\n"
 "   Typically, curl will automatically extract the public key from the private\n"
 "   key file, but in cases where curl does not have the proper library support,\n"
+, stdout);
+ fputs(
 "   a matching public key file must be specified using the --pubkey option.\n"
 "\n"
 " HTTP\n"
@@ -3222,8 +3317,6 @@ void hugehelp(void)
 "   Curl also supports user and password in HTTP URLs, thus you can pick a file\n"
 "   like:\n"
 "\n"
-, stdout);
- fputs(
 "        curl http://name:passwd@machine.domain/full/path/to/file\n"
 "\n"
 "   or specify user and password separately like in\n"
@@ -3231,16 +3324,18 @@ void hugehelp(void)
 "        curl -u name:passwd http://machine.domain/full/path/to/file\n"
 "\n"
 "   HTTP offers many different methods of authentication and curl supports\n"
+, stdout);
+ fputs(
 "   several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which\n"
 "   method to use, curl defaults to Basic. You can also ask curl to pick the\n"
 "   most secure ones out of the ones that the server accepts for the given URL,\n"
-, stdout);
- fputs(
 "   by using --anyauth.\n"
 "\n"
 "   NOTE! According to the URL specification, HTTP URLs can not contain a user\n"
 "   and password, so that style will not work when using curl via a proxy, even\n"
 "   though curl allows it at other times. When using a proxy, you _must_ use\n"
+, stdout);
+ fputs(
 "   the -u style for user and password.\n"
 "\n"
 " HTTPS\n"
@@ -3250,13 +3345,13 @@ void hugehelp(void)
 "PROXY\n"
 "\n"
 " curl supports both HTTP and SOCKS proxy servers, with optional authentication.\n"
-, stdout);
- fputs(
 " It does not have special support for FTP proxy servers since there are no\n"
 " standards for those, but it can still be made to work with many of them. You\n"
 " can also use both HTTP and SOCKS proxies to transfer files to and from FTP\n"
 " servers.\n"
 "\n"
+, stdout);
+ fputs(
 " Get an ftp file using an HTTP proxy named my-proxy that uses port 888:\n"
 "\n"
 "        curl -x my-proxy:888 ftp://ftp.leachsite.com/README\n"
@@ -3264,22 +3359,20 @@ void hugehelp(void)
 " Get a file from an HTTP server that requires user and password, using the\n"
 " same proxy as above:\n"
 "\n"
-, stdout);
- fputs(
 "        curl -u user:passwd -x my-proxy:888 http://www.get.this/\n"
 "\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(
 " A comma-separated list of hosts and domains which do not use the proxy can\n"
 " be specified as:\n"
 "\n"
 "        curl --noproxy localhost,get.this -x my-proxy:888 http://www.get.this/\n"
 "\n"
 " If the proxy is specified with --proxy1.0 instead of --proxy or -x, then\n"
-, stdout);
- fputs(
 " curl will use HTTP/1.0 instead of HTTP/1.1 for any CONNECT attempts.\n"
 "\n"
 " curl also supports SOCKS4 and SOCKS5 proxies with --socks4 and --socks5.\n"
@@ -3287,24 +3380,24 @@ void hugehelp(void)
 " See also the environment variables Curl supports that offer further proxy\n"
 " control.\n"
 "\n"
+, stdout);
+ fputs(
 " Most FTP proxy servers are set up to appear as a normal FTP server from the\n"
 " client's perspective, with special commands to select the remote FTP server.\n"
 " curl supports the -u, -Q and --ftp-account options that can be used to\n"
-, stdout);
- fputs(
 " set up transfers through many FTP proxies. For example, a file can be\n"
 " uploaded to a remote FTP server using a Blue Coat FTP proxy with the\n"
 " options:\n"
 "\n"
 "   curl -u \"Remote-FTP-Username@remote.ftp.server Proxy-Username:Remote-Pass\" \\\n"
+, stdout);
+ fputs(
 "    --ftp-account Proxy-Password --upload-file local-file \\\n"
 "    ftp://my-ftp.proxy.server:21/remote/upload/path/\n"
 "\n"
 " See the manual for your FTP proxy to determine the form it expects to set up\n"
 " transfers, and curl's -v option to see exactly what curl is sending.\n"
 "\n"
-, stdout);
- fputs(
 "RANGES\n"
 "\n"
 "  HTTP 1.1 introduced byte-ranges. Using this, a client can request\n"
@@ -3313,6 +3406,8 @@ void hugehelp(void)
 "\n"
 "  Get the first 100 bytes of a document:\n"
 "\n"
+, stdout);
+ fputs(
 "        curl -r 0-99 http://www.get.this/\n"
 "\n"
 "  Get the last 500 bytes of a document:\n"
@@ -3322,8 +3417,6 @@ void hugehelp(void)
 "  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"
@@ -3336,6 +3429,8 @@ void hugehelp(void)
 "\n"
 "        curl -T - ftp://ftp.upload.com/myfile\n"
 "\n"
+, stdout);
+ fputs(
 "  Upload data from a specified file, login with user and password:\n"
 "\n"
 "        curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile\n"
@@ -3343,8 +3438,6 @@ void hugehelp(void)
 "  Upload a local file to the remote site, and use the local file name at the remote\n"
 "  site 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"
@@ -3352,6 +3445,8 @@ void hugehelp(void)
 "        curl -T localfile -a ftp://ftp.upload.com/remotefile\n"
 "\n"
 "  Curl also supports ftp upload through a proxy, but only if the proxy is\n"
+, stdout);
+ fputs(
 "  configured to allow that kind of tunneling. If it does, you can run curl in\n"
 "  a fashion similar to:\n"
 "\n"
@@ -3360,8 +3455,6 @@ void hugehelp(void)
 "SMB / SMBS\n"
 "\n"
 "        curl -T file.txt -u \"domain\\username:passwd\" \n"
-, stdout);
- fputs(
 "         smb://server.example.com/share/\n"
 "\n"
 " HTTP\n"
@@ -3373,20 +3466,22 @@ void hugehelp(void)
 "  Note that the HTTP server must have been configured to accept PUT before\n"
 "  this can be done successfully.\n"
 "\n"
+, stdout);
+ fputs(
 "  For other ways to do HTTP data upload, see the POST section below.\n"
 "\n"
 "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"
-, stdout);
- fputs(
 "  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"
 "        curl -v ftp://ftp.upload.com/\n"
 "\n"
+, stdout);
+ fputs(
 "  To get even more details and information on what curl does, try using the\n"
 "  --trace or --trace-ascii options with a given file name to log to, like\n"
 "  this:\n"
@@ -3396,23 +3491,23 @@ void hugehelp(void)
 "\n"
 "DETAILED INFORMATION\n"
 "\n"
-, stdout);
- fputs(
 "  Different protocols provide different ways of getting detailed information\n"
 "  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"
+, stdout);
+ fputs(
 "  available info on a single file for HTTP and FTP. The HTTP information is a\n"
 "  lot more extensive.\n"
 "\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"
-, 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"
 "\n"
+, stdout);
+ fputs(
 "        curl --dump-header headers.txt curl.haxx.se\n"
 "\n"
 "  Note that headers stored in a separate file can be very useful at a later\n"
@@ -3421,14 +3516,14 @@ void hugehelp(void)
 "\n"
 "POST (HTTP)\n"
 "\n"
-, stdout);
- fputs(
 "  It's easy to post data using curl. This is done using the -d <data>\n"
 "  option.  The post data must be urlencoded.\n"
 "\n"
 "  Post a simple \"name\" and \"phone\" guestbook.\n"
 "\n"
 "        curl -d \"name=Rafael%20Sagula&phone=3320780\" \\\n"
+, stdout);
+ fputs(
 "                http://www.where.com/guest.cgi\n"
 "\n"
 "  How to post a form with curl, lesson #1:\n"
@@ -3436,19 +3531,17 @@ void hugehelp(void)
 "  Dig out all the <input> tags in the form that you want to fill in. (There's\n"
 "  a perl program called formfind.pl on the curl site that helps with this).\n"
 "\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"
 "        <variable1>=<data1>&<variable2>=<data2>&...\n"
 "\n"
 "  The 'variable' names are the names set with \"name=\" in the <input> tags, and\n"
+, stdout);
+ fputs(
 "  the data is the contents you want to fill in for the inputs. The data *must*\n"
 "  be properly URL encoded. That means you replace space with + and that you\n"
 "  replace weird letters with %XX where XX is the hexadecimal representation of\n"
-, stdout);
- fputs(
 "  the letter's ASCII code.\n"
 "\n"
 "  Example:\n"
@@ -3458,6 +3551,8 @@ void hugehelp(void)
 "        <form action=\"post.cgi\" method=\"post\">\n"
 "        <input name=user size=10>\n"
 "        <input name=pass type=password size=10>\n"
+, stdout);
+ fputs(
 "        <input name=id type=hidden value=\"blablabla\">\n"
 "        <input name=ding value=\"submit\">\n"
 "        </form>\n"
@@ -3466,49 +3561,47 @@ void hugehelp(void)
 "\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"
 "  While -d uses the application/x-www-form-urlencoded mime-type, generally\n"
+, stdout);
+ fputs(
 "  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"
-, 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=<mime type>'\n"
 "  to the file name. You can also post the contents of several files in one\n"
+, stdout);
+ fputs(
 "  field.  For example, the field name 'coolfiles' is used to send three files,\n"
 "  with different content types using the following syntax:\n"
 "\n"
 "        curl -F \"coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html\" \\\n"
 "        http://www.post.com/postit.cgi\n"
 "\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"
+, stdout);
+ fputs(
 "  use the default type 'application/octet-stream'.\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"
@@ -3517,14 +3610,14 @@ void hugehelp(void)
 "\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"
@@ -3532,11 +3625,11 @@ void hugehelp(void)
 "\n"
 "REFERRER\n"
 "\n"
+, stdout);
+ fputs(
 "  An HTTP request has the option to include information about which address\n"
 "  referred it to the 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"
@@ -3546,11 +3639,11 @@ void hugehelp(void)
 "\n"
 "USER AGENT\n"
 "\n"
+, stdout);
+ fputs(
 "  An 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"
@@ -3559,17 +3652,19 @@ void hugehelp(void)
 "\n"
 "  Other common strings:\n"
 "    'Mozilla/3.0 (Win95; I)'     Netscape Version 3 for Windows 95\n"
+, stdout);
+ fputs(
 "    'Mozilla/3.04 (Win95; U)'    Netscape Version 3 for Windows 95\n"
 "    '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"
+, stdout);
+ fputs(
 "    'Konqueror/1.0'             KDE File Manager desktop client\n"
 "    'Lynx/2.7.1 libwww-FM/2.14' Lynx command line browser\n"
 "\n"
@@ -3577,21 +3672,21 @@ void hugehelp(void)
 "\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: <data>' where the data part then\n"
 "  typically contains a set of NAME=VALUE pairs (separated by semicolons ';'\n"
+, stdout);
+ fputs(
 "  like \"NAME1=VALUE1; NAME2=VALUE2;\"). The server can also specify for what\n"
 "  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"
+, stdout);
+ fputs(
 "  it means the server wants that first pair passed on when we get anything in\n"
 "  a path beginning with \"/foo\".\n"
 "\n"
@@ -3601,12 +3696,12 @@ void hugehelp(void)
 "\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"
 "\n"
+, stdout);
+ fputs(
 "  ... you can then in a second connect to that (or another) site, use the\n"
 "  cookies from the 'headers' file like:\n"
 "\n"
@@ -3617,10 +3712,10 @@ void hugehelp(void)
 "  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"
+, stdout);
+ fputs(
 "  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"
 "  with cookies). So that if a site sends cookies and a location, you can\n"
@@ -3629,23 +3724,23 @@ void hugehelp(void)
 "        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"
+"  as netscape's cookie file. Curl will determine what kind it is based on the\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"
 "  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"
+"  To read and write cookies from a netscape cookie file, you can set both -b\n"
+"  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"
 "\n"
+, stdout);
+ fputs(
 "  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"
@@ -3654,9 +3749,9 @@ void hugehelp(void)
 "  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"
+"   %             - percentage completed of the whole transfer\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"
@@ -3666,9 +3761,9 @@ void hugehelp(void)
 "   Dload         - the average transfer speed of the download\n"
 "   Average Speed\n"
 "   Upload        - the average transfer speed of the upload\n"
+"   Time Total    - expected time to complete the operation\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"
@@ -3679,9 +3774,9 @@ void hugehelp(void)
 "\n"
 "SPEED LIMIT\n"
 "\n"
+"  Curl allows the user to set the transfer speed conditions that must be met\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"
@@ -3692,10 +3787,10 @@ void hugehelp(void)
 "        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"
+, stdout);
+ fputs(
 "        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"
@@ -3705,14 +3800,14 @@ void hugehelp(void)
 "\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"
 "\n"
 "        curl --limit-rate 10240 www.far-away-site.com\n"
 "\n"
+, stdout);
+ fputs(
 "  Or prevent curl from uploading data faster than 1 megabyte per second:\n"
 "\n"
 "        curl -T upload --limit-rate 1M ftp://uploadshereplease.com\n"
@@ -3720,24 +3815,24 @@ void hugehelp(void)
 "  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"
 "\n"
 "  Curl automatically tries to read the .curlrc file (or _curlrc file on win32\n"
+, stdout);
+ fputs(
 "  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"
 "  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"
+, stdout);
+ fputs(
 "  parameter within double quotes (\"). Within those quotes, you specify a\n"
 "  quote as \\\".\n"
 "\n"
@@ -3748,11 +3843,11 @@ void hugehelp(void)
 "        # 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"
+, stdout);
+ fputs(
 "  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"
@@ -3764,11 +3859,11 @@ void hugehelp(void)
 "  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"
+, stdout);
+ fputs(
 "  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"
 "  tables etc:\n"
@@ -3778,11 +3873,11 @@ void hugehelp(void)
 "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"
+, stdout);
+ fputs(
 "  Example, send the header \"X-you-and-me: yes\" to the server when getting a\n"
 "  page:\n"
 "\n"
@@ -3791,11 +3886,11 @@ void hugehelp(void)
 "  This can also be useful in case you want curl to send a different text in a\n"
 "  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"
+, stdout);
+ fputs(
 "        curl -H \"Host:\" www.server.com\n"
 "\n"
 "FTP and PATH NAMES\n"
@@ -3807,12 +3902,12 @@ void hugehelp(void)
 "        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"
 "\n"
+, stdout);
+ fputs(
 "  (I.e with an extra slash in front of the file name.)\n"
 "\n"
 "SFTP and SCP and PATH NAMES\n"
@@ -3825,9 +3920,9 @@ void hugehelp(void)
 "\n"
 "FTP and firewalls\n"
 "\n"
+"  The FTP protocol requires one of the involved parties to open a second\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 transferred. There are two ways to\n"
 "  do this.\n"
 "\n"
@@ -3838,9 +3933,9 @@ void hugehelp(void)
 "\n"
 "        curl ftp.download.com\n"
 "\n"
+"  If the server, for example, is behind a firewall that doesn't allow connections\n"
 , stdout);
  fputs(
-"  If the server, for example, is behind a firewall that doesn't allow connections\n"
 "  on ports other 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 IP number and port (as parameters to the\n"
@@ -3848,10 +3943,10 @@ void hugehelp(void)
 "\n"
 "  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"
+, stdout);
+ fputs(
 "        curl -P - ftp.download.com\n"
 "\n"
 "  Download with PORT but use the IP address of our 'le0' interface (this does\n"
@@ -3867,12 +3962,12 @@ void hugehelp(void)
 "\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"
 "\n"
+, stdout);
+ fputs(
 "        curl --interface 192.168.1.10 http://www.netscape.com/\n"
 "\n"
 "HTTPS\n"
@@ -3886,17 +3981,17 @@ void hugehelp(void)
 "        curl https://www.secure-site.com\n"
 "\n"
 "  Curl is also capable of using your personal certificates to get/post files\n"
+"  from sites that require valid certificates. The only drawback is that the\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"
 "  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"
+"  formatted certificates to PEM formatted ones. This kind of converter is\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"
@@ -3905,10 +4000,10 @@ void hugehelp(void)
 "  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"
+, stdout);
+ fputs(
 "  If you neglect to specify the password on the command line, you will be\n"
 "  prompted for the correct password before any data can be received.\n"
 "\n"
@@ -3917,10 +4012,10 @@ void hugehelp(void)
 "  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"
 "\n"
-, stdout);
- fputs(
 "        curl -2 https://secure.site.com/\n"
 "\n"
+, stdout);
+ fputs(
 "  Otherwise, curl will first attempt to use v3 and then v2.\n"
 "\n"
 "  To use OpenSSL to convert your favourite browser's certificate into a PEM\n"
@@ -4311,7 +4406,7 @@ void hugehelp(void) {}
 #else
 /*
  * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
- * Generation time: Sun Dec 28 14:36:38 2014
+ * Generation time: Mon Aug  3 00:00:36 2015
  */
 #ifdef USE_MANUAL
 #include "tool_hugehelp.h"
@@ -4319,4089 +4414,4180 @@ void hugehelp(void) {}
 #include "memdebug.h" /* keep this as LAST include */
 static const unsigned char hugehelpgz[] = {
   /* This mumbo-jumbo is the huge help text compressed with gzip.
-     Thanks to this operation, the size of this data shrunk from 162028
-     to 48958 bytes. You can disable the use of compressed help
+     Thanks to this operation, the size of this data shrunk from 166000
+     to 50046 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,
-  0x6b, 0x7b, 0x1b, 0xd7, 0x91, 0x2e, 0xfa, 0x9d, 0xbf, 0xa2, 0x07, 0x39,
-  0x19, 0x90, 0x09, 0x00, 0x5e, 0x74, 0xb1, 0xc5, 0x48, 0x1e, 0xd3, 0x14,
-  0x65, 0x73, 0x4c, 0x89, 0xdc, 0x04, 0x65, 0x3b, 0xdb, 0xf6, 0xa3, 0xa7,
-  0x01, 0x34, 0xc9, 0x0e, 0x81, 0x6e, 0xa4, 0xbb, 0x41, 0x8a, 0x99, 0xc9,
-  0xfc, 0xf6, 0x53, 0xf5, 0x56, 0xd5, 0x5a, 0xab, 0x2f, 0x20, 0x65, 0x4f,
-  0x9c, 0x33, 0xfb, 0x9c, 0xe3, 0x99, 0x88, 0x24, 0xd0, 0xbd, 0xae, 0xb5,
-  0x6a, 0xd5, 0xf5, 0xad, 0x28, 0x7a, 0xec, 0xbf, 0x0f, 0xf8, 0xdf, 0x07,
-  0xfa, 0x8f, 0x7e, 0x6e, 0x44, 0xd1, 0x59, 0x91, 0xff, 0x25, 0x99, 0x56,
-  0xdd, 0xcf, 0x7e, 0xf8, 0xf0, 0x9f, 0x91, 0xfc, 0x1f, 0xbd, 0xf3, 0x13,
-  0xfd, 0xdc, 0x78, 0xb0, 0xed, 0xed, 0xc8, 0xbf, 0xf0, 0x9f, 0x1f, 0xb6,
-  0xa2, 0xc7, 0x5e, 0xf8, 0xcf, 0x68, 0x13, 0x2f, 0x7c, 0xd0, 0x1e, 0x5e,
-  0xf2, 0xef, 0x1f, 0x3e, 0x3c, 0xdc, 0xc9, 0x4f, 0x3c, 0x2a, 0xfe, 0x67,
-  0x9b, 0xdf, 0xfb, 0xe9, 0x03, 0xff, 0x4a, 0x9f, 0x6c, 0x6c, 0xbc, 0x3b,
-  0x78, 0x7b, 0x64, 0xaf, 0x4e, 0x57, 0xc5, 0x3c, 0x1a, 0x46, 0x55, 0x11,
-  0x67, 0xe5, 0x65, 0x52, 0x44, 0x71, 0xf4, 0xfe, 0xfc, 0x64, 0x63, 0x63,
-  0xfc, 0xe7, 0x77, 0xa7, 0x67, 0xe3, 0xe3, 0x71, 0xed, 0xb1, 0x1f, 0xf3,
-  0x65, 0x95, 0xe6, 0x59, 0xf9, 0x73, 0xf4, 0x23, 0x3d, 0x34, 0x1a, 0x8d,
-  0x7e, 0xde, 0xd8, 0x78, 0x7d, 0x34, 0x3e, 0x3c, 0x3f, 0x3e, 0xbb, 0x38,
-  0x3e, 0x7d, 0x57, 0x7b, 0x36, 0x4a, 0xcb, 0x88, 0x1a, 0xab, 0xf2, 0x7c,
-  0x4e, 0xff, 0xf8, 0xf6, 0x67, 0x71, 0x15, 0x47, 0x97, 0x45, 0xbe, 0x88,
-  0xf2, 0x82, 0xbf, 0x88, 0xa3, 0x32, 0x29, 0x6e, 0x93, 0x62, 0x10, 0xad,
-  0xca, 0x34, 0xbb, 0x8a, 0xf2, 0x2c, 0x89, 0xf2, 0xcb, 0xa8, 0xba, 0x4e,
-  0xac, 0xb9, 0x72, 0xb5, 0x5c, 0xe6, 0x45, 0x95, 0xcc, 0xa2, 0x65, 0x91,
-  0x57, 0xf9, 0x34, 0x9f, 0x97, 0xd1, 0xe6, 0xeb, 0xe3, 0xc3, 0x8b, 0x41,
-  0xf4, 0xe6, 0xf8, 0xe4, 0x88, 0xfe, 0xbd, 0x38, 0xc3, 0x3f, 0xe3, 0x41,
-  0xf4, 0xf5, 0xe9, 0xd9, 0x37, 0x47, 0xe7, 0x83, 0xe8, 0x9b, 0x0b, 0xfe,
-  0x8c, 0xff, 0xa5, 0x0f, 0xa3, 0xe3, 0xb7, 0x07, 0x67, 0x03, 0x6b, 0x8e,
-  0xff, 0xe0, 0x0f, 0x4f, 0x5e, 0xd3, 0x87, 0xf2, 0x83, 0xff, 0x3c, 0x3b,
-  0x3d, 0x7b, 0xa2, 0x3f, 0xf8, 0xcf, 0xf3, 0x8b, 0xb7, 0xf4, 0xed, 0xf9,
-  0xc5, 0x98, 0xfe, 0x1d, 0x1f, 0xf2, 0x3f, 0xe8, 0x65, 0xfc, 0xf6, 0x2b,
-  0xfc, 0x33, 0x76, 0xcd, 0x8d, 0xdf, 0xca, 0xe7, 0xe8, 0xe9, 0xe2, 0xe8,
-  0xe4, 0xdd, 0xd1, 0x45, 0x14, 0x67, 0xb3, 0xe8, 0x82, 0x9e, 0xdf, 0x1a,
-  0x45, 0x17, 0xd7, 0x49, 0x34, 0xcd, 0x17, 0x0b, 0xfe, 0x88, 0x56, 0x64,
-  0x96, 0x94, 0xe9, 0x55, 0x46, 0x53, 0xa1, 0x99, 0xdf, 0xe5, 0xc5, 0x4d,
-  0x14, 0xdd, 0xa5, 0xd5, 0x75, 0xbe, 0xaa, 0xac, 0xb9, 0x15, 0xad, 0x46,
-  0x94, 0x66, 0x55, 0x52, 0xc4, 0x53, 0x5e, 0xeb, 0xd1, 0x46, 0x6d, 0x55,
-  0xf3, 0x4b, 0x5a, 0xc3, 0x92, 0x16, 0x6d, 0xb2, 0x2a, 0xe7, 0x79, 0x3c,
-  0xe3, 0xa5, 0xa2, 0x57, 0x2e, 0x57, 0xb4, 0xc8, 0x45, 0x3a, 0xbd, 0x29,
-  0xa3, 0x79, 0x7a, 0x93, 0xf0, 0x42, 0x7d, 0xbc, 0xb7, 0x85, 0x1b, 0x48,
-  0xa3, 0xf1, 0x8a, 0xd6, 0x34, 0x1b, 0x5a, 0x73, 0x55, 0x3a, 0x8d, 0xb9,
-  0x03, 0xac, 0x5c, 0xb4, 0x5a, 0x72, 0x6b, 0xb2, 0x62, 0xd1, 0x32, 0x2f,
-  0xe9, 0xa5, 0xf1, 0xf8, 0x84, 0x46, 0x9e, 0x65, 0x09, 0xc6, 0x51, 0x0e,
-  0xe8, 0x8f, 0xfc, 0x26, 0x4d, 0xe8, 0x97, 0xcb, 0x74, 0x9e, 0x44, 0xb2,
-  0xa3, 0xae, 0x39, 0xde, 0xda, 0xa8, 0x48, 0xca, 0xd5, 0x22, 0xa1, 0xd5,
-  0x7b, 0x9b, 0x54, 0xf1, 0x3c, 0xcd, 0x6e, 0xe8, 0x57, 0x9e, 0xf8, 0x22,
-  0x2f, 0x92, 0x51, 0x74, 0x50, 0x46, 0xf7, 0xf9, 0x8a, 0x26, 0x3c, 0x9f,
-  0xd3, 0x9e, 0x27, 0xd1, 0x24, 0x99, 0xe7, 0x77, 0x03, 0xde, 0xe9, 0x28,
-  0x5b, 0x2d, 0x26, 0xd4, 0x40, 0x7e, 0xe9, 0x9b, 0x8b, 0xab, 0x15, 0x35,
-  0x27, 0x4f, 0x2f, 0x62, 0x9a, 0x13, 0xbd, 0x5b, 0x44, 0xd7, 0x09, 0xcd,
-  0xb9, 0x5c, 0xa6, 0xd9, 0xbf, 0xd4, 0xd7, 0x85, 0x96, 0x76, 0x99, 0xdf,
-  0x25, 0x05, 0xad, 0xec, 0xe4, 0x3e, 0xa2, 0x45, 0x98, 0x08, 0x11, 0x5e,
-  0x12, 0x91, 0x45, 0x31, 0x35, 0xe1, 0x08, 0x70, 0x58, 0x24, 0xf3, 0x98,
-  0x89, 0xc9, 0xf5, 0x31, 0xa2, 0x4d, 0x4c, 0x1c, 0xb5, 0xe9, 0xab, 0x9b,
-  0x4f, 0xb6, 0xf0, 0xf2, 0x8c, 0x66, 0x92, 0xce, 0x4b, 0xda, 0x06, 0x3e,
-  0x16, 0xfa, 0x0c, 0x6f, 0x2a, 0x1f, 0x13, 0xa2, 0xcd, 0xfb, 0xac, 0x8a,
-  0x3f, 0xa2, 0x7b, 0xa5, 0xcd, 0xe1, 0x2c, 0x59, 0x26, 0xd9, 0x2c, 0xc9,
-  0xaa, 0x51, 0xf4, 0xe7, 0x7c, 0xd5, 0xa7, 0xbe, 0x2f, 0x53, 0x5a, 0x83,
-  0x58, 0x9b, 0xa2, 0x9e, 0x89, 0x08, 0xa6, 0x45, 0xba, 0x0c, 0xb6, 0x22,
-  0xcf, 0x68, 0xcf, 0xa3, 0xf3, 0x37, 0x87, 0xd1, 0x93, 0x17, 0x9f, 0x3f,
-  0xf7, 0x7b, 0x4e, 0x0d, 0x44, 0xd3, 0x38, 0xa3, 0x19, 0x27, 0xd3, 0xf4,
-  0xf2, 0x3e, 0x5a, 0xac, 0xe6, 0x55, 0xba, 0xa4, 0xd5, 0xa7, 0xce, 0x4b,
-  0x3e, 0x40, 0xcb, 0xb8, 0xa8, 0x4a, 0x26, 0x02, 0x7c, 0x80, 0xb9, 0xdf,
-  0x15, 0x69, 0xc5, 0x07, 0x09, 0xdf, 0xd1, 0x08, 0x93, 0xaa, 0xb4, 0xe6,
-  0x98, 0xd6, 0xa8, 0x9f, 0x09, 0xd1, 0x16, 0x2d, 0x6d, 0x5c, 0x52, 0xa7,
-  0xfb, 0x1b, 0x9e, 0x87, 0x5c, 0x57, 0xd5, 0x72, 0x7f, 0x7b, 0xbb, 0x4c,
-  0xab, 0x64, 0xf4, 0x1f, 0x74, 0x0e, 0x07, 0xd5, 0x5d, 0x3e, 0xa8, 0xae,
-  0x8b, 0x24, 0xf9, 0xfb, 0x88, 0x68, 0xd8, 0x3d, 0x49, 0xfd, 0xde, 0xeb,
-  0xc0, 0xae, 0x92, 0x8a, 0x7a, 0xf8, 0xeb, 0x2a, 0xc9, 0xb8, 0x45, 0x1a,
-  0x47, 0x3c, 0x5f, 0x5e, 0xc7, 0xb4, 0x9d, 0x09, 0x51, 0x23, 0x9f, 0x6c,
-  0x22, 0x18, 0x1e, 0x95, 0x9c, 0xed, 0x1f, 0x7f, 0x6e, 0x77, 0x7a, 0x89,
-  0x3e, 0xe9, 0xdf, 0x91, 0xbe, 0x15, 0xd3, 0x6a, 0x53, 0x6f, 0xdb, 0x4c,
-  0x65, 0x3f, 0xee, 0x0e, 0x77, 0x77, 0x76, 0x7e, 0x1e, 0x55, 0x1f, 0xab,
-  0x4f, 0x7e, 0x65, 0x67, 0xc7, 0xbf, 0xc4, 0x4f, 0x6f, 0xf2, 0xac, 0xa3,
-  0x39, 0x11, 0x0e, 0x0f, 0xe1, 0x6f, 0x49, 0x91, 0x97, 0x5b, 0x9d, 0x8d,
-  0xcd, 0x93, 0x8a, 0x8e, 0x5d, 0xd0, 0x52, 0x3c, 0xfc, 0x5b, 0xbd, 0xeb,
-  0x77, 0x49, 0x09, 0xca, 0xf1, 0x33, 0x8e, 0xe2, 0x82, 0xa8, 0x37, 0xaf,
-  0x3c, 0x93, 0x1a, 0xd0, 0xd1, 0xac, 0xdc, 0xfa, 0xd0, 0xc9, 0xa3, 0xa7,
-  0x89, 0xbd, 0xc5, 0x73, 0xe6, 0x6c, 0x65, 0x94, 0x25, 0x1f, 0xdd, 0x59,
-  0x27, 0x1e, 0x90, 0xc4, 0xd3, 0xeb, 0x28, 0xa7, 0x23, 0x50, 0x74, 0x6c,
-  0x44, 0x9c, 0xdd, 0x8f, 0xf2, 0xe2, 0x6a, 0x3b, 0x2e, 0xa6, 0xd7, 0xe9,
-  0x2d, 0x2d, 0xc6, 0x8b, 0x17, 0xcf, 0x87, 0xf4, 0xcf, 0x8b, 0x9f, 0xb7,
-  0x6f, 0xf3, 0x39, 0xad, 0xcd, 0xd3, 0x9f, 0xb7, 0x79, 0x93, 0xff, 0x23,
-  0x1e, 0x4c, 0x06, 0xd3, 0xbf, 0x8f, 0xae, 0xab, 0xc5, 0x7c, 0x2d, 0xe9,
-  0x50, 0x63, 0x51, 0xbc, 0xc8, 0x57, 0x59, 0xe5, 0xc8, 0x85, 0xa8, 0xae,
-  0x0a, 0xd8, 0x13, 0x1d, 0x58, 0x3a, 0xa5, 0x4c, 0xdc, 0x4c, 0x45, 0x7c,
-  0xee, 0xe8, 0x88, 0xfa, 0x03, 0x59, 0x4d, 0xaf, 0x69, 0xee, 0x44, 0x3e,
-  0xb1, 0xce, 0xbf, 0x4a, 0x63, 0x3e, 0x9a, 0xc4, 0x21, 0x98, 0x63, 0xa1,
-  0x29, 0xe9, 0x2c, 0xa5, 0xe7, 0xf2, 0x62, 0x96, 0x14, 0x75, 0x42, 0xc6,
-  0x70, 0xfc, 0x78, 0x22, 0x5a, 0xcb, 0x25, 0x75, 0xbe, 0x62, 0x66, 0x87,
-  0xb3, 0xc6, 0x2d, 0xd0, 0x29, 0xbd, 0xa2, 0x65, 0xa2, 0xa5, 0x61, 0xd2,
-  0xe2, 0x95, 0xbb, 0x8f, 0xde, 0xd1, 0xfe, 0x09, 0x87, 0x08, 0x28, 0x50,
-  0x76, 0xab, 0x63, 0xd5, 0xee, 0xee, 0xee, 0xd6, 0x93, 0xd2, 0xfe, 0x6e,
-  0x8b, 0x9a, 0x82, 0xd7, 0xba, 0x28, 0x60, 0x7f, 0xaf, 0xfe, 0xc2, 0xf7,
-  0xc4, 0x44, 0x3d, 0x39, 0xd3, 0x40, 0xfe, 0xe3, 0xef, 0x01, 0x3d, 0xdc,
-  0xf1, 0xb7, 0x69, 0x76, 0x9b, 0xdf, 0xd0, 0x1a, 0xe0, 0x96, 0x8b, 0x6b,
-  0xeb, 0x1b, 0x31, 0x9f, 0x58, 0x2c, 0x2b, 0x77, 0x7d, 0x30, 0xa1, 0xd0,
-  0x47, 0x93, 0x78, 0x32, 0xbf, 0x8f, 0xae, 0xe3, 0xdb, 0x84, 0xa7, 0xbe,
-  0x24, 0x0a, 0xe2, 0xc5, 0x20, 0xb6, 0x3e, 0x07, 0x9f, 0xd1, 0x83, 0x3b,
-  0xcb, 0x57, 0x13, 0x3a, 0xfc, 0x7f, 0x5d, 0xe5, 0x95, 0xac, 0x51, 0x7c,
-  0x9b, 0xa7, 0xb3, 0xda, 0x5d, 0x79, 0x9d, 0x30, 0xc3, 0xe1, 0x8e, 0x71,
-  0x89, 0x10, 0xc3, 0xe3, 0x91, 0xe2, 0x08, 0xa4, 0x15, 0x5f, 0x47, 0xc4,
-  0xaa, 0x68, 0x59, 0xf2, 0x28, 0xba, 0xca, 0x99, 0x7e, 0xc1, 0x20, 0x41,
-  0x80, 0xb4, 0x3f, 0xd7, 0x31, 0xdf, 0x3a, 0xb4, 0x02, 0x8e, 0x42, 0x8b,
-  0x04, 0xbc, 0x12, 0x9b, 0x16, 0xcf, 0x07, 0x72, 0xbb, 0xf0, 0x3b, 0xc9,
-  0xc7, 0x78, 0xc1, 0x8c, 0xa8, 0xff, 0xaf, 0xfd, 0x41, 0xd4, 0xff, 0xb7,
-  0x3e, 0xf8, 0x7c, 0xff, 0x0f, 0x7d, 0xbf, 0xe5, 0x24, 0x2e, 0xdd, 0xa6,
-  0x33, 0xbe, 0x28, 0x68, 0x26, 0xc7, 0x67, 0xb7, 0xcf, 0xa3, 0xbf, 0xf1,
-  0xdd, 0x4e, 0xbc, 0x30, 0xf9, 0x68, 0xf4, 0x62, 0x73, 0xa3, 0xb7, 0x23,
-  0x62, 0x8a, 0xf1, 0x92, 0x2f, 0xf9, 0xa4, 0x98, 0x12, 0x71, 0xc5, 0x57,
-  0x44, 0x4e, 0x74, 0x57, 0x5a, 0x73, 0xdc, 0x3e, 0xbf, 0x22, 0xd3, 0x22,
-  0x06, 0x16, 0x65, 0xf1, 0x82, 0xe8, 0xf5, 0x84, 0x47, 0x94, 0x66, 0xed,
-  0x0d, 0xfd, 0xf1, 0x32, 0xf9, 0x7c, 0x67, 0x7f, 0xff, 0xc9, 0xef, 0xf7,
-  0x9e, 0x25, 0xd5, 0xf5, 0xce, 0xcf, 0xdb, 0xee, 0x91, 0xe3, 0x4b, 0x2c,
-  0xbb, 0x51, 0xa2, 0x0d, 0x82, 0x6e, 0x61, 0xc7, 0xc5, 0xe9, 0x7d, 0xfa,
-  0x3d, 0xb9, 0x4c, 0x3f, 0x0e, 0x4c, 0x9e, 0x91, 0x13, 0x11, 0x13, 0x85,
-  0xd0, 0xfe, 0xf1, 0xe1, 0xb5, 0xe6, 0xae, 0x56, 0x49, 0x49, 0x2b, 0x79,
-  0x77, 0x1d, 0x57, 0x91, 0x6b, 0x40, 0x76, 0x76, 0x91, 0x5e, 0x5d, 0x57,
-  0xd1, 0x5d, 0xcc, 0x97, 0xc1, 0x71, 0x25, 0x4d, 0xf0, 0x2d, 0x4c, 0x57,
-  0xc0, 0x65, 0x4c, 0xbc, 0x9c, 0xf7, 0x10, 0x57, 0xee, 0xc4, 0x4b, 0x00,
-  0x15, 0x51, 0xbc, 0x6c, 0x88, 0x17, 0x77, 0x26, 0x71, 0xc9, 0x67, 0x2a,
-  0xa3, 0xa3, 0x5b, 0xd1, 0x1d, 0xbe, 0xe2, 0xbf, 0xae, 0xe9, 0x96, 0xc6,
-  0x1a, 0xe8, 0x40, 0x71, 0x91, 0xbd, 0xe1, 0xed, 0xe4, 0xbd, 0x71, 0x97,
-  0x0b, 0x6d, 0xd2, 0x40, 0xb7, 0xd9, 0xbd, 0x51, 0xd2, 0xd9, 0x23, 0xbe,
-  0xe1, 0x28, 0xa3, 0xc7, 0xec, 0xaf, 0x27, 0xf3, 0xc4, 0x18, 0xe3, 0x92,
-  0x2f, 0x72, 0xb9, 0xae, 0x69, 0xf0, 0xc1, 0x64, 0x69, 0xd1, 0xe2, 0x1b,
-  0x16, 0x19, 0x1a, 0x82, 0x09, 0x5e, 0x9b, 0xe5, 0x44, 0x64, 0x34, 0x5a,
-  0x62, 0x93, 0x3c, 0x33, 0x66, 0x7e, 0x58, 0x15, 0x10, 0x39, 0xb5, 0xc9,
-  0x1f, 0xa6, 0x15, 0xdf, 0x01, 0x90, 0x32, 0x69, 0xbc, 0xb4, 0x28, 0x10,
-  0x14, 0x89, 0x85, 0x06, 0xf3, 0xc7, 0xf5, 0x45, 0xcf, 0x46, 0xb7, 0x24,
-  0x45, 0x90, 0xc0, 0x98, 0xb8, 0xb7, 0x70, 0xdf, 0x4e, 0x59, 0x76, 0x99,
-  0xd3, 0x79, 0x99, 0xe6, 0x45, 0xc1, 0x12, 0x39, 0xef, 0xe0, 0x44, 0x58,
-  0xdc, 0x22, 0xa1, 0x6b, 0x3e, 0x5c, 0xce, 0x94, 0x2f, 0x1c, 0x62, 0x35,
-  0x24, 0x37, 0x80, 0x99, 0xd0, 0xfd, 0x0e, 0x6e, 0x8c, 0x89, 0x63, 0x74,
-  0xdc, 0xf6, 0x74, 0x9a, 0x2c, 0xab, 0xb2, 0x6b, 0x4e, 0xb6, 0xe1, 0x34,
-  0x9c, 0x22, 0xe1, 0x95, 0x0f, 0x85, 0x22, 0xac, 0xab, 0xbb, 0x94, 0x21,
-  0x17, 0x99, 0x9c, 0x41, 0x72, 0x52, 0xe9, 0x56, 0xad, 0x02, 0x6d, 0x10,
-  0x47, 0xc3, 0x9a, 0x2f, 0x78, 0xa0, 0xfc, 0x70, 0x29, 0x27, 0x15, 0x9c,
-  0x93, 0x37, 0x52, 0x24, 0x61, 0xe9, 0x97, 0x2f, 0x15, 0x5a, 0x4f, 0xd7,
-  0x38, 0xf5, 0xea, 0xf6, 0x94, 0xbb, 0x2f, 0x49, 0x87, 0xa0, 0x9b, 0x76,
-  0x56, 0x5e, 0x93, 0x70, 0x54, 0xea, 0xc9, 0x4e, 0x17, 0x44, 0x33, 0xb7,
-  0xbc, 0xbf, 0xcb, 0x24, 0x99, 0x8d, 0xa2, 0xd3, 0x4b, 0x66, 0xb0, 0x05,
-  0x0d, 0xba, 0xc2, 0xd7, 0xcc, 0xf3, 0x69, 0xdd, 0x66, 0x10, 0xb2, 0xdd,
-  0xd1, 0x92, 0xa1, 0x04, 0xcc, 0x9b, 0x29, 0x8d, 0x16, 0x3b, 0x62, 0x2e,
-  0x37, 0xaf, 0x5f, 0x10, 0x38, 0x87, 0xc4, 0xc8, 0x79, 0x78, 0x93, 0x24,
-  0x02, 0x25, 0x4e, 0x92, 0xea, 0x2e, 0x49, 0x5c, 0x73, 0x65, 0x42, 0x97,
-  0x12, 0x6f, 0x9a, 0x48, 0x66, 0x60, 0x86, 0xbc, 0xb4, 0x67, 0xe7, 0xa7,
-  0x5f, 0x9f, 0x1f, 0x8d, 0xc7, 0xd1, 0xdb, 0xa3, 0x8b, 0xa3, 0xf3, 0xda,
-  0x4a, 0x67, 0x79, 0xb1, 0xc0, 0x8e, 0xce, 0xd2, 0x72, 0x39, 0x8f, 0xef,
-  0x79, 0xab, 0x69, 0x26, 0x57, 0x05, 0x9f, 0xac, 0x45, 0xc2, 0x17, 0xc4,
-  0x6c, 0x05, 0x4e, 0x16, 0xe5, 0xc4, 0x1f, 0x62, 0x95, 0x48, 0x99, 0x99,
-  0x40, 0x8c, 0xcd, 0xae, 0xfc, 0x4a, 0x13, 0xc7, 0xd1, 0x7b, 0x8e, 0x2f,
-  0x3a, 0xb7, 0x1f, 0x2c, 0x1a, 0x42, 0xf9, 0x18, 0xf8, 0xcf, 0x64, 0x99,
-  0x4a, 0xcc, 0x89, 0x68, 0x36, 0x5d, 0x80, 0xd9, 0xd1, 0x4f, 0x2f, 0x0d,
-  0x26, 0x97, 0x24, 0x0a, 0xd3, 0xdd, 0xd7, 0x20, 0x0d, 0x37, 0x4e, 0xac,
-  0x2b, 0x74, 0x1a, 0x56, 0x72, 0xa8, 0x73, 0x1a, 0xeb, 0x22, 0xcd, 0x88,
-  0xc0, 0x88, 0x20, 0xf5, 0x94, 0x33, 0x25, 0xd0, 0x58, 0x2f, 0x85, 0x27,
-  0xe8, 0x8a, 0xd4, 0x95, 0x25, 0x7a, 0x99, 0x36, 0x9b, 0xb8, 0xa0, 0x9b,
-  0x1e, 0x06, 0x45, 0xa4, 0xc9, 0xfc, 0x7a, 0xc2, 0xac, 0x89, 0x35, 0x06,
-  0x12, 0xed, 0x92, 0xce, 0xde, 0xdc, 0x7d, 0x42, 0x6f, 0xd0, 0xd8, 0xe8,
-  0x36, 0xe1, 0x0b, 0xe2, 0x3a, 0x69, 0xae, 0x22, 0x1d, 0x22, 0xf0, 0x96,
-  0xbb, 0xb4, 0xc4, 0xa1, 0xba, 0xcb, 0x57, 0x73, 0x92, 0xcf, 0xf9, 0x81,
-  0xd5, 0x12, 0x2f, 0x50, 0x57, 0x4b, 0x7f, 0x7a, 0x16, 0xe9, 0x47, 0x5e,
-  0xf5, 0x66, 0x2b, 0x34, 0x34, 0xfa, 0x73, 0x49, 0x9b, 0x20, 0xc3, 0x19,
-  0x35, 0x79, 0x2b, 0xb8, 0x46, 0x6b, 0x0f, 0xf9, 0xb4, 0x80, 0xdd, 0x9d,
-  0x9d, 0x8e, 0x2f, 0xf8, 0xee, 0x3c, 0x7b, 0x7f, 0x41, 0x0d, 0xd1, 0xe5,
-  0x59, 0x56, 0xb4, 0x9d, 0xfc, 0x62, 0x96, 0x40, 0x39, 0xb2, 0xe6, 0x68,
-  0xd7, 0x52, 0x1c, 0x71, 0xc8, 0x06, 0xd6, 0xa5, 0x8c, 0x51, 0xb4, 0x47,
-  0x26, 0x5e, 0xd3, 0x1d, 0xe5, 0xf6, 0xf3, 0x2f, 0x45, 0x9b, 0x5f, 0x6c,
-  0xd1, 0x76, 0x0f, 0x5d, 0x73, 0x3f, 0xf2, 0xd3, 0xb8, 0xb5, 0xcb, 0x74,
-  0x91, 0xce, 0xe3, 0x40, 0x42, 0x51, 0x4e, 0xc4, 0x74, 0xed, 0xce, 0xe3,
-  0x94, 0xd8, 0x2e, 0x06, 0xed, 0x55, 0x24, 0x5e, 0x41, 0x9c, 0x66, 0xbf,
-  0x51, 0x33, 0xbe, 0x48, 0x21, 0x03, 0x2e, 0x53, 0xb7, 0x70, 0xbc, 0x63,
-  0x7c, 0xcc, 0x6b, 0xcb, 0xd4, 0xdc, 0xb5, 0xd6, 0xb2, 0x31, 0x27, 0x87,
-  0x0e, 0xee, 0x16, 0xae, 0x37, 0x89, 0x8b, 0x9e, 0xe3, 0x60, 0xa2, 0x18,
-  0x53, 0xa3, 0x57, 0x2b, 0x1a, 0xbc, 0xac, 0xea, 0x20, 0x1a, 0xfe, 0x8e,
-  0x47, 0xce, 0xfa, 0x91, 0x3b, 0xd1, 0x24, 0x77, 0x67, 0xb3, 0xd1, 0xc6,
-  0x29, 0xf4, 0x72, 0xa7, 0xc4, 0x9f, 0x8a, 0xfa, 0x1e, 0x09, 0xfb, 0x17,
-  0x7d, 0x20, 0x12, 0x8d, 0x9b, 0xa4, 0xaf, 0x3b, 0xa2, 0xc1, 0x98, 0x96,
-  0x90, 0x98, 0xc9, 0x5b, 0x1e, 0xba, 0x76, 0xa6, 0x3a, 0x3f, 0xf6, 0x89,
-  0x96, 0x95, 0x66, 0xe5, 0xae, 0xe4, 0xd9, 0x2c, 0xe5, 0xef, 0x88, 0xd8,
-  0x89, 0x51, 0xaf, 0x12, 0x08, 0xb7, 0x3a, 0xc7, 0x85, 0x9f, 0x1b, 0x6b,
-  0x4b, 0xe5, 0x35, 0x09, 0xc7, 0x51, 0x4f, 0x18, 0xca, 0x90, 0xbb, 0xe9,
-  0xf1, 0xc2, 0x2e, 0x1a, 0x9d, 0xd0, 0x5c, 0x66, 0x7a, 0x59, 0xa9, 0x80,
-  0x41, 0xdb, 0xb7, 0x88, 0xef, 0x43, 0x49, 0x14, 0x2c, 0x07, 0x23, 0xcf,
-  0x0b, 0x77, 0x6f, 0xd3, 0xcd, 0xb0, 0x64, 0x99, 0x40, 0x59, 0x11, 0x78,
-  0x3a, 0xce, 0x4f, 0x29, 0x43, 0x1b, 0x90, 0xd0, 0xc3, 0x4f, 0x5e, 0x5d,
-  0xdb, 0xa3, 0xc1, 0xfd, 0x10, 0xd3, 0xdc, 0x98, 0xc7, 0xb1, 0xda, 0x36,
-  0x33, 0xf6, 0x95, 0x17, 0xa2, 0xbc, 0xcf, 0x73, 0xe6, 0x3a, 0x3d, 0x11,
-  0xbd, 0x74, 0xe4, 0x18, 0x3a, 0x13, 0xd6, 0x10, 0xbb, 0xca, 0x7f, 0x5a,
-  0x73, 0x6e, 0xd8, 0xba, 0x5c, 0xe5, 0xa3, 0x43, 0xf3, 0x0b, 0x35, 0xc6,
-  0x22, 0xd1, 0x0d, 0x50, 0x32, 0x59, 0xd9, 0xba, 0x83, 0xda, 0x88, 0x63,
-  0xf7, 0x2b, 0x39, 0x1c, 0x10, 0xe4, 0x1b, 0x2b, 0x5f, 0x42, 0xb6, 0x56,
-  0x7e, 0xec, 0x66, 0x46, 0x33, 0x9a, 0xa5, 0xc4, 0xd2, 0x88, 0xaf, 0xda,
-  0xce, 0x78, 0x7d, 0xa3, 0x43, 0x96, 0xbb, 0x6f, 0x09, 0xe9, 0xac, 0x3a,
-  0x87, 0x9c, 0xd5, 0xc6, 0x34, 0x3c, 0xa5, 0x9d, 0x3a, 0xc1, 0x3c, 0x86,
-  0xb7, 0x11, 0x9f, 0x06, 0x92, 0x7e, 0xf9, 0x68, 0x0c, 0x4f, 0x4f, 0x6e,
-  0x03, 0xaa, 0x66, 0x05, 0x31, 0xe3, 0xeb, 0x76, 0x00, 0x25, 0x7c, 0x92,
-  0xe7, 0xa4, 0x87, 0xf9, 0xa9, 0xb1, 0xf2, 0x94, 0x64, 0xcc, 0xac, 0x74,
-  0x47, 0x87, 0x43, 0xf9, 0x0a, 0x2d, 0xdf, 0x93, 0x02, 0x10, 0x5f, 0xc5,
-  0xa9, 0xa3, 0x37, 0x65, 0x6c, 0xee, 0xd9, 0x2c, 0xd7, 0xc7, 0x79, 0xa7,
-  0xf8, 0x22, 0x57, 0x1e, 0xb2, 0xc2, 0x7d, 0x97, 0xf0, 0xbc, 0x88, 0x09,
-  0xe0, 0x24, 0x6b, 0xb3, 0x90, 0x7e, 0xac, 0xb9, 0x09, 0xe4, 0x3d, 0x16,
-  0x9d, 0xc0, 0x09, 0x21, 0x08, 0x51, 0x93, 0xbd, 0x51, 0xf4, 0x4d, 0x7e,
-  0x97, 0xc0, 0x24, 0x05, 0x31, 0x35, 0x65, 0xa3, 0x0a, 0x49, 0x34, 0x77,
-  0x49, 0xb4, 0x20, 0x09, 0x8a, 0x56, 0x13, 0x97, 0x28, 0x3e, 0xa3, 0x71,
-  0x7a, 0xd1, 0x3b, 0xbf, 0x43, 0xb7, 0x6e, 0x12, 0x6e, 0x27, 0x2f, 0xe5,
-  0x44, 0x44, 0x9b, 0xb8, 0xa4, 0xa7, 0xbc, 0x58, 0xcb, 0xca, 0xcf, 0xc2,
-  0xad, 0x07, 0xb1, 0xcd, 0x32, 0x38, 0x5c, 0x7c, 0x63, 0xd1, 0x08, 0xa2,
-  0xcf, 0x46, 0xbb, 0x2f, 0x46, 0x3b, 0x23, 0x16, 0xa9, 0x93, 0xdb, 0x34,
-  0x5f, 0x95, 0xd4, 0x3b, 0x86, 0x12, 0x05, 0x6f, 0x26, 0x05, 0x8b, 0xda,
-  0xf9, 0xd5, 0xd5, 0x5c, 0x2e, 0xf0, 0xed, 0xfc, 0xf2, 0x32, 0xb8, 0xe3,
-  0x8b, 0x64, 0x29, 0xa2, 0x3c, 0x2f, 0x8e, 0x1e, 0x3a, 0xe1, 0x71, 0xe1,
-  0xe5, 0xae, 0xcb, 0xe9, 0xf5, 0xe3, 0xe1, 0xef, 0x68, 0xa3, 0x87, 0xc6,
-  0x8d, 0x86, 0xc4, 0x8c, 0x1a, 0x26, 0xc7, 0xb7, 0x6c, 0x9a, 0x09, 0xaf,
-  0x44, 0xcf, 0xba, 0x44, 0x60, 0x4b, 0x41, 0x5a, 0xee, 0x43, 0x6a, 0x21,
-  0x72, 0xec, 0x2c, 0x30, 0xf8, 0x04, 0x44, 0x46, 0xcc, 0x29, 0x9b, 0xc5,
-  0x05, 0x69, 0xd2, 0x6c, 0x37, 0xa2, 0x87, 0xf9, 0xb4, 0xc5, 0x42, 0xee,
-  0x03, 0xe1, 0x79, 0x9e, 0xc4, 0x86, 0xfb, 0x3c, 0xc0, 0x50, 0xab, 0x36,
-  0xae, 0x43, 0x57, 0x41, 0x29, 0x23, 0x53, 0x51, 0x34, 0xf6, 0x92, 0x89,
-  0x67, 0xde, 0xa6, 0x77, 0x5e, 0xe6, 0xf3, 0x79, 0x7e, 0xc7, 0x97, 0x08,
-  0x0b, 0x93, 0xc1, 0xb6, 0xda, 0x76, 0x94, 0x65, 0x3e, 0x4d, 0xc5, 0x70,
-  0xa4, 0x8b, 0x0e, 0x5d, 0x19, 0x56, 0x4e, 0x7e, 0xb5, 0xd4, 0xdb, 0x9d,
-  0xc5, 0xd6, 0x92, 0x38, 0x49, 0xe4, 0xf4, 0x7e, 0x98, 0x8a, 0x1a, 0xcd,
-  0xf9, 0x4b, 0x4f, 0x8e, 0xa4, 0xb2, 0x62, 0x1a, 0x49, 0xca, 0xfa, 0xd8,
-  0x9d, 0xe9, 0xed, 0xe9, 0xd4, 0xb3, 0xc6, 0xe0, 0xa8, 0x0e, 0x1a, 0xcd,
-  0x95, 0x2b, 0x6a, 0x83, 0xd6, 0x7b, 0x96, 0xb2, 0x7d, 0x90, 0xb4, 0x27,
-  0x31, 0xf9, 0x89, 0xac, 0x4f, 0xaf, 0x4d, 0x57, 0x65, 0x45, 0x82, 0xa6,
-  0xf5, 0x2a, 0x4d, 0x51, 0xbf, 0x44, 0x92, 0x07, 0x4c, 0x67, 0x8d, 0xe6,
-  0x88, 0xe8, 0x3e, 0x1b, 0x3d, 0x79, 0x3e, 0xda, 0x09, 0x08, 0x61, 0x87,
-  0xd7, 0x99, 0x55, 0xab, 0xdd, 0xd1, 0x4e, 0xe3, 0xf1, 0x4d, 0xbe, 0xd3,
-  0xb7, 0x6c, 0xc9, 0x6b, 0x6b, 0x8e, 0xdb, 0xde, 0xce, 0x01, 0xbd, 0x19,
-  0xde, 0x64, 0x72, 0x67, 0xa7, 0xde, 0x3c, 0xe5, 0x7a, 0xa7, 0x1d, 0xce,
-  0x20, 0x0e, 0xca, 0x7d, 0x48, 0xf7, 0xf9, 0xbe, 0xb4, 0xb4, 0x3b, 0xda,
-  0x0d, 0xb6, 0x5e, 0x87, 0xb3, 0xdb, 0x3d, 0x9c, 0x36, 0x01, 0x34, 0x06,
-  0xb3, 0x6b, 0x42, 0xb3, 0x48, 0x4a, 0xae, 0xdf, 0x46, 0x73, 0xa6, 0xaa,
-  0xe9, 0x8b, 0xb6, 0x64, 0xba, 0x48, 0x4f, 0x6a, 0x8b, 0x84, 0x11, 0xed,
-  0x7d, 0xc2, 0xf2, 0x80, 0x4c, 0x52, 0xd2, 0xb2, 0xb8, 0x5f, 0xda, 0x10,
-  0xbf, 0x35, 0xb2, 0x2a, 0x18, 0xea, 0x9e, 0x0c, 0xb0, 0x83, 0x74, 0x70,
-  0xb1, 0xe0, 0x62, 0xe0, 0x91, 0xaf, 0xe8, 0xde, 0x2a, 0xe6, 0xd0, 0x9a,
-  0xcc, 0xf0, 0x49, 0x8c, 0x84, 0xf8, 0x5b, 0x3a, 0xaf, 0x94, 0x20, 0xc5,
-  0x3a, 0xc5, 0x7d, 0x8d, 0x9a, 0xa3, 0x7b, 0x60, 0x36, 0xc4, 0x0d, 0xb3,
-  0x65, 0xd6, 0x78, 0xe1, 0xb5, 0x70, 0x61, 0x15, 0xb5, 0xdf, 0x9d, 0xbd,
-  0xa3, 0x99, 0x9d, 0x8c, 0xf9, 0xe6, 0x23, 0xd5, 0x54, 0x56, 0x08, 0x9f,
-  0xd2, 0xb2, 0x1a, 0x6f, 0xf7, 0xa2, 0x30, 0x49, 0xc1, 0x8d, 0xe6, 0xda,
-  0x23, 0x36, 0x83, 0x00, 0x1b, 0xa0, 0xe9, 0xdb, 0x22, 0x26, 0xad, 0x0d,
-  0x73, 0xd5, 0x59, 0x94, 0xdc, 0xfc, 0x48, 0x7a, 0x6e, 0xad, 0x0e, 0xa4,
-  0x03, 0x28, 0x83, 0xae, 0xe5, 0xfa, 0xbb, 0xb2, 0xb2, 0xbc, 0x2a, 0x59,
-  0x72, 0x95, 0x57, 0x7c, 0xa4, 0xed, 0x33, 0x7a, 0x66, 0xd8, 0x68, 0x0e,
-  0xab, 0x86, 0x01, 0x81, 0x33, 0x89, 0x7e, 0xa6, 0xaa, 0x08, 0xef, 0x35,
-  0x69, 0x5a, 0xc4, 0xd5, 0xc0, 0x0d, 0x36, 0x1e, 0x5a, 0xd8, 0xe7, 0xad,
-  0x85, 0x8d, 0xe7, 0x6b, 0x57, 0x96, 0xbb, 0x3a, 0x38, 0xa1, 0xe9, 0xf1,
-  0xba, 0x06, 0xcb, 0x8a, 0xcf, 0x82, 0x65, 0x85, 0xb9, 0xd7, 0x16, 0x76,
-  0xfd, 0xca, 0x62, 0x69, 0x3f, 0x79, 0x6d, 0xb9, 0x13, 0xe9, 0xaa, 0x79,
-  0x2c, 0x4b, 0xd5, 0xf6, 0x3e, 0x65, 0x6d, 0x83, 0xc5, 0x95, 0x4f, 0xa3,
-  0xbd, 0x16, 0xcb, 0x5a, 0xfe, 0x36, 0x8b, 0xbb, 0xcb, 0x8c, 0xaa, 0x9a,
-  0x97, 0xb7, 0x2d, 0xbe, 0x40, 0x93, 0xde, 0x62, 0x0b, 0x09, 0x1b, 0xea,
-  0x42, 0xbe, 0xc0, 0xcb, 0xec, 0xd9, 0xc2, 0x47, 0x31, 0xe2, 0xd9, 0x04,
-  0x9c, 0x91, 0x24, 0x6e, 0x9d, 0xc3, 0x45, 0x5e, 0xc9, 0xcb, 0x32, 0xf4,
-  0x91, 0x37, 0xba, 0x72, 0xab, 0xfe, 0x6e, 0xd6, 0xe1, 0x8c, 0x76, 0x06,
-  0xfe, 0xf7, 0xdd, 0x26, 0x0b, 0xe7, 0x3b, 0xd8, 0x7d, 0x8b, 0x35, 0x24,
-  0x39, 0xa1, 0x2a, 0x72, 0x18, 0x8c, 0x6a, 0x43, 0xc4, 0xad, 0x48, 0x9c,
-  0x71, 0x4a, 0x3a, 0x1c, 0xf1, 0xc8, 0xcd, 0xb4, 0xe6, 0x2d, 0x33, 0x59,
-  0x92, 0x36, 0x78, 0x12, 0x4f, 0x6f, 0xf8, 0x26, 0x4a, 0xd5, 0x0e, 0x6d,
-  0xdb, 0x24, 0xb7, 0x05, 0xe9, 0xb6, 0xb7, 0x09, 0x7b, 0x94, 0xac, 0xa3,
-  0xad, 0x80, 0xb5, 0xee, 0xf1, 0x22, 0x96, 0xe5, 0xfc, 0x76, 0xef, 0x53,
-  0x17, 0x91, 0x3b, 0xb4, 0x11, 0xee, 0xb5, 0x97, 0x50, 0x2f, 0xb8, 0x35,
-  0x8b, 0x88, 0xb7, 0xfd, 0x32, 0x8e, 0x73, 0xba, 0xe5, 0xd3, 0x85, 0xf5,
-  0x90, 0x86, 0x9c, 0x81, 0xa5, 0x7d, 0x7a, 0xfa, 0x76, 0xed, 0x71, 0x1d,
-  0xe9, 0xd7, 0x29, 0x3b, 0x8f, 0x66, 0x09, 0xcc, 0x44, 0x74, 0x80, 0x66,
-  0x70, 0x0e, 0xd1, 0xf5, 0x93, 0x50, 0x9b, 0x81, 0xd0, 0x3d, 0x7c, 0x62,
-  0x53, 0x7d, 0xf2, 0x6b, 0xa6, 0xfa, 0xe4, 0x9f, 0x30, 0xd5, 0x27, 0x6b,
-  0xa7, 0xea, 0x67, 0xf1, 0x94, 0x67, 0x91, 0x2e, 0x6f, 0x9f, 0x36, 0xc5,
-  0x20, 0xbe, 0xe1, 0x54, 0x1e, 0xad, 0x6a, 0x37, 0x22, 0x5d, 0x21, 0xf9,
-  0xfc, 0x36, 0x51, 0x21, 0x81, 0x3e, 0x38, 0x3e, 0xbb, 0x7d, 0xca, 0x62,
-  0x27, 0xcb, 0x69, 0x6c, 0x0f, 0x62, 0x29, 0xb7, 0x8b, 0x4a, 0x59, 0xd5,
-  0x0d, 0xd5, 0x06, 0x36, 0x58, 0xb2, 0x7d, 0x37, 0x18, 0xcd, 0x73, 0x1d,
-  0xcd, 0xf3, 0xae, 0xd1, 0x7c, 0xfa, 0x70, 0x9e, 0x07, 0xc3, 0xf9, 0x85,
-  0xa3, 0x79, 0x1a, 0x8c, 0x26, 0xe6, 0xd1, 0xc4, 0x4b, 0x76, 0xcb, 0x35,
-  0xb7, 0x98, 0x14, 0xfb, 0x6d, 0xf6, 0xec, 0x6e, 0x99, 0x5d, 0x5f, 0x5d,
-  0x1c, 0x99, 0xf3, 0x88, 0x42, 0xfe, 0x67, 0x07, 0xa4, 0x0e, 0x55, 0xda,
-  0x51, 0x2d, 0xb7, 0x29, 0xbd, 0xc6, 0x05, 0x7b, 0x2d, 0xd4, 0x41, 0x1a,
-  0x48, 0xb9, 0xf4, 0x3f, 0xda, 0x6e, 0xe7, 0x99, 0x63, 0x4b, 0x3c, 0xab,
-  0xfc, 0xaa, 0xcc, 0x83, 0x2e, 0xf8, 0x9d, 0xa6, 0xe4, 0x91, 0x27, 0x25,
-  0xab, 0x7d, 0xc9, 0xc7, 0x94, 0x1d, 0xb2, 0xa9, 0x1a, 0x90, 0x49, 0xcd,
-  0x8b, 0xa6, 0x62, 0x98, 0x1f, 0xb1, 0x53, 0x0a, 0x54, 0x25, 0x16, 0x46,
-  0x0c, 0x36, 0xba, 0x9c, 0xc7, 0x57, 0x1d, 0x57, 0x63, 0x7a, 0x95, 0xe5,
-  0xea, 0x20, 0x2d, 0x89, 0xea, 0xe0, 0xd1, 0x56, 0x42, 0x2c, 0x89, 0x8b,
-  0x64, 0xd3, 0xf9, 0x0a, 0x2e, 0xb2, 0x53, 0x9a, 0xe0, 0x78, 0xfc, 0x4d,
-  0xc8, 0x0e, 0x0e, 0x78, 0x05, 0x59, 0xa4, 0x1c, 0xc6, 0x57, 0x2c, 0x5d,
-  0xbe, 0x94, 0x1f, 0x65, 0xc5, 0xbc, 0xfa, 0x8b, 0x6e, 0x79, 0x67, 0xac,
-  0x3a, 0x24, 0xec, 0xfc, 0xfc, 0xea, 0x41, 0xf0, 0x0e, 0xaf, 0x5f, 0xe9,
-  0xd7, 0x51, 0xee, 0x08, 0x3d, 0x14, 0x4d, 0x4e, 0xc6, 0x63, 0x25, 0x5e,
-  0x36, 0x63, 0xad, 0x07, 0x96, 0xcb, 0xe8, 0xf0, 0xeb, 0x63, 0x9e, 0x66,
-  0x9c, 0xce, 0xc5, 0xac, 0xa6, 0xd3, 0x4e, 0x93, 0x39, 0x6b, 0x4c, 0x58,
-  0x33, 0x38, 0x3e, 0xa3, 0xd0, 0x4c, 0xaf, 0xff, 0xf5, 0xde, 0xe6, 0x7f,
-  0xa3, 0x55, 0x8c, 0xb7, 0x9f, 0x8e, 0x76, 0x7a, 0x2c, 0xc2, 0xd3, 0x65,
-  0x95, 0x64, 0xd3, 0x9c, 0x3d, 0x15, 0x93, 0x79, 0x9c, 0xdd, 0x94, 0xa2,
-  0x74, 0x89, 0x26, 0xc2, 0x63, 0x1d, 0xd0, 0xf1, 0x2b, 0x8a, 0x7c, 0x95,
-  0xcd, 0x3a, 0xb6, 0x5c, 0xa7, 0x83, 0x23, 0xaf, 0xe6, 0x52, 0xb8, 0x67,
-  0x88, 0x64, 0x8a, 0x1b, 0x33, 0xcb, 0xf2, 0x95, 0x00, 0xa7, 0x0b, 0x6f,
-  0x1d, 0xc6, 0xe5, 0xc4, 0xfd, 0x46, 0x73, 0xc3, 0x6f, 0x20, 0x66, 0x13,
-  0xd9, 0xb0, 0x3b, 0x5c, 0xce, 0x49, 0x6e, 0x46, 0xdc, 0xd6, 0x2d, 0x78,
-  0x7c, 0x29, 0x53, 0xd7, 0x07, 0xed, 0x86, 0x36, 0xc5, 0x03, 0x7c, 0x45,
-  0x1c, 0xec, 0xf3, 0xb8, 0xac, 0x60, 0xe8, 0x31, 0x0a, 0xe2, 0x07, 0x43,
-  0x51, 0x3a, 0xce, 0xee, 0x39, 0x40, 0xe0, 0x53, 0x44, 0xe9, 0xcb, 0xf4,
-  0x8a, 0x38, 0xa8, 0x58, 0xb8, 0x10, 0x53, 0x60, 0xa1, 0x04, 0xac, 0x9b,
-  0x5d, 0xe7, 0x20, 0x30, 0x92, 0x69, 0x93, 0xf9, 0x65, 0xd7, 0x79, 0x35,
-  0xe5, 0x1c, 0xfa, 0xab, 0x30, 0x63, 0x0c, 0x2c, 0x38, 0x0a, 0xec, 0x80,
-  0x8e, 0xa6, 0xf3, 0x38, 0x5d, 0x94, 0x35, 0xf1, 0x75, 0xd4, 0xc5, 0x4d,
-  0xd8, 0xfc, 0xca, 0xef, 0x4f, 0xd8, 0xa4, 0x5e, 0x94, 0x6c, 0x2a, 0xe1,
-  0x0d, 0x89, 0x4d, 0xa2, 0x16, 0x83, 0xf5, 0x75, 0x32, 0xbd, 0x01, 0xd9,
-  0x05, 0x66, 0xc4, 0x26, 0x47, 0x95, 0x55, 0xc7, 0x82, 0xad, 0x38, 0x9c,
-  0x80, 0x44, 0x0f, 0x76, 0xca, 0xa5, 0xd9, 0x6c, 0x35, 0xc5, 0xb1, 0x65,
-  0xcb, 0x08, 0x89, 0x63, 0x45, 0xcc, 0xe2, 0x4d, 0x25, 0xe1, 0x1b, 0xa0,
-  0x8b, 0x21, 0x11, 0xc1, 0xb2, 0x73, 0x74, 0x70, 0x6e, 0x88, 0x4c, 0x5a,
-  0x63, 0x07, 0xa5, 0xba, 0x02, 0x60, 0x65, 0x37, 0x4d, 0xaf, 0xbe, 0x9a,
-  0x8d, 0xe6, 0x64, 0x6d, 0x07, 0x74, 0xdd, 0xa4, 0x74, 0x7b, 0x9b, 0x7f,
-  0x79, 0x96, 0x2b, 0x29, 0x0d, 0x49, 0x37, 0x2f, 0xd3, 0xa9, 0x18, 0xa5,
-  0xd2, 0xab, 0x84, 0x19, 0x06, 0x0b, 0x9a, 0xd5, 0x7c, 0x21, 0x41, 0x18,
-  0x4d, 0x42, 0x1b, 0x3a, 0x09, 0xad, 0x45, 0x56, 0x21, 0x47, 0x11, 0x75,
-  0xc4, 0xd1, 0x87, 0x99, 0x48, 0x43, 0x83, 0x59, 0x2a, 0xb6, 0x4b, 0x1a,
-  0x8a, 0xf0, 0xcc, 0x26, 0xdf, 0x81, 0x8f, 0xa3, 0xac, 0x88, 0xb7, 0x0c,
-  0xf8, 0x88, 0x4c, 0x61, 0x78, 0x66, 0xa3, 0x9e, 0x59, 0x14, 0xcd, 0x34,
-  0x3a, 0x61, 0x21, 0x90, 0xbd, 0x4d, 0x77, 0xe9, 0x54, 0x1c, 0x0d, 0x70,
-  0x96, 0x75, 0x98, 0x08, 0xa6, 0xf3, 0x94, 0x1f, 0x5c, 0x90, 0x5a, 0xcb,
-  0x6f, 0x89, 0xd4, 0xcc, 0x77, 0x08, 0x69, 0xf0, 0xc4, 0x14, 0x8f, 0xc5,
-  0xbe, 0x01, 0x73, 0x59, 0x79, 0x0d, 0x13, 0x77, 0x5c, 0xa4, 0xf0, 0x46,
-  0xb5, 0x9a, 0x93, 0x31, 0xf3, 0x24, 0xc3, 0x71, 0x42, 0xad, 0x12, 0x83,
-  0xaf, 0xb7, 0x15, 0xe0, 0xec, 0x30, 0xd7, 0x09, 0x0e, 0xce, 0x84, 0xcf,
-  0xab, 0x44, 0xc6, 0x44, 0x2f, 0xf9, 0xee, 0x7a, 0xc5, 0xb3, 0x59, 0xc3,
-  0x12, 0xcf, 0xe0, 0x03, 0xbb, 0xae, 0x1b, 0x83, 0x03, 0xd6, 0x27, 0x26,
-  0x13, 0x69, 0x0d, 0x0e, 0x43, 0xa6, 0x9e, 0xce, 0xbb, 0x9f, 0x28, 0x8a,
-  0xd9, 0xa1, 0x6b, 0x6b, 0xe9, 0x2d, 0x43, 0xb4, 0x35, 0x49, 0x7a, 0x6b,
-  0xee, 0xe7, 0x40, 0xb2, 0x86, 0xeb, 0xbe, 0x37, 0x4e, 0xaa, 0x66, 0x73,
-  0x87, 0xe8, 0x70, 0xbf, 0x17, 0x44, 0x00, 0x48, 0xab, 0xba, 0x76, 0x93,
-  0xc4, 0xfc, 0xb5, 0x62, 0x89, 0x21, 0x26, 0xca, 0x11, 0x64, 0xbb, 0xaf,
-  0xbe, 0x3b, 0x38, 0x79, 0x7f, 0xb4, 0xfb, 0xa7, 0x26, 0xf9, 0xd0, 0x77,
-  0x7b, 0xf2, 0xdd, 0x5e, 0xaf, 0x8b, 0x67, 0x11, 0x05, 0x45, 0x51, 0xff,
-  0x55, 0x3f, 0x2a, 0xef, 0x17, 0x93, 0x7c, 0xee, 0xf8, 0x96, 0x76, 0xc2,
-  0xa3, 0x18, 0xa8, 0xeb, 0xc3, 0x1c, 0xd0, 0x58, 0x18, 0xbe, 0x22, 0x9b,
-  0x63, 0x87, 0x03, 0x54, 0xe5, 0x32, 0x50, 0x40, 0x3c, 0x0b, 0x17, 0xa3,
-  0xac, 0x70, 0xe5, 0xe9, 0x06, 0x71, 0xcb, 0xa5, 0x10, 0xe4, 0x20, 0x92,
-  0x93, 0xd4, 0x64, 0xe7, 0x32, 0x63, 0xe7, 0xda, 0x32, 0x03, 0xa0, 0x2a,
-  0x22, 0x91, 0xc8, 0xda, 0xf7, 0x44, 0xbe, 0x15, 0x5b, 0x4f, 0xde, 0x97,
-  0xc2, 0x54, 0xd2, 0x52, 0xcf, 0x67, 0x93, 0xe1, 0x31, 0xd3, 0x67, 0x7f,
-  0xe5, 0x6d, 0x5c, 0xa9, 0x43, 0xa6, 0xa7, 0x63, 0x59, 0xc6, 0xc4, 0xd1,
-  0x8b, 0x9e, 0x9e, 0x67, 0x1f, 0xe6, 0xa4, 0xf6, 0x01, 0x3e, 0x60, 0x45,
-  0xdb, 0x2e, 0x43, 0xa7, 0x8e, 0x7b, 0xd4, 0x50, 0x2c, 0x8e, 0xae, 0x33,
-  0x8e, 0xc0, 0x07, 0x8a, 0x46, 0xcd, 0x2e, 0xc1, 0x7b, 0x3d, 0x92, 0xfd,
-  0x22, 0xd1, 0xf3, 0x2b, 0xde, 0xbf, 0x26, 0xe9, 0x53, 0x63, 0x93, 0x34,
-  0x33, 0xda, 0x56, 0x35, 0x6c, 0x78, 0xc2, 0x14, 0x3d, 0xcf, 0x95, 0xa5,
-  0x7b, 0x03, 0xab, 0xfa, 0x37, 0x1d, 0x0d, 0x74, 0xda, 0xee, 0x2c, 0x36,
-  0x2c, 0x8f, 0x64, 0x2b, 0x6c, 0xa0, 0x72, 0xb6, 0x1c, 0x39, 0x2d, 0x89,
-  0xb9, 0x67, 0x42, 0xf9, 0xca, 0x75, 0xa3, 0xbc, 0xe8, 0x68, 0xee, 0x5d,
-  0x52, 0x21, 0x2a, 0x60, 0x5b, 0x2f, 0x6d, 0xdb, 0x48, 0xf4, 0x22, 0x03,
-  0x69, 0x11, 0x98, 0x1b, 0xa9, 0xf7, 0x67, 0x8a, 0xa5, 0x35, 0x3c, 0xaa,
-  0xe6, 0x09, 0xc5, 0x26, 0xc7, 0xb8, 0xf2, 0x97, 0x2b, 0x96, 0xca, 0xde,
-  0xe5, 0xad, 0x45, 0x92, 0x19, 0xb8, 0x88, 0x18, 0x78, 0xe1, 0x48, 0x27,
-  0xb7, 0xf3, 0xcb, 0x7d, 0x8d, 0x58, 0x8c, 0x00, 0xad, 0xf9, 0x28, 0x39,
-  0xbd, 0xe8, 0x9a, 0x7c, 0x77, 0xea, 0x47, 0x31, 0xfc, 0x4b, 0x6c, 0x97,
-  0xfc, 0x6f, 0x78, 0xb5, 0x7f, 0xa5, 0xb2, 0xdb, 0x30, 0x2e, 0xa7, 0x69,
-  0xda, 0x25, 0x00, 0x73, 0x08, 0xe4, 0x56, 0x74, 0x04, 0xab, 0x42, 0x74,
-  0x30, 0x3e, 0x3c, 0x3e, 0x76, 0x1e, 0xd2, 0x91, 0x44, 0x14, 0x20, 0xf6,
-  0x51, 0xc5, 0x2c, 0x38, 0x08, 0x24, 0x84, 0x64, 0xd2, 0x9c, 0x5d, 0xc2,
-  0xb6, 0xda, 0xa9, 0x99, 0x26, 0x84, 0xf6, 0xe8, 0x71, 0x36, 0xa9, 0xe2,
-  0x3a, 0xa1, 0x0b, 0xa3, 0x54, 0x4b, 0xfb, 0x9f, 0xaa, 0xfb, 0x65, 0xf2,
-  0xea, 0xa0, 0x37, 0x0a, 0x55, 0x94, 0xe6, 0xda, 0xc7, 0x2b, 0x16, 0xfd,
-  0x85, 0x17, 0xe1, 0x66, 0xe0, 0x55, 0x9e, 0xa9, 0x37, 0x54, 0xd9, 0x12,
-  0x7b, 0x36, 0x16, 0x2c, 0xbe, 0x5d, 0xc2, 0x1f, 0x94, 0x3d, 0x21, 0xcd,
-  0xf0, 0x9e, 0xae, 0xda, 0x45, 0x19, 0xca, 0x37, 0xb8, 0x1d, 0x3f, 0xd5,
-  0x50, 0xa8, 0x26, 0x8b, 0xaf, 0xf8, 0x9d, 0xa8, 0x29, 0xe4, 0xac, 0x95,
-  0xdd, 0x4c, 0xc1, 0xe3, 0x30, 0x8b, 0x51, 0x78, 0xff, 0xe3, 0x60, 0x98,
-  0x9d, 0x46, 0xe2, 0x58, 0x1a, 0x3b, 0xbb, 0x62, 0x6b, 0x67, 0x8b, 0xc9,
-  0xa7, 0x74, 0x7b, 0x13, 0xdf, 0x21, 0x52, 0xca, 0xf8, 0xa7, 0xf3, 0x6d,
-  0xa4, 0x98, 0x3e, 0x6b, 0x14, 0x05, 0x07, 0xd8, 0xd4, 0xb8, 0x3f, 0x4b,
-  0x97, 0x9d, 0x6b, 0x29, 0xd7, 0x39, 0x47, 0x03, 0x42, 0xe8, 0xf0, 0x96,
-  0xe2, 0x35, 0x42, 0xdc, 0xa6, 0xd9, 0x94, 0x55, 0x88, 0x68, 0xc9, 0x0f,
-  0x26, 0x65, 0xd0, 0xaa, 0x07, 0xc2, 0xc4, 0x56, 0x8b, 0x92, 0xdf, 0x97,
-  0xf0, 0xe8, 0x92, 0x62, 0x74, 0x9d, 0x14, 0x7a, 0x14, 0x57, 0xa6, 0x4f,
-  0x88, 0x0b, 0xe9, 0xa3, 0x3a, 0x19, 0x3e, 0xde, 0xb7, 0xde, 0x1e, 0x27,
-  0x89, 0x10, 0x9b, 0x3e, 0x20, 0x1b, 0x19, 0xec, 0x6c, 0xf3, 0x3c, 0xbd,
-  0xc4, 0xd9, 0xe7, 0x6b, 0xe1, 0x31, 0xbd, 0x24, 0x57, 0xce, 0x89, 0x17,
-  0x9c, 0xd3, 0xda, 0xe8, 0x40, 0x7c, 0xed, 0x08, 0x1d, 0xd5, 0x23, 0xdd,
-  0xe4, 0xed, 0x97, 0xec, 0xd2, 0x96, 0xf8, 0x2e, 0x52, 0x3c, 0xf9, 0x96,
-  0x72, 0xa2, 0xc2, 0x28, 0x3a, 0x84, 0x4d, 0x93, 0xdb, 0x28, 0xd1, 0x88,
-  0xb1, 0x11, 0xbf, 0x55, 0x2d, 0xea, 0x89, 0x5d, 0xc4, 0x98, 0xe7, 0x5c,
-  0x18, 0x1b, 0x6d, 0xc2, 0x5d, 0x82, 0xa8, 0x9c, 0x5a, 0x53, 0xee, 0xa2,
-  0xc7, 0x6b, 0xdd, 0xc4, 0x28, 0x57, 0xff, 0x66, 0xb9, 0x05, 0xa1, 0x28,
-  0xcb, 0xdd, 0xcb, 0xec, 0x7a, 0xbb, 0xc9, 0xf2, 0x3b, 0x92, 0x75, 0xb2,
-  0x5c, 0x4e, 0x98, 0xf1, 0x0f, 0x1e, 0x75, 0xf3, 0x9a, 0x25, 0x7e, 0x17,
-  0xdc, 0x01, 0xe1, 0x93, 0x95, 0x0b, 0x87, 0x53, 0x83, 0xb0, 0xb2, 0x6c,
-  0x5b, 0xb6, 0xa8, 0x4b, 0xb3, 0x55, 0xd6, 0x2d, 0xd2, 0x00, 0xdc, 0x26,
-  0xd0, 0x8a, 0xfc, 0x0d, 0x62, 0xd7, 0x7a, 0x6c, 0x4a, 0x15, 0x3b, 0x5e,
-  0x07, 0x51, 0x6f, 0xd8, 0x1b, 0x74, 0x9c, 0x3c, 0x9b, 0x54, 0x73, 0x5c,
-  0x8e, 0x5d, 0x74, 0x5c, 0x12, 0x70, 0xc4, 0xb5, 0x5c, 0x5f, 0x1a, 0xf3,
-  0xa3, 0x37, 0xb6, 0x0c, 0xc8, 0xe6, 0x91, 0x64, 0x57, 0x88, 0xe0, 0xe3,
-  0x93, 0xd4, 0x14, 0xce, 0xbd, 0x7d, 0x40, 0x2e, 0x6e, 0xa7, 0xea, 0xe8,
-  0xd0, 0x46, 0xd1, 0x41, 0x26, 0x41, 0x5d, 0x77, 0x31, 0x48, 0xcf, 0x75,
-  0x01, 0x39, 0xa7, 0xb9, 0xda, 0xb9, 0x53, 0x93, 0x6a, 0xb7, 0xd6, 0x43,
-  0x77, 0x85, 0x75, 0x15, 0xf1, 0x21, 0x20, 0x1e, 0xdd, 0x87, 0x64, 0xac,
-  0x76, 0x02, 0xb8, 0xca, 0xdd, 0xa2, 0xc8, 0xbd, 0x71, 0x77, 0x9d, 0xcf,
-  0xc5, 0x75, 0xd7, 0x68, 0xce, 0x0b, 0xbc, 0xd1, 0x1d, 0xdc, 0xce, 0xa2,
-  0x69, 0xb3, 0x8d, 0xe5, 0x96, 0xde, 0x2f, 0x12, 0xd8, 0x6d, 0x39, 0x62,
-  0x8f, 0xb4, 0x62, 0xea, 0x6b, 0x9e, 0xc4, 0xc5, 0xfc, 0xde, 0x84, 0xa1,
-  0xe1, 0x6d, 0xa3, 0x39, 0xac, 0x28, 0x9b, 0x45, 0x88, 0xc2, 0xe2, 0x22,
-  0xe3, 0x67, 0xd4, 0x55, 0x68, 0xc1, 0xb2, 0x95, 0x38, 0x6f, 0xc5, 0xc3,
-  0xcc, 0xb7, 0xf2, 0x6d, 0xca, 0xaa, 0x17, 0x11, 0x1b, 0x09, 0xf0, 0x4d,
-  0x4a, 0x64, 0xa3, 0x26, 0x48, 0x06, 0x4d, 0x4a, 0x64, 0xcc, 0x75, 0x1a,
-  0xe8, 0x6b, 0x74, 0x14, 0xaf, 0xe9, 0x86, 0x24, 0x25, 0x72, 0x15, 0xaf,
-  0x5b, 0x2e, 0xbd, 0xca, 0xcc, 0x2b, 0xfc, 0xd8, 0xed, 0x5a, 0x3f, 0x8f,
-  0x5d, 0x12, 0xe8, 0x9a, 0xbb, 0xf7, 0x50, 0x36, 0x8f, 0x98, 0x6b, 0xb6,
-  0xa2, 0x0b, 0xb8, 0x8a, 0x5e, 0xe6, 0x97, 0x97, 0x44, 0xea, 0x5f, 0xb4,
-  0x24, 0x70, 0x79, 0x64, 0xfb, 0x1c, 0x11, 0xf4, 0x01, 0x4b, 0xaf, 0x07,
-  0x95, 0x45, 0xb1, 0x9d, 0x92, 0xab, 0x94, 0xf7, 0x22, 0x92, 0xe6, 0x46,
-  0x1d, 0x22, 0x50, 0xfd, 0x89, 0xe0, 0x22, 0x12, 0xaf, 0xb8, 0x0f, 0xb9,
-  0xa7, 0xab, 0xba, 0x32, 0x6f, 0x92, 0x4e, 0xa3, 0x29, 0x14, 0xdf, 0xa4,
-  0xcb, 0x25, 0x6f, 0x16, 0x82, 0x75, 0x9d, 0xaa, 0xc4, 0xad, 0x4d, 0x12,
-  0x3a, 0x13, 0xd8, 0x53, 0xf3, 0x29, 0xe7, 0x2b, 0x12, 0x00, 0x4c, 0x0e,
-  0x9c, 0x24, 0x74, 0xd2, 0x9b, 0xcd, 0x99, 0x64, 0xef, 0xe3, 0xb2, 0x54,
-  0x92, 0x9a, 0x71, 0x0c, 0x56, 0xa6, 0x0c, 0x94, 0xb7, 0xc9, 0x87, 0x7a,
-  0xa8, 0x66, 0xd9, 0x75, 0xf8, 0xbd, 0x15, 0xcb, 0x1d, 0xe8, 0xf1, 0xf1,
-  0xff, 0x3e, 0xf2, 0x51, 0x74, 0x2e, 0x4c, 0xed, 0x1e, 0xd4, 0xde, 0x75,
-  0x41, 0x11, 0x63, 0x39, 0x8c, 0x86, 0x3d, 0x0c, 0x84, 0x39, 0xad, 0x5d,
-  0x02, 0x74, 0x35, 0xe6, 0xec, 0x7a, 0x96, 0x70, 0x43, 0xc4, 0xf1, 0x33,
-  0xc1, 0xb1, 0x1e, 0x59, 0x24, 0xdb, 0xec, 0xf0, 0x6f, 0x1b, 0x98, 0x24,
-  0x09, 0x42, 0x17, 0xdb, 0xcb, 0x51, 0xc7, 0x95, 0x44, 0x7e, 0x42, 0xa2,
-  0xe1, 0xef, 0x64, 0x7f, 0x24, 0x94, 0x69, 0x1b, 0xe2, 0xa7, 0x04, 0xe2,
-  0xb5, 0x79, 0x81, 0x1a, 0x5c, 0x24, 0xec, 0xa8, 0x83, 0x99, 0xfd, 0x03,
-  0xcd, 0x40, 0xd3, 0x74, 0x79, 0xcd, 0xd2, 0xf8, 0x4b, 0x44, 0x37, 0xb0,
-  0xe5, 0x49, 0x3e, 0xf8, 0xa2, 0xd3, 0x36, 0x3e, 0xd6, 0x73, 0x51, 0xea,
-  0x4d, 0x6a, 0x6f, 0x2b, 0xff, 0x4a, 0x2d, 0xbe, 0xdc, 0xe2, 0x25, 0x35,
-  0xa2, 0x86, 0x9a, 0x6e, 0xb2, 0x1c, 0x3a, 0x92, 0xf6, 0xb2, 0x68, 0xf5,
-  0x3e, 0x04, 0x05, 0x31, 0xa0, 0xf6, 0xed, 0x28, 0x3a, 0xe7, 0x7b, 0x72,
-  0xb5, 0xe4, 0x10, 0x45, 0x64, 0xa8, 0xe0, 0xf3, 0x96, 0xe7, 0xab, 0xac,
-  0x42, 0x07, 0x2e, 0x52, 0x38, 0xc2, 0xee, 0xb2, 0x9a, 0x60, 0x94, 0x86,
-  0xdf, 0x91, 0xac, 0xba, 0xdf, 0x34, 0x0c, 0xf9, 0x08, 0x71, 0xe2, 0x8d,
-  0x59, 0x59, 0xce, 0x11, 0x96, 0x3f, 0xcb, 0xa7, 0xe5, 0x76, 0xbc, 0x5c,
-  0x96, 0xdb, 0x36, 0xb8, 0x5a, 0x00, 0xbe, 0x69, 0xc3, 0xe3, 0x71, 0x30,
-  0x37, 0xbe, 0x76, 0xc5, 0x5e, 0xe5, 0x04, 0xb0, 0x39, 0x3c, 0x70, 0x99,
-  0x9a, 0x5d, 0x25, 0xa8, 0xe6, 0xeb, 0x6c, 0x75, 0x71, 0x32, 0xc6, 0x72,
-  0x35, 0x6f, 0x4e, 0x0e, 0x09, 0xb7, 0xcd, 0xe1, 0xb6, 0xad, 0x69, 0x28,
-  0x78, 0xa2, 0x34, 0x8d, 0xc7, 0x87, 0xf8, 0x70, 0xbc, 0x62, 0x11, 0x86,
-  0xba, 0x28, 0xee, 0x23, 0xb3, 0x0e, 0x37, 0x69, 0x9f, 0x66, 0x1b, 0x7d,
-  0xf2, 0x7f, 0xba, 0x10, 0x57, 0x69, 0x35, 0xba, 0x4c, 0x66, 0x79, 0x11,
-  0xb7, 0x4c, 0x68, 0x39, 0x27, 0x48, 0x60, 0x75, 0xa6, 0xf4, 0xd4, 0x36,
-  0xc9, 0xe5, 0x1f, 0x68, 0xbd, 0x46, 0xfc, 0x3b, 0x74, 0x3e, 0x59, 0x34,
-  0xfb, 0x98, 0xd7, 0xeb, 0x77, 0xaf, 0x11, 0xab, 0x47, 0x87, 0xa1, 0xfc,
-  0x2d, 0xe9, 0x9a, 0x64, 0x34, 0x38, 0x12, 0x66, 0xdd, 0x42, 0xe1, 0xb9,
-  0x19, 0x0b, 0x23, 0xff, 0xa4, 0x8f, 0xdd, 0x6b, 0x66, 0xa6, 0x91, 0x18,
-  0x76, 0x95, 0xd3, 0x75, 0x7a, 0xbd, 0x68, 0xae, 0xa7, 0x28, 0xef, 0xe6,
-  0x69, 0xd3, 0xf4, 0xa7, 0xa8, 0xe4, 0xb8, 0x7e, 0x61, 0x08, 0xab, 0x2c,
-  0xe8, 0x80, 0x16, 0x83, 0x58, 0x45, 0xa6, 0x82, 0x50, 0xc7, 0xf6, 0x34,
-  0x66, 0x6e, 0x31, 0xf0, 0xca, 0xee, 0x60, 0x41, 0x2f, 0xc5, 0x2e, 0xb9,
-  0xca, 0x7c, 0x9a, 0x9c, 0xd8, 0xb3, 0xd9, 0x72, 0xdd, 0x35, 0x3a, 0x2c,
-  0x51, 0xe3, 0x12, 0xaf, 0x2f, 0x15, 0x8e, 0xeb, 0x90, 0x97, 0x97, 0x99,
-  0xdd, 0xcb, 0x92, 0x24, 0x1a, 0xea, 0xe7, 0x8b, 0x56, 0xe4, 0xcf, 0xc7,
-  0x74, 0xb1, 0x5a, 0x44, 0xd8, 0x07, 0xb1, 0x99, 0xeb, 0x93, 0xa6, 0x6c,
-  0xf0, 0x2d, 0x8d, 0xd8, 0x18, 0x74, 0xdc, 0x2f, 0x03, 0x4e, 0xd0, 0x66,
-  0x9b, 0x15, 0x89, 0x50, 0xa6, 0x35, 0x69, 0x7c, 0xd5, 0x82, 0x23, 0x23,
-  0xea, 0x1c, 0x24, 0x5a, 0x5e, 0xc7, 0x65, 0xe2, 0x03, 0x6a, 0x65, 0xbd,
-  0xc3, 0xd8, 0xe8, 0x5a, 0x88, 0xb4, 0x25, 0x4e, 0x78, 0x7e, 0x4b, 0xb2,
-  0x4d, 0x9a, 0xcf, 0x9c, 0x2f, 0xc5, 0xee, 0xe6, 0x68, 0xc8, 0xcd, 0xf1,
-  0x6d, 0xa1, 0xdf, 0x34, 0x15, 0xdb, 0x8f, 0xf0, 0xd9, 0x8c, 0x61, 0xbe,
-  0x34, 0xdf, 0xdf, 0x67, 0xa3, 0x27, 0x7b, 0xec, 0xd4, 0x0d, 0x89, 0x54,
-  0x23, 0xc9, 0x89, 0xe9, 0x4c, 0xd3, 0x85, 0x0b, 0xcf, 0x5b, 0xaf, 0xd6,
-  0x40, 0xc6, 0x5b, 0xb0, 0x98, 0xb0, 0x88, 0x3f, 0x62, 0xcd, 0x7f, 0x7b,
-  0x8b, 0xc0, 0x50, 0xa4, 0x42, 0xd2, 0xe0, 0x8a, 0x26, 0xc1, 0xd5, 0xbc,
-  0x60, 0xb4, 0x38, 0x7f, 0x21, 0x7a, 0x6d, 0xd8, 0x87, 0x2c, 0x5c, 0xad,
-  0x91, 0x18, 0x21, 0x6d, 0x76, 0x99, 0x84, 0x68, 0x2b, 0x88, 0xdc, 0x39,
-  0xd2, 0x20, 0x62, 0xb3, 0x12, 0x47, 0x8a, 0xf1, 0x89, 0xcf, 0xe9, 0x83,
-  0xeb, 0x94, 0xc6, 0x5e, 0x4c, 0xaf, 0xef, 0x59, 0xb7, 0x61, 0x73, 0x2d,
-  0xbb, 0xb4, 0x1e, 0xb0, 0x07, 0xa0, 0x0f, 0x35, 0xa1, 0xd2, 0xe0, 0x23,
-  0x3e, 0x3c, 0xf4, 0x98, 0x49, 0x09, 0x8d, 0xf1, 0xb1, 0xc4, 0xcd, 0x07,
-  0x37, 0x99, 0x97, 0x09, 0x8e, 0x58, 0xd7, 0xe8, 0x86, 0x79, 0xa0, 0x71,
-  0xe0, 0x72, 0x66, 0x7d, 0x28, 0x2d, 0x58, 0xde, 0x15, 0x6b, 0x9f, 0x74,
-  0xc5, 0x36, 0x6b, 0xe9, 0x8d, 0xb5, 0x30, 0xd6, 0xd6, 0xee, 0xdb, 0x34,
-  0xc2, 0xfa, 0xb0, 0xbe, 0x6e, 0x6b, 0x6f, 0x9e, 0xba, 0x96, 0x06, 0x92,
-  0xeb, 0x57, 0xa6, 0xaa, 0xd9, 0xaa, 0xa4, 0x96, 0x46, 0x24, 0x5c, 0x87,
-  0xc5, 0x1b, 0x1a, 0x8a, 0xa4, 0x9f, 0x32, 0x27, 0xa7, 0xfd, 0xbb, 0xac,
-  0x5a, 0x26, 0xe1, 0x60, 0x4b, 0xeb, 0x3b, 0x3d, 0xbf, 0x64, 0xe9, 0x92,
-  0x68, 0xa4, 0x8a, 0x4e, 0xde, 0xf0, 0xcd, 0x7c, 0x78, 0x4e, 0x3f, 0x53,
-  0x73, 0x70, 0xb2, 0xd8, 0x8e, 0xf4, 0x51, 0xb6, 0x9e, 0xbc, 0xfd, 0x6e,
-  0x1c, 0x6d, 0x9e, 0x8e, 0xb7, 0x9f, 0xbc, 0xd8, 0x69, 0xeb, 0xf1, 0x9b,
-  0x9c, 0xe3, 0xaa, 0x61, 0x89, 0x88, 0xbb, 0x78, 0xba, 0x53, 0x0f, 0x6a,
-  0xe1, 0xbe, 0x78, 0x25, 0xa1, 0x81, 0x77, 0x2a, 0xdf, 0xe3, 0x6d, 0xce,
-  0xd2, 0xdd, 0xf2, 0xb9, 0x41, 0x62, 0xd3, 0xd5, 0x99, 0x9e, 0x1d, 0xbd,
-  0x35, 0xe3, 0xa2, 0x04, 0x5c, 0x44, 0x87, 0x34, 0x6a, 0xf6, 0x8c, 0xb4,
-  0x09, 0xeb, 0x3c, 0xb9, 0x35, 0x0b, 0xe5, 0x09, 0x5f, 0x86, 0x60, 0x38,
-  0x6c, 0x02, 0x35, 0xb1, 0x61, 0x99, 0xb0, 0x3c, 0xe8, 0xdf, 0x57, 0x01,
-  0x57, 0x2e, 0xe0, 0x16, 0xf3, 0x99, 0x24, 0x61, 0x90, 0x00, 0x89, 0xde,
-  0x9c, 0xbf, 0xf5, 0xdb, 0x9d, 0xc0, 0x8e, 0x20, 0x96, 0xdd, 0x17, 0xa3,
-  0xcf, 0xb6, 0xdc, 0x5a, 0xce, 0x06, 0x16, 0x5b, 0xfc, 0xf2, 0x01, 0x77,
-  0x02, 0x71, 0x11, 0xe5, 0xb6, 0x49, 0x98, 0xbd, 0x81, 0xf7, 0x60, 0xec,
-  0x47, 0x98, 0xbd, 0xf9, 0xc1, 0x02, 0x77, 0x43, 0x53, 0xbe, 0xd7, 0x04,
-  0x6c, 0x4b, 0xe2, 0x83, 0x42, 0x13, 0x6b, 0x60, 0x50, 0x1c, 0x4d, 0x8a,
-  0xfc, 0x8e, 0x4d, 0x35, 0x12, 0xe8, 0x2e, 0xb4, 0xc9, 0x26, 0x24, 0xd8,
-  0x6f, 0xa2, 0xeb, 0xb8, 0xe5, 0xef, 0xa1, 0x39, 0x6b, 0xe8, 0x6a, 0xcc,
-  0x46, 0xde, 0xb7, 0x27, 0x12, 0xea, 0xcd, 0xb7, 0xd7, 0x52, 0xbd, 0xf9,
-  0xe8, 0x67, 0x35, 0x21, 0x0e, 0xcf, 0x1a, 0x60, 0x25, 0xa2, 0x61, 0x5a,
-  0x76, 0xb1, 0x5e, 0x18, 0x01, 0x9d, 0x44, 0xbe, 0xec, 0x72, 0xa1, 0xe8,
-  0x7d, 0x68, 0xb6, 0x6e, 0x6c, 0x26, 0xa9, 0xba, 0x74, 0x87, 0xdd, 0x2f,
-  0x9b, 0x94, 0x43, 0x02, 0xdb, 0x5c, 0x4d, 0x5d, 0xdb, 0x1f, 0x87, 0x24,
-  0xd3, 0x0d, 0x79, 0x70, 0x43, 0x6a, 0x5e, 0xbc, 0xc0, 0xec, 0x53, 0x3f,
-  0xa4, 0x2b, 0x9a, 0x09, 0x85, 0x9a, 0x1f, 0xbe, 0xe1, 0xad, 0xe0, 0x47,
-  0x5a, 0xdb, 0xc7, 0xbb, 0xe4, 0x42, 0xc0, 0x9d, 0x7a, 0x85, 0xd5, 0x13,
-  0xbb, 0x19, 0x7f, 0x23, 0x56, 0x57, 0xd8, 0x87, 0x39, 0xad, 0x5a, 0xbd,
-  0x35, 0x24, 0xce, 0xb7, 0x0c, 0x40, 0x6c, 0x8a, 0x2f, 0xee, 0x25, 0x82,
-  0x59, 0x2d, 0xe5, 0xe6, 0x32, 0x74, 0xc6, 0x00, 0x69, 0x52, 0x9e, 0xf4,
-  0xa6, 0xf9, 0x9c, 0xc5, 0xb8, 0x61, 0xcb, 0x14, 0x0b, 0x9f, 0x36, 0xbf,
-  0x26, 0xc1, 0xf9, 0x9c, 0x9c, 0x2b, 0x1b, 0x21, 0x8e, 0x72, 0xe4, 0xa7,
-  0xc5, 0x30, 0x81, 0x5b, 0xc3, 0x6e, 0x11, 0x3a, 0x75, 0x66, 0x9f, 0x13,
-  0x50, 0xfa, 0x48, 0x70, 0x3b, 0x04, 0x08, 0x4a, 0x82, 0x1c, 0x8b, 0x50,
-  0xf0, 0x3c, 0xab, 0x45, 0x18, 0x0f, 0x5b, 0xf6, 0x12, 0x35, 0xbb, 0x0c,
-  0x02, 0x17, 0x56, 0xca, 0xf7, 0x44, 0x98, 0x85, 0xe4, 0x2c, 0xee, 0xc4,
-  0x79, 0x8b, 0x2b, 0xfe, 0xc4, 0xcc, 0x88, 0x2d, 0x13, 0x03, 0x02, 0x6e,
-  0x5c, 0xea, 0x11, 0xac, 0x51, 0xff, 0x3a, 0x14, 0xf7, 0x12, 0x84, 0x8a,
-  0x15, 0xcb, 0x62, 0x6a, 0xa6, 0xea, 0x0f, 0x67, 0x91, 0x7a, 0xea, 0x32,
-  0x5a, 0x09, 0xda, 0xc7, 0xb6, 0xbe, 0x3b, 0x9f, 0xbf, 0x9a, 0x93, 0xf6,
-  0x7d, 0xdf, 0x8f, 0x34, 0x45, 0x46, 0x03, 0xd9, 0xd9, 0xbe, 0x1b, 0x47,
-  0xb2, 0x95, 0xd1, 0xf4, 0x7a, 0x95, 0xdd, 0x98, 0xb0, 0x33, 0xcf, 0x73,
-  0x0e, 0x1d, 0xe0, 0xa0, 0xfa, 0x46, 0x73, 0xfd, 0xa0, 0xb3, 0x7f, 0x0d,
-  0xdb, 0xee, 0x5c, 0x65, 0xb1, 0x86, 0x49, 0x7e, 0x86, 0x5b, 0x1b, 0x77,
-  0xbb, 0x49, 0x86, 0x6a, 0xf4, 0xe5, 0xc0, 0x3c, 0xd9, 0x55, 0xe0, 0x55,
-  0x89, 0xdb, 0x07, 0xd1, 0x5b, 0xd2, 0x60, 0x5f, 0x74, 0x0d, 0x8a, 0x0b,
-  0x8c, 0x4d, 0xb7, 0xe6, 0xbe, 0xf5, 0xc6, 0x4f, 0xe7, 0xbd, 0xe9, 0xb8,
-  0x2e, 0x3d, 0x7a, 0x03, 0x1c, 0xa5, 0xa3, 0xe8, 0x6d, 0x98, 0xfc, 0x56,
-  0x8f, 0x74, 0x70, 0x3b, 0x39, 0x8a, 0xce, 0x68, 0xbd, 0x86, 0x2d, 0x67,
-  0xd6, 0x55, 0xd0, 0x5c, 0xec, 0x47, 0x3b, 0x8b, 0xfa, 0x97, 0x79, 0x3e,
-  0x89, 0x0b, 0xbf, 0xf8, 0xf0, 0xc8, 0x83, 0x12, 0x24, 0x00, 0x84, 0xd7,
-  0xa3, 0x6d, 0x90, 0xc6, 0x41, 0xfc, 0x52, 0xde, 0x1d, 0xa9, 0x2c, 0x13,
-  0x1e, 0xd0, 0x2a, 0x9f, 0xcf, 0xdc, 0x52, 0x84, 0xbd, 0x76, 0x6c, 0x1a,
-  0x6f, 0xea, 0x80, 0xa6, 0x53, 0x14, 0x29, 0x67, 0xa2, 0x16, 0x49, 0xb5,
-  0x2a, 0x32, 0xc9, 0x14, 0xcb, 0x92, 0x3b, 0x71, 0x24, 0x1a, 0x73, 0xe7,
-  0x18, 0x10, 0x36, 0x90, 0xd4, 0x95, 0xf3, 0xe1, 0x6b, 0x30, 0xf1, 0xd5,
-  0x62, 0x69, 0xf1, 0x1c, 0x9d, 0x17, 0xe3, 0xf7, 0xb0, 0x33, 0x6b, 0xaa,
-  0x96, 0xa4, 0x8e, 0x9a, 0x4b, 0xcc, 0xb8, 0x5b, 0xcd, 0xfa, 0xd4, 0x6d,
-  0xca, 0xf4, 0x57, 0x92, 0x38, 0x00, 0x5d, 0xf6, 0x25, 0x2d, 0x41, 0x90,
-  0xc5, 0xa9, 0x3e, 0x2a, 0xe1, 0x54, 0xda, 0x4d, 0xa7, 0x9f, 0x80, 0x55,
-  0x0a, 0x71, 0x4c, 0xa7, 0xb0, 0x22, 0xf3, 0x3d, 0x43, 0xaf, 0x53, 0x53,
-  0x23, 0x75, 0x17, 0x07, 0xb9, 0x8b, 0x36, 0xde, 0x29, 0x6f, 0x56, 0x9b,
-  0x68, 0x90, 0x98, 0x82, 0x35, 0xc7, 0xa5, 0xa4, 0x5a, 0x82, 0x83, 0x09,
-  0xc9, 0xdc, 0x4d, 0x1e, 0x38, 0x8d, 0x54, 0x36, 0x9b, 0xb4, 0xdd, 0x0e,
-  0x66, 0x8d, 0x95, 0x19, 0xff, 0x0b, 0x2c, 0x0a, 0x6b, 0x9c, 0x6a, 0x92,
-  0xdb, 0x33, 0x91, 0x23, 0x23, 0x76, 0xd7, 0x56, 0xf4, 0x4e, 0xe0, 0xb2,
-  0x6b, 0xad, 0x6c, 0x4d, 0x18, 0x16, 0xf9, 0x8b, 0x3a, 0x0b, 0xec, 0x4d,
-  0x4e, 0x41, 0x54, 0xc7, 0x32, 0x84, 0x0b, 0x2f, 0x48, 0xb4, 0x84, 0x0c,
-  0x9e, 0x59, 0x4f, 0x57, 0xab, 0xa7, 0xda, 0xdc, 0x4a, 0x6c, 0xf1, 0xac,
-  0x22, 0xe2, 0x7c, 0x16, 0xbf, 0x69, 0x98, 0x8f, 0xbf, 0x92, 0xba, 0x25,
-  0x0b, 0xd6, 0x4b, 0xbc, 0xf4, 0xd1, 0x7a, 0x53, 0x6f, 0x9e, 0x07, 0x85,
-  0x12, 0xf1, 0x7b, 0x31, 0x87, 0x54, 0xcf, 0x1d, 0x0c, 0x8e, 0x73, 0x88,
-  0xf8, 0x0d, 0x97, 0x2c, 0x89, 0xca, 0x12, 0x4f, 0x43, 0xa4, 0xdf, 0x12,
-  0x68, 0xd9, 0xe3, 0xce, 0x91, 0x55, 0x44, 0x8f, 0x65, 0x9e, 0xdc, 0x86,
-  0x49, 0x1f, 0x8d, 0x3c, 0x6e, 0x30, 0xcb, 0x4f, 0xe2, 0x95, 0xa1, 0x7f,
-  0xbf, 0x93, 0x5d, 0x4a, 0x4e, 0x79, 0x14, 0xbd, 0x76, 0x97, 0xfa, 0x12,
-  0x26, 0x0d, 0xc5, 0x3d, 0x90, 0xa4, 0x41, 0x03, 0x3d, 0x68, 0x5c, 0xf2,
-  0x1d, 0xd1, 0x7b, 0x03, 0x9a, 0x1f, 0x72, 0x7d, 0x70, 0xaa, 0x1c, 0xe3,
-  0x90, 0x1c, 0x5a, 0x65, 0x2d, 0x8e, 0xb7, 0x08, 0xf9, 0xb0, 0x84, 0xc4,
-  0xd4, 0x35, 0xeb, 0x88, 0x9d, 0x9a, 0x42, 0x90, 0x2f, 0x5d, 0xee, 0x54,
-  0x96, 0x20, 0x62, 0x9a, 0x36, 0xfc, 0xd3, 0x8c, 0xdc, 0x6b, 0xe9, 0x06,
-  0xd0, 0x14, 0x3e, 0x05, 0xa6, 0x6d, 0x64, 0x95, 0xd0, 0x2a, 0x71, 0x8e,
-  0x48, 0x00, 0x24, 0xd6, 0x3a, 0x2e, 0x15, 0xcc, 0x64, 0x22, 0x4b, 0xf4,
-  0x00, 0xe9, 0x38, 0xd9, 0xe2, 0x41, 0xea, 0xb9, 0x50, 0x53, 0xbe, 0xd2,
-  0xce, 0xc0, 0x2d, 0xb9, 0xf2, 0x42, 0xf1, 0xa1, 0x28, 0x4f, 0x37, 0x19,
-  0xa4, 0xe3, 0x36, 0x90, 0xf4, 0x2f, 0x5e, 0x7a, 0x18, 0x1b, 0x24, 0x53,
-  0x82, 0x9b, 0x4e, 0x0a, 0x16, 0x81, 0x4a, 0x48, 0x4c, 0x66, 0x26, 0xa9,
-  0xa7, 0x74, 0xec, 0x7e, 0xce, 0x6a, 0x4d, 0x4b, 0x59, 0x03, 0xc9, 0x1c,
-  0x7e, 0x7d, 0x0c, 0x53, 0xd2, 0x3c, 0x25, 0x7e, 0x3a, 0x90, 0x6e, 0x64,
-  0x3a, 0x82, 0xb6, 0xe2, 0xee, 0xe2, 0xab, 0x34, 0x33, 0x25, 0x26, 0x4c,
-  0x39, 0x73, 0xee, 0x2f, 0x5e, 0x69, 0x8b, 0xa5, 0x77, 0x09, 0x87, 0xd8,
-  0xe3, 0xd8, 0x84, 0x57, 0x17, 0x17, 0x16, 0x7b, 0xd3, 0x69, 0xf7, 0xda,
-  0xa1, 0x6b, 0x4d, 0x00, 0x64, 0xf9, 0x58, 0x2c, 0xea, 0x60, 0xaf, 0x2d,
-  0xcb, 0x95, 0xdf, 0x64, 0x81, 0xae, 0x49, 0xca, 0xfd, 0x8d, 0x96, 0x37,
-  0x0d, 0xfd, 0x77, 0x63, 0x4b, 0xc9, 0xe9, 0xf6, 0xe1, 0x2a, 0xe8, 0xc5,
-  0x2d, 0x66, 0x12, 0x4a, 0xdf, 0x22, 0xf0, 0x8b, 0xbc, 0x1e, 0xaf, 0x69,
-  0x8e, 0x27, 0xf6, 0xef, 0x1a, 0xc5, 0x45, 0x27, 0x02, 0x9a, 0x28, 0xac,
-  0x22, 0x9a, 0xda, 0x62, 0x4d, 0xb9, 0x58, 0x58, 0x7c, 0x12, 0xb7, 0x42,
-  0x59, 0xdc, 0x21, 0xa1, 0x1b, 0xe4, 0x15, 0xf0, 0x41, 0xa2, 0x2f, 0x23,
-  0x8d, 0x2f, 0x22, 0x1a, 0x8f, 0x43, 0xff, 0x06, 0xae, 0x24, 0x0c, 0x1e,
-  0xb7, 0x2b, 0x96, 0xa1, 0xbb, 0x39, 0x44, 0xf9, 0x84, 0xab, 0x27, 0xe4,
-  0xc7, 0x69, 0xc1, 0xa5, 0xc0, 0x17, 0xfd, 0x4b, 0x73, 0xf1, 0x5e, 0x3d,
-  0xbe, 0x7a, 0xbf, 0x70, 0xf1, 0x1e, 0x59, 0xbd, 0x8b, 0x6b, 0x49, 0x06,
-  0x48, 0x10, 0xc3, 0xf6, 0x2a, 0x88, 0xa9, 0x82, 0x35, 0x0b, 0x51, 0xbd,
-  0x3e, 0xb6, 0xaa, 0x7e, 0x34, 0x03, 0x0f, 0xd6, 0xab, 0x7f, 0xd8, 0xae,
-  0x83, 0x1a, 0x6d, 0xf4, 0xdd, 0xcd, 0x89, 0x27, 0x83, 0x06, 0x8f, 0x48,
-  0x43, 0xb7, 0xd9, 0x02, 0x66, 0xc1, 0xaf, 0x73, 0x92, 0xcb, 0x47, 0x22,
-  0xff, 0x4a, 0x48, 0x19, 0x67, 0xaf, 0x43, 0xc7, 0xa9, 0xa9, 0x3a, 0x33,
-  0x33, 0xcb, 0xb4, 0xe6, 0xf7, 0xa5, 0x71, 0xf6, 0x47, 0x27, 0x57, 0x0b,
-  0xc1, 0x42, 0xf4, 0x5f, 0xa4, 0x19, 0xbe, 0x2c, 0xeb, 0x84, 0x9e, 0xb7,
-  0x0e, 0x47, 0xa0, 0x71, 0x32, 0x1f, 0x49, 0xcd, 0xe4, 0x68, 0x4c, 0x7f,
-  0x6b, 0x50, 0x5f, 0xb0, 0x58, 0x75, 0x41, 0xb1, 0x10, 0xaf, 0x5f, 0xab,
-  0x94, 0x57, 0xca, 0xb6, 0x8f, 0x15, 0xfa, 0xce, 0xed, 0xfb, 0x3f, 0x7d,
-  0x8a, 0x70, 0xc9, 0x58, 0xd8, 0xb5, 0x4c, 0x53, 0xdd, 0x98, 0x9e, 0x28,
-  0xae, 0x38, 0x76, 0x85, 0x2d, 0xd6, 0x7f, 0x5d, 0xc1, 0xbf, 0x7b, 0xb5,
-  0x8e, 0x09, 0xe0, 0x82, 0x62, 0x7f, 0x25, 0xbb, 0xe2, 0xe6, 0xd0, 0x06,
-  0xa9, 0x69, 0x50, 0xb9, 0x57, 0xf3, 0x87, 0x88, 0x26, 0x54, 0xa2, 0x15,
-  0x4a, 0x7c, 0x80, 0x58, 0x1d, 0x79, 0x36, 0x28, 0x73, 0x92, 0x04, 0x53,
-  0xee, 0xa0, 0x40, 0xba, 0xa9, 0x92, 0x79, 0x72, 0xa5, 0x96, 0xaa, 0xa3,
-  0xef, 0x8e, 0x4e, 0x5a, 0x02, 0x57, 0x25, 0x9f, 0x3b, 0xdf, 0x63, 0x60,
-  0xd0, 0x30, 0x78, 0x12, 0x60, 0xf6, 0xc8, 0x8d, 0xc1, 0x40, 0x11, 0xd2,
-  0x62, 0x67, 0x34, 0x2b, 0x3d, 0x4c, 0xf7, 0x53, 0x62, 0x2e, 0xb8, 0x82,
-  0xed, 0x82, 0x33, 0x81, 0x6a, 0x2a, 0x47, 0x12, 0x8a, 0x83, 0x6b, 0xe9,
-  0xeb, 0xf1, 0x78, 0xfb, 0x26, 0x29, 0x26, 0x8c, 0x86, 0xd5, 0x26, 0x28,
-  0xe8, 0x58, 0xd1, 0x6b, 0x38, 0xff, 0xc5, 0x80, 0xcf, 0xdb, 0xec, 0x67,
-  0xd2, 0x7a, 0x63, 0x99, 0xcf, 0xd3, 0xe9, 0x7d, 0xf4, 0x5a, 0x47, 0x56,
-  0xb2, 0x52, 0xc9, 0x9b, 0x0e, 0x43, 0xbe, 0x5a, 0x51, 0x4f, 0xbf, 0x1d,
-  0x1e, 0x8c, 0x87, 0xaf, 0x8f, 0x4e, 0x8e, 0xbe, 0x3e, 0xb8, 0x38, 0x72,
-  0x49, 0x0a, 0x08, 0xfd, 0x58, 0x43, 0x17, 0x46, 0x0f, 0xdf, 0xea, 0x48,
-  0xc5, 0x54, 0xc5, 0xc1, 0xc1, 0x0c, 0x5f, 0x77, 0x93, 0x54, 0x16, 0xc5,
-  0x29, 0x92, 0xfe, 0x22, 0x86, 0xc0, 0xd7, 0x0a, 0x4c, 0xf4, 0x11, 0x36,
-  0xf3, 0x85, 0x0e, 0xb5, 0x35, 0x83, 0x78, 0x7e, 0xc7, 0x70, 0x1e, 0xef,
-  0x33, 0xd6, 0x4d, 0x34, 0xb7, 0x9e, 0x65, 0x56, 0xcc, 0x3e, 0xd8, 0x92,
-  0x60, 0xfd, 0x6b, 0xbb, 0x8c, 0x60, 0xa8, 0x6e, 0x99, 0x46, 0x02, 0xeb,
-  0x34, 0x3b, 0xee, 0x35, 0x1e, 0x6c, 0xc4, 0x5c, 0xf9, 0x44, 0x54, 0xc4,
-  0xd6, 0xe9, 0x77, 0x2d, 0x89, 0x58, 0xb5, 0xa4, 0x72, 0x7a, 0x9d, 0x2c,
-  0x5c, 0x80, 0x36, 0x07, 0x0a, 0xd0, 0xd3, 0x8a, 0xf6, 0x41, 0x67, 0xec,
-  0x8e, 0xc3, 0x4f, 0x70, 0x98, 0x45, 0xe1, 0x40, 0xe0, 0x1c, 0x07, 0x8b,
-  0x75, 0x88, 0x48, 0x77, 0x29, 0x12, 0xac, 0x25, 0x86, 0x03, 0xa1, 0x74,
-  0x20, 0x12, 0x8b, 0x17, 0xed, 0x8e, 0x10, 0x55, 0xb4, 0x96, 0xa6, 0x66,
-  0xb6, 0x82, 0x35, 0x4c, 0x8c, 0x82, 0x26, 0x73, 0x4a, 0x32, 0x74, 0x65,
-  0xb6, 0xc2, 0x4c, 0x6c, 0x63, 0x7a, 0x37, 0xf0, 0x40, 0x47, 0xce, 0x13,
-  0xd2, 0x8e, 0x4f, 0x47, 0xe8, 0x7a, 0x10, 0x5a, 0x26, 0xb1, 0x62, 0x2e,
-  0x12, 0x9d, 0x0d, 0xd6, 0x86, 0xe5, 0x67, 0x19, 0xd9, 0xbf, 0x4e, 0x73,
-  0x12, 0x32, 0xb5, 0xe8, 0xa3, 0x02, 0x79, 0xf5, 0x7c, 0x02, 0x3a, 0x93,
-  0x4b, 0xeb, 0xbb, 0x8e, 0x84, 0xcd, 0x61, 0xb2, 0x2c, 0xaa, 0x8e, 0xc0,
-  0x4a, 0x09, 0x2d, 0x74, 0xa6, 0xcb, 0x59, 0x90, 0xde, 0x19, 0x64, 0xe1,
-  0x1f, 0x9d, 0x9d, 0x0b, 0x62, 0xe4, 0x09, 0xff, 0xa2, 0x21, 0x0c, 0xcd,
-  0x9e, 0xa1, 0xc8, 0x6b, 0x66, 0x03, 0x9c, 0xa5, 0x50, 0x43, 0x1d, 0xd6,
-  0x90, 0xc5, 0x9b, 0x49, 0xc8, 0x83, 0x62, 0xe9, 0x28, 0x49, 0x63, 0x46,
-  0x4d, 0x6a, 0xf7, 0x28, 0x56, 0x18, 0x0a, 0x8f, 0x61, 0x20, 0x82, 0x11,
-  0x46, 0x21, 0x71, 0x1b, 0x66, 0x97, 0x3f, 0xe5, 0x2f, 0x39, 0x50, 0x47,
-  0x49, 0x60, 0x8d, 0x9b, 0xd2, 0x67, 0x28, 0x71, 0x93, 0xfc, 0x56, 0x54,
-  0x00, 0xff, 0x2a, 0xa6, 0x71, 0x8c, 0xfc, 0x3c, 0xa5, 0x0b, 0xd1, 0x76,
-  0x90, 0xdd, 0xda, 0x24, 0x74, 0x51, 0x70, 0x40, 0x3c, 0xd8, 0x93, 0x9c,
-  0x9a, 0x01, 0xa4, 0x0e, 0x26, 0xed, 0xec, 0x24, 0x03, 0xc1, 0x96, 0x24,
-  0xbd, 0x9e, 0x25, 0x1d, 0xa4, 0x63, 0xb0, 0x03, 0xae, 0x65, 0x40, 0xd6,
-  0x14, 0x27, 0x8b, 0x35, 0x4a, 0xee, 0x35, 0x81, 0x56, 0x6c, 0x96, 0x97,
-  0xea, 0xe1, 0x8a, 0xe7, 0x69, 0x75, 0x2f, 0x6a, 0x5e, 0x68, 0x31, 0xb8,
-  0x8e, 0xbb, 0xf2, 0x0f, 0x68, 0xe1, 0x1d, 0x00, 0x07, 0x26, 0xaa, 0xdb,
-  0xd6, 0xb6, 0x11, 0x83, 0x36, 0x42, 0x74, 0x0e, 0xa0, 0x70, 0x7c, 0x64,
-  0x1b, 0x74, 0xca, 0x4a, 0xb1, 0x0e, 0x45, 0x16, 0x87, 0xc1, 0x2e, 0x94,
-  0xca, 0xb3, 0xbc, 0x8b, 0xaa, 0x84, 0x43, 0xd0, 0x50, 0x63, 0xc9, 0xe1,
-  0xaf, 0x93, 0x60, 0xab, 0x77, 0x49, 0x28, 0xe6, 0x3d, 0x44, 0xfb, 0x20,
-  0xf3, 0xe9, 0xb5, 0x22, 0xec, 0xb1, 0x1b, 0x5b, 0x48, 0x69, 0x92, 0x5c,
-  0xc7, 0xb7, 0x29, 0x03, 0x9e, 0x84, 0xe8, 0x3d, 0x1d, 0xd6, 0x12, 0xda,
-  0x7f, 0xc6, 0x2a, 0xe0, 0x8d, 0xe1, 0x03, 0xcc, 0xef, 0x4a, 0xe8, 0x6d,
-  0x08, 0xdd, 0x83, 0xdd, 0x80, 0x51, 0xf9, 0x6c, 0xa0, 0xbe, 0x2a, 0xf8,
-  0x9a, 0x5b, 0x01, 0xde, 0x08, 0x15, 0x76, 0xd0, 0x1b, 0xfa, 0x64, 0x5c,
-  0xde, 0x76, 0x9f, 0xb0, 0xf2, 0xf6, 0x97, 0x9f, 0x30, 0x01, 0x80, 0x62,
-  0x12, 0x3a, 0x3a, 0x1b, 0x7f, 0x17, 0xb9, 0xf8, 0xa0, 0xae, 0x9b, 0x53,
-  0x0e, 0x97, 0x9f, 0x17, 0x48, 0x2d, 0x38, 0x60, 0xbf, 0xf2, 0x84, 0xb9,
-  0x03, 0x46, 0xfd, 0xeb, 0xa9, 0x3a, 0x3b, 0x18, 0x7f, 0xd7, 0x38, 0x4f,
-  0xde, 0xa5, 0x9a, 0x56, 0x51, 0x97, 0x13, 0x04, 0xb0, 0x44, 0x85, 0xe1,
-  0x68, 0x72, 0x6b, 0x9d, 0xa4, 0x56, 0xde, 0x7e, 0x0a, 0xa9, 0xd1, 0x50,
-  0x5a, 0xa4, 0xd6, 0x5a, 0xde, 0x87, 0x48, 0x2d, 0xdc, 0xa3, 0x0e, 0x52,
-  0xa3, 0xf6, 0x5b, 0xa4, 0x66, 0xeb, 0xda, 0x4d, 0x6b, 0xeb, 0x48, 0xcd,
-  0x02, 0x25, 0x13, 0x21, 0xb3, 0x90, 0xca, 0xda, 0x14, 0x56, 0xa3, 0x9b,
-  0xac, 0x1c, 0x7a, 0xa4, 0xc0, 0x97, 0xee, 0xd7, 0x2f, 0x3a, 0x50, 0x42,
-  0x42, 0x48, 0x06, 0x41, 0xee, 0xc8, 0x57, 0xd5, 0x15, 0xc8, 0xe1, 0xf5,
-  0xbb, 0xb1, 0x47, 0x66, 0xa8, 0xae, 0x0b, 0x00, 0x08, 0x05, 0xad, 0x8d,
-  0x1e, 0xb6, 0xc5, 0xc6, 0x06, 0x6f, 0x29, 0x50, 0xac, 0xdc, 0xc1, 0x30,
-  0x18, 0x56, 0xb4, 0x29, 0xc2, 0x8b, 0x3a, 0xd6, 0x02, 0x0c, 0x3c, 0x17,
-  0x62, 0x7c, 0x09, 0x18, 0x2b, 0x1a, 0x86, 0x42, 0x09, 0x73, 0x90, 0xc7,
-  0x9c, 0xed, 0x67, 0x9a, 0x77, 0xe8, 0x32, 0xa0, 0xb2, 0x06, 0x30, 0x62,
-  0xb4, 0xd9, 0xd1, 0x5c, 0x66, 0xf9, 0xb4, 0x5b, 0x0f, 0x5a, 0x91, 0xeb,
-  0x08, 0x13, 0x5d, 0x30, 0x02, 0xde, 0xe3, 0xa2, 0x69, 0xbb, 0x45, 0x47,
-  0x94, 0x66, 0x22, 0x09, 0x5c, 0x21, 0x40, 0x80, 0xd2, 0xba, 0x8b, 0x92,
-  0x06, 0x3a, 0xf2, 0x30, 0xe6, 0xbe, 0x5c, 0xb2, 0x7a, 0xd9, 0x61, 0x7e,
-  0x02, 0x39, 0x21, 0x20, 0x9d, 0x6d, 0x5d, 0x0f, 0x62, 0x56, 0x60, 0xe7,
-  0x97, 0xb7, 0x4f, 0x87, 0x3c, 0x55, 0xda, 0xab, 0xe5, 0x50, 0xe7, 0xdc,
-  0xb9, 0xf5, 0xc6, 0x39, 0x26, 0xa9, 0xe4, 0xa2, 0x86, 0xcf, 0xcb, 0xa5,
-  0x4b, 0xea, 0x12, 0x2f, 0x34, 0x92, 0xa3, 0x43, 0x72, 0x68, 0x41, 0xb0,
-  0xe4, 0x81, 0xaa, 0x50, 0xa3, 0x1b, 0xbd, 0xbe, 0x38, 0xc7, 0x57, 0x2c,
-  0xe6, 0x4c, 0x19, 0xd2, 0x87, 0xac, 0x40, 0x5c, 0x5c, 0xad, 0x5a, 0x1e,
-  0x32, 0x58, 0x80, 0xbc, 0x6b, 0xc7, 0xe2, 0xa0, 0xc3, 0x24, 0xed, 0xff,
-  0xb3, 0x37, 0xf1, 0x53, 0x76, 0xf1, 0xf9, 0x3f, 0x7e, 0x17, 0x9f, 0xff,
-  0x0f, 0xd9, 0xc5, 0xe7, 0xff, 0x1f, 0xd9, 0x45, 0x4b, 0x30, 0x0f, 0xf6,
-  0x64, 0xb0, 0x7e, 0x3b, 0x59, 0x1d, 0xae, 0x34, 0x46, 0x94, 0x6f, 0x6f,
-  0xde, 0x02, 0x6b, 0x41, 0xd4, 0xed, 0x8e, 0x64, 0x5a, 0xf1, 0xbb, 0x23,
-  0xe7, 0xa7, 0x1b, 0xbb, 0x47, 0x6d, 0x09, 0xd6, 0xe8, 0xf1, 0x59, 0x80,
-  0x2b, 0xe0, 0x77, 0xc7, 0xd0, 0xa1, 0x54, 0x45, 0xee, 0x74, 0x5b, 0x97,
-  0xec, 0xcb, 0x24, 0x5e, 0x2e, 0xd1, 0xd3, 0x25, 0xa4, 0x4f, 0xf8, 0x3b,
-  0x65, 0xbf, 0x20, 0x15, 0x4c, 0x2c, 0xd6, 0x8c, 0x36, 0x69, 0xff, 0x25,
-  0xaf, 0xf6, 0x50, 0x1e, 0xff, 0xa2, 0x33, 0x83, 0x04, 0xf8, 0x4f, 0x7e,
-  0x48, 0xdd, 0xe4, 0xe0, 0x34, 0x2a, 0x47, 0x10, 0xe6, 0x76, 0x0e, 0x49,
-  0x22, 0xc4, 0x78, 0x79, 0x8c, 0x1c, 0x7e, 0x0d, 0x35, 0xfc, 0xf7, 0xc8,
-  0x21, 0xe1, 0xcb, 0x1a, 0x80, 0x4e, 0xec, 0x0b, 0x7d, 0x7f, 0x7e, 0xb2,
-  0x2e, 0x41, 0x47, 0xbc, 0x8d, 0x9c, 0x2b, 0x79, 0x2e, 0xf0, 0x4f, 0x45,
-  0x74, 0x16, 0x5f, 0x25, 0xbd, 0x10, 0x0a, 0xec, 0x13, 0x80, 0x03, 0x5a,
-  0xa9, 0xf7, 0xac, 0x89, 0xfa, 0x38, 0xb1, 0x30, 0xd3, 0x1e, 0xc6, 0x08,
-  0x9f, 0x67, 0x2f, 0xae, 0xbf, 0x2e, 0x64, 0x21, 0x11, 0x55, 0xeb, 0x29,
-  0x92, 0x96, 0x8b, 0xad, 0x8e, 0x91, 0xde, 0x9f, 0x38, 0x6a, 0xbc, 0x67,
-  0x03, 0x74, 0x53, 0x6e, 0x47, 0xde, 0xf2, 0x23, 0xde, 0x9c, 0x5a, 0x8f,
-  0x35, 0x2f, 0xf5, 0x20, 0xb8, 0x3c, 0x00, 0xa0, 0x14, 0x5f, 0x0b, 0x7e,
-  0xe0, 0x65, 0x3e, 0x6f, 0x92, 0xa6, 0x20, 0x90, 0x11, 0x17, 0x38, 0xd1,
-  0x61, 0xed, 0xab, 0x5b, 0x56, 0xf6, 0xd2, 0x06, 0xa5, 0x62, 0x43, 0x28,
-  0x24, 0xc6, 0x73, 0x86, 0x7a, 0x6f, 0x46, 0x8f, 0x30, 0xfd, 0xba, 0xc4,
-  0x6e, 0xb6, 0x03, 0xf1, 0x80, 0x20, 0x65, 0xa4, 0xc0, 0xfd, 0x76, 0xd3,
-  0xfa, 0x0d, 0xbd, 0x95, 0x47, 0xf0, 0xea, 0x72, 0xe4, 0xda, 0xcb, 0x20,
-  0x92, 0xeb, 0xc7, 0x7d, 0x33, 0x1e, 0xfc, 0xdc, 0x1d, 0x95, 0xde, 0xce,
-  0xe7, 0xab, 0x7b, 0xd1, 0x2d, 0x7b, 0x3c, 0x0c, 0x0f, 0xeb, 0xcc, 0x52,
-  0xc2, 0x72, 0x1b, 0x68, 0x6f, 0x6c, 0xa9, 0x4f, 0x44, 0x00, 0x5a, 0x57,
-  0x82, 0x83, 0xd9, 0x22, 0xb8, 0x6d, 0xc4, 0x2f, 0x40, 0xbd, 0x0f, 0x05,
-  0xa9, 0x19, 0x2a, 0x6a, 0xcb, 0x7e, 0xc3, 0xb1, 0x28, 0x38, 0x58, 0x41,
-  0xbf, 0x26, 0xc0, 0xd1, 0x81, 0x39, 0xfb, 0xf6, 0x70, 0xfc, 0xbb, 0xdd,
-  0x3d, 0x8b, 0x81, 0xe3, 0xf0, 0x56, 0x75, 0x86, 0x8f, 0x01, 0x93, 0xd0,
-  0x24, 0x6f, 0xd6, 0x4d, 0xa4, 0xbe, 0x03, 0xfc, 0x1d, 0x1c, 0x3e, 0xe7,
-  0x92, 0x73, 0xfd, 0xcb, 0x88, 0xda, 0xc1, 0xf0, 0x24, 0x7f, 0xc9, 0x62,
-  0x8d, 0x93, 0x4e, 0x1d, 0x9e, 0x36, 0xc8, 0xd9, 0x90, 0x04, 0x48, 0xc3,
-  0xad, 0x5b, 0x0d, 0x80, 0x84, 0x2e, 0xc5, 0x02, 0x11, 0x09, 0xd4, 0xb3,
-  0xc4, 0xfa, 0xb4, 0x12, 0xc6, 0x14, 0xe2, 0xb4, 0x0b, 0xa0, 0xc4, 0x62,
-  0x65, 0x81, 0x32, 0xcd, 0x62, 0x72, 0x2f, 0x58, 0x92, 0x5e, 0xd7, 0x56,
-  0x84, 0x29, 0x42, 0xcb, 0x42, 0x32, 0xa7, 0x6e, 0x92, 0x7b, 0x07, 0x12,
-  0x10, 0xb9, 0x4f, 0xeb, 0xbb, 0xca, 0x58, 0x8b, 0x1c, 0x17, 0xd9, 0x32,
-  0x99, 0x13, 0x9b, 0xff, 0x17, 0xf1, 0x76, 0x0b, 0x85, 0x89, 0x2a, 0xc4,
-  0x4d, 0x72, 0x94, 0x84, 0x87, 0x2e, 0x59, 0x00, 0xb0, 0x5c, 0x2b, 0x3a,
-  0xcc, 0xef, 0x3b, 0xfd, 0xac, 0xbe, 0xde, 0x89, 0x30, 0x60, 0x28, 0x57,
-  0x65, 0x65, 0xc1, 0xf8, 0x0d, 0xb0, 0xad, 0x24, 0x0b, 0xcf, 0x47, 0xcb,
-  0xc6, 0x97, 0x85, 0x19, 0x28, 0x6c, 0x75, 0x4e, 0xa7, 0x37, 0x10, 0xe8,
-  0xd5, 0x5c, 0x14, 0x4e, 0xcf, 0xa2, 0x3c, 0x24, 0xc8, 0xb9, 0x63, 0x17,
-  0x90, 0x7c, 0xc0, 0x36, 0x78, 0x26, 0x4b, 0xbe, 0x0d, 0xd3, 0x4c, 0xbc,
-  0x8e, 0xf0, 0x8f, 0x66, 0xb7, 0x69, 0x91, 0x67, 0x90, 0x51, 0x6e, 0xe3,
-  0x22, 0x85, 0x76, 0x48, 0x63, 0xfd, 0xf0, 0xfa, 0xf8, 0x3c, 0xda, 0xa4,
-  0x8d, 0x9d, 0xdc, 0xaf, 0x81, 0xc2, 0xdb, 0x4e, 0xaa, 0xe9, 0xf6, 0xf2,
-  0x26, 0xdd, 0xce, 0xca, 0x72, 0x36, 0xd9, 0x72, 0x80, 0x0b, 0xe8, 0x0e,
-  0x74, 0x28, 0xb4, 0xbc, 0x0b, 0xf3, 0xc0, 0x8a, 0x33, 0x81, 0x36, 0x69,
-  0x01, 0x5a, 0xbb, 0x50, 0xd2, 0x42, 0x2f, 0x46, 0x65, 0xbe, 0xa5, 0xd5,
-  0x62, 0x6e, 0xe3, 0x74, 0xee, 0xb0, 0xe5, 0x32, 0x69, 0x4a, 0xe2, 0x8a,
-  0x34, 0xbb, 0x9d, 0xfd, 0x15, 0xc9, 0xcc, 0x74, 0xc7, 0xe6, 0x71, 0xd5,
-  0x18, 0x17, 0xc1, 0x7a, 0x94, 0x14, 0x71, 0x0b, 0x51, 0xa1, 0xe5, 0x44,
-  0xb2, 0xab, 0x0b, 0x3d, 0x1e, 0x30, 0x30, 0x3a, 0x2f, 0x8a, 0xf8, 0xce,
-  0xd8, 0x0e, 0xd1, 0x19, 0x54, 0xd6, 0x1b, 0x6d, 0xf7, 0x22, 0x07, 0x05,
-  0x4f, 0xab, 0x8c, 0xc2, 0x06, 0x1e, 0x7b, 0x9f, 0x08, 0xec, 0x72, 0x55,
-  0x3a, 0xfb, 0x68, 0xec, 0xf6, 0x6b, 0xd4, 0x9d, 0xa4, 0xe7, 0xb6, 0x53,
-  0xfd, 0x98, 0x65, 0xd4, 0xdb, 0xef, 0xe1, 0x68, 0x65, 0x80, 0xa2, 0x16,
-  0x21, 0x47, 0x07, 0x85, 0xad, 0xea, 0xfd, 0xd4, 0x8b, 0xa2, 0x96, 0x7d,
-  0x54, 0x8e, 0x53, 0xea, 0x41, 0x8b, 0x39, 0xef, 0xf0, 0x2a, 0x4b, 0xff,
-  0x26, 0xf9, 0xec, 0xee, 0x10, 0xcf, 0x12, 0xc4, 0xd1, 0x03, 0x6b, 0x2a,
-  0x18, 0x42, 0x27, 0x8c, 0x82, 0x1f, 0xd2, 0x4f, 0xed, 0x21, 0x19, 0x3c,
-  0x7f, 0xcc, 0x5f, 0xd3, 0x90, 0xcc, 0x4b, 0x2b, 0x43, 0xe8, 0x30, 0x57,
-  0xd4, 0x07, 0xe4, 0x00, 0xfe, 0x7d, 0x95, 0x81, 0x76, 0x3c, 0x6c, 0x7a,
-  0x3a, 0x56, 0x67, 0xd1, 0xdb, 0x78, 0x1a, 0xd1, 0x1f, 0x3f, 0x40, 0xbe,
-  0xd8, 0xe2, 0x91, 0xd7, 0xe1, 0xb1, 0xec, 0x88, 0x09, 0x67, 0x14, 0x5e,
-  0xd8, 0x85, 0x90, 0x35, 0xb0, 0x03, 0x57, 0x3f, 0x38, 0xc1, 0x35, 0x98,
-  0xa4, 0x60, 0x8e, 0x13, 0x4d, 0xf6, 0x14, 0x13, 0x35, 0x4b, 0x95, 0x71,
-  0x2b, 0x20, 0xc5, 0xbd, 0xbf, 0xed, 0x98, 0x0d, 0x33, 0x0c, 0x17, 0x37,
-  0x0b, 0x09, 0x94, 0x79, 0x31, 0xac, 0xdd, 0xf4, 0x15, 0x4d, 0x95, 0xc1,
-  0x44, 0x04, 0x62, 0xb4, 0xe5, 0xb4, 0xaf, 0xc4, 0xbe, 0x61, 0x7c, 0xdf,
-  0x39, 0x91, 0xc2, 0x81, 0x4a, 0xcc, 0xac, 0xef, 0xcc, 0xa7, 0xcc, 0xfe,
-  0x13, 0x88, 0x1f, 0xb4, 0xff, 0xab, 0x48, 0xff, 0xb7, 0x0b, 0x60, 0xd2,
-  0x24, 0xdc, 0x97, 0x5d, 0x09, 0xde, 0xe3, 0x64, 0x6e, 0x50, 0xe1, 0x96,
-  0x4c, 0x35, 0x2d, 0xee, 0x97, 0x6c, 0x05, 0x93, 0xb7, 0x74, 0x7d, 0x80,
-  0x2f, 0x2d, 0x79, 0x53, 0x21, 0x9e, 0xfc, 0xa8, 0x23, 0x2f, 0xd0, 0xf7,
-  0xa8, 0x49, 0x65, 0xb0, 0x7d, 0x12, 0xf1, 0x54, 0x10, 0xb6, 0xe4, 0x33,
-  0xce, 0xa1, 0x24, 0xaa, 0x9c, 0x49, 0xfa, 0x86, 0xcb, 0xc3, 0x69, 0x05,
-  0xe4, 0x72, 0x3b, 0x65, 0xe8, 0xf4, 0xe6, 0x63, 0xc2, 0x19, 0xdd, 0xcc,
-  0x6c, 0xe1, 0x75, 0xdb, 0x0a, 0x14, 0x1a, 0x7d, 0xbe, 0x85, 0x7f, 0x6d,
-  0xca, 0x83, 0x63, 0x96, 0xd4, 0x50, 0xb1, 0xca, 0xd0, 0x79, 0x7d, 0xa5,
-  0x1c, 0x7b, 0x6f, 0x9e, 0xb3, 0xf3, 0xe3, 0xf1, 0x61, 0xc4, 0xe7, 0xeb,
-  0xf4, 0xdd, 0xc9, 0x9f, 0x59, 0xe0, 0xae, 0x00, 0x82, 0xcd, 0xd6, 0x3a,
-  0xee, 0xbf, 0xeb, 0x62, 0x28, 0x07, 0x3e, 0xbc, 0xba, 0x83, 0x77, 0xc8,
-  0xcd, 0x3c, 0xbc, 0xb3, 0x2d, 0xf6, 0x19, 0x50, 0x4c, 0x2e, 0x70, 0xa2,
-  0x11, 0xc1, 0xa5, 0x2c, 0x85, 0x70, 0xc0, 0xd7, 0xd4, 0x80, 0xad, 0x56,
-  0x6d, 0x18, 0x26, 0x0e, 0x01, 0x09, 0x05, 0x7d, 0xd1, 0x92, 0xd8, 0x6a,
-  0x48, 0xbd, 0xd3, 0x44, 0x1b, 0x49, 0x9c, 0x34, 0xd1, 0x2b, 0x71, 0xe6,
-  0xae, 0x49, 0x3c, 0x80, 0x4c, 0xe8, 0xb2, 0xfe, 0x55, 0x58, 0xe0, 0xc3,
-  0xa7, 0x67, 0x5d, 0xe5, 0xf4, 0x23, 0xc6, 0x40, 0x5c, 0xde, 0x47, 0x5f,
-  0xc7, 0xcc, 0x0f, 0x60, 0xfc, 0x8b, 0x93, 0x45, 0xeb, 0x82, 0x2e, 0x73,
-  0xf6, 0x3b, 0xaa, 0x31, 0x0e, 0xbf, 0x3b, 0x72, 0x06, 0xa4, 0x99, 0x04,
-  0xf1, 0x45, 0xbc, 0x98, 0x33, 0xf6, 0xa7, 0x1b, 0xf5, 0x80, 0xe6, 0x68,
-  0x28, 0xed, 0x58, 0x1b, 0xab, 0x25, 0x31, 0x6a, 0x24, 0x05, 0x0d, 0xa5,
-  0x09, 0x99, 0x5a, 0x33, 0x27, 0x48, 0xa4, 0x16, 0xc4, 0xb7, 0x47, 0x2f,
-  0xf9, 0xdf, 0x35, 0xd3, 0x0e, 0x64, 0x61, 0x38, 0x93, 0x6b, 0xd2, 0x03,
-  0xbf, 0xac, 0x81, 0xa7, 0x9c, 0x8d, 0x51, 0xe3, 0x3c, 0x6d, 0x6b, 0x30,
-  0x47, 0xfb, 0xd2, 0x85, 0x3c, 0x88, 0x5e, 0x1f, 0x9d, 0x83, 0x2f, 0x1d,
-  0xbd, 0xfb, 0x1a, 0x4e, 0x9c, 0x80, 0xd1, 0x73, 0x93, 0xa5, 0xf0, 0x28,
-  0x01, 0xc4, 0x37, 0xd9, 0xb1, 0xd1, 0x1c, 0x5f, 0xec, 0x6c, 0x3f, 0x81,
-  0x00, 0x38, 0xfb, 0x4d, 0x53, 0x9d, 0x62, 0x51, 0x20, 0x0e, 0x0f, 0xc2,
-  0xd9, 0xfd, 0x3a, 0xc5, 0x21, 0x5c, 0x3c, 0x49, 0xcb, 0xce, 0x39, 0x17,
-  0x8c, 0xc8, 0xaa, 0xc3, 0x45, 0xc4, 0x09, 0x28, 0x01, 0x64, 0x02, 0x1f,
-  0x62, 0xbd, 0x5f, 0x23, 0x5f, 0xd4, 0x23, 0xa2, 0x61, 0xd5, 0xb2, 0x54,
-  0xc4, 0x52, 0xb1, 0xfe, 0xe6, 0xd9, 0x2c, 0xb7, 0xa2, 0x9a, 0xce, 0xe0,
-  0x72, 0x66, 0x98, 0xaf, 0xa8, 0x5b, 0xa2, 0x7e, 0x55, 0xb6, 0x6c, 0xeb,
-  0x72, 0x45, 0x98, 0x2c, 0x67, 0x50, 0x3a, 0x58, 0xf1, 0x81, 0x5c, 0xeb,
-  0xb5, 0xa5, 0xa7, 0x3d, 0x55, 0x9d, 0x54, 0xa9, 0xbc, 0xe5, 0x39, 0xe7,
-  0xf3, 0x29, 0xd1, 0x1e, 0x41, 0x9b, 0xad, 0x4d, 0xf5, 0xb8, 0x46, 0x20,
-  0x96, 0x72, 0xbd, 0x0c, 0xaa, 0x41, 0xe0, 0x87, 0xa4, 0xf2, 0x7e, 0x38,
-  0x3c, 0xf8, 0xf0, 0xd5, 0xfb, 0x77, 0xaf, 0x4f, 0x8e, 0xfa, 0x4d, 0x8a,
-  0xbc, 0xd4, 0xc8, 0x88, 0x92, 0xc3, 0x00, 0x14, 0x6e, 0x21, 0xcc, 0xac,
-  0xc6, 0x19, 0x07, 0x6e, 0x94, 0x9c, 0x76, 0xe6, 0xdc, 0xb1, 0x5f, 0xf1,
-  0xa6, 0x59, 0x64, 0x95, 0xcd, 0x80, 0xe3, 0x13, 0x4c, 0xde, 0x10, 0x56,
-  0xd4, 0xfa, 0x66, 0xe3, 0xeb, 0x44, 0x1c, 0x62, 0xe4, 0x99, 0x19, 0x74,
-  0x70, 0xcb, 0x0e, 0x94, 0xa4, 0x66, 0x5f, 0x47, 0xa6, 0xa6, 0xde, 0x73,
-  0xb6, 0x00, 0x56, 0x3d, 0xa6, 0x01, 0x75, 0x6c, 0x77, 0x59, 0x0b, 0x87,
-  0xe7, 0x56, 0x88, 0x92, 0x87, 0x3a, 0xc8, 0x69, 0x51, 0xf5, 0x07, 0x26,
-  0xb8, 0x84, 0x49, 0x3b, 0xb8, 0xe0, 0x5b, 0xd0, 0x1d, 0x9c, 0x68, 0x17,
-  0x0b, 0x5d, 0x8f, 0x92, 0x8f, 0x09, 0xe4, 0x11, 0x7d, 0xeb, 0x50, 0x25,
-  0x83, 0xef, 0xf3, 0x02, 0xf6, 0xd1, 0xd7, 0x5e, 0x42, 0x90, 0x87, 0x48,
-  0x7b, 0x6c, 0xc7, 0x2e, 0xb2, 0x14, 0x10, 0xa3, 0x2e, 0x02, 0x6a, 0xf2,
-  0x9d, 0x1d, 0x5c, 0x7c, 0xd3, 0x75, 0x84, 0xbb, 0x25, 0x36, 0x45, 0x09,
-  0x61, 0x4d, 0x01, 0x48, 0xa8, 0xaa, 0x18, 0x0d, 0xc2, 0x2f, 0x88, 0xaa,
-  0x9b, 0x0c, 0xa3, 0x4b, 0x9f, 0x08, 0xf5, 0x07, 0x11, 0x55, 0x55, 0x56,
-  0xf5, 0x77, 0xa3, 0x11, 0x76, 0x77, 0x5e, 0xad, 0x15, 0x61, 0x24, 0x06,
-  0xb8, 0x64, 0x04, 0xed, 0xdf, 0x96, 0x11, 0x81, 0x0c, 0x1b, 0x8c, 0xc8,
-  0xcb, 0x64, 0xff, 0x7d, 0x96, 0x14, 0xe4, 0x55, 0xb6, 0x4f, 0xa9, 0xf0,
-  0x29, 0xbb, 0xfe, 0xc0, 0x9b, 0x7c, 0xee, 0x06, 0x8f, 0xcc, 0x95, 0x90,
-  0x70, 0xb7, 0x01, 0xe3, 0x84, 0xba, 0x7c, 0x9a, 0x36, 0x87, 0x5b, 0xa8,
-  0x90, 0xb8, 0xdf, 0x8b, 0x36, 0x93, 0xd1, 0x15, 0xb5, 0xd7, 0xe3, 0x76,
-  0x76, 0xf7, 0xf9, 0xdf, 0x3d, 0xfc, 0xfb, 0xa4, 0xb7, 0xd5, 0xb2, 0x78,
-  0x94, 0x60, 0x5f, 0xed, 0xfc, 0x3b, 0x44, 0xfb, 0x04, 0x36, 0x0c, 0xcb,
-  0x9d, 0x4e, 0xd7, 0x11, 0x92, 0x8a, 0x78, 0x5d, 0x90, 0x10, 0x7e, 0x21,
-  0xc0, 0x2a, 0x51, 0x56, 0x6d, 0xc2, 0xb5, 0x37, 0x68, 0x6e, 0x53, 0x49,
-  0xbd, 0x0e, 0xd3, 0x0c, 0xa6, 0x1f, 0x8a, 0xe4, 0x3a, 0x2e, 0x89, 0x47,
-  0xac, 0xaa, 0x94, 0xc3, 0x00, 0x3a, 0xa0, 0xaa, 0xe7, 0x9a, 0x91, 0x44,
-  0x33, 0xd6, 0x8e, 0x1d, 0xe0, 0x89, 0x6d, 0xad, 0x98, 0x1a, 0x59, 0xd4,
-  0xd1, 0x27, 0x86, 0x5a, 0x92, 0xb2, 0x8b, 0x11, 0x9a, 0xe9, 0x8f, 0x1f,
-  0x0b, 0x0b, 0x4a, 0x2d, 0xd8, 0x94, 0x8a, 0xc0, 0x84, 0x28, 0xb9, 0xa4,
-  0x15, 0x4b, 0x05, 0x21, 0x40, 0x52, 0xab, 0x64, 0xd4, 0xed, 0x94, 0x08,
-  0xb9, 0xe3, 0x34, 0xce, 0xca, 0xfd, 0x0d, 0x0e, 0xe2, 0x74, 0x3a, 0x14,
-  0x9d, 0xaa, 0x13, 0xdf, 0xa7, 0xc4, 0xcb, 0x80, 0xbb, 0x0a, 0x38, 0x87,
-  0xf0, 0x76, 0x9d, 0xac, 0xe4, 0x94, 0x19, 0xb1, 0x2b, 0xb4, 0x6c, 0x17,
-  0xde, 0xa7, 0xe3, 0xd3, 0xbf, 0xfa, 0xe4, 0x2c, 0x53, 0x5a, 0x9e, 0xd9,
-  0x72, 0x35, 0x61, 0x65, 0xeb, 0xa5, 0xfc, 0x15, 0xd1, 0x9f, 0xf3, 0x74,
-  0xca, 0x2a, 0xd1, 0xaf, 0x3b, 0x38, 0xfe, 0x7d, 0x77, 0x95, 0xaf, 0xbf,
-  0xcb, 0xed, 0xc0, 0x5c, 0x38, 0x7c, 0x22, 0xd0, 0x95, 0xdd, 0xe7, 0xce,
-  0xad, 0x13, 0x34, 0xaa, 0x77, 0x73, 0x2b, 0xe8, 0x81, 0x85, 0xa7, 0x35,
-  0xc0, 0x75, 0xdf, 0x37, 0x81, 0xa4, 0x63, 0xc0, 0x7e, 0xe7, 0x45, 0xa3,
-  0x14, 0xab, 0xb1, 0xca, 0x26, 0x0a, 0xc0, 0x7a, 0xa9, 0x21, 0x2c, 0x94,
-  0x25, 0xf5, 0x06, 0x52, 0x04, 0x05, 0x56, 0xa4, 0x4f, 0x1e, 0xd4, 0x46,
-  0x5d, 0x9a, 0x7c, 0xde, 0xa2, 0x5a, 0xef, 0xf5, 0x6a, 0xea, 0xa7, 0xb2,
-  0xc3, 0xae, 0x0a, 0x92, 0xa5, 0x7b, 0x48, 0xf0, 0xb4, 0x2c, 0xdf, 0xaa,
-  0x65, 0xfb, 0xe1, 0x1e, 0xd1, 0xa5, 0x63, 0x37, 0x55, 0x5e, 0x0f, 0x85,
-  0x08, 0xae, 0xce, 0x49, 0x5e, 0x54, 0x0d, 0x20, 0x80, 0x16, 0x03, 0x41,
-  0x68, 0x05, 0x2f, 0x05, 0x02, 0xde, 0x0b, 0x45, 0xc7, 0x32, 0x0b, 0x68,
-  0x67, 0xdc, 0xb3, 0x05, 0xdd, 0xa9, 0x7e, 0x6c, 0x85, 0x5d, 0x50, 0xb1,
-  0x84, 0x25, 0x12, 0x1f, 0x36, 0xed, 0x99, 0x8d, 0x42, 0x73, 0x74, 0x41,
-  0xaa, 0x7e, 0x3d, 0xfe, 0x96, 0xd3, 0x59, 0xc5, 0x5d, 0x52, 0xfe, 0xe3,
-  0xef, 0x92, 0xf5, 0xc9, 0xc3, 0x4f, 0x5e, 0xd4, 0x1c, 0x2d, 0x97, 0x88,
-  0x8a, 0xa0, 0x2b, 0xb0, 0xdb, 0xbf, 0xf2, 0x86, 0xd1, 0x9c, 0x4a, 0x8e,
-  0x17, 0xe6, 0x29, 0x6f, 0x72, 0xfd, 0x19, 0xa9, 0xa7, 0x15, 0x43, 0x1b,
-  0xdd, 0x62, 0x83, 0xae, 0xd1, 0x16, 0xd0, 0x21, 0xac, 0xd2, 0x49, 0x5b,
-  0x27, 0xb0, 0x82, 0x38, 0xc8, 0xca, 0xc3, 0xdd, 0x8b, 0xc8, 0x29, 0x8d,
-  0x34, 0x41, 0x95, 0x5b, 0x22, 0xb6, 0xa4, 0x9a, 0x06, 0x5f, 0xce, 0x12,
-  0xad, 0xbe, 0xd7, 0x24, 0x30, 0x29, 0x8e, 0xab, 0x81, 0x33, 0xd4, 0xe7,
-  0x71, 0xa6, 0x91, 0x36, 0x1a, 0x70, 0x0f, 0x73, 0x7c, 0xac, 0xb0, 0x91,
-  0x6e, 0x84, 0x97, 0x82, 0xed, 0xd2, 0xba, 0xf0, 0xd8, 0xf0, 0x75, 0x2b,
-  0x00, 0x6d, 0x0e, 0x67, 0x43, 0xe3, 0x6b, 0x7c, 0xc2, 0x0d, 0xb2, 0xdc,
-  0xde, 0x9e, 0xb8, 0x07, 0x38, 0x97, 0x08, 0x87, 0xa4, 0x65, 0x6f, 0xd3,
-  0x50, 0x0d, 0xd4, 0x5f, 0x14, 0x25, 0xcd, 0x12, 0x5f, 0x78, 0x60, 0xf7,
-  0xae, 0xcc, 0xf1, 0x96, 0x8a, 0x90, 0x12, 0xde, 0x2a, 0x11, 0xd7, 0xcb,
-  0xa2, 0xa5, 0xe4, 0x72, 0xc8, 0xa6, 0x50, 0xb8, 0x94, 0xc2, 0xc6, 0x06,
-  0x54, 0xa2, 0x5f, 0xc7, 0x95, 0x16, 0x58, 0xe3, 0x51, 0x2a, 0xc8, 0xd6,
-  0xde, 0xde, 0x1a, 0xbf, 0xa0, 0xa2, 0xf5, 0xa9, 0x11, 0x90, 0x17, 0x63,
-  0x58, 0xc6, 0x97, 0x89, 0x41, 0x85, 0x70, 0xbd, 0x2e, 0x06, 0x58, 0x9e,
-  0xd2, 0x12, 0x4a, 0xae, 0x0c, 0x3e, 0xcb, 0xda, 0x80, 0x19, 0xe5, 0x6a,
-  0xca, 0x57, 0x23, 0x6b, 0xdf, 0x2e, 0xad, 0x8d, 0xed, 0x51, 0x9a, 0xaf,
-  0x10, 0x95, 0xf3, 0x74, 0x19, 0x59, 0x0c, 0x0c, 0x97, 0xad, 0xd1, 0x9a,
-  0xa0, 0x7c, 0x39, 0x75, 0x84, 0x53, 0x35, 0x40, 0x05, 0xa1, 0x3f, 0xde,
-  0xb2, 0x3f, 0x72, 0x16, 0x6d, 0x36, 0xda, 0x7f, 0xba, 0xb3, 0x8b, 0xe1,
-  0x3e, 0xdd, 0xf9, 0x2c, 0xc4, 0x1c, 0x77, 0x89, 0xd7, 0x8a, 0xab, 0xab,
-  0xa1, 0xda, 0x0f, 0xa7, 0x9d, 0xcd, 0xd9, 0x94, 0x81, 0x75, 0x4d, 0x48,
-  0xc9, 0x02, 0x87, 0xd2, 0x7c, 0xf4, 0x61, 0x9a, 0x49, 0xf6, 0x33, 0x67,
-  0xe6, 0x60, 0x2f, 0x63, 0xd8, 0xe9, 0x9a, 0x08, 0x36, 0x71, 0x19, 0x19,
-  0x3c, 0xcb, 0xba, 0x24, 0x75, 0x85, 0xa5, 0x0c, 0xc2, 0x86, 0x90, 0x68,
-  0x0f, 0x26, 0xd3, 0xd2, 0xb5, 0xbc, 0x98, 0x71, 0xa8, 0x49, 0xe9, 0x17,
-  0xac, 0x77, 0xab, 0x0e, 0x18, 0x17, 0xd5, 0x36, 0xf2, 0xcf, 0x35, 0x50,
-  0x7e, 0xca, 0xe0, 0x71, 0x56, 0xfe, 0xf2, 0xfc, 0xcd, 0x61, 0xa3, 0xb9,
-  0xbd, 0x27, 0x9f, 0x7f, 0xae, 0x83, 0x48, 0x34, 0xaa, 0xd8, 0xe3, 0x17,
-  0xb3, 0x19, 0x4a, 0xf2, 0xf3, 0xc4, 0x66, 0xce, 0x55, 0x0b, 0x91, 0xb9,
-  0x24, 0x81, 0x76, 0x1d, 0x72, 0x52, 0x5f, 0xd7, 0xb4, 0x6f, 0xc5, 0xa2,
-  0x2d, 0xd7, 0x22, 0x8e, 0xb4, 0xae, 0x9e, 0xd6, 0xc7, 0x32, 0x9c, 0x53,
-  0x03, 0x3b, 0x93, 0x22, 0x22, 0x5f, 0xb6, 0xe2, 0x36, 0xaf, 0x24, 0x1d,
-  0xfd, 0x2f, 0x7c, 0x3b, 0x5e, 0x25, 0x55, 0x3b, 0x2f, 0x24, 0xc8, 0xba,
-  0xad, 0x35, 0xbe, 0x16, 0x58, 0xcd, 0xa3, 0x6d, 0x5a, 0x66, 0xcb, 0x4b,
-  0x11, 0x29, 0x0d, 0x3f, 0x29, 0xa8, 0xac, 0xf6, 0x25, 0xc8, 0xe8, 0xa5,
-  0xfa, 0x89, 0x3a, 0x01, 0x30, 0xbf, 0x54, 0xa8, 0x3e, 0x35, 0x91, 0x02,
-  0x43, 0xae, 0xaa, 0x62, 0x2b, 0x6d, 0x0c, 0xc5, 0x9d, 0x73, 0xbb, 0xa1,
-  0x37, 0x2a, 0x88, 0x99, 0x56, 0x02, 0x68, 0x39, 0x07, 0x53, 0x57, 0x04,
-  0xe7, 0xa5, 0x21, 0x00, 0x72, 0xc1, 0x7b, 0xc6, 0x23, 0x95, 0x0c, 0x7b,
-  0x1e, 0x4d, 0xd7, 0x52, 0x94, 0x61, 0xc1, 0xb8, 0x5a, 0x96, 0x81, 0x7f,
-  0x37, 0x58, 0xa8, 0xd6, 0xc9, 0x3f, 0xb2, 0x1a, 0x73, 0x06, 0xa2, 0x0f,
-  0x35, 0xcc, 0xc7, 0x7e, 0xab, 0x3c, 0xe3, 0xa3, 0xd6, 0x07, 0x7a, 0xec,
-  0xa3, 0x3e, 0x3f, 0xd4, 0x3c, 0xf9, 0xfc, 0x52, 0xdf, 0x9c, 0x6b, 0xa1,
-  0xab, 0x09, 0x84, 0x29, 0xc3, 0x71, 0x60, 0x99, 0xe2, 0xfa, 0xe1, 0xae,
-  0x66, 0x6b, 0xd0, 0xe2, 0xa4, 0x48, 0x2f, 0xb1, 0xb3, 0xfd, 0x4e, 0x0b,
-  0xc0, 0xf0, 0x8d, 0x1b, 0xe9, 0xab, 0x2f, 0x6b, 0xad, 0xdd, 0xdd, 0x8d,
-  0x16, 0xf7, 0xf6, 0x5d, 0x59, 0xab, 0x38, 0xee, 0xd3, 0xf0, 0x14, 0x55,
-  0x58, 0x48, 0xca, 0x27, 0xa2, 0x87, 0x75, 0xa5, 0x7c, 0x4d, 0x48, 0x86,
-  0xf5, 0x89, 0x4b, 0x47, 0xbd, 0x5d, 0x4e, 0x0f, 0x3d, 0x4d, 0x28, 0x86,
-  0xcc, 0xca, 0xe2, 0x24, 0x27, 0x72, 0x33, 0x42, 0xe2, 0x54, 0xde, 0xaa,
-  0x58, 0x4d, 0xab, 0xf6, 0x6d, 0xee, 0x0b, 0x5a, 0x0b, 0x14, 0x6e, 0x15,
-  0x04, 0x12, 0x4a, 0x25, 0xe0, 0xfa, 0x71, 0xe7, 0x93, 0xc5, 0x03, 0xb2,
-  0x5a, 0xe8, 0xcd, 0x93, 0x08, 0x34, 0xdc, 0xfe, 0x40, 0x02, 0x90, 0x35,
-  0xbf, 0xd4, 0xe7, 0x3e, 0xae, 0x5d, 0xca, 0xde, 0x5d, 0x32, 0x79, 0xf5,
-  0x25, 0x6a, 0x2a, 0x03, 0x4d, 0x4b, 0x50, 0x75, 0x99, 0x8e, 0xb6, 0xf9,
-  0xcf, 0x5e, 0xc4, 0x4a, 0x7f, 0xc7, 0x4a, 0x12, 0xfd, 0xad, 0x6b, 0x31,
-  0x40, 0x2b, 0x08, 0x5a, 0xbb, 0xcc, 0xf3, 0xb5, 0x8d, 0x59, 0xd5, 0x1b,
-  0xac, 0x44, 0x10, 0x70, 0x2a, 0xf1, 0x9f, 0x9e, 0xac, 0x84, 0x94, 0xb0,
-  0x43, 0xb5, 0xa3, 0xd5, 0x95, 0xce, 0x08, 0xe5, 0x53, 0x6e, 0x44, 0x4b,
-  0x6d, 0x7a, 0xa5, 0x25, 0x0b, 0x59, 0x8a, 0x5a, 0xbf, 0x20, 0xfc, 0xf4,
-  0xab, 0x2f, 0x01, 0x34, 0xc4, 0xbf, 0xfe, 0xc9, 0xbd, 0xcd, 0xff, 0x10,
-  0x5d, 0xd2, 0xe9, 0x5e, 0x3b, 0x11, 0x76, 0xad, 0xd8, 0xf3, 0xdb, 0xa2,
-  0xd3, 0x99, 0xfa, 0xd4, 0x1f, 0xf4, 0x59, 0xaa, 0xec, 0xff, 0xa9, 0x0f,
-  0xcf, 0x98, 0x99, 0xe0, 0x50, 0xeb, 0x41, 0x0a, 0x5c, 0xe5, 0xad, 0xe8,
-  0x2f, 0x0e, 0x96, 0xd5, 0x5a, 0xdd, 0x3c, 0xf0, 0xc7, 0xc6, 0xfc, 0x53,
-  0xcf, 0x8d, 0xfa, 0xa7, 0x9e, 0x1f, 0xf7, 0x4f, 0x3d, 0x3f, 0xf2, 0x9f,
-  0x7a, 0xbf, 0x62, 0x47, 0xfb, 0xd2, 0xbc, 0x6f, 0x3d, 0x68, 0x3c, 0x68,
-  0xbb, 0xd7, 0x5f, 0xd7, 0xb4, 0x77, 0x58, 0xa4, 0x76, 0xba, 0xfc, 0x0a,
-  0xf1, 0xad, 0xab, 0xab, 0x20, 0xf5, 0xa8, 0xa4, 0x50, 0xa6, 0xcc, 0x1b,
-  0x4a, 0x7c, 0xcb, 0x8b, 0x1c, 0x3c, 0xc1, 0x6b, 0xca, 0x12, 0x73, 0x39,
-  0x67, 0xfd, 0x3b, 0x40, 0xeb, 0xb2, 0x4e, 0xdc, 0x4a, 0x9b, 0xff, 0xb1,
-  0xe5, 0x94, 0x76, 0xaf, 0x77, 0x82, 0x6c, 0x5d, 0xae, 0x0a, 0x09, 0x7e,
-  0x10, 0x9e, 0x29, 0xb9, 0xd7, 0x86, 0x08, 0xa8, 0x7d, 0xbd, 0x3d, 0x78,
-  0xf7, 0xfe, 0xe0, 0xe4, 0xc1, 0x38, 0xbc, 0x30, 0x60, 0xc6, 0x59, 0x6f,
-  0x21, 0xb2, 0x87, 0x9a, 0x2a, 0x47, 0x22, 0xf3, 0x15, 0xce, 0xc5, 0x87,
-  0x7f, 0xe4, 0x1b, 0xfd, 0xe7, 0xce, 0x98, 0xf5, 0xef, 0x55, 0x90, 0x7d,
-  0x13, 0x02, 0xff, 0xdf, 0x08, 0xff, 0xe9, 0xd9, 0xfb, 0xfc, 0x7a, 0x4f,
-  0x9d, 0x1f, 0xae, 0x98, 0x5f, 0x57, 0xcd, 0x28, 0xc7, 0xf7, 0x59, 0x74,
-  0x31, 0x2b, 0x07, 0x54, 0xaa, 0x41, 0x50, 0x9d, 0x18, 0xaa, 0x3c, 0x27,
-  0x02, 0x5d, 0x5e, 0xae, 0x75, 0xe4, 0x1c, 0x1c, 0x1e, 0xfa, 0x4c, 0x86,
-  0x7a, 0x4e, 0x74, 0x2d, 0x92, 0xeb, 0x1f, 0x6f, 0x1c, 0xc3, 0xc2, 0xcd,
-  0x51, 0x7e, 0x8f, 0xa3, 0xbd, 0x87, 0x55, 0x2e, 0x89, 0x44, 0x2f, 0x75,
-  0x34, 0x5f, 0x74, 0xae, 0x23, 0x0d, 0x20, 0x14, 0x33, 0xad, 0x0c, 0x0b,
-  0x0a, 0xce, 0x8c, 0xd5, 0x49, 0x71, 0x76, 0x00, 0xfc, 0x45, 0xcd, 0xaa,
-  0x51, 0x75, 0xa1, 0x15, 0xf5, 0xa9, 0xf1, 0x91, 0x80, 0x37, 0xb7, 0xf9,
-  0x1b, 0x80, 0x88, 0xe9, 0x9c, 0x56, 0x93, 0xfc, 0x62, 0xb5, 0x20, 0xf2,
-  0x25, 0x81, 0x63, 0xd6, 0x2f, 0x1f, 0x89, 0xcc, 0xb1, 0xdd, 0x65, 0x43,
-  0xb2, 0x44, 0x0b, 0xa9, 0x3c, 0x18, 0x77, 0x06, 0x21, 0x0d, 0xba, 0x0d,
-  0x3c, 0xbd, 0xf1, 0xf1, 0xc5, 0x11, 0xed, 0xce, 0xfb, 0x8b, 0x6f, 0x7a,
-  0xaa, 0x52, 0x34, 0x13, 0x05, 0x01, 0x6a, 0x52, 0x15, 0x29, 0x2d, 0xbd,
-  0x25, 0x3f, 0x14, 0xc2, 0x72, 0xdb, 0xc8, 0xd0, 0x0d, 0x5f, 0x78, 0x63,
-  0xa3, 0x9f, 0x8d, 0x9e, 0x6d, 0x35, 0x36, 0x66, 0x3d, 0x5a, 0x5c, 0xb3,
-  0x7c, 0x92, 0xd2, 0xb4, 0xc2, 0x95, 0x71, 0xc8, 0xda, 0xb6, 0x07, 0x13,
-  0x16, 0x99, 0x39, 0x36, 0xe7, 0x5b, 0x47, 0x56, 0xb3, 0xcf, 0xf1, 0x76,
-  0x0a, 0x39, 0x30, 0xd5, 0x1c, 0x9a, 0x90, 0x0a, 0x33, 0x61, 0x91, 0x50,
-  0x97, 0x50, 0xd0, 0x4e, 0xfb, 0x33, 0xb3, 0x21, 0x23, 0xa8, 0x72, 0xd1,
-  0x8e, 0xb0, 0x5a, 0x43, 0xdb, 0xc8, 0x60, 0x02, 0x84, 0x4f, 0xdc, 0xe8,
-  0x44, 0x58, 0x8b, 0x16, 0xa9, 0xe0, 0x52, 0x04, 0x70, 0x6d, 0x4d, 0x4a,
-  0x56, 0x9d, 0xec, 0x47, 0xf9, 0xd9, 0xcd, 0x03, 0x20, 0x1e, 0x70, 0x75,
-  0x37, 0x08, 0x0b, 0xfa, 0x06, 0x46, 0xa3, 0x01, 0xa9, 0xbe, 0xa0, 0x05,
-  0x54, 0x15, 0xf1, 0x02, 0x66, 0x51, 0x2b, 0x1d, 0x89, 0x5a, 0xdb, 0x1c,
-  0x6f, 0xb9, 0x82, 0x62, 0x2c, 0x1a, 0x6b, 0x6b, 0x1c, 0x90, 0xdc, 0x08,
-  0x40, 0x0e, 0x52, 0xd9, 0x15, 0x09, 0xa0, 0x0b, 0x95, 0x27, 0x38, 0x89,
-  0xed, 0x8b, 0x16, 0xdc, 0x6f, 0x7a, 0x37, 0xeb, 0xce, 0xb1, 0x14, 0x01,
-  0x48, 0xf2, 0x19, 0x7c, 0x01, 0xf9, 0xc3, 0xef, 0x5f, 0x37, 0x4a, 0xae,
-  0x62, 0x56, 0x20, 0x04, 0xc9, 0xf7, 0xce, 0xd6, 0xe5, 0xde, 0x9a, 0x37,
-  0x87, 0x68, 0x49, 0x6a, 0x11, 0xcc, 0x92, 0x64, 0xe9, 0x70, 0x03, 0x51,
-  0x03, 0x43, 0xaa, 0x6f, 0xd0, 0x91, 0x63, 0x03, 0xde, 0x3d, 0xc0, 0xa5,
-  0xee, 0xd7, 0x8c, 0x4e, 0xd9, 0x40, 0x0d, 0x9d, 0x9f, 0x51, 0x7c, 0x49,
-  0xd3, 0x8a, 0x76, 0x3f, 0x7b, 0xf2, 0x79, 0x54, 0x72, 0x3e, 0x4f, 0x1a,
-  0x2e, 0x99, 0xa0, 0x6b, 0xac, 0xcf, 0xaa, 0x56, 0xb9, 0xd9, 0xcc, 0xa3,
-  0x9a, 0x63, 0x46, 0xea, 0x72, 0x7e, 0x97, 0xe0, 0xe6, 0xd2, 0x7c, 0x97,
-  0x76, 0x92, 0x2d, 0x2d, 0xa2, 0x55, 0x93, 0x17, 0xdb, 0x19, 0xd6, 0x49,
-  0x8c, 0x30, 0xa3, 0x80, 0x32, 0x67, 0xc4, 0x74, 0x18, 0xd1, 0x98, 0xd8,
-  0xc3, 0xf9, 0xd1, 0xc5, 0x39, 0xfd, 0x18, 0x5f, 0x9c, 0x9e, 0xaf, 0x49,
-  0x85, 0xaf, 0xa6, 0x60, 0x7b, 0xbc, 0x68, 0x4c, 0x35, 0x8c, 0x16, 0x6b,
-  0x91, 0x26, 0x01, 0xbf, 0x80, 0xe7, 0x49, 0x58, 0x48, 0xd9, 0x09, 0xd0,
-  0x15, 0xe0, 0x74, 0x95, 0xf5, 0x32, 0xa9, 0x97, 0xc4, 0xcb, 0x1f, 0x9c,
-  0x98, 0xec, 0xf9, 0xc3, 0x14, 0x82, 0x09, 0x33, 0x31, 0xf2, 0x8c, 0x1d,
-  0xd3, 0xc6, 0x68, 0xb5, 0x86, 0x9a, 0x37, 0xe1, 0xab, 0x25, 0x63, 0x0d,
-  0x85, 0x08, 0x59, 0x49, 0xb9, 0xba, 0x5a, 0x09, 0x92, 0x9e, 0x65, 0x69,
-  0xf5, 0xd8, 0x57, 0x74, 0xe3, 0xd0, 0x88, 0x1f, 0xa1, 0xdf, 0xb8, 0x74,
-  0x26, 0x1c, 0xbe, 0x32, 0xf3, 0x45, 0x22, 0xd2, 0xbc, 0x98, 0xe4, 0x8d,
-  0xeb, 0xc8, 0x3d, 0x21, 0x30, 0x20, 0x51, 0x57, 0x92, 0xa0, 0x83, 0xfe,
-  0xe2, 0x5d, 0xee, 0xbb, 0x64, 0xaf, 0x5c, 0xa9, 0x43, 0xf6, 0x85, 0x04,
-  0x9c, 0x79, 0x05, 0x4c, 0xb5, 0xbe, 0x8d, 0xaa, 0xef, 0x48, 0xad, 0xc1,
-  0x95, 0x77, 0x9b, 0x5c, 0x99, 0x33, 0xe5, 0xba, 0x39, 0x0b, 0xe2, 0x56,
-  0x2c, 0xdf, 0xca, 0x55, 0xc6, 0x70, 0xf8, 0x38, 0x21, 0x1c, 0xf3, 0x99,
-  0x3e, 0xd5, 0x19, 0xe9, 0x6f, 0xf5, 0x70, 0x3d, 0x6d, 0xeb, 0x96, 0x4b,
-  0xf2, 0xda, 0xaa, 0xc9, 0x4d, 0x6b, 0x42, 0x52, 0x9b, 0x7f, 0x76, 0xd4,
-  0xab, 0x88, 0x86, 0x67, 0xdb, 0x41, 0x82, 0xa0, 0xe2, 0xd9, 0xd5, 0x66,
-  0xbe, 0xdb, 0x2d, 0x78, 0xac, 0xc3, 0xb6, 0x69, 0x4a, 0x1f, 0x30, 0xe8,
-  0x8a, 0x3c, 0x59, 0xa8, 0x0c, 0xd2, 0x9d, 0xd5, 0x1b, 0xbd, 0xcf, 0x34,
-  0xbd, 0x36, 0xf3, 0x55, 0x4c, 0x6c, 0x11, 0x39, 0x73, 0x9c, 0x0d, 0xc3,
-  0x72, 0x3b, 0xcd, 0x72, 0x89, 0x51, 0xe4, 0x45, 0xe8, 0x88, 0xc4, 0x82,
-  0xc0, 0x8a, 0xa8, 0x33, 0xbb, 0x52, 0xb4, 0x3d, 0x35, 0x01, 0x14, 0x4c,
-  0xd8, 0xcd, 0xe4, 0x48, 0x38, 0xb5, 0x5a, 0x47, 0xe9, 0x2c, 0xdc, 0x44,
-  0x61, 0x71, 0x10, 0xc3, 0x3d, 0x6f, 0xa8, 0x24, 0xa4, 0x54, 0x92, 0xee,
-  0x2c, 0xbd, 0x51, 0xe6, 0xda, 0x36, 0x50, 0x63, 0x50, 0x92, 0x7d, 0xa8,
-  0x15, 0x45, 0xea, 0x49, 0x7d, 0x26, 0xc2, 0x35, 0xef, 0x33, 0xc6, 0x7f,
-  0x07, 0xbd, 0x0d, 0xd3, 0xe5, 0xe3, 0x49, 0x98, 0x96, 0xfe, 0xc9, 0xc3,
-  0xf2, 0x69, 0x0d, 0x21, 0xf7, 0x29, 0x57, 0x57, 0x57, 0xc8, 0xa9, 0x49,
-  0xdb, 0xf0, 0x05, 0x28, 0x85, 0xac, 0xe6, 0x41, 0x05, 0xb1, 0x21, 0x31,
-  0x8b, 0x07, 0xed, 0xa6, 0x07, 0x3b, 0x30, 0x7a, 0x53, 0x52, 0xf6, 0x80,
-  0x90, 0x6b, 0xa3, 0x6b, 0xd8, 0x9a, 0x2c, 0x9b, 0x11, 0x62, 0x20, 0x0f,
-  0x91, 0x24, 0x1a, 0xc0, 0x36, 0xd2, 0x78, 0xdd, 0x80, 0xdb, 0x41, 0x71,
-  0x8a, 0xee, 0x20, 0x92, 0x8c, 0x9d, 0x29, 0xab, 0xd2, 0x1a, 0xf6, 0x55,
-  0xa3, 0xe0, 0xa7, 0xa3, 0xbd, 0xad, 0x07, 0x73, 0x3a, 0x58, 0x6e, 0x67,
-  0x24, 0x2c, 0x49, 0xf6, 0x23, 0x15, 0x4b, 0x12, 0xae, 0x25, 0x65, 0xb7,
-  0x90, 0xad, 0xf5, 0x25, 0xb2, 0x30, 0x8b, 0x36, 0x7c, 0x3a, 0xaf, 0x50,
-  0x73, 0xdf, 0xe8, 0x98, 0x7d, 0x42, 0x5a, 0x3a, 0x84, 0xdf, 0x38, 0x3a,
-  0xa3, 0xbb, 0xc5, 0x2d, 0x71, 0x90, 0xa9, 0x4a, 0xef, 0x40, 0xcd, 0xe0,
-  0x61, 0x6c, 0x35, 0x2f, 0x42, 0x06, 0x68, 0x45, 0x44, 0xcb, 0x1b, 0x6f,
-  0x92, 0x67, 0xa5, 0x6f, 0x41, 0x1f, 0xb2, 0x5b, 0xa0, 0xa0, 0x61, 0x00,
-  0x87, 0x43, 0x0a, 0xbd, 0xe1, 0xd0, 0xb2, 0xed, 0xd9, 0xf8, 0xe8, 0x46,
-  0xe7, 0xfd, 0x8c, 0xb5, 0xf5, 0x17, 0x00, 0x07, 0xd9, 0xd1, 0xc9, 0x2c,
-  0xc3, 0x3a, 0x28, 0xab, 0xa5, 0x6a, 0x3f, 0xb3, 0xfc, 0x2e, 0x43, 0x69,
-  0x80, 0xa8, 0x4d, 0x4d, 0x18, 0x3e, 0x9f, 0x9d, 0x46, 0x5e, 0xca, 0xde,
-  0xce, 0xe8, 0x63, 0x93, 0x9d, 0x96, 0xe5, 0x7c, 0x38, 0x9d, 0x4e, 0x1f,
-  0xe0, 0xa8, 0x87, 0x87, 0x87, 0xf4, 0xc1, 0x21, 0x90, 0x12, 0x18, 0x21,
-  0x14, 0x23, 0x3d, 0xbc, 0x66, 0x53, 0xcd, 0x7c, 0x2b, 0x1a, 0x5f, 0xaf,
-  0x18, 0xb3, 0x8a, 0x2b, 0xb7, 0x33, 0x55, 0x8c, 0xc7, 0x27, 0xdb, 0x17,
-  0x27, 0xe3, 0xa6, 0xd3, 0x2b, 0xbe, 0x67, 0x5d, 0x0f, 0x3a, 0x5d, 0x5d,
-  0x73, 0x11, 0xc1, 0x0d, 0x18, 0x65, 0x16, 0xe7, 0x6d, 0x74, 0x25, 0x3d,
-  0x74, 0xa6, 0x23, 0xad, 0xb2, 0xa0, 0x28, 0x91, 0x6a, 0x56, 0x59, 0x92,
-  0x21, 0xe8, 0xd1, 0x21, 0x29, 0x6b, 0x75, 0xfa, 0x77, 0x07, 0x17, 0x5c,
-  0xac, 0xb0, 0xd2, 0x4c, 0xaa, 0xee, 0x14, 0x12, 0x07, 0x70, 0x87, 0xc4,
-  0xe7, 0x38, 0x00, 0xed, 0xb7, 0x3b, 0x00, 0xac, 0x28, 0x2d, 0x8d, 0x35,
-  0x8e, 0x34, 0x86, 0xbe, 0x03, 0x91, 0x58, 0x57, 0x74, 0xe8, 0x6e, 0x20,
-  0xc9, 0x42, 0xe0, 0x3f, 0xcb, 0xc6, 0x86, 0xec, 0x3e, 0x6f, 0xdf, 0x6f,
-  0xb5, 0xd7, 0x7f, 0x94, 0x2c, 0xe0, 0x6d, 0xed, 0xf5, 0xe7, 0x5f, 0xbf,
-  0x4d, 0x89, 0x72, 0x0b, 0x7e, 0x4c, 0x48, 0xe3, 0xa2, 0x23, 0x34, 0x37,
-  0x60, 0xbb, 0xae, 0x8c, 0x84, 0x64, 0xbe, 0x28, 0x56, 0x63, 0x49, 0xdb,
-  0x3d, 0x43, 0xf5, 0x1c, 0xb9, 0x06, 0x5c, 0x3e, 0xda, 0x5d, 0xdc, 0x62,
-  0x1b, 0xc6, 0x29, 0x02, 0x04, 0x91, 0x9c, 0x98, 0x8b, 0x04, 0x2d, 0xb9,
-  0xe6, 0x8b, 0x64, 0x39, 0xbf, 0x77, 0x62, 0x9a, 0x36, 0xbf, 0x4e, 0x7f,
-  0x0b, 0xa5, 0xfd, 0x30, 0x41, 0xda, 0xc6, 0x58, 0xd6, 0x5b, 0x41, 0x47,
-  0x71, 0xda, 0x69, 0x78, 0x8e, 0xb5, 0xe7, 0x46, 0xb5, 0xc0, 0xf6, 0x0e,
-  0xed, 0x75, 0xee, 0x90, 0x50, 0x69, 0xf7, 0x7e, 0x9c, 0xeb, 0xb1, 0xb7,
-  0xd3, 0xa0, 0x51, 0x90, 0x46, 0x63, 0xf3, 0xfc, 0x8a, 0xa3, 0xa3, 0x05,
-  0x7b, 0x04, 0x8b, 0x64, 0xc5, 0x32, 0x9a, 0x76, 0x09, 0xa1, 0x60, 0x2d,
-  0x16, 0x5a, 0xf7, 0x2c, 0x89, 0x2c, 0xc2, 0x3c, 0xc5, 0xd1, 0xbd, 0x01,
-  0x1a, 0xb9, 0xe4, 0xfd, 0x8e, 0xfd, 0x70, 0xc1, 0x15, 0x53, 0x0e, 0xa9,
-  0x86, 0x4b, 0xb4, 0x34, 0x64, 0x07, 0xa9, 0xb4, 0xa2, 0xd1, 0x14, 0x56,
-  0x95, 0x5c, 0x55, 0xd3, 0x75, 0x25, 0xe2, 0x75, 0x86, 0xed, 0x55, 0xdb,
-  0xd9, 0xd2, 0x2b, 0x9b, 0xe4, 0x0a, 0x62, 0x63, 0xde, 0xfc, 0xa1, 0x32,
-  0x61, 0x2b, 0xd3, 0x7f, 0x22, 0x80, 0xe0, 0xb7, 0x86, 0x39, 0x78, 0xb9,
-  0xaa, 0x78, 0xd6, 0x1a, 0x55, 0x56, 0x63, 0xf1, 0x6c, 0x9e, 0xd7, 0x48,
-  0x76, 0x71, 0x91, 0x3d, 0x58, 0x8f, 0x37, 0x1a, 0xab, 0x39, 0x59, 0xf3,
-  0xd0, 0xe1, 0x0c, 0x0b, 0xe1, 0x09, 0x3d, 0x54, 0xb0, 0x36, 0x7a, 0xd9,
-  0x19, 0xb8, 0x2e, 0x31, 0x69, 0x1c, 0x17, 0x44, 0x7a, 0x26, 0x2f, 0x94,
-  0x5e, 0x4d, 0x73, 0xce, 0x32, 0x60, 0x39, 0x69, 0x14, 0x9d, 0x24, 0xe2,
-  0x91, 0xea, 0x7f, 0xd9, 0x17, 0x2e, 0xdd, 0x7f, 0xd9, 0x8f, 0x34, 0xf0,
-  0xbf, 0x5d, 0x59, 0x8a, 0x6f, 0x0c, 0xab, 0x6c, 0xd0, 0x17, 0x93, 0x73,
-  0xdf, 0x86, 0xa0, 0x42, 0xbb, 0x0c, 0x0b, 0x71, 0x3c, 0x99, 0xa6, 0xe7,
-  0x90, 0x8c, 0xc7, 0x12, 0x51, 0x87, 0xfe, 0x5a, 0x87, 0xb0, 0x59, 0x4a,
-  0x9e, 0x1a, 0xfb, 0x89, 0x18, 0xce, 0x59, 0xa6, 0x2d, 0x9b, 0x5b, 0x24,
-  0xfd, 0x12, 0xd1, 0x01, 0x52, 0x3b, 0xa8, 0x2b, 0xf4, 0xc7, 0xb2, 0x96,
-  0x12, 0x57, 0xe9, 0x57, 0xc7, 0x82, 0xc4, 0xcf, 0xe9, 0x14, 0x71, 0x14,
-  0x10, 0x0e, 0xe9, 0x5b, 0x92, 0x6a, 0xe4, 0xa4, 0xf3, 0xbc, 0xd9, 0x58,
-  0xfc, 0xb2, 0x19, 0xb4, 0x78, 0x99, 0xc4, 0xbc, 0x9b, 0x25, 0x33, 0xf9,
-  0x26, 0xaa, 0xf4, 0xf0, 0x8a, 0x25, 0xc2, 0xab, 0x79, 0x3e, 0xc9, 0x2f,
-  0x2f, 0x1f, 0x30, 0x45, 0x0a, 0x34, 0x02, 0xda, 0x10, 0x12, 0xed, 0x71,
-  0x6a, 0x20, 0xbf, 0x37, 0xe1, 0xf1, 0x69, 0x5d, 0xc9, 0x91, 0x58, 0x64,
-  0x80, 0x8f, 0xd9, 0x92, 0x02, 0x42, 0xe1, 0x79, 0xe0, 0xf2, 0x17, 0x2d,
-  0xeb, 0x89, 0x9a, 0x33, 0x39, 0x53, 0x03, 0x5c, 0x3c, 0x9a, 0x66, 0x19,
-  0xfd, 0xc7, 0xdf, 0x7f, 0xfc, 0xb9, 0x23, 0x59, 0x80, 0x35, 0x1b, 0x8d,
-  0xd1, 0x46, 0x6c, 0x98, 0x60, 0x0f, 0x41, 0x85, 0x60, 0x31, 0xc4, 0x97,
-  0xdf, 0xd1, 0xd2, 0xc0, 0xa3, 0x20, 0x2d, 0xac, 0xcd, 0xe0, 0x98, 0x91,
-  0x5b, 0x87, 0x00, 0xba, 0xcc, 0x2b, 0x8b, 0x05, 0x60, 0xec, 0x25, 0x60,
-  0xcf, 0x79, 0x6f, 0x9a, 0xc3, 0x75, 0x11, 0xad, 0xbd, 0x7d, 0xa0, 0x1c,
-  0x3c, 0x97, 0x73, 0xaf, 0x2a, 0x9f, 0x7d, 0x7f, 0x7e, 0xec, 0x74, 0xba,
-  0x60, 0x27, 0xbe, 0xc6, 0x4e, 0xb4, 0x96, 0xcd, 0xe1, 0xc1, 0xd6, 0x4b,
-  0x3e, 0x78, 0x58, 0x3c, 0x54, 0x8b, 0x13, 0xe6, 0x53, 0x83, 0xb1, 0x46,
-  0x81, 0xde, 0xd9, 0xa0, 0x13, 0xb1, 0x78, 0xd0, 0x04, 0x57, 0xcd, 0x8b,
-  0x36, 0x64, 0x66, 0x90, 0xfa, 0x9c, 0xba, 0x18, 0x88, 0x66, 0xf8, 0xc9,
-  0x91, 0xc7, 0x7a, 0x0f, 0xbc, 0x61, 0x06, 0x1b, 0xe7, 0x71, 0xe0, 0x01,
-  0xbe, 0xc7, 0xe4, 0x7f, 0x87, 0x92, 0xb8, 0x06, 0x88, 0xda, 0xa9, 0x15,
-  0x5d, 0x78, 0x54, 0x55, 0x61, 0x5d, 0x06, 0xae, 0xe6, 0x57, 0xf0, 0xc4,
-  0xd2, 0x3f, 0xfa, 0xff, 0xd6, 0xf7, 0x58, 0x96, 0x1d, 0xe9, 0x4f, 0x2e,
-  0x75, 0xbb, 0xa3, 0xf2, 0xe8, 0xf0, 0x78, 0xe0, 0x47, 0xea, 0x3b, 0xb4,
-  0x79, 0x4c, 0x3a, 0x50, 0xdc, 0xd7, 0x0d, 0xe3, 0x9b, 0xa3, 0x83, 0xd7,
-  0x36, 0xd9, 0x7f, 0x0a, 0x20, 0x94, 0x37, 0x04, 0x4d, 0x12, 0x01, 0xab,
-  0x5f, 0x99, 0x2e, 0x89, 0x4d, 0xb1, 0xbb, 0x03, 0x24, 0x42, 0xd2, 0x36,
-  0xd7, 0x2f, 0x61, 0x92, 0x6d, 0xab, 0x8e, 0x6a, 0x75, 0x5a, 0xab, 0x3c,
-  0x06, 0x86, 0x39, 0x33, 0xf2, 0xf1, 0xe1, 0x15, 0x16, 0x17, 0xd0, 0x6f,
-  0x98, 0xda, 0xfc, 0x52, 0x7e, 0xae, 0xb9, 0x14, 0x8e, 0x00, 0xbf, 0xab,
-  0x8f, 0xd2, 0x5a, 0x2a, 0x5e, 0xa4, 0xf1, 0x5d, 0xa3, 0x19, 0xa8, 0x5c,
-  0x16, 0x5c, 0xd5, 0x45, 0x7c, 0x1a, 0x5c, 0x6d, 0xb2, 0xc3, 0x9f, 0x15,
-  0x5b, 0xde, 0x58, 0x0a, 0x50, 0x02, 0x5d, 0xc1, 0xb1, 0x24, 0xe8, 0xb4,
-  0xec, 0x84, 0xde, 0x33, 0x67, 0x53, 0x80, 0x85, 0x4f, 0x6a, 0x19, 0xe3,
-  0xa9, 0x90, 0x72, 0x4d, 0x72, 0x8a, 0x0d, 0x98, 0x1f, 0xbb, 0x56, 0x0f,
-  0x2f, 0x34, 0x38, 0x18, 0xbd, 0x5b, 0x15, 0x09, 0xb0, 0x79, 0x2e, 0xb1,
-  0xc6, 0xd9, 0x35, 0x04, 0xf6, 0x56, 0x14, 0x42, 0xb3, 0xb9, 0x0e, 0xc4,
-  0x99, 0xce, 0xb8, 0x54, 0x45, 0x66, 0x99, 0xd8, 0x9d, 0x85, 0xc2, 0x6b,
-  0xce, 0x8c, 0xe6, 0x89, 0x73, 0x7d, 0x20, 0x2b, 0x3e, 0x94, 0xc3, 0xdb,
-  0xbb, 0xce, 0x6b, 0x27, 0xa0, 0x8c, 0xc8, 0xba, 0xe6, 0x9b, 0x64, 0x7a,
-  0x93, 0x22, 0xb2, 0xaf, 0x5a, 0x81, 0xc7, 0xc7, 0x59, 0x38, 0x4a, 0x07,
-  0x3f, 0x34, 0xcb, 0xb1, 0xd2, 0xdd, 0x44, 0x64, 0x32, 0x25, 0x03, 0xc2,
-  0xd8, 0x68, 0x34, 0xaf, 0xdc, 0xf0, 0xba, 0x8d, 0x6f, 0xa3, 0x10, 0xa4,
-  0xa0, 0x1f, 0x25, 0x45, 0x2b, 0x1d, 0x27, 0x41, 0x34, 0x1f, 0x14, 0x2f,
-  0x98, 0xc2, 0xb4, 0xb0, 0x30, 0x28, 0x9c, 0xcb, 0x71, 0xb1, 0xac, 0xe2,
-  0xf0, 0x67, 0x78, 0xca, 0xba, 0x3c, 0xc4, 0xef, 0xaf, 0xd2, 0xdb, 0x4e,
-  0xfb, 0xb2, 0x0d, 0x0c, 0xd6, 0x69, 0x1b, 0x85, 0x83, 0x7a, 0x75, 0x86,
-  0x3c, 0x41, 0x0f, 0x8b, 0x18, 0x4d, 0xdb, 0x6d, 0x5f, 0x3b, 0xa7, 0x9a,
-  0xaf, 0xb0, 0x98, 0xaf, 0xfa, 0x7d, 0x22, 0xfc, 0xa8, 0xf7, 0x4d, 0x5e,
-  0x56, 0xfb, 0x3d, 0x07, 0x2f, 0x54, 0x26, 0x2a, 0x59, 0xd4, 0x29, 0x47,
-  0xe1, 0xa7, 0x5b, 0x61, 0x59, 0xb8, 0xdb, 0xe5, 0xfc, 0xd1, 0xc5, 0xa2,
-  0x0f, 0x9b, 0x0b, 0x52, 0x73, 0x9a, 0x1d, 0x42, 0x04, 0x43, 0xf7, 0x2e,
-  0x52, 0x1d, 0x02, 0x40, 0x10, 0x9a, 0x5c, 0xaa, 0xc4, 0x90, 0x7e, 0x18,
-  0x1e, 0xa2, 0xf3, 0xe1, 0x37, 0x68, 0xef, 0x4f, 0x3d, 0xa7, 0x76, 0x37,
-  0xbf, 0xda, 0xef, 0xad, 0x49, 0x9b, 0x08, 0xa1, 0x3b, 0xcb, 0x55, 0x61,
-  0xf9, 0xd4, 0x30, 0xa3, 0xeb, 0x28, 0x51, 0x6d, 0x69, 0x36, 0xdb, 0x76,
-  0x9b, 0x2e, 0x1e, 0xbf, 0xae, 0xc4, 0x3e, 0x4d, 0xfa, 0x59, 0x22, 0x54,
-  0x6f, 0x36, 0xcc, 0x2f, 0x87, 0x28, 0x81, 0xb9, 0x88, 0x8b, 0x1b, 0xf6,
-  0xaf, 0x04, 0xa7, 0x0e, 0xf8, 0xe4, 0x48, 0x53, 0x9b, 0xcd, 0xba, 0xee,
-  0x6a, 0xcd, 0xaf, 0x28, 0x9c, 0xda, 0xaa, 0x83, 0xd1, 0xcd, 0xdc, 0x67,
-  0x55, 0xc7, 0x5e, 0x77, 0xf0, 0xd7, 0x5c, 0x34, 0x52, 0xd1, 0xaf, 0x5b,
-  0xb5, 0xf3, 0x10, 0x99, 0x37, 0x90, 0xeb, 0x1c, 0x93, 0x06, 0x2b, 0x5e,
-  0x88, 0x05, 0x09, 0x56, 0x00, 0x52, 0xfd, 0x59, 0x30, 0x65, 0x28, 0xfa,
-  0x87, 0xab, 0x2a, 0x1d, 0x58, 0x91, 0xd9, 0x21, 0x75, 0xa4, 0x88, 0xba,
-  0x75, 0x10, 0x8a, 0x75, 0xb0, 0x81, 0x63, 0x46, 0x14, 0x57, 0xf1, 0xf3,
-  0xb3, 0xd1, 0x93, 0xcf, 0xb8, 0xc8, 0x93, 0xc3, 0x9e, 0xb2, 0x42, 0xb4,
-  0x9e, 0x69, 0x62, 0x2b, 0x03, 0xfa, 0x6a, 0x95, 0xe2, 0xe0, 0xf2, 0x41,
-  0xbc, 0x1e, 0x33, 0xcd, 0x98, 0x07, 0xe0, 0x79, 0x47, 0xb1, 0x5b, 0x0d,
-  0xec, 0x69, 0xf9, 0x5c, 0x7e, 0xa7, 0xbe, 0x7c, 0xd0, 0xd2, 0x1b, 0xbe,
-  0x90, 0x86, 0xef, 0x88, 0xd1, 0xed, 0x47, 0xff, 0x9e, 0x27, 0x3d, 0xab,
-  0xca, 0xb6, 0xfb, 0x62, 0x8f, 0x14, 0x8e, 0xcf, 0x47, 0x3b, 0xa3, 0xdd,
-  0xed, 0x87, 0x31, 0x44, 0x10, 0xb6, 0xc2, 0x61, 0x5e, 0x1d, 0xee, 0x6c,
-  0xe4, 0xeb, 0x79, 0x2a, 0xda, 0x16, 0x5d, 0xa4, 0xcb, 0x07, 0xc4, 0xaf,
-  0x18, 0x0f, 0x0f, 0xb4, 0x12, 0x2e, 0x01, 0xb7, 0x5c, 0x4d, 0x16, 0xb3,
-  0x67, 0xd1, 0x4b, 0xfa, 0xa7, 0x1d, 0x9d, 0x7d, 0x68, 0x2e, 0x43, 0xb6,
-  0x6e, 0xf2, 0x19, 0xd2, 0x5c, 0x5c, 0x91, 0x35, 0xf9, 0xd7, 0x27, 0x7b,
-  0xd4, 0xf0, 0xc7, 0xd8, 0x4a, 0x68, 0x45, 0xb3, 0xf4, 0x2a, 0xad, 0xba,
-  0x53, 0xa3, 0x4c, 0x28, 0x0f, 0x70, 0xdd, 0x79, 0xef, 0x77, 0xf7, 0x3e,
-  0x8f, 0x26, 0x69, 0x15, 0xbd, 0x7d, 0xfd, 0x8c, 0xd4, 0x8e, 0x64, 0x7a,
-  0x53, 0xae, 0x16, 0x46, 0xa1, 0x5a, 0x6e, 0x89, 0xc7, 0xd9, 0x6f, 0x5e,
-  0x14, 0x3e, 0x14, 0x7a, 0x50, 0x33, 0x14, 0x5e, 0x9a, 0x41, 0x33, 0xa8,
-  0x44, 0xe6, 0x4e, 0x12, 0xb7, 0xa4, 0x06, 0xd5, 0x0e, 0x55, 0x9d, 0xd6,
-  0x80, 0x3a, 0x2f, 0xad, 0x62, 0x7c, 0x4d, 0x3d, 0xfc, 0xac, 0x6e, 0xf6,
-  0x90, 0x28, 0x7a, 0xc3, 0xa4, 0x1d, 0x92, 0xf0, 0x77, 0xd5, 0x8a, 0x92,
-  0x35, 0x65, 0xee, 0x18, 0xcf, 0x36, 0x22, 0x0b, 0x4f, 0xf0, 0x46, 0x00,
-  0xfc, 0x21, 0x62, 0x09, 0x9f, 0xcf, 0x74, 0xba, 0x9a, 0x73, 0x99, 0xd6,
-  0xb6, 0x00, 0x63, 0xc5, 0x9f, 0x0c, 0x66, 0xa7, 0x58, 0x49, 0x41, 0xcf,
-  0x83, 0x25, 0x87, 0xc5, 0x45, 0xbb, 0xa3, 0x8f, 0x83, 0xb0, 0x48, 0xbd,
-  0x56, 0x8e, 0x43, 0x2d, 0xfa, 0xd6, 0x65, 0x01, 0xd3, 0x76, 0x63, 0x34,
-  0xdc, 0xb6, 0x04, 0x24, 0xce, 0xd9, 0xb5, 0x53, 0xc8, 0x7d, 0xb6, 0x47,
-  0x97, 0xc3, 0x55, 0x8c, 0xd2, 0xa3, 0x01, 0xf5, 0xa4, 0x03, 0x00, 0xa4,
-  0x41, 0x06, 0x59, 0x37, 0x71, 0x95, 0x50, 0x64, 0xe6, 0xfc, 0xa1, 0x9d,
-  0x44, 0x95, 0x59, 0x24, 0x96, 0x56, 0x44, 0xd7, 0xe0, 0xeb, 0xd6, 0x3d,
-  0x84, 0x66, 0x1c, 0x57, 0x81, 0x8b, 0x48, 0x96, 0x60, 0xc8, 0x42, 0xc4,
-  0x80, 0xa5, 0xd0, 0xc4, 0x0b, 0x0d, 0x41, 0x08, 0x31, 0x1a, 0x6d, 0xa7,
-  0xd7, 0x20, 0xe9, 0xcb, 0xc2, 0x80, 0x47, 0xa3, 0x60, 0x56, 0xc7, 0x26,
-  0x8e, 0x75, 0x4d, 0x89, 0x4b, 0x62, 0x6d, 0xbf, 0x39, 0x3e, 0x39, 0xda,
-  0x8a, 0xde, 0x24, 0x16, 0x31, 0x1f, 0x4e, 0x8b, 0x19, 0xe0, 0xbf, 0xc8,
-  0x27, 0xb6, 0x45, 0xaa, 0x46, 0x76, 0x39, 0xf6, 0xd5, 0xe0, 0x05, 0x21,
-  0x58, 0x76, 0x0d, 0xf2, 0xae, 0xe4, 0xc6, 0xe5, 0x88, 0x44, 0xb4, 0xb2,
-  0x68, 0x30, 0x5c, 0x05, 0x95, 0x40, 0x3a, 0x6a, 0x72, 0x06, 0xb1, 0xd3,
-  0xa3, 0xa0, 0x1c, 0x46, 0x1e, 0xba, 0xfa, 0x79, 0xec, 0x1a, 0x71, 0x27,
-  0xbe, 0x3d, 0x29, 0xee, 0xdb, 0x75, 0x16, 0xe0, 0x99, 0x2b, 0xd3, 0xbf,
-  0x49, 0x78, 0x32, 0xa2, 0x42, 0x16, 0xf9, 0xcc, 0x61, 0xdc, 0x4b, 0x25,
-  0x41, 0x9e, 0x6f, 0xc8, 0x50, 0x02, 0x18, 0xbf, 0xae, 0xa4, 0xef, 0x33,
-  0x41, 0xf4, 0xe7, 0x01, 0x85, 0xb1, 0x06, 0x22, 0x67, 0x78, 0x2d, 0xcc,
-  0xb5, 0x32, 0x72, 0xe1, 0x6a, 0x5c, 0x19, 0xb3, 0x83, 0x2e, 0x1c, 0x3a,
-  0x9f, 0x90, 0x41, 0xe8, 0xc3, 0xa0, 0xd9, 0xe2, 0xb0, 0x4b, 0xe0, 0xe0,
-  0x41, 0x66, 0x51, 0x45, 0x52, 0xf9, 0x04, 0x49, 0x7d, 0xad, 0x34, 0x87,
-  0x8e, 0xb8, 0x2f, 0xe5, 0xe6, 0xc1, 0xcc, 0x48, 0x96, 0xdf, 0xd9, 0xdf,
-  0x0d, 0x0b, 0x8d, 0x66, 0x5a, 0x46, 0x9b, 0xe3, 0xb1, 0xb6, 0x7f, 0xbb,
-  0xc8, 0x9b, 0xbf, 0x30, 0x69, 0xfe, 0x65, 0x95, 0xdd, 0x10, 0x6d, 0x95,
-  0x4c, 0xc1, 0xc3, 0xee, 0x62, 0xe7, 0x7a, 0xfa, 0xbe, 0x77, 0xae, 0x97,
-  0x66, 0x39, 0x9d, 0x69, 0x58, 0x14, 0x26, 0x0e, 0x10, 0xc4, 0x07, 0x0f,
-  0xe4, 0xdf, 0xd5, 0xc4, 0x1a, 0x8e, 0xcc, 0x27, 0xda, 0x99, 0x72, 0x50,
-  0x07, 0x2b, 0xd2, 0x3d, 0x1d, 0x91, 0x35, 0xdd, 0x5b, 0x5f, 0x22, 0x0c,
-  0x35, 0xe1, 0x21, 0xde, 0xc2, 0x44, 0xe4, 0xb4, 0x01, 0x75, 0xa9, 0xc4,
-  0x82, 0x47, 0xcd, 0x02, 0x48, 0x64, 0x8d, 0x0a, 0xf2, 0x34, 0xdf, 0xf3,
-  0xed, 0xd4, 0x8a, 0x0b, 0xc9, 0x78, 0x8d, 0xac, 0xf2, 0x59, 0xe9, 0xe0,
-  0xa1, 0xdd, 0x00, 0xa3, 0xc6, 0xe0, 0x44, 0x43, 0x62, 0xa9, 0xa5, 0xdf,
-  0x3a, 0x97, 0xd3, 0x79, 0x2e, 0xc5, 0x3e, 0xef, 0x42, 0xf3, 0xdd, 0xbf,
-  0x8b, 0x20, 0xc2, 0x77, 0x91, 0x9e, 0xf4, 0x61, 0x47, 0x84, 0x57, 0x58,
-  0x16, 0xc3, 0x92, 0x16, 0x91, 0xd9, 0x04, 0x09, 0xe7, 0x34, 0x68, 0x43,
-  0x02, 0x77, 0x5d, 0x5e, 0xa3, 0x5e, 0x58, 0x9d, 0x50, 0xb8, 0xc3, 0xc0,
-  0x38, 0xe1, 0xb8, 0xf5, 0x6b, 0x3a, 0xb6, 0x79, 0x99, 0xca, 0xbe, 0xf8,
-  0xf0, 0xbb, 0xc0, 0xb4, 0xdd, 0x8e, 0xb0, 0xb1, 0x5c, 0x7e, 0x07, 0x8f,
-  0xe4, 0x62, 0x8e, 0x4c, 0x29, 0xef, 0xca, 0x95, 0x85, 0xd9, 0x2d, 0xcb,
-  0x43, 0x88, 0x54, 0xba, 0xea, 0xd9, 0xcc, 0xf1, 0x7b, 0xa2, 0x42, 0x52,
-  0x38, 0x33, 0xae, 0x03, 0xb6, 0x79, 0x9f, 0x54, 0x5b, 0x1e, 0x02, 0xdc,
-  0x62, 0xda, 0xd6, 0x95, 0xb8, 0x6a, 0x65, 0x2e, 0xb3, 0xfa, 0xa9, 0x2f,
-  0x09, 0xce, 0x28, 0x5f, 0xd7, 0x05, 0x92, 0xfb, 0xd9, 0x49, 0xa2, 0x18,
-  0xee, 0xeb, 0x9a, 0x0b, 0x2f, 0xa5, 0x1b, 0xb9, 0x94, 0xca, 0xae, 0x50,
-  0x2f, 0x4d, 0x36, 0x0b, 0xfa, 0x0d, 0xe2, 0x5f, 0x55, 0xe3, 0x33, 0x47,
-  0x9b, 0x15, 0x1f, 0x89, 0xa2, 0x9e, 0xb5, 0xd6, 0x6b, 0x0a, 0x9e, 0xb5,
-  0x44, 0x2f, 0x09, 0x56, 0x0c, 0x30, 0x68, 0x0f, 0xe8, 0x58, 0xb4, 0x1e,
-  0x61, 0x93, 0xb8, 0xac, 0x64, 0x6b, 0x3a, 0x62, 0x36, 0x5a, 0x10, 0x71,
-  0x99, 0xf1, 0xdc, 0xc2, 0x8f, 0xc5, 0x07, 0x52, 0x4f, 0x45, 0xd5, 0x1c,
-  0x68, 0xd9, 0xf1, 0x98, 0x73, 0x26, 0x9a, 0xc7, 0xec, 0xbe, 0x8e, 0xa8,
-  0x87, 0xfc, 0x13, 0x8d, 0x7b, 0x9f, 0xcf, 0x6b, 0xa3, 0x0a, 0xaa, 0x29,
-  0xae, 0x9d, 0x2c, 0xaa, 0xca, 0x9b, 0x23, 0xba, 0xb6, 0xc8, 0x6d, 0x47,
-  0x74, 0x20, 0xe0, 0x47, 0xbe, 0x64, 0x33, 0x5d, 0x15, 0x00, 0x57, 0x10,
-  0xec, 0x43, 0x29, 0x3c, 0xae, 0xf6, 0xfd, 0xc8, 0x45, 0x7e, 0x4a, 0x32,
-  0x10, 0x02, 0x3e, 0xd7, 0x14, 0x76, 0x46, 0x66, 0xf4, 0x75, 0xfc, 0xf1,
-  0xe3, 0xa8, 0x4c, 0xa4, 0x40, 0x71, 0x59, 0xce, 0x91, 0x85, 0x5d, 0xaf,
-  0xe8, 0x3c, 0xfc, 0x56, 0xcb, 0xb9, 0x5f, 0xa6, 0x57, 0x1c, 0x9a, 0x88,
-  0x9f, 0x5d, 0x98, 0x13, 0x0e, 0x6c, 0x42, 0xcb, 0x62, 0xfb, 0x27, 0x3d,
-  0xbf, 0x04, 0xe4, 0x9b, 0x46, 0x68, 0x09, 0xdb, 0xd4, 0x54, 0xd9, 0x76,
-  0x6a, 0x8e, 0x7b, 0x19, 0x90, 0xb2, 0x9a, 0x24, 0x30, 0x4f, 0x7c, 0x26,
-  0x8b, 0xdd, 0xfa, 0x58, 0x0d, 0xdf, 0xa8, 0x09, 0xfa, 0x4d, 0x15, 0xb0,
-  0x48, 0x2b, 0xce, 0x62, 0xd2, 0x97, 0x45, 0xdd, 0xad, 0x19, 0x33, 0x84,
-  0x61, 0x8a, 0x0e, 0xc6, 0x79, 0x03, 0xf6, 0x46, 0x27, 0xd2, 0x17, 0x31,
-  0x00, 0xae, 0xc7, 0x10, 0x8e, 0xa1, 0xb5, 0x6f, 0xa7, 0xcb, 0x80, 0x9e,
-  0xaf, 0x93, 0xb4, 0xf0, 0xfe, 0x83, 0xd2, 0xa9, 0xd7, 0x9e, 0x2b, 0x85,
-  0xd5, 0x03, 0xd7, 0x2d, 0x88, 0x86, 0xf9, 0x48, 0x11, 0xc1, 0x00, 0xbb,
-  0x91, 0xa9, 0x94, 0x26, 0x46, 0x72, 0x25, 0xc9, 0xaf, 0x2c, 0x93, 0x88,
-  0x7a, 0xae, 0x3e, 0x38, 0xd4, 0x8e, 0x28, 0x3b, 0xf3, 0x56, 0x4e, 0x38,
-  0xa1, 0x5d, 0x0f, 0xb1, 0x40, 0x9a, 0x4c, 0x21, 0x53, 0xb4, 0x71, 0x1d,
-  0x3d, 0x57, 0x92, 0x9d, 0xed, 0x62, 0x22, 0xde, 0xb8, 0x22, 0xe6, 0x20,
-  0x41, 0xcd, 0x93, 0xd0, 0x67, 0x12, 0x2d, 0xcb, 0x6b, 0x0d, 0x45, 0xa6,
-  0x75, 0x2e, 0xf3, 0x81, 0xca, 0x6e, 0x73, 0x06, 0x1d, 0x68, 0x4a, 0x24,
-  0x32, 0x64, 0x0f, 0x9b, 0x54, 0xd6, 0xd1, 0xfb, 0x4a, 0x6f, 0x73, 0x2d,
-  0x47, 0x1a, 0x1a, 0x93, 0x84, 0x91, 0x31, 0xcd, 0xc9, 0x36, 0x0d, 0xd3,
-  0x62, 0x1c, 0x63, 0xb7, 0xd0, 0x5d, 0x1e, 0xe9, 0xd0, 0x24, 0xc5, 0x94,
-  0x4b, 0xa3, 0x49, 0x57, 0xc4, 0xad, 0x3f, 0x71, 0x74, 0x2e, 0x19, 0x07,
-  0xa2, 0xb8, 0xe2, 0xbc, 0xf1, 0x3c, 0xab, 0xd2, 0xef, 0x79, 0xb7, 0x59,
-  0x36, 0xa9, 0x3b, 0x95, 0x38, 0xfa, 0x43, 0xfd, 0x0f, 0xe1, 0x7e, 0xd6,
-  0x9f, 0x53, 0xda, 0x69, 0xd7, 0xbe, 0x94, 0x3b, 0xd7, 0x41, 0xa3, 0x49,
-  0x38, 0x3a, 0x03, 0x3b, 0xea, 0x07, 0xba, 0x13, 0x91, 0xc5, 0xa9, 0xd7,
-  0x6a, 0x23, 0x35, 0x9b, 0x13, 0xe0, 0x2a, 0x7f, 0x37, 0x81, 0xe7, 0x1a,
-  0xc6, 0xc0, 0x7e, 0xf4, 0xd3, 0x4f, 0x83, 0x88, 0x11, 0xb3, 0x7e, 0x22,
-  0xed, 0xe0, 0x27, 0x36, 0x05, 0xfd, 0x54, 0x68, 0x74, 0xc2, 0x4f, 0xb7,
-  0xd4, 0xe5, 0xc1, 0xba, 0x80, 0xf5, 0x28, 0x28, 0xdc, 0x23, 0xa5, 0x8b,
-  0xc4, 0x45, 0xae, 0x85, 0xcb, 0x58, 0x79, 0x93, 0xbc, 0x6a, 0x07, 0xb0,
-  0xd6, 0x85, 0x34, 0x4e, 0x1b, 0xb3, 0x5a, 0x64, 0x92, 0x56, 0xa1, 0x9c,
-  0x06, 0x7c, 0x00, 0xcc, 0xa2, 0xff, 0xbb, 0xbe, 0xdf, 0x9b, 0xa0, 0x10,
-  0x9a, 0xea, 0xc2, 0xfc, 0x60, 0xcb, 0x40, 0x24, 0x8c, 0xa0, 0x92, 0xba,
-  0xc5, 0x62, 0xe1, 0xe1, 0xc3, 0x0d, 0x1d, 0xe0, 0x94, 0xad, 0x31, 0x77,
-  0x28, 0x59, 0x88, 0x58, 0x52, 0xd9, 0x60, 0x36, 0x24, 0x2d, 0xaf, 0xef,
-  0x21, 0x84, 0xb5, 0x04, 0xe0, 0xcc, 0x59, 0x93, 0x03, 0x3e, 0xd8, 0xe6,
-  0xec, 0x1e, 0x72, 0xcf, 0x4b, 0x12, 0xec, 0xb0, 0x0b, 0x79, 0x2e, 0x8d,
-  0xa5, 0x3f, 0xec, 0x07, 0x06, 0x53, 0xc3, 0x14, 0xe9, 0xac, 0x55, 0xe9,
-  0x41, 0xb0, 0xa4, 0x56, 0x65, 0x67, 0x5a, 0x83, 0x79, 0xf8, 0x24, 0xf1,
-  0x4d, 0xd0, 0xe3, 0x3d, 0x00, 0x60, 0x0c, 0xc7, 0x42, 0x7b, 0xf8, 0x83,
-  0x0e, 0x33, 0xae, 0x01, 0x93, 0xdb, 0xbb, 0x69, 0x15, 0x5c, 0xb5, 0x43,
-  0x76, 0xe6, 0x78, 0x94, 0x77, 0x10, 0x07, 0xdb, 0xc5, 0x70, 0xa7, 0x96,
-  0x9c, 0x71, 0x7c, 0xdf, 0xc1, 0xa5, 0x7d, 0xee, 0x20, 0x0f, 0x03, 0x75,
-  0x80, 0x18, 0x89, 0xf8, 0x2e, 0x13, 0x2e, 0x1b, 0x8d, 0xf3, 0x81, 0x54,
-  0x7c, 0x31, 0xed, 0x23, 0x48, 0x19, 0xea, 0x70, 0xf9, 0xb5, 0x14, 0x11,
-  0x1e, 0xd3, 0xab, 0xa8, 0xb7, 0xf6, 0x1a, 0xec, 0x75, 0xa6, 0xa8, 0x9b,
-  0xfc, 0xcf, 0x09, 0x9d, 0x37, 0x8a, 0x0b, 0xa9, 0xf2, 0xf1, 0xa6, 0x5d,
-  0xe7, 0x7f, 0xb5, 0x2b, 0x7c, 0x4b, 0xed, 0x2f, 0x62, 0xf7, 0x5a, 0x83,
-  0x27, 0x68, 0x4b, 0xab, 0xac, 0x13, 0xab, 0x03, 0x8d, 0x35, 0x85, 0x17,
-  0xe0, 0x32, 0x5f, 0x65, 0xb3, 0x7a, 0x18, 0xca, 0x7a, 0xc6, 0xcb, 0xf9,
-  0x99, 0xdc, 0xa3, 0x9a, 0xda, 0x2c, 0x9d, 0xc4, 0x95, 0x3d, 0x83, 0x59,
-  0x4b, 0x53, 0x3f, 0x58, 0x6a, 0x63, 0x4c, 0xb3, 0xd6, 0xc2, 0xec, 0x6e,
-  0xa9, 0xd4, 0x86, 0x6a, 0xdc, 0x1c, 0x2e, 0x93, 0xaa, 0x19, 0xb9, 0x77,
-  0x9d, 0x0b, 0xd0, 0x4a, 0x6f, 0x3f, 0x3a, 0xae, 0xcc, 0x3b, 0xa4, 0x73,
-  0x74, 0xf1, 0x0d, 0xcd, 0x30, 0x29, 0x46, 0xb2, 0xf9, 0xe6, 0xf4, 0xed,
-  0x91, 0x0b, 0x66, 0x15, 0x2d, 0x9f, 0x3f, 0xe9, 0x04, 0xdb, 0x1a, 0x21,
-  0x22, 0xc1, 0xd2, 0x81, 0x07, 0xed, 0x22, 0x3f, 0x58, 0x1d, 0x52, 0xe6,
-  0x97, 0x77, 0xab, 0x74, 0xb6, 0x89, 0x94, 0xed, 0xf7, 0x59, 0xfa, 0x71,
-  0x28, 0x66, 0x0c, 0x00, 0xd1, 0x95, 0x96, 0xb3, 0x6c, 0xe9, 0xce, 0xa2,
-  0xea, 0xe7, 0x8b, 0x0e, 0xb4, 0x0c, 0x2b, 0xf9, 0x14, 0xa2, 0xc5, 0x21,
-  0x01, 0x23, 0xcd, 0xc4, 0x1f, 0x22, 0x4d, 0x6e, 0x31, 0x03, 0x20, 0x16,
-  0x0a, 0xa4, 0x1b, 0xec, 0x7b, 0x47, 0x60, 0x6e, 0xb0, 0xdf, 0xdc, 0xdc,
-  0xc1, 0xd9, 0xd9, 0xeb, 0x83, 0x8b, 0x03, 0x37, 0x37, 0x5c, 0xc5, 0x60,
-  0x2a, 0xd0, 0x4d, 0x59, 0x70, 0xd3, 0xe4, 0xfe, 0xfe, 0xef, 0x39, 0x6b,
-  0xa3, 0x79, 0xd7, 0x9f, 0x9d, 0x9f, 0xb2, 0x85, 0xe1, 0xf7, 0x3f, 0x1d,
-  0xf8, 0xc2, 0xcd, 0x28, 0xcf, 0xd8, 0x2e, 0x9f, 0xbb, 0xb7, 0x15, 0xf1,
-  0xf8, 0x0c, 0x8a, 0x67, 0xe0, 0xdc, 0xfc, 0x92, 0x1e, 0x1d, 0x7d, 0xe0,
-  0x3d, 0x2d, 0xa6, 0x4e, 0x78, 0x12, 0xe3, 0x9d, 0x6c, 0xe7, 0xa0, 0x1d,
-  0xee, 0x17, 0x4c, 0x24, 0xf7, 0x4c, 0xcc, 0x80, 0x76, 0x6c, 0xad, 0xe6,
-  0x24, 0xf1, 0x93, 0xd0, 0x5a, 0x81, 0x75, 0xb0, 0xb1, 0x8d, 0xe9, 0x6b,
-  0xc6, 0x0b, 0xd5, 0x84, 0x93, 0x73, 0xfb, 0x63, 0x1b, 0x24, 0xe9, 0xe8,
-  0x60, 0xb8, 0xc2, 0x02, 0x24, 0x9c, 0x33, 0x97, 0xb2, 0x5c, 0x23, 0x1b,
-  0xad, 0xaa, 0x53, 0xad, 0xb3, 0x23, 0xee, 0x08, 0xa2, 0x73, 0x9b, 0xc3,
-  0xa8, 0x6d, 0x37, 0x1e, 0x0e, 0x87, 0x66, 0x55, 0x96, 0x69, 0xd3, 0x07,
-  0xad, 0x87, 0x2a, 0x2b, 0x3e, 0x64, 0x7c, 0xbe, 0x9b, 0x4d, 0x84, 0xfc,
-  0xa1, 0x29, 0xcb, 0x2b, 0x82, 0x80, 0x3e, 0x85, 0x2a, 0xa6, 0xc8, 0x3f,
-  0x6c, 0x9b, 0x1b, 0xcd, 0x1a, 0x4f, 0x8f, 0x96, 0x2b, 0x36, 0xd8, 0xf0,
-  0x5f, 0xdb, 0xbb, 0xa3, 0x9d, 0x5e, 0x7b, 0xf4, 0x88, 0x05, 0x84, 0x51,
-  0xcc, 0x20, 0x76, 0x05, 0x35, 0x39, 0x7f, 0x7c, 0x80, 0xc2, 0xc0, 0x48,
-  0x22, 0x5d, 0x52, 0x07, 0x9d, 0x63, 0x19, 0x9e, 0xb6, 0x8c, 0x97, 0xe2,
-  0x15, 0xf0, 0x1c, 0x31, 0xcb, 0x91, 0x37, 0x1b, 0xb3, 0x36, 0x04, 0x43,
-  0x4c, 0xaf, 0x7b, 0x81, 0xb3, 0x99, 0xb8, 0x35, 0x1b, 0xeb, 0xfc, 0xab,
-  0xf2, 0xc9, 0xdc, 0xfe, 0x07, 0x28, 0x61, 0x6b, 0xb9, 0x5d, 0xcd, 0xf2,
-  0x7e, 0x93, 0x90, 0x20, 0x38, 0x47, 0xfa, 0x14, 0xdb, 0xd1, 0x5e, 0x4a,
-  0x9d, 0xdd, 0x36, 0x62, 0x7e, 0xcd, 0x17, 0x50, 0x72, 0x40, 0x9c, 0xb0,
-  0x06, 0xbc, 0x15, 0x85, 0x01, 0xe2, 0x1e, 0x00, 0xb4, 0x48, 0x38, 0xa4,
-  0x33, 0x4a, 0x67, 0xad, 0x2c, 0xed, 0x06, 0xf2, 0x86, 0x1b, 0x04, 0x2b,
-  0xdf, 0x93, 0xc4, 0x89, 0xfc, 0xd2, 0xba, 0x09, 0x87, 0xc0, 0x23, 0x21,
-  0xd5, 0x7c, 0xd5, 0x92, 0x17, 0x9a, 0xef, 0x8f, 0x98, 0xcb, 0xd6, 0x30,
-  0x3a, 0xc4, 0xa8, 0xc3, 0x4f, 0xe4, 0xce, 0xe4, 0x87, 0x72, 0x96, 0x38,
-  0x53, 0x2d, 0x23, 0xe6, 0xa5, 0x80, 0xf9, 0xc9, 0x14, 0x2f, 0x0e, 0xcf,
-  0x3e, 0x7c, 0x7b, 0x74, 0x74, 0x76, 0xfc, 0xfa, 0xe4, 0x48, 0xef, 0x19,
-  0xf7, 0xd1, 0xbb, 0x8b, 0xef, 0x4e, 0x0c, 0xdf, 0xcf, 0xd6, 0xa7, 0x65,
-  0x06, 0xe3, 0x90, 0x23, 0x34, 0x77, 0x92, 0x66, 0xab, 0x8f, 0x03, 0xa0,
-  0x8c, 0x10, 0x31, 0x1f, 0x1c, 0xff, 0x30, 0x88, 0xbe, 0x39, 0x1b, 0xbe,
-  0xff, 0xa1, 0x05, 0x04, 0x51, 0x0b, 0xf2, 0x6d, 0x0a, 0x96, 0x2e, 0xe4,
-  0x17, 0x55, 0x58, 0xfc, 0xdc, 0x4d, 0xff, 0xed, 0x28, 0x4c, 0xfa, 0xdb,
-  0xa2, 0x8a, 0x50, 0x73, 0xab, 0x2c, 0x80, 0x7c, 0x0e, 0xa4, 0x78, 0xbd,
-  0x7a, 0x41, 0x0e, 0xcf, 0x77, 0xb4, 0x8a, 0x73, 0x83, 0x00, 0xef, 0xa3,
-  0x97, 0x6b, 0x10, 0x79, 0xb6, 0xc7, 0xe3, 0x6f, 0xb6, 0xa2, 0xb3, 0x00,
-  0xba, 0xd9, 0xd9, 0x5a, 0x46, 0x16, 0xe0, 0xc7, 0x66, 0x1a, 0x6a, 0x3c,
-  0xb0, 0xda, 0x14, 0x8c, 0xb5, 0xd9, 0x76, 0xd2, 0x6a, 0x0b, 0x76, 0x87,
-  0x9b, 0xf2, 0x27, 0x92, 0x25, 0xb2, 0x84, 0xa8, 0x37, 0xb0, 0xff, 0x3a,
-  0x0a, 0xa1, 0x08, 0x8c, 0x4d, 0xc9, 0x08, 0x77, 0x7c, 0x14, 0x26, 0x45,
-  0x61, 0x87, 0xe9, 0x88, 0xce, 0xd2, 0x99, 0xe4, 0x96, 0xb0, 0xc6, 0x20,
-  0x92, 0x42, 0x14, 0xf5, 0xff, 0x6b, 0x7b, 0x54, 0x96, 0xd7, 0xdb, 0xe9,
-  0xec, 0x43, 0x51, 0xc6, 0xfd, 0xe6, 0xe5, 0x1c, 0x7c, 0x3d, 0xe3, 0xaf,
-  0xa3, 0xfe, 0xc8, 0x3d, 0xaa, 0xbf, 0xf3, 0xe7, 0xbf, 0x25, 0xd4, 0x18,
-  0xad, 0xcd, 0xa3, 0xc8, 0x90, 0xad, 0x9d, 0xe0, 0x47, 0x47, 0x4e, 0x0c,
-  0x57, 0xd7, 0x01, 0x37, 0x82, 0x6d, 0x90, 0xcd, 0xed, 0xaa, 0xd3, 0x2c,
-  0xe0, 0x3d, 0x51, 0x03, 0x11, 0x97, 0xce, 0xed, 0xeb, 0xa3, 0xf3, 0x81,
-  0x00, 0x46, 0x86, 0x60, 0x91, 0x0e, 0x1d, 0x75, 0xa4, 0x20, 0x91, 0xeb,
-  0xd4, 0xd3, 0xc1, 0x3f, 0x11, 0x24, 0xf2, 0xa6, 0x98, 0x44, 0x2f, 0xe7,
-  0xf4, 0xe2, 0xbc, 0x3b, 0xd1, 0x54, 0x2a, 0xf8, 0xf9, 0x32, 0x84, 0x0d,
-  0x70, 0x13, 0x05, 0x1f, 0x14, 0x09, 0x15, 0xcd, 0x88, 0x5e, 0xda, 0xa5,
-  0x98, 0x56, 0xb0, 0x89, 0xf1, 0x1b, 0xad, 0xac, 0xbc, 0x3e, 0x22, 0x61,
-  0x99, 0x4a, 0x18, 0xc1, 0x85, 0x7f, 0x82, 0xef, 0x6b, 0xf9, 0xc6, 0xfe,
-  0xa0, 0xad, 0x7c, 0xf7, 0x75, 0xd5, 0xfb, 0xb4, 0x71, 0xd2, 0x1a, 0x1f,
-  0x21, 0xc1, 0x77, 0x94, 0x71, 0x28, 0x4c, 0x74, 0xa9, 0xda, 0x46, 0x18,
-  0x08, 0x53, 0xb6, 0x40, 0xff, 0x5d, 0x73, 0xcd, 0xe0, 0xab, 0x6e, 0x63,
-  0xdc, 0xba, 0xc2, 0x14, 0xb1, 0x03, 0xf5, 0x0b, 0x0b, 0x52, 0x58, 0xb5,
-  0xc9, 0xa7, 0x46, 0x02, 0xa3, 0x35, 0x68, 0x4c, 0x3c, 0x50, 0x24, 0xf2,
-  0xb1, 0x30, 0xc2, 0xe1, 0xe7, 0x1c, 0xcd, 0x39, 0xfc, 0x8e, 0xd5, 0x40,
-  0xf3, 0xb2, 0x09, 0xd2, 0x2a, 0x40, 0xee, 0x41, 0x9d, 0x5d, 0xc7, 0xda,
-  0x95, 0xb6, 0x48, 0xab, 0xdf, 0x90, 0x74, 0xe6, 0xa8, 0x04, 0x91, 0x96,
-  0xd5, 0x90, 0xdd, 0x56, 0xdd, 0x61, 0xd0, 0x50, 0x9a, 0x34, 0x89, 0xc1,
-  0xfc, 0x66, 0x01, 0x14, 0xb3, 0xb0, 0x30, 0xa9, 0x77, 0x85, 0x50, 0xaf,
-  0x52, 0x8b, 0x46, 0x0f, 0xbb, 0x4a, 0x6d, 0xdc, 0xa6, 0xc9, 0x9d, 0xf7,
-  0xec, 0xd6, 0x50, 0x78, 0xd4, 0x97, 0x8b, 0x65, 0x01, 0x33, 0x93, 0xa2,
-  0x8b, 0x8c, 0x0c, 0xdd, 0x05, 0x90, 0xb4, 0x88, 0xa7, 0xd7, 0x24, 0x3e,
-  0x0e, 0x11, 0x30, 0x1a, 0xd5, 0xf1, 0x49, 0xd8, 0x98, 0xd0, 0x18, 0x28,
-  0xe7, 0xf5, 0x69, 0x18, 0x5a, 0x67, 0xfd, 0x47, 0xff, 0x20, 0x0f, 0xd1,
-  0x05, 0xbd, 0x09, 0x31, 0xba, 0x6c, 0x5d, 0x28, 0xa9, 0x79, 0xe1, 0x30,
-  0x4b, 0x25, 0xc5, 0x9a, 0x17, 0xb5, 0xc3, 0x71, 0x16, 0x29, 0x26, 0x69,
-  0xcd, 0xa2, 0xa5, 0xe0, 0x3b, 0x71, 0xf4, 0xee, 0x64, 0xec, 0x13, 0x56,
-  0x2a, 0x2d, 0xf0, 0x21, 0x20, 0xd8, 0xeb, 0x1c, 0x1f, 0x61, 0x94, 0xd6,
-  0xc9, 0x71, 0x47, 0x29, 0x5d, 0x36, 0x09, 0xec, 0x93, 0x5a, 0xbd, 0x48,
-  0x82, 0xe4, 0xfc, 0x52, 0x0b, 0xc7, 0x20, 0x26, 0x50, 0x3c, 0xd9, 0x66,
-  0x01, 0x64, 0xcd, 0xc9, 0xa5, 0x2b, 0xb5, 0x97, 0x98, 0x87, 0xf8, 0x27,
-  0xb1, 0xa3, 0x6a, 0x1c, 0x8c, 0xc5, 0xd7, 0x95, 0xab, 0xc9, 0x30, 0xc8,
-  0x20, 0x16, 0x86, 0x00, 0x7c, 0x9b, 0x74, 0xca, 0xca, 0xfd, 0x4d, 0x3b,
-  0x28, 0x65, 0xf3, 0xec, 0xf4, 0xec, 0x89, 0x91, 0x93, 0xa5, 0x7b, 0xd7,
-  0xdc, 0x9c, 0xd3, 0x88, 0xa5, 0x34, 0x85, 0x94, 0xe2, 0xa7, 0x6b, 0xc4,
-  0xd5, 0x55, 0x7d, 0x8f, 0xd7, 0x91, 0x17, 0xa2, 0xb1, 0x8e, 0xea, 0xa8,
-  0xa8, 0x87, 0xb5, 0x71, 0xee, 0x69, 0x90, 0x38, 0xdb, 0x01, 0xda, 0x61,
-  0x31, 0x06, 0x8e, 0x14, 0x35, 0x86, 0x1e, 0x74, 0x28, 0x64, 0xe8, 0x4f,
-  0x6e, 0x30, 0x6a, 0x3a, 0x6d, 0xad, 0xe4, 0x11, 0x92, 0xda, 0x49, 0xda,
-  0x94, 0xfc, 0xef, 0xb2, 0x9e, 0x00, 0x2e, 0xe9, 0x0c, 0x28, 0x5f, 0xc3,
-  0xae, 0x64, 0xa0, 0x0b, 0xae, 0xd9, 0x49, 0xb1, 0x57, 0x20, 0xd8, 0xd4,
-  0x15, 0x6f, 0xf9, 0x41, 0x9c, 0x66, 0x12, 0xd8, 0xe8, 0x11, 0x06, 0x06,
-  0xf5, 0xb0, 0xe8, 0x8e, 0xba, 0x0c, 0x41, 0x55, 0x3d, 0xc9, 0x99, 0x22,
-  0x9d, 0x9b, 0x04, 0x49, 0xb7, 0x76, 0xba, 0x56, 0xea, 0x89, 0xd2, 0x69,
-  0xb3, 0x1b, 0x8a, 0x7e, 0xe9, 0x2a, 0x4f, 0xcf, 0x7b, 0xd5, 0x27, 0xd6,
-  0x93, 0xa5, 0x34, 0x16, 0x45, 0xe4, 0xbb, 0xe4, 0xb8, 0x3f, 0xf5, 0x52,
-  0x09, 0xe4, 0x63, 0x5a, 0xf5, 0x01, 0xf3, 0x55, 0x62, 0x49, 0x78, 0x4d,
-  0xba, 0x8e, 0xb2, 0x16, 0x33, 0xb7, 0xb0, 0xd7, 0x7a, 0xba, 0xd3, 0x6e,
-  0x2d, 0xa7, 0xbf, 0x56, 0xbc, 0xa6, 0x33, 0x22, 0x01, 0xe5, 0x4d, 0xb6,
-  0x22, 0x67, 0x4c, 0xd6, 0x65, 0x97, 0xc8, 0x8f, 0xd2, 0x27, 0x0b, 0x68,
-  0x6f, 0xc8, 0x06, 0xb8, 0xe2, 0xf0, 0xfc, 0x26, 0x51, 0x48, 0x1a, 0x03,
-  0x40, 0xee, 0x0d, 0xae, 0xa9, 0x8a, 0x5c, 0xdd, 0x9c, 0x4d, 0x05, 0x25,
-  0xf4, 0xe1, 0x74, 0xcd, 0xda, 0x35, 0x5d, 0x70, 0x17, 0x74, 0xbb, 0x3c,
-  0xf9, 0xe1, 0x87, 0xa8, 0x0e, 0x52, 0xb6, 0xb5, 0x2e, 0x22, 0x1b, 0x0a,
-  0x3a, 0xdd, 0xb8, 0x5d, 0x3c, 0xc1, 0x68, 0x40, 0x89, 0x8b, 0xbd, 0xc3,
-  0x50, 0xde, 0x21, 0x99, 0xe8, 0x4e, 0x5f, 0x25, 0xd8, 0x0a, 0xa1, 0x9c,
-  0x30, 0x3a, 0xa5, 0x7d, 0x19, 0xfb, 0x30, 0x8f, 0x81, 0x8b, 0xb0, 0x14,
-  0x6f, 0x38, 0xa2, 0x66, 0xc2, 0xa5, 0x2a, 0xdd, 0x75, 0x42, 0x42, 0xc0,
-  0x5d, 0x36, 0xea, 0x2a, 0x37, 0xd4, 0x06, 0x50, 0x93, 0xc8, 0x73, 0xcc,
-  0x48, 0xaa, 0x2e, 0x01, 0xf7, 0x91, 0x2d, 0x82, 0x41, 0x91, 0x67, 0x57,
-  0x36, 0xb5, 0x15, 0xd7, 0x20, 0x1e, 0x08, 0x04, 0x30, 0x08, 0x42, 0x37,
-  0x87, 0x61, 0x0a, 0x0f, 0x8a, 0x2a, 0x78, 0xf1, 0xcc, 0x51, 0x19, 0xee,
-  0x16, 0x3f, 0xde, 0x61, 0x1b, 0xb9, 0x43, 0x4d, 0xa0, 0xc0, 0x62, 0x8a,
-  0x58, 0x06, 0xcd, 0x25, 0x11, 0xd2, 0xff, 0x63, 0xbd, 0xc6, 0xaf, 0xe2,
-  0x24, 0x09, 0xe9, 0xb5, 0x92, 0x40, 0x38, 0xf2, 0xa0, 0x2a, 0x56, 0x58,
-  0x21, 0xde, 0x10, 0x4e, 0xca, 0x67, 0x07, 0x80, 0x21, 0x08, 0xb1, 0x40,
-  0x69, 0x71, 0x1b, 0x28, 0x68, 0x21, 0xf1, 0xd0, 0x0b, 0x40, 0xa5, 0xb4,
-  0xfc, 0xd2, 0x36, 0x2f, 0xcb, 0x74, 0xe3, 0xcc, 0xb6, 0x9a, 0xe7, 0x73,
-  0x38, 0x5c, 0xc4, 0x1f, 0x87, 0x78, 0xac, 0x6c, 0x61, 0xab, 0xb7, 0x6c,
-  0x9d, 0xd2, 0x42, 0x19, 0x2e, 0x98, 0x69, 0xb5, 0x2e, 0xe0, 0x5e, 0xa3,
-  0x24, 0x99, 0x82, 0xf8, 0x6e, 0xf8, 0xfa, 0xe8, 0xa2, 0x79, 0xb4, 0x00,
-  0x7b, 0xa0, 0x26, 0x02, 0x84, 0xb9, 0xd3, 0xdf, 0x67, 0xef, 0x2f, 0xb6,
-  0x7c, 0x5d, 0x1d, 0xa1, 0xd2, 0x40, 0x07, 0x71, 0xe1, 0xd7, 0x6d, 0xb4,
-  0x44, 0x09, 0x2d, 0x57, 0x06, 0x0b, 0x44, 0x44, 0x77, 0x20, 0xb8, 0x12,
-  0xd8, 0x93, 0x9d, 0xdd, 0x01, 0xfd, 0xb3, 0x07, 0x6b, 0xdb, 0x93, 0x9d,
-  0x27, 0xce, 0x83, 0x60, 0x4f, 0xb5, 0x9c, 0x08, 0x1c, 0x52, 0x85, 0xb2,
-  0x72, 0x81, 0x23, 0x22, 0x7a, 0xf2, 0xf1, 0x23, 0xbe, 0xaa, 0x47, 0xc3,
-  0x0d, 0x5d, 0x50, 0xed, 0x3a, 0x8f, 0x89, 0x0d, 0xdc, 0xaf, 0x38, 0xcc,
-  0x66, 0xab, 0x4c, 0xc2, 0x7d, 0xd8, 0xe8, 0x81, 0xf0, 0xf5, 0xd1, 0x3a,
-  0x28, 0xa9, 0xaa, 0x99, 0x51, 0x1c, 0x62, 0x49, 0x11, 0xad, 0xf0, 0xe4,
-  0x5d, 0x2f, 0x16, 0x0b, 0xdf, 0x66, 0x8c, 0x78, 0x4c, 0xf2, 0x2d, 0xc1,
-  0x38, 0x76, 0x3e, 0x86, 0xf7, 0x75, 0x8d, 0x24, 0x88, 0x5d, 0x2a, 0x33,
-  0x52, 0xd5, 0x7f, 0x0d, 0x48, 0xdb, 0x3e, 0x07, 0x80, 0xd2, 0xa1, 0xc0,
-  0x0a, 0xdb, 0xaf, 0x7b, 0x12, 0x5c, 0x2a, 0x7f, 0x3c, 0x09, 0x55, 0x0b,
-  0xab, 0xcf, 0xd6, 0x59, 0x9b, 0xe0, 0x40, 0x2a, 0x86, 0x85, 0xac, 0x8b,
-  0x8f, 0x1f, 0x57, 0x6c, 0xe2, 0x34, 0x15, 0x96, 0xa0, 0x35, 0xcf, 0x59,
-  0xeb, 0xd6, 0xaa, 0xb7, 0x13, 0xbf, 0x77, 0xd4, 0x00, 0x41, 0x34, 0x0d,
-  0x30, 0xed, 0xac, 0x2e, 0xdc, 0x50, 0x26, 0x78, 0x18, 0xa9, 0x7b, 0x1c,
-  0xfb, 0x6c, 0xee, 0x5c, 0xcd, 0x9d, 0x10, 0xf5, 0xaf, 0x1b, 0x8e, 0xc5,
-  0x9c, 0xa6, 0xa4, 0x17, 0xcc, 0x05, 0x3e, 0xc8, 0x05, 0x81, 0x17, 0x36,
-  0x2c, 0x09, 0x1e, 0xf6, 0xc1, 0x57, 0xfc, 0xde, 0xbf, 0xfc, 0x37, 0x45,
-  0x6e, 0x75, 0xb4, 0x8a, 0x3f, 0xa0, 0x23, 0x2e, 0xa6, 0x26, 0x8e, 0x3f,
-  0x98, 0x4b, 0x0a, 0x6e, 0x31, 0x84, 0x79, 0xe0, 0x25, 0x49, 0x1c, 0xc9,
-  0x6c, 0xad, 0xb3, 0x1e, 0x52, 0x26, 0xf1, 0x85, 0x74, 0xb1, 0x5a, 0xf8,
-  0xec, 0x41, 0x2e, 0xe5, 0x50, 0x25, 0xbe, 0x54, 0x6d, 0x08, 0x29, 0x3c,
-  0xec, 0xa0, 0x11, 0x00, 0xc8, 0xf9, 0xac, 0x64, 0xe8, 0x86, 0x40, 0x39,
-  0x33, 0x1c, 0x0d, 0x0d, 0xde, 0xd3, 0x25, 0x50, 0x31, 0x89, 0x9b, 0x47,
-  0xec, 0x52, 0xdc, 0x92, 0x83, 0xb9, 0x7a, 0x0f, 0x5d, 0x1b, 0xe9, 0x52,
-  0xa2, 0xe6, 0x38, 0xfc, 0x7e, 0x26, 0xe2, 0x31, 0x36, 0xc1, 0x8d, 0x13,
-  0x25, 0x82, 0x65, 0x5c, 0x92, 0xc2, 0x40, 0x17, 0x42, 0x2b, 0x5e, 0x65,
-  0x42, 0x4d, 0xdc, 0xa5, 0xb3, 0xea, 0x1a, 0x38, 0x8d, 0xb8, 0x22, 0x19,
-  0xed, 0x84, 0xc1, 0x4a, 0x54, 0xe0, 0x48, 0xdb, 0xc9, 0x41, 0x93, 0x6e,
-  0xc8, 0x7b, 0xd9, 0x23, 0xac, 0x69, 0x24, 0x10, 0x2c, 0x1c, 0x99, 0x8e,
-  0x6d, 0x40, 0x5c, 0xe7, 0xb6, 0x98, 0x88, 0x1c, 0xd8, 0x00, 0x49, 0x7c,
-  0xab, 0x4b, 0x06, 0x7c, 0x6c, 0x4b, 0x8f, 0x96, 0xce, 0x33, 0x72, 0x87,
-  0x02, 0x26, 0x98, 0xfe, 0x8d, 0xe4, 0xd1, 0x7d, 0xab, 0x1a, 0xa9, 0x20,
-  0x63, 0x81, 0x07, 0x48, 0x32, 0x09, 0xf1, 0xab, 0x9b, 0x74, 0xde, 0xb2,
-  0x49, 0xa0, 0x7b, 0xd2, 0x9f, 0x17, 0x78, 0xfd, 0x6d, 0x5f, 0xa3, 0x54,
-  0x18, 0xb7, 0x2d, 0xd1, 0xa0, 0xd3, 0x81, 0x02, 0x38, 0xf6, 0xaf, 0xa4,
-  0x8b, 0xaf, 0xfb, 0x2e, 0x96, 0xa5, 0x75, 0xd9, 0xf9, 0x48, 0x55, 0xb3,
-  0xa5, 0x97, 0xfb, 0xd1, 0xde, 0xce, 0xce, 0xb7, 0xc4, 0x62, 0x17, 0xd8,
-  0x94, 0xdd, 0xaf, 0xbb, 0x8b, 0x02, 0x28, 0x19, 0x17, 0x82, 0xc1, 0xac,
-  0x45, 0xb7, 0x6f, 0x61, 0xf4, 0xd6, 0x85, 0x93, 0x02, 0xc1, 0xb3, 0x68,
-  0xb6, 0x2a, 0x8c, 0x13, 0x75, 0x6e, 0x9c, 0xcb, 0x8d, 0x65, 0x7b, 0x68,
-  0x13, 0x0a, 0x62, 0x81, 0x44, 0x09, 0xde, 0xf9, 0x6b, 0xfa, 0x2d, 0x09,
-  0x88, 0x02, 0x9d, 0x74, 0x00, 0x2d, 0x90, 0xdc, 0xc1, 0x20, 0x7b, 0xab,
-  0x82, 0x6b, 0xa0, 0x22, 0x12, 0x14, 0x18, 0x55, 0x30, 0xd2, 0x9a, 0x7b,
-  0x29, 0xcb, 0x05, 0xf5, 0x04, 0x64, 0xe1, 0x91, 0x78, 0x78, 0x32, 0x5d,
-  0xd9, 0x5d, 0x4c, 0xc2, 0x72, 0xc9, 0x5b, 0xb0, 0xf4, 0xf0, 0xcf, 0xcc,
-  0x21, 0x31, 0x04, 0x39, 0x86, 0xce, 0x01, 0x2a, 0x39, 0x68, 0x5e, 0x58,
-  0x6b, 0x4e, 0x96, 0xe9, 0x52, 0x6b, 0x13, 0xb1, 0xd2, 0x09, 0x9b, 0x2a,
-  0xe6, 0xc8, 0x88, 0xc2, 0x4b, 0xad, 0xf0, 0xcd, 0x03, 0x91, 0x76, 0x61,
-  0xff, 0x9d, 0xf3, 0x03, 0x73, 0x56, 0xa8, 0xf3, 0x56, 0xbe, 0xce, 0x7c,
-  0x09, 0xc3, 0xb2, 0xbb, 0x8c, 0x82, 0x21, 0x71, 0x16, 0xf2, 0x14, 0x65,
-  0x00, 0x38, 0x9f, 0xe5, 0x37, 0x34, 0x32, 0x01, 0x7e, 0x4f, 0xd0, 0x3e,
-  0x5e, 0x12, 0xf9, 0x7e, 0xf1, 0x23, 0x57, 0x05, 0xfd, 0xb9, 0xa3, 0xfe,
-  0x69, 0xac, 0x09, 0x5d, 0x7c, 0x96, 0x2c, 0x69, 0xaa, 0xf0, 0xd5, 0x79,
-  0xd0, 0x8e, 0x64, 0x1d, 0x5b, 0x15, 0x52, 0x5f, 0xd7, 0xa8, 0x33, 0x24,
-  0xd8, 0xcc, 0xf9, 0x9b, 0xe5, 0xd6, 0x28, 0x44, 0xf3, 0x93, 0x46, 0x5c,
-  0x2b, 0xf0, 0x45, 0x67, 0xc2, 0x9c, 0x60, 0xab, 0x6b, 0x31, 0x23, 0x8e,
-  0x7d, 0x9c, 0x26, 0x3e, 0xd8, 0x0a, 0xad, 0xd8, 0x7c, 0x27, 0xab, 0xf2,
-  0x9e, 0xd1, 0x8b, 0xc4, 0x8b, 0x51, 0xe6, 0x0e, 0xbf, 0x11, 0x0b, 0x88,
-  0xe1, 0xb7, 0xc3, 0xd3, 0x18, 0x60, 0x47, 0xa2, 0x91, 0xab, 0x9c, 0x2e,
-  0xfa, 0xb8, 0x28, 0x48, 0x54, 0xd3, 0xad, 0xd6, 0x54, 0x3a, 0x1a, 0x3c,
-  0x2b, 0x3f, 0x30, 0x08, 0x39, 0xc7, 0x04, 0xb5, 0xbd, 0x5a, 0x76, 0xc4,
-  0x93, 0x71, 0x72, 0x6d, 0x0b, 0xd1, 0xac, 0x96, 0xb9, 0x6e, 0xea, 0x87,
-  0x89, 0x9b, 0x0f, 0x6a, 0x40, 0x27, 0xb0, 0x42, 0xb0, 0xca, 0x14, 0xbc,
-  0xa9, 0x39, 0xff, 0x02, 0x4d, 0x0e, 0xd9, 0xd2, 0x9c, 0x1f, 0xdd, 0xc9,
-  0xd2, 0xd1, 0x1f, 0x3d, 0x46, 0x9f, 0x54, 0x43, 0x82, 0x54, 0x1d, 0x28,
-  0x52, 0x25, 0xc7, 0x53, 0xb0, 0xa6, 0xe8, 0x05, 0xf2, 0x7c, 0xd4, 0x05,
-  0xb9, 0xcd, 0xcf, 0xe4, 0xa2, 0x54, 0x8a, 0x35, 0xa1, 0x2a, 0xf2, 0xd9,
-  0x6a, 0x0a, 0x13, 0x0b, 0x47, 0xce, 0xa5, 0xd5, 0x7d, 0x34, 0x11, 0xc8,
-  0x30, 0xcb, 0x5f, 0xe7, 0xa6, 0x9d, 0x3c, 0xdc, 0x68, 0x4e, 0x0d, 0xee,
-  0xb1, 0x3c, 0xe5, 0x30, 0x5e, 0x71, 0xc7, 0x00, 0xf3, 0x39, 0x51, 0x41,
-  0xa3, 0x68, 0xe9, 0x23, 0x28, 0xd1, 0xd4, 0x8d, 0x91, 0x2d, 0x4e, 0x50,
-  0x56, 0x08, 0x3e, 0x56, 0x2e, 0x76, 0x82, 0xab, 0x8d, 0x11, 0xf1, 0x42,
-  0x52, 0xfd, 0x8a, 0xc3, 0x75, 0x1b, 0x0d, 0x86, 0xc8, 0xcf, 0x8b, 0x81,
-  0x0a, 0xe8, 0x0f, 0xfa, 0xb1, 0xde, 0xba, 0x9b, 0x1a, 0x7e, 0xab, 0x14,
-  0xce, 0x2c, 0x3c, 0x29, 0x0b, 0x8b, 0x7c, 0xa8, 0xb9, 0x81, 0x5a, 0xdc,
-  0x5d, 0xe7, 0xf3, 0x50, 0x48, 0x69, 0x07, 0x48, 0x10, 0xcf, 0x09, 0x52,
-  0x39, 0x83, 0xc4, 0x08, 0x46, 0x2b, 0xe2, 0x81, 0x5a, 0xbd, 0x93, 0x09,
-  0x80, 0xed, 0xff, 0x92, 0x4f, 0x54, 0xbf, 0x8b, 0x58, 0x34, 0xed, 0xca,
-  0x73, 0x93, 0x70, 0x80, 0x6b, 0xae, 0x29, 0x4b, 0xfc, 0x5d, 0x02, 0x4b,
-  0x78, 0x3c, 0x59, 0x52, 0x31, 0xbf, 0x41, 0x3c, 0x39, 0x6c, 0x3d, 0x91,
-  0x54, 0x9b, 0x47, 0x84, 0x30, 0xe7, 0xe9, 0x13, 0xcf, 0x6b, 0x34, 0xf7,
-  0xd9, 0xe8, 0xc9, 0x1e, 0x67, 0x21, 0x85, 0xcc, 0x28, 0x9e, 0xb2, 0xbe,
-  0x55, 0x46, 0x96, 0x27, 0x83, 0xe4, 0x35, 0xe5, 0xe6, 0x95, 0x00, 0x43,
-  0xac, 0x94, 0x47, 0x0d, 0xdb, 0xee, 0x5a, 0x55, 0x39, 0x12, 0x86, 0xb5,
-  0x2b, 0xe1, 0xdd, 0xa6, 0xf6, 0x56, 0x45, 0x3c, 0xbd, 0x37, 0xc8, 0x5c,
-  0x1f, 0x29, 0xc6, 0x4d, 0xf0, 0x2b, 0x34, 0x30, 0x3c, 0xdd, 0x42, 0x82,
-  0xcf, 0xdc, 0x20, 0x98, 0x6b, 0xa7, 0x40, 0x2a, 0x68, 0xa6, 0x63, 0x59,
-  0x99, 0x8b, 0xa1, 0xb5, 0xb6, 0x46, 0xef, 0xfa, 0x87, 0xb2, 0xdc, 0xab,
-  0x34, 0x1b, 0x9a, 0x3c, 0xff, 0x52, 0x7f, 0xf9, 0xe2, 0x81, 0xd0, 0x23,
-  0xbc, 0xe1, 0x34, 0x00, 0xe5, 0xab, 0x7a, 0x37, 0x9b, 0xf5, 0xa9, 0x46,
-  0xb7, 0x6b, 0x35, 0x18, 0xbb, 0x04, 0xb5, 0x49, 0xd7, 0x26, 0xf4, 0x73,
-  0x8b, 0x11, 0x92, 0x42, 0xb1, 0xd3, 0x7c, 0xee, 0x1c, 0x1f, 0xd3, 0xce,
-  0x48, 0x79, 0x2b, 0xf7, 0xac, 0x65, 0x30, 0xb1, 0x20, 0x3a, 0xaa, 0xc6,
-  0x70, 0xa2, 0x83, 0x0a, 0xf8, 0xe5, 0x10, 0xd6, 0xdb, 0x26, 0xe9, 0xe3,
-  0xb7, 0x07, 0x67, 0x03, 0xd8, 0x06, 0x71, 0xa9, 0x8e, 0xdf, 0xb2, 0x95,
-  0x53, 0x2c, 0xe5, 0xf5, 0xb9, 0x8b, 0x1b, 0x4d, 0x50, 0xcf, 0x82, 0x6a,
-  0x6c, 0x4d, 0xb9, 0x6d, 0xe2, 0x42, 0x1c, 0x1b, 0x4b, 0xa7, 0x05, 0x06,
-  0xd9, 0xd8, 0xc7, 0xe0, 0x7a, 0x7b, 0x4f, 0x3e, 0x7f, 0x3a, 0xc0, 0x6f,
-  0xcf, 0x76, 0x5e, 0x88, 0xb6, 0x74, 0x7c, 0x74, 0xf1, 0xa6, 0xa9, 0x71,
-  0x14, 0xa4, 0xab, 0xc9, 0xbf, 0xc3, 0x24, 0x2e, 0xae, 0xe3, 0xa2, 0xe2,
-  0xb8, 0xa9, 0x61, 0xb9, 0xa8, 0x96, 0xc3, 0x9d, 0x9d, 0x51, 0x45, 0x0c,
-  0xa5, 0x56, 0xf7, 0xe0, 0xe9, 0x68, 0x67, 0xeb, 0xb7, 0x24, 0x20, 0x36,
-  0xd1, 0x0d, 0x79, 0x85, 0xa3, 0x97, 0x6b, 0x0a, 0x96, 0x6f, 0xf2, 0x12,
-  0x6e, 0x39, 0x1a, 0x72, 0xa5, 0x40, 0x82, 0xd2, 0xf0, 0xa9, 0x37, 0xf7,
-  0x38, 0x6c, 0x34, 0x47, 0x02, 0x5d, 0xd5, 0x46, 0x9a, 0xac, 0xd6, 0x21,
-  0x52, 0x6d, 0x5a, 0xd9, 0x0e, 0xa9, 0x13, 0x18, 0x2b, 0x3a, 0x7d, 0x05,
-  0x7d, 0x1a, 0x06, 0xc2, 0x35, 0x65, 0x73, 0x05, 0x8d, 0xa1, 0x48, 0x18,
-  0x80, 0x48, 0x2e, 0x21, 0x8d, 0xa7, 0xb0, 0xca, 0xd9, 0x0f, 0x14, 0x97,
-  0xd8, 0x7b, 0x56, 0x2f, 0xea, 0x8e, 0x35, 0x01, 0xe3, 0xfb, 0x95, 0x6b,
-  0xe2, 0xef, 0x3d, 0x11, 0x28, 0x61, 0xb3, 0x76, 0x19, 0x7c, 0x6d, 0xd8,
-  0x85, 0xd2, 0xa0, 0xbe, 0x1f, 0x1e, 0xe6, 0x4e, 0x73, 0x98, 0x1f, 0x51,
-  0x3a, 0x0f, 0x36, 0xe2, 0x97, 0x10, 0xdf, 0x3f, 0x51, 0xf3, 0xc3, 0x1b,
-  0x9b, 0xa6, 0xc5, 0x6c, 0x79, 0x48, 0x71, 0x81, 0xee, 0x11, 0xcd, 0x8e,
-  0x0d, 0x2a, 0xeb, 0x62, 0x0e, 0xbd, 0xb1, 0x2f, 0xad, 0x27, 0xbd, 0x81,
-  0x2c, 0xc1, 0xa6, 0x07, 0x75, 0xb0, 0x99, 0x2e, 0x21, 0x18, 0xae, 0x6b,
-  0x4e, 0x50, 0xc1, 0x69, 0x09, 0xed, 0x2f, 0xa8, 0x0b, 0x01, 0x93, 0x64,
-  0xf2, 0x11, 0xe1, 0x7f, 0xa4, 0xd3, 0x3f, 0x7f, 0xd2, 0x36, 0x81, 0x9f,
-  0x5e, 0x1c, 0xed, 0x87, 0x45, 0x6b, 0xc4, 0x5c, 0xae, 0x96, 0x2a, 0x09,
-  0xd8, 0xe3, 0xcc, 0x6f, 0xc6, 0x48, 0x61, 0x00, 0xd5, 0x60, 0x76, 0x83,
-  0x0e, 0xf4, 0x38, 0xe4, 0x08, 0x72, 0x75, 0x22, 0x71, 0x81, 0x54, 0xad,
-  0xe0, 0x06, 0x0b, 0x67, 0xb0, 0xda, 0xe1, 0xde, 0xb6, 0xd0, 0x55, 0x9d,
-  0x15, 0xd3, 0x96, 0xca, 0x35, 0x0c, 0xe6, 0x25, 0x14, 0xda, 0x5a, 0x2c,
-  0xa1, 0x10, 0x48, 0xea, 0x56, 0x7c, 0x21, 0xa7, 0xdb, 0xb1, 0x68, 0x45,
-  0x66, 0x40, 0xed, 0x66, 0x9f, 0x0d, 0xb2, 0xdf, 0x2e, 0x0c, 0xc2, 0xea,
-  0xb2, 0x91, 0x9d, 0x0a, 0xe2, 0x2d, 0xa6, 0xcb, 0xea, 0xd7, 0x12, 0xef,
-  0xc0, 0x83, 0x31, 0x8b, 0x24, 0x26, 0x61, 0x7a, 0xf0, 0x10, 0x75, 0x95,
-  0xfd, 0x85, 0x15, 0x51, 0xfd, 0x29, 0xe2, 0xac, 0x01, 0xb9, 0xdb, 0xe0,
-  0x2c, 0x24, 0x77, 0x9a, 0x2e, 0xd3, 0x00, 0xaa, 0xd5, 0xdd, 0x0f, 0x71,
-  0x3b, 0x41, 0x9d, 0xbd, 0x22, 0x68, 0xc3, 0x1d, 0xa7, 0xdc, 0x67, 0xb9,
-  0x4b, 0xe3, 0xf9, 0xe8, 0x81, 0xa3, 0x11, 0x0e, 0x2c, 0x1c, 0x19, 0xaa,
-  0xa1, 0x38, 0x56, 0x83, 0x5a, 0x48, 0x8e, 0x03, 0x6d, 0x7e, 0x77, 0xfe,
-  0xe6, 0xcf, 0x66, 0xef, 0xd9, 0x1a, 0x74, 0x1a, 0xd3, 0x1b, 0x53, 0xa8,
-  0x05, 0xf4, 0xab, 0x44, 0x51, 0x5b, 0x3a, 0xff, 0x47, 0x07, 0xb1, 0xcd,
-  0x72, 0xc4, 0x1b, 0x6d, 0x72, 0x35, 0x0e, 0xae, 0xac, 0xae, 0x62, 0xff,
-  0x93, 0xd1, 0x33, 0xb8, 0xa2, 0xde, 0x1c, 0x3e, 0x7b, 0xb2, 0xb7, 0xbb,
-  0x35, 0x6a, 0xdf, 0x06, 0x1b, 0x9f, 0xb4, 0xfe, 0x6e, 0xcb, 0x92, 0x8f,
-  0x4b, 0x26, 0x98, 0xcd, 0xa3, 0x1f, 0xce, 0xde, 0xd5, 0xe7, 0x27, 0x33,
-  0x6a, 0x89, 0x75, 0xeb, 0x66, 0xe8, 0x0d, 0x89, 0xb5, 0xf6, 0x2d, 0x89,
-  0x10, 0x07, 0xa7, 0x0d, 0x4c, 0xd1, 0x7b, 0x53, 0xa4, 0x7c, 0x06, 0x7a,
-  0xbc, 0x20, 0xbd, 0x13, 0x12, 0x5e, 0x49, 0x31, 0x39, 0x65, 0x68, 0xaa,
-  0xa4, 0xd7, 0xc0, 0x92, 0xaa, 0xcf, 0xae, 0x66, 0xc0, 0x86, 0x3a, 0xd9,
-  0xa1, 0x48, 0x7a, 0x96, 0xa6, 0x6a, 0x24, 0x5c, 0xff, 0xa6, 0x0c, 0xb0,
-  0x0e, 0xe4, 0xec, 0xb7, 0x0a, 0x4f, 0xa1, 0x61, 0x19, 0xa4, 0xf0, 0xb4,
-  0xb0, 0x6a, 0x9c, 0xdb, 0xc6, 0x79, 0x22, 0xd6, 0x41, 0x7f, 0x22, 0x84,
-  0x27, 0xa9, 0x57, 0xb8, 0x69, 0x17, 0x11, 0xb4, 0x30, 0x9b, 0x60, 0x38,
-  0x25, 0x32, 0xa3, 0x48, 0xa8, 0x28, 0x57, 0xc5, 0x6c, 0xb5, 0xa0, 0x15,
-  0xf8, 0xea, 0xde, 0xc2, 0x8e, 0xf4, 0xc2, 0x86, 0xca, 0xde, 0xce, 0x69,
-  0x48, 0x60, 0xfa, 0x7a, 0xb6, 0x53, 0x6b, 0x6d, 0x84, 0x45, 0x68, 0x18,
-  0x57, 0x87, 0xbb, 0xae, 0xf4, 0x1a, 0x27, 0x1c, 0x8a, 0x75, 0xb0, 0x69,
-  0x73, 0xe3, 0x8b, 0xfb, 0xb7, 0x94, 0x2a, 0x92, 0x2a, 0x66, 0xb9, 0xff,
-  0xf1, 0x24, 0xfd, 0x9a, 0x19, 0x5c, 0x1c, 0xf5, 0x52, 0x11, 0x1a, 0x65,
-  0xec, 0x5c, 0x9e, 0x25, 0xc3, 0x18, 0xb5, 0x68, 0xeb, 0xad, 0xf6, 0x22,
-  0x3c, 0x78, 0x13, 0x0c, 0xd2, 0x02, 0x28, 0x44, 0xfa, 0x7b, 0x1a, 0x6d,
-  0xb2, 0x44, 0x16, 0x3d, 0xfb, 0xfc, 0xd9, 0xd3, 0x2d, 0x55, 0xf9, 0x5d,
-  0x7c, 0xce, 0x56, 0x97, 0xf3, 0x0d, 0xeb, 0xb6, 0x2a, 0x1d, 0x88, 0xf4,
-  0x22, 0x45, 0x7d, 0x28, 0xd0, 0xba, 0xba, 0xf1, 0xa4, 0xcc, 0x0e, 0x94,
-  0x71, 0x98, 0x94, 0x2c, 0x06, 0xb7, 0xd9, 0x1c, 0x75, 0x26, 0xc5, 0xa5,
-  0xa2, 0x4d, 0x1c, 0x8e, 0xa0, 0x4e, 0x47, 0xe4, 0xb2, 0xd1, 0x71, 0x55,
-  0xc9, 0xd5, 0xe0, 0xf2, 0x2d, 0xd8, 0x86, 0x71, 0x5c, 0x75, 0x9a, 0xbe,
-  0xc5, 0xc5, 0x14, 0x96, 0x3a, 0x44, 0x59, 0xbf, 0x3c, 0xb8, 0x8b, 0xc4,
-  0x19, 0x00, 0x83, 0xbf, 0xde, 0x75, 0x5d, 0xc8, 0x8a, 0x24, 0xbd, 0xc2,
-  0xdc, 0xc7, 0x77, 0x67, 0x7d, 0x1d, 0x05, 0xbd, 0x8a, 0xb7, 0xdf, 0xde,
-  0xd7, 0x70, 0x1e, 0x5f, 0x5a, 0xb0, 0x6d, 0x6d, 0x5b, 0x24, 0x0b, 0x43,
-  0x32, 0x96, 0x5b, 0x3d, 0x2f, 0x7c, 0xbd, 0x19, 0xb1, 0xe7, 0xc8, 0x05,
-  0x8d, 0x18, 0xc6, 0x75, 0xb0, 0x10, 0xbe, 0xbc, 0xb7, 0x42, 0x18, 0xd4,
-  0x46, 0xb6, 0xa6, 0xba, 0x84, 0x23, 0xb6, 0x30, 0xb9, 0x58, 0xdd, 0x50,
-  0x08, 0x69, 0xb5, 0xdf, 0x1d, 0x51, 0xb6, 0x6b, 0xae, 0x48, 0xa7, 0x8d,
-  0x75, 0x58, 0x33, 0x78, 0x29, 0xbb, 0x82, 0x9c, 0x70, 0xe8, 0x36, 0xc3,
-  0x76, 0xb6, 0x4a, 0xb4, 0x89, 0xf1, 0x6e, 0x6f, 0x6f, 0x3d, 0x3a, 0x66,
-  0x7d, 0xf0, 0xb1, 0x31, 0x9e, 0x89, 0xb2, 0x91, 0x85, 0x75, 0x2a, 0xfc,
-  0x10, 0xb8, 0x4b, 0xde, 0x2f, 0x41, 0xba, 0x95, 0xa0, 0x46, 0xb1, 0xbf,
-  0xb3, 0xd0, 0x12, 0x91, 0x1c, 0xd4, 0x01, 0xc8, 0x03, 0x64, 0xd8, 0x58,
-  0xe7, 0x57, 0x9f, 0xba, 0x0a, 0xaf, 0x92, 0xac, 0xae, 0x5c, 0x41, 0xb3,
-  0x35, 0x38, 0x94, 0xb1, 0x55, 0x3a, 0x2c, 0x0b, 0xf2, 0x4c, 0x38, 0x36,
-  0x27, 0x98, 0x9f, 0x9c, 0x2a, 0xef, 0x54, 0x96, 0x33, 0x68, 0x4a, 0x82,
-  0x38, 0x9f, 0xdb, 0xac, 0xd8, 0x3d, 0xdd, 0x28, 0xbf, 0x38, 0x6a, 0x01,
-  0x51, 0xc9, 0x93, 0x7c, 0x7c, 0xcc, 0x23, 0x9d, 0x66, 0x1d, 0x52, 0xab,
-  0x77, 0x1d, 0xa2, 0x41, 0xd2, 0xf1, 0x6f, 0xfc, 0x9c, 0x05, 0x50, 0xce,
-  0x92, 0xd5, 0x02, 0xbc, 0x80, 0x12, 0xc3, 0xed, 0xc6, 0x55, 0x70, 0xd4,
-  0x8d, 0x15, 0xb3, 0x52, 0x69, 0xf8, 0xb4, 0xb6, 0x98, 0x03, 0x39, 0xa1,
-  0x08, 0xb5, 0xef, 0x12, 0x82, 0x01, 0xdc, 0xff, 0xa0, 0xd8, 0x0f, 0x70,
-  0x96, 0xf4, 0xb2, 0x51, 0x1c, 0x54, 0x2e, 0x8b, 0x89, 0x5b, 0x68, 0x0d,
-  0x48, 0x1b, 0x05, 0x37, 0x68, 0xc6, 0x56, 0xa6, 0x2c, 0xa9, 0x8a, 0x69,
-  0xcb, 0xb0, 0xe4, 0x9c, 0xe1, 0xe5, 0x54, 0x4d, 0xdf, 0x23, 0x3c, 0x48,
-  0x5d, 0x7f, 0xd0, 0x5f, 0x98, 0x45, 0x6b, 0x22, 0xc4, 0x96, 0xf9, 0xa9,
-  0x34, 0x28, 0xa8, 0x23, 0xe6, 0xbd, 0x5f, 0xba, 0x20, 0x7d, 0x0d, 0x92,
-  0x62, 0x1e, 0x29, 0x1a, 0xb3, 0x40, 0x56, 0x65, 0xb3, 0xc8, 0xfb, 0xcb,
-  0x1d, 0xde, 0xfa, 0xfd, 0xb2, 0x15, 0xfd, 0x1a, 0x94, 0x62, 0xe6, 0x36,
-  0x00, 0xc2, 0x20, 0xc9, 0x1f, 0x3e, 0x6e, 0x01, 0xba, 0x01, 0x0b, 0xc1,
-  0xa1, 0xdf, 0x56, 0x2b, 0x86, 0x75, 0x8c, 0x2e, 0x6a, 0x19, 0x11, 0x60,
-  0xba, 0xc1, 0x4c, 0x37, 0xe9, 0x66, 0x60, 0x76, 0x5e, 0x2d, 0x37, 0x77,
-  0xb7, 0x04, 0x98, 0x57, 0x8b, 0xa7, 0x74, 0x26, 0x83, 0x5a, 0x35, 0x69,
-  0x04, 0x77, 0x1d, 0xba, 0xbe, 0xe1, 0xc1, 0x65, 0xc0, 0x74, 0x04, 0x91,
-  0x5f, 0xea, 0x61, 0x90, 0x55, 0x73, 0x55, 0x1f, 0xd8, 0xff, 0xd5, 0xa5,
-  0x0e, 0x0b, 0x0c, 0xd4, 0x92, 0xb3, 0x1d, 0x4a, 0x29, 0x62, 0xb7, 0xe9,
-  0x11, 0xfa, 0xe5, 0x82, 0xb0, 0x62, 0xc8, 0xb4, 0x7c, 0xf3, 0xd9, 0x90,
-  0x07, 0x7c, 0x55, 0xe4, 0x6d, 0xa8, 0x4e, 0x4e, 0x14, 0xd3, 0x2b, 0xe4,
-  0x62, 0x5d, 0xf1, 0xe9, 0x1e, 0x67, 0xe5, 0xf4, 0xc2, 0xa2, 0xee, 0x92,
-  0xfc, 0xd3, 0x31, 0xd9, 0xfa, 0x96, 0xb6, 0xc8, 0xf4, 0x80, 0xb3, 0x0b,
-  0xd3, 0xa9, 0x9d, 0x72, 0x29, 0x4e, 0x80, 0x44, 0x0f, 0x86, 0xfa, 0x52,
-  0x9e, 0x4e, 0x0c, 0x44, 0x63, 0x1d, 0x60, 0xd2, 0x26, 0x96, 0xa3, 0xa4,
-  0xd6, 0x51, 0x67, 0x9b, 0x6d, 0x87, 0x26, 0x0c, 0x00, 0xa4, 0x37, 0x57,
-  0x81, 0x13, 0x81, 0x7c, 0x12, 0xd9, 0x21, 0x82, 0x33, 0x73, 0x76, 0xa1,
-  0x02, 0xd9, 0xdf, 0x0e, 0x0f, 0x6a, 0x7f, 0x71, 0xcf, 0x37, 0x59, 0xbf,
-  0x46, 0x7a, 0x51, 0xbf, 0x64, 0x83, 0x60, 0xd5, 0xb7, 0xe5, 0x6d, 0x24,
-  0x95, 0xb5, 0xab, 0x41, 0xac, 0xe9, 0x5b, 0x48, 0x5b, 0xba, 0xf0, 0xad,
-  0x4b, 0xe3, 0xfe, 0x08, 0xbe, 0x1b, 0x48, 0xe0, 0xfb, 0x64, 0xc5, 0xe1,
-  0x26, 0xcd, 0x4a, 0xa9, 0xc2, 0xaf, 0x45, 0x2c, 0x90, 0x27, 0xb4, 0xca,
-  0x9d, 0x47, 0x79, 0x61, 0xfc, 0x9f, 0x24, 0x5e, 0x84, 0xb5, 0x22, 0x51,
-  0xd0, 0xb9, 0x6c, 0x0b, 0x75, 0x2b, 0x90, 0x76, 0x19, 0x9e, 0x88, 0x46,
-  0x6c, 0xa2, 0xf4, 0x81, 0x00, 0x14, 0x69, 0x5c, 0x5b, 0xef, 0x04, 0xa9,
-  0x44, 0x03, 0x0e, 0x6d, 0x42, 0x35, 0x5f, 0xb9, 0x7b, 0xd4, 0xb4, 0xaa,
-  0x8d, 0x38, 0xdc, 0x7d, 0x5a, 0x8f, 0xe9, 0xf5, 0x2a, 0xbb, 0xa1, 0x21,
-  0xb4, 0xc3, 0x9e, 0xcd, 0xc9, 0x91, 0xa2, 0xe6, 0x89, 0x14, 0x50, 0x35,
-  0x48, 0x09, 0x79, 0x9d, 0x01, 0xb3, 0x6e, 0x91, 0xc2, 0xaa, 0x75, 0x4c,
-  0x1e, 0x0a, 0x57, 0x13, 0xdb, 0xae, 0x2c, 0xa0, 0x8c, 0xca, 0x2d, 0xe0,
-  0xc3, 0x69, 0x90, 0x56, 0x15, 0x43, 0x02, 0xa2, 0xae, 0x82, 0x78, 0x08,
-  0xe1, 0x53, 0x86, 0x06, 0xc3, 0x97, 0x8d, 0x5a, 0x3a, 0x5b, 0x47, 0x76,
-  0x55, 0x8a, 0x73, 0x5c, 0xb7, 0x95, 0xc9, 0x34, 0x04, 0x31, 0xec, 0x18,
-  0x89, 0xf2, 0xe1, 0x61, 0x47, 0x11, 0xc0, 0x8b, 0x46, 0x39, 0x62, 0x47,
-  0x8a, 0xf6, 0xd2, 0xa0, 0x86, 0x61, 0x0b, 0x27, 0xa4, 0x25, 0x10, 0x74,
-  0x1c, 0x59, 0xa9, 0x3d, 0xb3, 0x49, 0x2a, 0x46, 0x3e, 0x5f, 0x55, 0x92,
-  0xf8, 0xcc, 0x66, 0x31, 0xce, 0x27, 0xd9, 0xb2, 0x03, 0x25, 0x07, 0xd0,
-  0x85, 0x45, 0x08, 0x1f, 0xeb, 0xc4, 0x16, 0x45, 0xd4, 0xb7, 0x33, 0xf9,
-  0x4a, 0x54, 0x96, 0xaa, 0xee, 0xac, 0x00, 0xe8, 0x5d, 0x21, 0x7c, 0x8e,
-  0xf5, 0x58, 0xe4, 0x4c, 0x3a, 0x26, 0xdb, 0xb2, 0x20, 0x99, 0x32, 0x51,
-  0x5b, 0x90, 0xc0, 0x06, 0x0c, 0xe9, 0xc0, 0x57, 0x77, 0x72, 0xc5, 0x0d,
-  0x4c, 0xe3, 0x78, 0x30, 0x48, 0xe2, 0x81, 0x98, 0xc0, 0x8e, 0xb5, 0xb6,
-  0x6a, 0x0d, 0x02, 0x90, 0xab, 0x22, 0xbf, 0x0e, 0x8b, 0x65, 0x75, 0x89,
-  0x6a, 0x95, 0x11, 0x2d, 0x56, 0xec, 0x68, 0x68, 0xd9, 0x9a, 0x69, 0x5f,
-  0xe6, 0x2b, 0x01, 0x09, 0x67, 0xa7, 0xb5, 0xfa, 0xcb, 0x48, 0x42, 0x8f,
-  0x27, 0xbc, 0x3b, 0x93, 0x7b, 0x37, 0x4d, 0x4b, 0xb2, 0x47, 0x36, 0xbc,
-  0xa9, 0xd4, 0x6d, 0xf2, 0xb0, 0xc7, 0x1a, 0xfd, 0x7c, 0x67, 0x8c, 0xb5,
-  0x45, 0x19, 0xe2, 0x09, 0x09, 0x31, 0x41, 0x6e, 0x94, 0x9f, 0x28, 0x93,
-  0x5d, 0x75, 0xd8, 0x4c, 0xdd, 0x60, 0x4c, 0x5c, 0x67, 0x9b, 0x40, 0x2c,
-  0xa5, 0x48, 0x14, 0x77, 0x45, 0x97, 0xc1, 0x12, 0x63, 0xf2, 0x7a, 0x1e,
-  0x96, 0x95, 0x70, 0x5e, 0x83, 0xe5, 0x72, 0xa4, 0x85, 0x3b, 0xdf, 0xd9,
-  0x63, 0xd1, 0xe6, 0xf8, 0xec, 0xdd, 0xd1, 0xd7, 0xa7, 0x5b, 0x8f, 0xb9,
-  0x16, 0x14, 0xd2, 0x10, 0x61, 0x28, 0x38, 0x54, 0x38, 0xde, 0x1d, 0xed,
-  0xc0, 0xef, 0x04, 0x88, 0xb9, 0xf0, 0x6a, 0xef, 0x0a, 0xba, 0x1b, 0x48,
-  0x36, 0xaa, 0x9c, 0x57, 0xc1, 0xb5, 0x73, 0xc3, 0xff, 0xd4, 0x80, 0xff,
-  0xb8, 0x2b, 0xdc, 0xff, 0xeb, 0xf1, 0x78, 0x78, 0x70, 0x76, 0x2c, 0xd5,
-  0xab, 0xe9, 0xe7, 0x1a, 0xe0, 0xec, 0xae, 0xe8, 0x7e, 0x31, 0x8f, 0x73,
-  0xc8, 0x60, 0x3d, 0xc0, 0x3f, 0x88, 0xe9, 0x47, 0xf3, 0xcd, 0xeb, 0xf6,
-  0xec, 0x78, 0x1b, 0x5d, 0xc1, 0xb1, 0x81, 0x95, 0xe8, 0x8e, 0xe9, 0x6b,
-  0x57, 0x2e, 0x11, 0x74, 0x3f, 0xe4, 0x6c, 0x80, 0x40, 0x8d, 0x81, 0xc4,
-  0x24, 0x7f, 0x92, 0xc2, 0x3b, 0x5c, 0x19, 0x92, 0x60, 0x37, 0x8c, 0x11,
-  0xdb, 0xd3, 0x39, 0x23, 0xcd, 0xc0, 0xe1, 0x1b, 0xf6, 0x7b, 0xd8, 0x67,
-  0x05, 0x6e, 0x91, 0xc1, 0xb1, 0x49, 0xb6, 0xd2, 0xf0, 0x96, 0xa6, 0x71,
-  0xaf, 0x3f, 0x24, 0xe6, 0xb5, 0xdf, 0x97, 0x7c, 0x8d, 0x24, 0xe3, 0x42,
-  0xbb, 0x91, 0x9d, 0xb5, 0x28, 0xb0, 0x97, 0xd5, 0x6e, 0x6c, 0x87, 0xb6,
-  0x33, 0x5c, 0x75, 0x8f, 0x8e, 0x8e, 0x28, 0x8b, 0x57, 0xe2, 0x0d, 0x54,
-  0xd1, 0xf1, 0x9f, 0x82, 0x8b, 0x1b, 0x1e, 0x89, 0x20, 0xb9, 0xed, 0xa1,
-  0x6b, 0x5e, 0xf9, 0x8c, 0x4f, 0x84, 0x53, 0xb7, 0x86, 0x8b, 0x00, 0xbf,
-  0x38, 0x3c, 0xab, 0x55, 0x42, 0x6f, 0x59, 0x3d, 0x26, 0xf7, 0x3e, 0x47,
-  0x1c, 0xc9, 0xb9, 0x99, 0x6b, 0x7d, 0x31, 0x5a, 0x5f, 0xd8, 0xb0, 0x0a,
-  0x2a, 0x1c, 0x75, 0xdd, 0x7b, 0xb5, 0x8b, 0xcf, 0x15, 0xff, 0x5c, 0x7f,
-  0xf5, 0xf9, 0x19, 0x04, 0xb7, 0x9f, 0xfb, 0xb0, 0xb1, 0x34, 0x8a, 0x25,
-  0x95, 0xce, 0x3a, 0x33, 0xb5, 0x6c, 0x85, 0xac, 0x16, 0x8a, 0xae, 0x11,
-  0xe3, 0x00, 0x19, 0x66, 0xd7, 0xf1, 0x6b, 0x1a, 0x0d, 0x0b, 0x62, 0xa4,
-  0x80, 0x06, 0x36, 0xb3, 0xb6, 0x00, 0xe9, 0x8d, 0xe2, 0xe0, 0xdc, 0x28,
-  0xdb, 0xed, 0x2d, 0x97, 0xdc, 0x46, 0x32, 0x0a, 0x56, 0x45, 0x6b, 0xdc,
-  0x2a, 0x60, 0x5c, 0x37, 0xce, 0x2c, 0x9b, 0xfb, 0x0b, 0x89, 0x3a, 0x8c,
-  0xae, 0x57, 0x85, 0x40, 0x1a, 0x28, 0x20, 0x91, 0x22, 0x6d, 0x17, 0x09,
-  0x8f, 0xb9, 0x3e, 0xe0, 0x56, 0x0d, 0x3e, 0x51, 0xca, 0xe9, 0xd8, 0x2f,
-  0x34, 0x09, 0x61, 0x52, 0xe4, 0x37, 0x74, 0x5a, 0xf9, 0x35, 0x57, 0x91,
-  0x5d, 0x64, 0x38, 0xd3, 0x2d, 0xe9, 0x46, 0x99, 0x39, 0xbf, 0x68, 0x47,
-  0x04, 0x2a, 0x6a, 0x0f, 0x68, 0x8c, 0x83, 0x17, 0x86, 0x04, 0x16, 0x1e,
-  0xd9, 0x7c, 0x06, 0x24, 0x0a, 0xf1, 0x9b, 0xeb, 0x5f, 0xfb, 0x60, 0xc2,
-  0xb6, 0x87, 0x5b, 0xe1, 0xfc, 0xff, 0x79, 0x34, 0xe4, 0xc8, 0x22, 0xa4,
-  0xa1, 0x8e, 0x2d, 0xaf, 0x11, 0x93, 0x70, 0xfd, 0x97, 0x44, 0x55, 0xc2,
-  0xcd, 0xd9, 0x32, 0xd7, 0xb4, 0x0d, 0xa3, 0x2a, 0xc6, 0x30, 0x80, 0xcc,
-  0x11, 0x53, 0x35, 0x54, 0x11, 0x8e, 0x4b, 0x91, 0x30, 0x8e, 0x99, 0x2f,
-  0xe5, 0xa3, 0x78, 0xa5, 0xd0, 0xb3, 0xdb, 0x62, 0x06, 0x8b, 0x65, 0xee,
-  0xd2, 0x16, 0x7f, 0x13, 0xf8, 0x04, 0x6f, 0x0f, 0xc0, 0xd2, 0x90, 0x5a,
-  0xae, 0x6e, 0x94, 0x3f, 0x84, 0x70, 0x24, 0xd2, 0x53, 0x4b, 0xa5, 0x10,
-  0x78, 0x7b, 0x17, 0x27, 0x23, 0x09, 0x84, 0x2e, 0xed, 0x97, 0x81, 0x8f,
-  0x43, 0x9e, 0x21, 0x50, 0xaa, 0xd1, 0x11, 0x07, 0xbd, 0x74, 0xe8, 0x39,
-  0x96, 0x24, 0x8a, 0x39, 0xa6, 0x8a, 0xc3, 0x29, 0x2e, 0x09, 0x55, 0x1a,
-  0x63, 0xf3, 0x36, 0x58, 0xf8, 0x8b, 0x2b, 0xfa, 0xda, 0xa9, 0xf3, 0x95,
-  0x95, 0xda, 0xf4, 0xad, 0x96, 0x85, 0x7d, 0xe4, 0x90, 0xed, 0xdf, 0xf8,
-  0x48, 0xef, 0x81, 0x58, 0x90, 0x44, 0x1f, 0xeb, 0x10, 0x20, 0x31, 0x9a,
-  0xc8, 0x3f, 0x34, 0x08, 0x7e, 0xdf, 0xff, 0x7c, 0xc7, 0x62, 0x7d, 0xd9,
-  0x68, 0x17, 0x3e, 0x03, 0xe8, 0xc6, 0x0e, 0x35, 0x02, 0xc8, 0x81, 0x79,
-  0xe5, 0x1e, 0x6d, 0xd6, 0xa3, 0x78, 0x31, 0x7a, 0xba, 0x55, 0xa3, 0x97,
-  0x6a, 0xbe, 0x70, 0xc8, 0x9a, 0x26, 0x98, 0x44, 0xef, 0x2e, 0x4e, 0xde,
-  0x76, 0xd8, 0x04, 0xe0, 0x48, 0xc4, 0x77, 0xf5, 0xaf, 0x5a, 0xc6, 0x4e,
-  0x04, 0x63, 0x73, 0x2c, 0x39, 0x89, 0x8f, 0xe9, 0x55, 0x26, 0xd8, 0xff,
-  0x6f, 0xd3, 0x69, 0x91, 0x97, 0xf9, 0xa5, 0xb8, 0x33, 0xed, 0x82, 0xa1,
-  0x2f, 0x8e, 0x8f, 0xc7, 0xd1, 0x5d, 0x32, 0xb1, 0x64, 0xab, 0x56, 0x68,
-  0xa1, 0xe4, 0x2f, 0x82, 0x04, 0x97, 0x45, 0x9a, 0x54, 0x2c, 0x68, 0x98,
-  0x5d, 0x8f, 0x13, 0xb0, 0xf9, 0xa5, 0x64, 0x98, 0x64, 0xa4, 0x70, 0x26,
-  0x50, 0xdf, 0xb8, 0xd0, 0xc0, 0x1c, 0x5c, 0x69, 0x99, 0xe4, 0x1d, 0x96,
-  0x5d, 0x19, 0x80, 0xb1, 0x14, 0x59, 0x1b, 0xdc, 0x15, 0x93, 0xb8, 0x74,
-  0xe0, 0x53, 0x69, 0xc1, 0x14, 0xc7, 0xc2, 0x86, 0x9a, 0x63, 0x6e, 0x52,
-  0x64, 0xf9, 0xb7, 0xb2, 0xdf, 0xb5, 0xfa, 0xa4, 0x63, 0x87, 0x66, 0x90,
-  0xc8, 0x66, 0x79, 0x01, 0x37, 0x49, 0x80, 0xa6, 0xcc, 0x68, 0xfe, 0x2b,
-  0x04, 0x7f, 0xf2, 0xf0, 0xee, 0x3b, 0x24, 0xf6, 0xeb, 0x5c, 0x62, 0x2f,
-  0xb1, 0xcc, 0xcc, 0x95, 0x24, 0x2f, 0x10, 0x41, 0x5a, 0x0a, 0x4e, 0xab,
-  0x65, 0x8f, 0x8c, 0x95, 0x3c, 0x26, 0xe1, 0xd9, 0x7e, 0xf8, 0xec, 0x24,
-  0xb5, 0xb6, 0xbf, 0x4e, 0xaf, 0xd6, 0x20, 0xe4, 0x8b, 0x16, 0xd5, 0x14,
-  0x33, 0x79, 0x44, 0xca, 0x2f, 0x0b, 0x15, 0x2e, 0x9b, 0xa5, 0x58, 0x3a,
-  0xd0, 0x40, 0x6a, 0x92, 0x25, 0x51, 0xdb, 0x83, 0x55, 0x76, 0x1f, 0x16,
-  0x29, 0x71, 0x81, 0x68, 0xee, 0xa8, 0x16, 0xfb, 0x21, 0xc1, 0xb1, 0x65,
-  0x1d, 0x6d, 0x27, 0x89, 0x4a, 0xb0, 0x3a, 0x94, 0x38, 0x13, 0x20, 0x79,
-  0x36, 0xa3, 0x7f, 0x46, 0x5d, 0x39, 0x7f, 0xd8, 0x72, 0x16, 0x22, 0xd5,
-  0x28, 0xd0, 0x99, 0x0d, 0xf0, 0xbd, 0xc0, 0x2a, 0xa9, 0xd9, 0x20, 0xd7,
-  0x87, 0xc2, 0x14, 0xbc, 0xb2, 0x9a, 0xe5, 0x0c, 0x6d, 0xab, 0x8a, 0x00,
-  0x5f, 0xe1, 0x72, 0x7b, 0xff, 0xc7, 0xdf, 0xdb, 0xf9, 0x48, 0x3f, 0xfe,
-  0x2c, 0x92, 0xb4, 0x00, 0x68, 0x78, 0x34, 0x09, 0x23, 0x9d, 0xd2, 0x57,
-  0xfe, 0xe0, 0x4d, 0x62, 0xa4, 0x28, 0x71, 0xcb, 0xc9, 0x11, 0x6a, 0x0a,
-  0xa7, 0xea, 0x42, 0xd4, 0xab, 0x57, 0xc7, 0x66, 0x7c, 0x1f, 0x60, 0xc3,
-  0x71, 0x60, 0x45, 0x13, 0x8b, 0x23, 0x47, 0xbc, 0x28, 0x90, 0xf4, 0x6c,
-  0x1d, 0x0e, 0xb9, 0xc1, 0xcd, 0xd4, 0x6b, 0xce, 0x00, 0xe8, 0x43, 0x1c,
-  0x3f, 0x18, 0x3f, 0xdf, 0x2c, 0x27, 0x52, 0xc5, 0xb1, 0x0d, 0xa7, 0x2a,
-  0x7b, 0xab, 0xfe, 0x8d, 0xff, 0xa0, 0xbd, 0x18, 0x54, 0x77, 0xf9, 0xdf,
-  0x47, 0x1c, 0xd4, 0x08, 0xc6, 0x3b, 0xcc, 0xa5, 0xc4, 0xf6, 0x87, 0xdf,
-  0xed, 0x72, 0x08, 0x51, 0xaf, 0x5d, 0x3a, 0x1b, 0x2b, 0x60, 0x5b, 0xec,
-  0x50, 0x78, 0xd6, 0xa0, 0xb7, 0xd6, 0xbb, 0xe3, 0x5e, 0x06, 0x7c, 0x05,
-  0xfc, 0x7d, 0xc4, 0xff, 0xfe, 0xb8, 0x3b, 0x7c, 0xf6, 0xb3, 0xeb, 0xf5,
-  0x77, 0xbb, 0x1f, 0x7e, 0xb7, 0xd7, 0xeb, 0xac, 0x1d, 0xaf, 0x89, 0x81,
-  0xf5, 0x88, 0xbe, 0x12, 0xc5, 0x4b, 0x35, 0x84, 0x56, 0xb5, 0x4d, 0x5f,
-  0x37, 0x01, 0x85, 0x59, 0xda, 0x69, 0x1f, 0x6c, 0x85, 0x7a, 0x04, 0x0a,
-  0x3d, 0xac, 0xe1, 0x1b, 0x68, 0x2d, 0x5a, 0xd2, 0x56, 0xc3, 0xb7, 0xa6,
-  0x82, 0xb5, 0x0d, 0x73, 0x66, 0xcb, 0x72, 0x0a, 0x8c, 0x84, 0xd9, 0x3d,
-  0xdd, 0x73, 0x82, 0xb4, 0x3a, 0x72, 0xe1, 0x33, 0x26, 0x3d, 0x2a, 0xe1,
-  0x2a, 0x46, 0xd7, 0xa6, 0xbb, 0xf1, 0x19, 0x51, 0x6e, 0xab, 0xcb, 0x32,
-  0xe1, 0x4d, 0x42, 0x9e, 0xe6, 0xb5, 0xe0, 0x2a, 0x0e, 0xaf, 0x10, 0xbb,
-  0x3f, 0x40, 0x4d, 0xb4, 0xd3, 0x47, 0x8e, 0x4f, 0x1c, 0x3a, 0xa7, 0xa4,
-  0x68, 0x91, 0x96, 0x8f, 0x77, 0x18, 0xe0, 0xf8, 0xea, 0x2e, 0x81, 0xf4,
-  0xda, 0xbc, 0x77, 0x36, 0x4f, 0x9d, 0xae, 0x83, 0xc7, 0x42, 0x90, 0xfb,
-  0xf0, 0xf5, 0xc0, 0x1d, 0x9e, 0x44, 0x56, 0x11, 0x7d, 0xba, 0xaa, 0xda,
-  0x40, 0x24, 0xa3, 0xad, 0xae, 0x1c, 0x81, 0xb0, 0x2d, 0x03, 0x3d, 0xd3,
-  0x60, 0xee, 0xa8, 0x94, 0x82, 0x3a, 0xa2, 0x0f, 0x0a, 0xd6, 0x2a, 0xf3,
-  0x22, 0x89, 0x3a, 0x6d, 0xcb, 0x26, 0xae, 0x52, 0xee, 0xc0, 0x61, 0x3c,
-  0x27, 0xf3, 0xb2, 0x4d, 0x1b, 0x87, 0xec, 0xeb, 0x61, 0x2c, 0xbb, 0x0a,
-  0x99, 0xe3, 0x83, 0xb0, 0x6e, 0xaa, 0x4b, 0x4c, 0x8c, 0x6f, 0xbd, 0x13,
-  0xc7, 0xce, 0xa8, 0x46, 0xc9, 0xaf, 0xcb, 0xfc, 0x1e, 0xd5, 0x2d, 0x14,
-  0x0e, 0xf0, 0x39, 0x76, 0xc5, 0xac, 0x7c, 0x5e, 0x61, 0x90, 0x01, 0xdf,
-  0x95, 0xcc, 0x8a, 0x1a, 0x07, 0x60, 0x4f, 0x92, 0xf7, 0xd5, 0x18, 0x41,
-  0xe0, 0x48, 0x51, 0xfc, 0x19, 0x7e, 0x56, 0x00, 0xc9, 0xba, 0x5c, 0x8a,
-  0x8e, 0xdb, 0xb4, 0x21, 0x73, 0x2f, 0xe7, 0xf1, 0xd5, 0xbf, 0x74, 0xa2,
-  0xd4, 0x2a, 0x6a, 0x14, 0x73, 0x22, 0xe0, 0xd3, 0x4a, 0x88, 0x6e, 0x96,
-  0x98, 0x2e, 0x1a, 0x00, 0x98, 0xd0, 0xbc, 0x53, 0xa9, 0x44, 0xf2, 0xfb,
-  0xbd, 0x9d, 0x36, 0x2b, 0xd6, 0x6c, 0x3a, 0x80, 0xb8, 0x59, 0x2d, 0x22,
-  0xa6, 0xa7, 0xd2, 0x08, 0x4a, 0x24, 0x4a, 0x5f, 0xf4, 0x20, 0x41, 0xd6,
-  0x10, 0x9d, 0xa5, 0x21, 0x00, 0x30, 0xd6, 0xa1, 0xd4, 0x76, 0x06, 0x9f,
-  0xfe, 0x5a, 0xc6, 0xf2, 0x28, 0x67, 0xa1, 0xdb, 0x8b, 0x2f, 0xfc, 0xbd,
-  0xe1, 0x24, 0xa1, 0x9b, 0xa7, 0x39, 0xc7, 0x4d, 0x1f, 0x5a, 0x3a, 0x88,
-  0xea, 0x31, 0x54, 0xdc, 0xd9, 0x57, 0x78, 0x27, 0xba, 0x80, 0x4e, 0xc7,
-  0xb4, 0x7d, 0xca, 0xf5, 0xcc, 0xa3, 0xbd, 0xd1, 0x8e, 0x0a, 0x7e, 0x0f,
-  0xa6, 0xbf, 0x8a, 0xbf, 0xa6, 0xd6, 0x86, 0xaf, 0x88, 0xc9, 0xf2, 0xfa,
-  0x5f, 0x56, 0x59, 0x1d, 0x95, 0xbf, 0xd3, 0xcd, 0x25, 0x6a, 0x98, 0x49,
-  0xf9, 0x5a, 0x05, 0xa1, 0x16, 0xa5, 0x14, 0x9e, 0x72, 0xc5, 0xec, 0x2b,
-  0xd8, 0xfe, 0xd3, 0x92, 0x32, 0xd0, 0xe0, 0xba, 0xfa, 0x11, 0xad, 0xc1,
-  0x2a, 0x42, 0x88, 0xd9, 0x6f, 0x0a, 0xf3, 0x91, 0x89, 0xfc, 0xe6, 0xaa,
-  0x52, 0xe1, 0xbe, 0x3e, 0x7f, 0x73, 0xd8, 0x68, 0xee, 0xf9, 0x67, 0xcf,
-  0x76, 0x7e, 0xcb, 0x78, 0x94, 0x5a, 0x3d, 0x8b, 0x87, 0xeb, 0x05, 0xfd,
-  0xaa, 0x82, 0x41, 0xdd, 0xf5, 0x82, 0xac, 0x08, 0xc6, 0x2f, 0x2b, 0x16,
-  0xa4, 0xae, 0xd1, 0x2e, 0x3f, 0x61, 0x98, 0xa6, 0xe8, 0xe3, 0x7d, 0xc2,
-  0x5a, 0x48, 0xac, 0x36, 0xa5, 0xa5, 0x06, 0xf5, 0xb3, 0x00, 0xcb, 0x11,
-  0x5f, 0xab, 0xac, 0xc3, 0xc7, 0x2a, 0x36, 0x70, 0xbe, 0x01, 0xac, 0x76,
-  0xf4, 0xe1, 0xe9, 0xbb, 0x77, 0x47, 0x87, 0xae, 0x8c, 0x96, 0x22, 0x7e,
-  0x7b, 0x49, 0x59, 0xca, 0x1f, 0x89, 0x4a, 0xdd, 0x5d, 0x2f, 0x48, 0x02,
-  0x59, 0x2d, 0x3f, 0x5b, 0x47, 0x80, 0xa4, 0x0b, 0x09, 0xd2, 0x0d, 0xd0,
-  0x2b, 0x2c, 0x76, 0x5f, 0x18, 0x55, 0x87, 0x0a, 0xda, 0x5d, 0x26, 0xc6,
-  0xe7, 0xbd, 0x83, 0x7f, 0xb6, 0x4a, 0xc4, 0x68, 0x8e, 0x56, 0x50, 0x24,
-  0x46, 0x60, 0xd0, 0xff, 0x3f, 0x56, 0x26, 0xe6, 0x1b, 0x0b, 0x5f, 0x68,
-  0x61, 0xe1, 0xd6, 0xa5, 0x7f, 0x11, 0x62, 0x55, 0xa1, 0x0b, 0x02, 0x1b,
-  0xba, 0x93, 0x9d, 0xc3, 0x84, 0x3c, 0x0e, 0xab, 0x2d, 0xbd, 0xeb, 0x3b,
-  0x80, 0x26, 0x59, 0x57, 0xfa, 0x65, 0x1d, 0x38, 0x5c, 0x80, 0x02, 0x27,
-  0xcc, 0x5b, 0x4a, 0x6d, 0xfd, 0xf2, 0x0a, 0x2d, 0xeb, 0x43, 0x28, 0xb8,
-  0xbe, 0x8d, 0x13, 0xd0, 0x86, 0xcb, 0x81, 0x71, 0x84, 0x8a, 0x73, 0xaf,
-  0xe6, 0x5d, 0x16, 0x74, 0x2d, 0x40, 0xa7, 0x24, 0x6c, 0xac, 0x67, 0x73,
-  0xf8, 0xd1, 0xbd, 0xdb, 0x05, 0xc8, 0x80, 0x90, 0x94, 0x56, 0x6c, 0x4c,
-  0x36, 0xb4, 0xa6, 0xa0, 0xd1, 0xdb, 0x04, 0x15, 0x1b, 0x5e, 0x4e, 0x0b,
-  0x06, 0xc2, 0xbb, 0x53, 0x88, 0x4d, 0xdc, 0x10, 0xe1, 0x3f, 0xde, 0xb7,
-  0x8c, 0x3d, 0x8a, 0x55, 0x4f, 0x64, 0xb6, 0xa0, 0x2b, 0x7c, 0x6e, 0x19,
-  0xde, 0x69, 0xa5, 0x75, 0x57, 0x51, 0x47, 0x03, 0x67, 0xda, 0xe5, 0x02,
-  0x69, 0x9c, 0x17, 0xf5, 0x32, 0x6c, 0x79, 0x65, 0xe7, 0x9c, 0x9a, 0x5a,
-  0xe4, 0xb1, 0xa4, 0x35, 0x01, 0x49, 0xdd, 0x1d, 0x0d, 0x8c, 0xdb, 0xdc,
-  0x2c, 0xc6, 0x1e, 0x7c, 0x52, 0x7a, 0x3b, 0xa8, 0xd5, 0xa9, 0xb7, 0x2e,
-  0x00, 0x5e, 0xd5, 0x68, 0x81, 0x17, 0xd0, 0xd4, 0x2f, 0x35, 0x6f, 0x1b,
-  0x27, 0x50, 0xf9, 0x90, 0xd5, 0xd6, 0x6e, 0x8d, 0x4c, 0x4e, 0xbe, 0xa1,
-  0xab, 0xe8, 0x5a, 0xd9, 0x52, 0x55, 0x79, 0xc0, 0xe8, 0xeb, 0x25, 0xc7,
-  0xd7, 0x06, 0x40, 0x03, 0xb5, 0xe8, 0x5c, 0xec, 0x2a, 0x5a, 0x5a, 0x5b,
-  0x2d, 0xea, 0x5a, 0x5e, 0x36, 0x2f, 0xb6, 0x11, 0xf0, 0x97, 0x21, 0x3b,
-  0x3a, 0x87, 0xcd, 0x08, 0xdc, 0xb0, 0x0b, 0xab, 0x1b, 0xa6, 0x7a, 0xbe,
-  0xdb, 0xe4, 0x84, 0x51, 0xe3, 0x0e, 0x44, 0x46, 0x8d, 0x1b, 0x0b, 0x1f,
-  0x6f, 0x03, 0x63, 0xa3, 0xaf, 0x67, 0xcb, 0x7e, 0xfd, 0xa6, 0xfd, 0x06,
-  0x05, 0x07, 0xa6, 0x86, 0x48, 0x20, 0x58, 0xaa, 0xae, 0x22, 0x82, 0x46,
-  0x0d, 0x82, 0x6a, 0x6c, 0x1d, 0x81, 0xb7, 0xbc, 0x0e, 0x16, 0x63, 0x3a,
-  0xe7, 0x88, 0xde, 0x7e, 0x19, 0x4a, 0x01, 0x1a, 0x02, 0x0d, 0x2f, 0x0b,
-  0x2d, 0x94, 0x65, 0x0a, 0xd7, 0xaa, 0x02, 0xc7, 0xe5, 0x4d, 0xb9, 0x1e,
-  0x66, 0xc8, 0x47, 0x73, 0x64, 0x61, 0xf9, 0x10, 0x6b, 0x51, 0xfc, 0x73,
-  0x69, 0xd5, 0x18, 0x27, 0xef, 0x55, 0xbd, 0x39, 0xb7, 0x45, 0x2d, 0xb0,
-  0xb0, 0x96, 0x56, 0xea, 0x6a, 0x89, 0xb4, 0xb4, 0x55, 0xf9, 0x7a, 0x44,
-  0x27, 0xa6, 0xc7, 0x65, 0x46, 0x7a, 0xf5, 0x0c, 0x24, 0x4d, 0xd9, 0xb3,
-  0xb7, 0x69, 0x25, 0x82, 0x01, 0xb7, 0x25, 0x42, 0xbb, 0x1e, 0xd4, 0x36,
-  0xc4, 0xfb, 0xb5, 0xc9, 0xb1, 0x47, 0xe0, 0xbf, 0x6d, 0x70, 0x42, 0xd7,
-  0xd4, 0xfa, 0x51, 0xf5, 0xac, 0x6e, 0xd5, 0xee, 0xce, 0x68, 0xb7, 0x17,
-  0x02, 0x28, 0x23, 0xb0, 0x82, 0x63, 0x21, 0xc2, 0x76, 0x3a, 0xee, 0xc2,
-  0x2e, 0xab, 0x6f, 0xd8, 0xc1, 0xe2, 0x7e, 0x14, 0x84, 0xa7, 0xb4, 0xba,
-  0xd0, 0x10, 0x96, 0x66, 0xcb, 0xc3, 0x40, 0x1b, 0x01, 0xa9, 0x2d, 0x39,
-  0x94, 0xc7, 0x41, 0x59, 0xd4, 0x2a, 0xdb, 0xcb, 0xfd, 0xed, 0xea, 0xc3,
-  0x77, 0xe1, 0x59, 0x05, 0x49, 0x14, 0xdd, 0x55, 0xe3, 0x5d, 0xff, 0x2d,
-  0x2b, 0xd4, 0x2f, 0x16, 0xed, 0xd8, 0x63, 0xe4, 0x8e, 0xa1, 0x7a, 0x3d,
-  0x9c, 0x6f, 0x8d, 0x8b, 0xcb, 0x2b, 0x9e, 0x8d, 0xf0, 0x82, 0xb8, 0xbc,
-  0x1d, 0x39, 0x1f, 0x13, 0x64, 0x8f, 0x90, 0xf7, 0xae, 0xca, 0x7a, 0x1c,
-  0x05, 0xaa, 0xd2, 0x7b, 0x40, 0x8a, 0x90, 0xe1, 0xa2, 0x65, 0x87, 0xa9,
-  0x31, 0x1c, 0xaa, 0x95, 0x7e, 0x98, 0x2c, 0xd9, 0x60, 0x87, 0x17, 0x39,
-  0x11, 0x38, 0x09, 0x43, 0x05, 0xf8, 0x9d, 0x3f, 0xfe, 0xd1, 0xf3, 0xa8,
-  0x7a, 0xe5, 0xb5, 0xdd, 0x17, 0xa3, 0x67, 0xde, 0x4a, 0x25, 0x20, 0x01,
-  0x51, 0x6f, 0xff, 0x47, 0xa4, 0xc5, 0xfc, 0x3c, 0xfc, 0x91, 0xfe, 0xfc,
-  0xb9, 0xe7, 0x18, 0x25, 0xc2, 0xc4, 0x44, 0xbe, 0x70, 0x93, 0xb7, 0xa4,
-  0x0d, 0x3c, 0xe4, 0x82, 0xa9, 0x21, 0x71, 0xb1, 0x2b, 0x11, 0xa7, 0x51,
-  0x32, 0xab, 0x85, 0x9a, 0xd5, 0x8e, 0x25, 0x09, 0xf6, 0x10, 0x70, 0x88,
-  0x52, 0xdc, 0x5a, 0x4a, 0x42, 0x88, 0x7f, 0x69, 0x60, 0xe5, 0x6e, 0x14,
-  0x3f, 0x81, 0xaf, 0x77, 0x4b, 0xc1, 0x57, 0xf6, 0x3c, 0x42, 0x1c, 0x98,
-  0x9a, 0x42, 0xf4, 0xb3, 0x0d, 0x07, 0xa2, 0xc3, 0x49, 0xa0, 0x56, 0xd6,
-  0x5e, 0xc2, 0x15, 0x44, 0x10, 0x4a, 0x5c, 0x28, 0x91, 0x4b, 0xb9, 0xd4,
-  0x39, 0x96, 0x37, 0x3c, 0x45, 0x4d, 0x75, 0x16, 0x4c, 0xb6, 0x8d, 0x40,
-  0x08, 0xc6, 0xd8, 0x2c, 0x3d, 0x78, 0x12, 0xa0, 0xd4, 0xd7, 0xe4, 0x7d,
-  0x2e, 0xbc, 0xf6, 0x72, 0x79, 0x5d, 0x50, 0xbb, 0x0f, 0x60, 0x75, 0xd2,
-  0x53, 0xf2, 0x8c, 0xa3, 0xda, 0xa5, 0x07, 0x8d, 0xfc, 0x2d, 0xd5, 0x11,
-  0x41, 0x57, 0x59, 0x53, 0x09, 0x07, 0xbc, 0xde, 0xa2, 0xe0, 0x0a, 0xe0,
-  0xdf, 0x55, 0x48, 0x2c, 0x8c, 0xf6, 0x9e, 0xef, 0x3e, 0xdf, 0x26, 0x2e,
-  0xf2, 0x64, 0xb4, 0x17, 0x22, 0xac, 0xd3, 0x11, 0xa3, 0x31, 0x34, 0x2f,
-  0x4f, 0x20, 0xf0, 0x78, 0xd1, 0x8d, 0x39, 0x60, 0x1e, 0x96, 0xd0, 0x55,
-  0xf9, 0xde, 0x27, 0x2a, 0xc4, 0x8c, 0xa9, 0xe3, 0xf2, 0x0b, 0x5a, 0x79,
-  0x21, 0xa6, 0xa3, 0xb2, 0x40, 0xc3, 0xa3, 0x51, 0xc7, 0xc0, 0x4a, 0xea,
-  0x63, 0x4f, 0x52, 0xba, 0xf9, 0xab, 0x7c, 0xa5, 0xc8, 0x71, 0xec, 0xee,
-  0x70, 0xc5, 0x85, 0x38, 0x3b, 0x24, 0xef, 0x2c, 0xfa, 0x08, 0x00, 0x16,
-  0x57, 0x68, 0xc2, 0x85, 0x47, 0x04, 0x2e, 0x6e, 0xa4, 0x32, 0xa4, 0x52,
-  0x24, 0x01, 0x25, 0x57, 0xf8, 0x56, 0x9e, 0xde, 0x37, 0xef, 0x91, 0x6f,
-  0x88, 0x3c, 0x6f, 0x59, 0x64, 0x8f, 0xed, 0x86, 0x92, 0x64, 0x73, 0x71,
-  0x91, 0xc6, 0xb2, 0x18, 0x1e, 0xe5, 0x57, 0x3f, 0x90, 0x50, 0xf9, 0xae,
-  0xb2, 0x96, 0xb5, 0xac, 0x8d, 0x51, 0x33, 0x30, 0x44, 0xb0, 0x40, 0x18,
-  0x26, 0x97, 0x33, 0xa8, 0xc5, 0x15, 0x28, 0x41, 0x26, 0xe0, 0x0b, 0x0f,
-  0xe5, 0x96, 0x3c, 0x54, 0x1d, 0x4f, 0x91, 0x76, 0xfe, 0x07, 0x92, 0xc5,
-  0xde, 0xff, 0x4f, 0x16, 0xff, 0x44, 0xb2, 0x78, 0xd1, 0x45, 0x16, 0x4f,
-  0xfe, 0x07, 0x92, 0xc5, 0x93, 0xff, 0x9f, 0x2c, 0xfe, 0x79, 0x64, 0xb1,
-  0xf7, 0xbc, 0x9e, 0x1e, 0x07, 0x7d, 0x92, 0x2e, 0x39, 0x53, 0x2b, 0x5b,
-  0x28, 0xe8, 0xa0, 0x0c, 0x5d, 0xba, 0x50, 0xd0, 0x89, 0x2c, 0x99, 0x29,
-  0x54, 0x49, 0x55, 0x60, 0x2f, 0x3d, 0x90, 0x5e, 0xdb, 0x22, 0xc1, 0x70,
-  0x9c, 0xf1, 0x7c, 0x14, 0x9d, 0xb9, 0xd7, 0x90, 0xe3, 0xc4, 0xe9, 0xbe,
-  0x88, 0xb2, 0x98, 0x27, 0x97, 0xd8, 0x02, 0xc8, 0x29, 0x03, 0x7c, 0x09,
-  0x31, 0x8a, 0xad, 0x46, 0xc3, 0x56, 0x76, 0x14, 0xbf, 0x22, 0x81, 0x0f,
-  0x68, 0x85, 0x15, 0xd0, 0xd8, 0xa7, 0xb3, 0x58, 0x0e, 0x65, 0x9f, 0x64,
-  0xa9, 0xfe, 0x20, 0x0a, 0xab, 0x14, 0x71, 0xee, 0x5d, 0xbb, 0x5e, 0xd2,
-  0x47, 0x71, 0xea, 0xfd, 0x2d, 0x29, 0xf2, 0xc8, 0xf2, 0xfa, 0x15, 0x8b,
-  0x0d, 0x85, 0xc5, 0x4c, 0x4c, 0xf0, 0x1f, 0x72, 0xbf, 0x2d, 0x2d, 0xe3,
-  0x8f, 0xa8, 0xb7, 0x28, 0xf0, 0x7b, 0x0c, 0xf3, 0xe1, 0xd2, 0x6b, 0x32,
-  0x16, 0xb5, 0x52, 0x33, 0xba, 0xf9, 0x95, 0x33, 0x91, 0x18, 0xd1, 0xfb,
-  0xad, 0x73, 0xc0, 0x42, 0x0b, 0x1b, 0x0e, 0xc2, 0xc8, 0x19, 0xa7, 0x6b,
-  0x5e, 0x0a, 0x00, 0x91, 0x0c, 0xc7, 0x95, 0x13, 0x19, 0x75, 0xc8, 0xe9,
-  0xaf, 0x13, 0x36, 0x6d, 0x87, 0x03, 0x1a, 0x40, 0x6d, 0xbe, 0x55, 0xcd,
-  0xdf, 0x85, 0xc8, 0xf9, 0x40, 0x17, 0x3f, 0xc4, 0xf6, 0x90, 0xea, 0x63,
-  0xae, 0x3a, 0xa2, 0xe5, 0x5e, 0xb9, 0x65, 0x30, 0x47, 0x70, 0xb8, 0x18,
-  0x9b, 0x48, 0xc7, 0x31, 0xb7, 0x18, 0xba, 0xfc, 0x94, 0x65, 0x80, 0xc9,
-  0x04, 0x4a, 0x7b, 0xb9, 0x9a, 0xfc, 0x45, 0x35, 0x42, 0x1a, 0x72, 0x0c,
-  0xf4, 0xba, 0x5a, 0x9d, 0x4c, 0xa9, 0x1a, 0xb3, 0x9a, 0xa8, 0x17, 0xa7,
-  0xdd, 0x1c, 0x7d, 0x08, 0x8f, 0x9d, 0xab, 0x5c, 0xa3, 0x74, 0xa6, 0x01,
-  0x3f, 0x3c, 0xa6, 0xd6, 0xa4, 0x82, 0xa8, 0x95, 0xd6, 0xbe, 0xdb, 0x79,
-  0x62, 0x8d, 0xa1, 0xd4, 0xda, 0x2c, 0xe1, 0x66, 0xb9, 0xd5, 0x54, 0x21,
-  0xd6, 0xe2, 0x73, 0xf8, 0xf1, 0xb5, 0x6d, 0x11, 0xb9, 0x0e, 0xd8, 0x8b,
-  0x5a, 0x0e, 0xfe, 0xc8, 0x3f, 0xba, 0x15, 0xa6, 0x1a, 0xf8, 0xb1, 0x05,
-  0xf3, 0xf1, 0xe3, 0x38, 0x1b, 0x78, 0x7d, 0x5d, 0x07, 0xaf, 0xf8, 0x5b,
-  0xe9, 0xe1, 0xe1, 0xb6, 0xe1, 0x27, 0xfd, 0x05, 0x1d, 0xbc, 0xcf, 0x24,
-  0x6d, 0x3e, 0xe4, 0x10, 0x4b, 0x05, 0xe2, 0x61, 0x76, 0x77, 0x17, 0x17,
-  0x99, 0xc4, 0xe2, 0x85, 0x85, 0xdf, 0x39, 0x05, 0x6a, 0x09, 0x23, 0x4d,
-  0x0b, 0xeb, 0xf6, 0x92, 0x0d, 0x55, 0xb0, 0x56, 0xe5, 0x99, 0xa5, 0x3b,
-  0x2a, 0xae, 0xa6, 0xc5, 0xad, 0x2d, 0xf3, 0xca, 0xfc, 0x75, 0xd1, 0x8c,
-  0x75, 0x8f, 0x02, 0xf7, 0x43, 0x07, 0x20, 0xbb, 0x6d, 0x84, 0xaf, 0x40,
-  0xc6, 0x2d, 0xc3, 0x04, 0xb3, 0x5a, 0xa2, 0xe4, 0x83, 0xe2, 0x7d, 0x88,
-  0x54, 0x1f, 0xfb, 0xdd, 0x93, 0xae, 0x9b, 0x11, 0x2e, 0x08, 0xc0, 0xc0,
-  0x85, 0xe7, 0xf0, 0x41, 0x6f, 0xf3, 0x14, 0xf0, 0xb7, 0x48, 0xe0, 0x1c,
-  0xfd, 0xba, 0x3a, 0x17, 0x83, 0xa0, 0x7c, 0x5d, 0x5c, 0x86, 0x69, 0x14,
-  0xed, 0xf0, 0x32, 0xaf, 0x76, 0xc7, 0x02, 0x00, 0x40, 0x54, 0x9c, 0xc5,
-  0x95, 0x1d, 0x31, 0xbf, 0x0d, 0x18, 0xa6, 0x14, 0x6b, 0xe1, 0xb4, 0x8e,
-  0x69, 0xd2, 0x8e, 0xd8, 0xf1, 0x15, 0x0d, 0x1e, 0x83, 0x93, 0xd8, 0x6b,
-  0xdd, 0x27, 0x92, 0x70, 0xfd, 0xe8, 0xad, 0x12, 0x42, 0x04, 0x1a, 0x0b,
-  0x48, 0x66, 0x21, 0xb5, 0x78, 0x48, 0x4a, 0xbb, 0x1a, 0x25, 0xe7, 0x6a,
-  0x0d, 0x25, 0x5f, 0xa2, 0xf0, 0xec, 0x5d, 0xc8, 0x57, 0x0b, 0xb6, 0x0c,
-  0x2a, 0xd0, 0x4b, 0x07, 0x87, 0x7a, 0x64, 0x2a, 0x1f, 0xef, 0x87, 0x71,
-  0x76, 0xcf, 0x3e, 0xb6, 0x07, 0xae, 0x45, 0x66, 0xe4, 0x6c, 0xf3, 0x60,
-  0x98, 0x91, 0x54, 0xea, 0xdb, 0x34, 0x22, 0x9b, 0x2d, 0xd4, 0x4b, 0x51,
-  0x96, 0x17, 0xab, 0x96, 0xf1, 0x0f, 0x4f, 0xd2, 0x36, 0x99, 0x79, 0xdd,
-  0x63, 0xe2, 0xa9, 0xf3, 0xc7, 0xca, 0x48, 0x42, 0x79, 0x57, 0xcc, 0x2f,
-  0x20, 0x11, 0xc0, 0xef, 0xd3, 0x6d, 0x69, 0xdf, 0x76, 0xf9, 0x8a, 0x05,
-  0x57, 0x86, 0x1a, 0x12, 0xaf, 0x5b, 0x36, 0x40, 0xbf, 0x9e, 0x74, 0x4d,
-  0x19, 0x65, 0x62, 0x1f, 0x91, 0x03, 0xb8, 0xff, 0xb5, 0x20, 0x55, 0xc1,
-  0x4c, 0x6d, 0x66, 0xeb, 0xfc, 0x26, 0x32, 0x4b, 0x9d, 0xe4, 0x7b, 0x49,
-  0x87, 0x41, 0x8b, 0x80, 0x81, 0x65, 0x36, 0x63, 0x9e, 0x31, 0xed, 0x49,
-  0x20, 0x90, 0x5b, 0x13, 0x86, 0xf1, 0xd7, 0x40, 0x7b, 0xe5, 0x49, 0x77,
-  0x22, 0x8c, 0xfb, 0x76, 0xef, 0x4a, 0x07, 0x26, 0x3e, 0xf8, 0x36, 0x3a,
-  0xe2, 0x81, 0xa5, 0xf5, 0xb4, 0x05, 0x59, 0xa3, 0x19, 0xa2, 0xc2, 0x1e,
-  0x25, 0x6b, 0x0c, 0x5c, 0x22, 0xc8, 0x3a, 0xd7, 0xe8, 0x57, 0x2f, 0x92,
-  0xf4, 0xdf, 0xb1, 0x4a, 0xda, 0x59, 0x27, 0x14, 0x6e, 0x50, 0xd2, 0xbd,
-  0x3d, 0xa3, 0x75, 0xe9, 0x18, 0x6b, 0x26, 0xe5, 0xd3, 0x29, 0x7c, 0x3e,
-  0x45, 0x0b, 0x91, 0xe7, 0xae, 0xa3, 0xec, 0x55, 0x38, 0xe1, 0x07, 0xa7,
-  0xe8, 0x06, 0x54, 0x9b, 0x65, 0x53, 0x08, 0xaf, 0x8f, 0xc5, 0x0d, 0x45,
-  0x91, 0xb2, 0xc3, 0x19, 0x3f, 0xac, 0x35, 0xbb, 0xc8, 0xbb, 0x4f, 0x9c,
-  0x7e, 0x47, 0xec, 0x67, 0xf4, 0xdf, 0xdc, 0x53, 0x44, 0x99, 0xd6, 0x76,
-  0x14, 0xbd, 0xd4, 0xa6, 0xf2, 0xa0, 0x8f, 0x53, 0xa7, 0xb1, 0x3b, 0xda,
-  0x01, 0xef, 0xfd, 0x78, 0x8f, 0x48, 0xab, 0x7d, 0xbe, 0xc5, 0x7e, 0x6e,
-  0xb2, 0xe0, 0xf7, 0xca, 0x74, 0xbd, 0x41, 0x1f, 0xf3, 0xe2, 0x77, 0x75,
-  0x50, 0xae, 0x46, 0x66, 0x08, 0x7f, 0xe8, 0x8a, 0x64, 0xac, 0xaf, 0x47,
-  0x02, 0xe4, 0x09, 0x2b, 0x47, 0xc2, 0x59, 0xe0, 0x78, 0x7f, 0x77, 0xe7,
-  0xf3, 0x9d, 0x6e, 0xf0, 0x4f, 0x48, 0x14, 0x16, 0xf1, 0x32, 0x4d, 0x82,
-  0xca, 0x98, 0xa9, 0x2f, 0x8b, 0x14, 0xf8, 0xd1, 0xf4, 0xca, 0x64, 0x37,
-  0x5a, 0xd7, 0x3d, 0x00, 0xa7, 0x5a, 0xaa, 0xe6, 0x66, 0xb5, 0xd1, 0x3a,
-  0x88, 0x32, 0x73, 0x3f, 0x39, 0xbf, 0x8f, 0x73, 0x2e, 0x75, 0x24, 0x55,
-  0x7b, 0x47, 0x7b, 0x6d, 0x6d, 0x4c, 0x94, 0x77, 0xe1, 0x86, 0x21, 0x8f,
-  0xd1, 0x07, 0x77, 0x6b, 0x9b, 0xb2, 0x9a, 0x3c, 0x50, 0xf2, 0xe7, 0x1b,
-  0x3a, 0x37, 0x67, 0x12, 0xb2, 0x2a, 0x45, 0x61, 0x3e, 0xb1, 0xe0, 0x0f,
-  0x5e, 0x69, 0x55, 0x85, 0x5a, 0x57, 0xed, 0xe7, 0x37, 0xae, 0x87, 0xb4,
-  0x79, 0x80, 0x18, 0x9d, 0xcf, 0x46, 0x4f, 0x5e, 0x70, 0x9e, 0xb9, 0x54,
-  0xed, 0x0d, 0xd6, 0x9e, 0x0e, 0x4a, 0xce, 0xc8, 0x68, 0x92, 0x95, 0xad,
-  0x31, 0x5a, 0xb2, 0xfa, 0xeb, 0xe6, 0xe1, 0xd5, 0x91, 0x65, 0xa3, 0x06,
-  0x0f, 0x2a, 0x07, 0xc0, 0xcd, 0x54, 0x4f, 0x4f, 0xe2, 0x59, 0x5c, 0xb1,
-  0xb7, 0x6d, 0xd8, 0xce, 0xe8, 0x10, 0x4b, 0xaf, 0x2a, 0xe7, 0xb3, 0x51,
-  0x33, 0x1d, 0x41, 0x63, 0x86, 0xb9, 0x07, 0x2b, 0xd6, 0x1d, 0xc4, 0xd9,
-  0xb6, 0xb0, 0x86, 0x27, 0x5e, 0x1f, 0x9e, 0xa0, 0x3a, 0x28, 0x97, 0x51,
-  0xb4, 0x9c, 0x7a, 0xae, 0x0c, 0xb6, 0xbc, 0x07, 0x04, 0x69, 0x3a, 0x29,
-  0xcb, 0xeb, 0x3d, 0xa2, 0x87, 0xbd, 0xd1, 0xe7, 0xac, 0x4f, 0x8a, 0xcd,
-  0x7b, 0x0d, 0xf8, 0x98, 0x42, 0x66, 0x34, 0x5a, 0x3b, 0x5d, 0x26, 0xd9,
-  0x78, 0x7c, 0x12, 0x66, 0xe4, 0xff, 0xd5, 0x76, 0xd0, 0x2a, 0xdb, 0xfa,
-  0x00, 0x5b, 0x5f, 0xf1, 0x35, 0x0f, 0x54, 0x1a, 0x2d, 0x37, 0x6c, 0x01,
-  0x6c, 0x52, 0x30, 0xaf, 0xc5, 0x97, 0x83, 0xd2, 0x92, 0xa1, 0x47, 0x1e,
-  0x65, 0x98, 0x35, 0x30, 0x47, 0x31, 0xea, 0x11, 0xf5, 0x13, 0x16, 0x1c,
-  0x6d, 0x23, 0xaa, 0xd6, 0xb3, 0xdf, 0x1b, 0xf5, 0x28, 0x35, 0xde, 0x2d,
-  0x89, 0x0b, 0x92, 0x6a, 0x39, 0x16, 0x30, 0x38, 0x2d, 0xff, 0x8b, 0x9b,
-  0x45, 0xb5, 0x59, 0x5f, 0x73, 0xa2, 0xc3, 0xf3, 0xba, 0x3d, 0x86, 0xfb,
-  0x75, 0xac, 0x05, 0x26, 0xe2, 0x62, 0x92, 0x56, 0x45, 0xac, 0xd5, 0x70,
-  0xb4, 0x42, 0x47, 0xe0, 0x16, 0xe6, 0x34, 0x70, 0x24, 0x22, 0xf0, 0x6b,
-  0x9d, 0xce, 0x48, 0x12, 0x1b, 0xfe, 0x17, 0x7a, 0xd5, 0x06, 0x44, 0x76,
-  0x44, 0x38, 0xc2, 0x57, 0x47, 0x6f, 0x4e, 0xcf, 0x8f, 0xea, 0x48, 0x64,
-  0x52, 0x09, 0x00, 0x91, 0x05, 0xcd, 0xd1, 0xfd, 0x05, 0xf9, 0x71, 0x0e,
-  0x3f, 0xc5, 0x2a, 0x0a, 0x9c, 0x7d, 0xff, 0x3a, 0x28, 0x81, 0x61, 0x75,
-  0x63, 0x02, 0x84, 0x2b, 0x25, 0xa7, 0x56, 0x76, 0x28, 0x11, 0xe3, 0x96,
-  0x87, 0xa1, 0x76, 0xc3, 0x13, 0xf0, 0x5f, 0x44, 0xa7, 0x48, 0x67, 0xb1,
-  0xe4, 0xe6, 0x94, 0x25, 0x1b, 0x88, 0x5c, 0xb3, 0x2d, 0xbf, 0x70, 0xc2,
-  0xd0, 0xd2, 0x9c, 0xe6, 0x65, 0x17, 0x0b, 0x07, 0x9e, 0x72, 0x2c, 0xea,
-  0x28, 0x72, 0x9d, 0xf8, 0x5e, 0x10, 0x9b, 0x2c, 0x01, 0x39, 0xe8, 0xa5,
-  0xcb, 0xa4, 0xc6, 0xf1, 0x7c, 0x12, 0x7f, 0x28, 0xbc, 0xba, 0x15, 0x7c,
-  0x38, 0x88, 0xfe, 0x22, 0xf5, 0x87, 0x2f, 0x05, 0x27, 0xd9, 0xaf, 0x63,
-  0x87, 0x70, 0x40, 0xdd, 0x6e, 0x96, 0xc4, 0xc2, 0xfd, 0x48, 0xdd, 0xb2,
-  0xe9, 0x80, 0xfb, 0x7f, 0xec, 0x47, 0x6a, 0x0c, 0xc1, 0x6d, 0x24, 0xd9,
-  0x76, 0x6b, 0x32, 0x27, 0x11, 0x08, 0x2a, 0x00, 0x10, 0x5b, 0x8f, 0xc5,
-  0x50, 0xd9, 0xac, 0xad, 0x0a, 0x40, 0xb7, 0xd7, 0xda, 0xea, 0x84, 0x9a,
-  0x73, 0xc9, 0x0a, 0x5f, 0xea, 0x4d, 0x60, 0x8d, 0x0c, 0x02, 0x90, 0x6a,
-  0x04, 0x51, 0xb4, 0xb8, 0x52, 0x18, 0x3d, 0x83, 0x12, 0x11, 0x5a, 0xf0,
-  0xeb, 0xcf, 0x96, 0x64, 0x09, 0xb8, 0xb2, 0xf2, 0x3e, 0xab, 0xe0, 0xcb,
-  0x07, 0x17, 0x9b, 0xe6, 0x05, 0xa2, 0x1f, 0xda, 0x64, 0xec, 0xe9, 0xb6,
-  0x84, 0xe5, 0xf6, 0xc5, 0xb3, 0x17, 0x7c, 0xec, 0x10, 0x22, 0xa4, 0x40,
-  0x08, 0x9a, 0x3a, 0x82, 0x62, 0x07, 0x3a, 0x62, 0x33, 0x84, 0xb6, 0xa0,
-  0x7d, 0x74, 0xfb, 0xcd, 0xc8, 0x37, 0x49, 0x18, 0x55, 0x01, 0x24, 0x3a,
-  0x0e, 0x9a, 0x1a, 0xad, 0x55, 0x63, 0xd7, 0x05, 0xda, 0xe0, 0x66, 0xd1,
-  0x82, 0x46, 0xb4, 0x0b, 0xf1, 0x8d, 0x26, 0xbf, 0xe9, 0x79, 0x90, 0x76,
-  0x6b, 0xbb, 0xbf, 0x6e, 0x74, 0x4a, 0x0e, 0x1c, 0xb5, 0x49, 0x84, 0xc9,
-  0x1e, 0xbf, 0xcd, 0x3f, 0x6c, 0x39, 0xd4, 0x2a, 0x2d, 0x08, 0xc0, 0x78,
-  0xb4, 0xab, 0xa4, 0x86, 0xb5, 0xb7, 0xae, 0xb9, 0x4b, 0x30, 0x2c, 0x5a,
-  0xbd, 0x66, 0x6e, 0xa4, 0x54, 0x1e, 0xad, 0xf2, 0x25, 0x0b, 0x33, 0xc2,
-  0x67, 0x75, 0xef, 0xdb, 0xe1, 0xe4, 0x3c, 0x07, 0xa4, 0xe1, 0x4c, 0xa4,
-  0x2e, 0x81, 0xc9, 0x0b, 0x24, 0xe3, 0x65, 0x08, 0xa7, 0x51, 0x5a, 0xd4,
-  0x3b, 0x12, 0x01, 0x05, 0x34, 0x57, 0x36, 0x99, 0x76, 0xb0, 0x26, 0xe1,
-  0x83, 0xc1, 0x69, 0xd4, 0x3b, 0xa2, 0x51, 0x4c, 0x12, 0xa7, 0x59, 0x19,
-  0x9e, 0xe3, 0x66, 0x6f, 0xda, 0x20, 0x01, 0x52, 0xae, 0x5d, 0xc1, 0x51,
-  0xd1, 0x36, 0x97, 0x57, 0x23, 0x01, 0x77, 0x58, 0x56, 0xf7, 0x62, 0x47,
-  0x49, 0x16, 0x0c, 0x3f, 0x83, 0x1a, 0xe2, 0x88, 0x2c, 0xd3, 0xba, 0x59,
-  0xc8, 0x46, 0x1b, 0xb6, 0x2b, 0xda, 0x0b, 0x09, 0x44, 0x6f, 0x9c, 0x41,
-  0x5f, 0xad, 0x93, 0x52, 0x09, 0xea, 0x12, 0xc9, 0x69, 0x0e, 0x2a, 0x4b,
-  0x56, 0xe7, 0xaf, 0xc6, 0x65, 0x3b, 0x29, 0xae, 0x0d, 0x75, 0x74, 0x7d,
-  0x55, 0x2c, 0x05, 0xa6, 0x24, 0xea, 0xc0, 0x3d, 0x08, 0x04, 0x49, 0x79,
-  0xd2, 0x78, 0x05, 0x0a, 0x76, 0x42, 0xd0, 0xc6, 0xab, 0xc7, 0xaf, 0x6b,
-  0xf0, 0x56, 0x12, 0xe7, 0x4e, 0x3b, 0xdd, 0xdd, 0x9c, 0x8f, 0xf3, 0x96,
-  0xf0, 0x27, 0x7f, 0x9f, 0xb8, 0xd6, 0xbc, 0xdc, 0x3c, 0xb9, 0xf7, 0xdf,
-  0x74, 0x37, 0xa7, 0x6d, 0x88, 0x2f, 0x43, 0x5a, 0xb0, 0x66, 0x41, 0x2b,
-  0x06, 0x0a, 0xcc, 0xd4, 0xc0, 0xb8, 0x8e, 0xd6, 0x49, 0x3b, 0x7a, 0xf1,
-  0x7a, 0x91, 0xcf, 0x24, 0xb2, 0xe6, 0xb1, 0xb5, 0xe0, 0x07, 0x6d, 0x2d,
-  0xd4, 0x3a, 0x5c, 0x86, 0xf3, 0x42, 0x23, 0x44, 0xa5, 0x4c, 0x79, 0xca,
-  0x07, 0xba, 0x9b, 0xf3, 0x13, 0x95, 0xb2, 0x91, 0xdc, 0x3c, 0x5e, 0x0e,
-  0xa7, 0x90, 0x45, 0xf9, 0xb4, 0x0a, 0x66, 0xc0, 0x0f, 0x74, 0x37, 0xa7,
-  0xee, 0xfe, 0xf6, 0xcc, 0xd8, 0x52, 0x88, 0xd8, 0xdf, 0xc7, 0x66, 0xc6,
-  0x0f, 0xb6, 0x76, 0x99, 0x3e, 0x14, 0x1e, 0xde, 0xd8, 0x62, 0xd9, 0x9c,
-  0x35, 0x41, 0x26, 0xb5, 0x0d, 0xb6, 0x1d, 0xc6, 0x18, 0xba, 0x36, 0x58,
-  0x43, 0x99, 0xdb, 0x8c, 0xdc, 0x23, 0xbf, 0xc9, 0xea, 0xb8, 0x07, 0xd7,
-  0x6e, 0xb0, 0xf6, 0xd1, 0x5a, 0x85, 0x79, 0xa6, 0x05, 0x48, 0x3e, 0x08,
-  0xaa, 0x06, 0xc3, 0x7c, 0x56, 0x1f, 0x1e, 0x5e, 0x90, 0x79, 0x66, 0x55,
-  0xd1, 0x80, 0xe0, 0xe4, 0x78, 0x85, 0x26, 0xad, 0xc4, 0xf5, 0x7a, 0x69,
-  0x8a, 0xca, 0xb5, 0x86, 0xec, 0x7d, 0x7f, 0x91, 0xaf, 0x3f, 0x45, 0xd7,
-  0x68, 0x9a, 0x55, 0x16, 0x77, 0x0d, 0x1e, 0x13, 0x8c, 0xb1, 0xab, 0x4c,
-  0x51, 0x90, 0x56, 0xd7, 0x9a, 0xe2, 0xe2, 0x86, 0x4d, 0x83, 0x4e, 0x34,
-  0xf8, 0xb0, 0x3e, 0x28, 0x09, 0x84, 0x86, 0xa7, 0x6d, 0xb7, 0x65, 0x4a,
-  0xe6, 0xbd, 0xf3, 0xb9, 0x0d, 0xfe, 0x38, 0x3f, 0x40, 0xc7, 0xf5, 0x2e,
-  0xdd, 0x99, 0x6c, 0x8e, 0x6f, 0x79, 0x37, 0xb3, 0xce, 0xf9, 0x57, 0xeb,
-  0x3a, 0x2c, 0x0e, 0xee, 0x50, 0x51, 0x58, 0x74, 0x95, 0xc6, 0x2e, 0x2d,
-  0xff, 0x63, 0xcd, 0x52, 0x74, 0x27, 0x65, 0xb4, 0x3a, 0xa7, 0xc7, 0xb8,
-  0x39, 0x2b, 0x1b, 0x80, 0xed, 0x58, 0xbf, 0x38, 0xfa, 0xb4, 0x1f, 0xa2,
-  0xf0, 0xf7, 0x10, 0x1e, 0xd0, 0xaf, 0x91, 0x1d, 0x87, 0x07, 0x18, 0x9e,
-  0x76, 0xdb, 0x64, 0x79, 0xb3, 0x84, 0x4b, 0x32, 0x0a, 0x2d, 0x20, 0x71,
-  0xe7, 0xf1, 0x93, 0x25, 0x23, 0x5f, 0xbb, 0xc6, 0xc5, 0xe2, 0x91, 0x43,
-  0x4e, 0x0f, 0xf8, 0x59, 0x71, 0xd8, 0x6e, 0x30, 0xab, 0xd6, 0xb9, 0x94,
-  0xb9, 0x2e, 0xd7, 0xac, 0xfc, 0xba, 0x11, 0xd4, 0xa8, 0x70, 0xfd, 0x48,
-  0xf4, 0xc9, 0xce, 0xe1, 0xf8, 0xc5, 0x65, 0x3f, 0xd2, 0xbd, 0x1f, 0x59,
-  0x77, 0x73, 0x3a, 0x5c, 0xff, 0x96, 0x2e, 0xcf, 0xc0, 0x41, 0xd5, 0xa8,
-  0xe9, 0x84, 0xb5, 0xe6, 0x36, 0x6d, 0xd8, 0x01, 0xff, 0x45, 0x0c, 0x82,
-  0xb5, 0xb5, 0x79, 0x70, 0x08, 0x87, 0x05, 0xf2, 0x7a, 0x10, 0xc9, 0xf5,
-  0x12, 0x3f, 0x3a, 0x13, 0x18, 0xb6, 0x4d, 0xc3, 0xda, 0x66, 0x78, 0x40,
-  0x8e, 0x72, 0x85, 0xdb, 0x96, 0xb9, 0x09, 0x83, 0x3d, 0x6b, 0x28, 0xd8,
-  0x26, 0x87, 0x0d, 0x4a, 0xbc, 0x3a, 0x4a, 0xa6, 0x71, 0xc6, 0x64, 0xeb,
-  0x52, 0xa7, 0xa5, 0xd9, 0xb2, 0x54, 0xac, 0x58, 0xec, 0x75, 0xdb, 0xbb,
-  0xa3, 0xdd, 0x41, 0x54, 0xd7, 0xc9, 0x4c, 0xb8, 0xe6, 0xa2, 0xf7, 0x9a,
-  0x90, 0xc6, 0x5d, 0x37, 0xed, 0x0c, 0xe7, 0xdc, 0x71, 0x69, 0x72, 0xa6,
-  0x27, 0x05, 0xf8, 0xd7, 0xbd, 0x20, 0xcf, 0x98, 0xcd, 0xad, 0x05, 0xdc,
-  0x19, 0x3e, 0x7d, 0xf1, 0xa2, 0x76, 0xa5, 0x85, 0x9a, 0xf3, 0xb3, 0x9d,
-  0x1d, 0x01, 0xb2, 0x6e, 0xbe, 0x46, 0x5f, 0x0c, 0x5f, 0xe0, 0xc5, 0xfa,
-  0x6b, 0x52, 0x44, 0x61, 0xfd, 0x7b, 0x43, 0xfe, 0xa6, 0xa3, 0x3b, 0xd8,
-  0x53, 0xd6, 0xbe, 0xf5, 0x82, 0xbb, 0xeb, 0x78, 0x0b, 0x0f, 0xcb, 0x32,
-  0xe6, 0x97, 0x97, 0x0c, 0xe4, 0xca, 0x4f, 0x4a, 0xe5, 0xf7, 0xbc, 0xb8,
-  0x8b, 0x8b, 0x59, 0x7b, 0xba, 0x3b, 0x83, 0xe1, 0xee, 0xba, 0xe9, 0xc2,
-  0x26, 0xc0, 0x23, 0xc1, 0x7e, 0xb2, 0x06, 0x45, 0xc2, 0xf3, 0xe6, 0x37,
-  0x5b, 0x5d, 0xb3, 0xff, 0x6c, 0x67, 0x67, 0xf0, 0x9c, 0x7f, 0xbe, 0x78,
-  0xb1, 0xd6, 0x41, 0xe8, 0xfb, 0x78, 0x62, 0x53, 0xab, 0x8d, 0x96, 0xda,
-  0xe9, 0x68, 0x7d, 0x97, 0x5a, 0xdd, 0x7d, 0xf1, 0x62, 0xc0, 0xbd, 0x3c,
-  0xfb, 0xa4, 0xd6, 0xab, 0xbb, 0xdc, 0x5b, 0xb6, 0xf8, 0x75, 0x4f, 0x8f,
-  0x65, 0x63, 0x06, 0xac, 0x0d, 0xbc, 0x02, 0xba, 0x77, 0x60, 0xe8, 0xf1,
-  0x11, 0xf6, 0x61, 0x20, 0x34, 0xa2, 0x34, 0x96, 0xac, 0x45, 0x8a, 0x03,
-  0x26, 0x36, 0x85, 0x25, 0xf6, 0x21, 0x2e, 0xe6, 0x4c, 0xf1, 0x49, 0x70,
-  0x92, 0xf9, 0x38, 0x4b, 0xaf, 0xd2, 0xca, 0xa3, 0x35, 0x94, 0xd1, 0x26,
-  0xd1, 0xcb, 0x16, 0xac, 0x07, 0x82, 0x42, 0xad, 0xce, 0xe5, 0x3e, 0xa2,
-  0x31, 0x05, 0x47, 0xae, 0xcf, 0xda, 0x44, 0x9f, 0xb6, 0x22, 0x99, 0xcf,
-  0x9c, 0x75, 0x49, 0x2f, 0x11, 0x79, 0x6e, 0x28, 0x4f, 0xc8, 0x41, 0x83,
-  0x0a, 0x28, 0xb8, 0x85, 0x31, 0x62, 0x61, 0x1a, 0x7d, 0x46, 0x0e, 0x01,
-  0x3c, 0xc8, 0xba, 0x10, 0x4c, 0x40, 0x09, 0xbf, 0xf4, 0x53, 0xed, 0x97,
-  0x4d, 0x14, 0xcb, 0xa4, 0x5e, 0xc9, 0x7c, 0x96, 0x58, 0x59, 0xa9, 0x3a,
-  0x70, 0xa1, 0x7b, 0x5d, 0x4c, 0x38, 0xab, 0xa2, 0x81, 0xbd, 0xf4, 0x67,
-  0x9f, 0xe5, 0x02, 0x3f, 0x31, 0x2b, 0xb4, 0x77, 0xb1, 0x65, 0xd7, 0x20,
-  0xab, 0xce, 0xce, 0xbe, 0xab, 0x17, 0x3b, 0xcb, 0x35, 0x9a, 0x08, 0x00,
-  0x71, 0xd8, 0x20, 0x6b, 0xce, 0xaa, 0x7f, 0xa9, 0xab, 0x79, 0x86, 0x78,
-  0x1e, 0x83, 0x5f, 0x13, 0x33, 0xbb, 0x24, 0xe9, 0x04, 0x41, 0xb8, 0x52,
-  0xd1, 0x4d, 0xa7, 0x2c, 0xb5, 0x59, 0x36, 0x1a, 0x09, 0x0f, 0x57, 0x49,
-  0x15, 0x94, 0x39, 0xb1, 0x14, 0x6f, 0x3f, 0x0b, 0x43, 0x46, 0x07, 0x4b,
-  0x92, 0xc5, 0xf7, 0x35, 0xca, 0x04, 0xb7, 0x4c, 0xbd, 0xc2, 0x52, 0x34,
-  0x06, 0xd8, 0x84, 0xb5, 0x1d, 0xe3, 0xcd, 0x72, 0x4c, 0x90, 0x76, 0x8d,
-  0xe8, 0x30, 0x8c, 0x3a, 0x11, 0xfa, 0x0a, 0xcc, 0x05, 0x56, 0x55, 0x28,
-  0x97, 0x18, 0x8a, 0xad, 0x11, 0xc6, 0x80, 0x72, 0x1a, 0xd8, 0x09, 0xee,
-  0x36, 0xdc, 0xd2, 0xe4, 0x63, 0x85, 0x12, 0x60, 0x78, 0xcc, 0x6e, 0xa5,
-  0xf1, 0xf1, 0xff, 0x3e, 0x1a, 0x85, 0x91, 0xd1, 0xff, 0xa0, 0x18, 0xd3,
-  0xf3, 0x20, 0x0b, 0x94, 0x5f, 0xeb, 0x4a, 0x72, 0x09, 0x40, 0xae, 0x1b,
-  0xf5, 0x44, 0x6d, 0x6f, 0xd8, 0x33, 0xcb, 0x14, 0x83, 0xac, 0x63, 0x25,
-  0xcc, 0xae, 0x6a, 0x2b, 0xb4, 0x8c, 0x8b, 0x65, 0xe4, 0xad, 0x12, 0xe6,
-  0xd5, 0x13, 0x9b, 0xaf, 0x47, 0x56, 0x15, 0x73, 0x69, 0xec, 0x63, 0x71,
-  0xb4, 0xac, 0x6b, 0x53, 0x98, 0xf6, 0x69, 0xcd, 0xb2, 0xed, 0x5c, 0x09,
-  0x17, 0x99, 0xc3, 0xbc, 0x00, 0xdc, 0x57, 0x68, 0xa4, 0xe7, 0x9b, 0x98,
-  0x74, 0x52, 0x3c, 0xde, 0x09, 0x3b, 0x20, 0x28, 0x43, 0x61, 0xae, 0xa6,
-  0x13, 0x86, 0x64, 0x86, 0xf3, 0xc4, 0x10, 0x51, 0xe0, 0xd9, 0x0a, 0x6b,
-  0x3e, 0x75, 0xe4, 0x7b, 0x94, 0x74, 0xe1, 0x03, 0x44, 0x91, 0x81, 0xab,
-  0xa4, 0xf3, 0x08, 0x08, 0x86, 0x86, 0x20, 0x22, 0x60, 0x88, 0x65, 0x50,
-  0x4b, 0x57, 0xcd, 0x6b, 0xf2, 0x70, 0xab, 0x62, 0x3a, 0xe3, 0x7a, 0xc0,
-  0xba, 0xc0, 0xf8, 0x0f, 0x3e, 0x5e, 0xbe, 0x6c, 0x17, 0x98, 0x49, 0xae,
-  0x66, 0x43, 0x15, 0x9a, 0xea, 0x67, 0x98, 0x57, 0xe1, 0xce, 0x05, 0x05,
-  0x06, 0xbb, 0x9b, 0x06, 0xb1, 0x2a, 0xf1, 0x5c, 0xcd, 0x16, 0x8c, 0xfd,
-  0x06, 0x77, 0x87, 0xcb, 0xfa, 0x85, 0x09, 0xad, 0x35, 0xd3, 0x0a, 0xd6,
-  0x43, 0xa0, 0xc0, 0xb8, 0x3a, 0x0e, 0xc8, 0xee, 0x45, 0xfe, 0x59, 0x54,
-  0x8b, 0x8f, 0x77, 0xc8, 0x73, 0x0b, 0x18, 0xf8, 0x01, 0x33, 0xd2, 0x74,
-  0xce, 0x52, 0xbf, 0xa8, 0x0e, 0x3f, 0xa0, 0x95, 0xb8, 0x6b, 0x15, 0x35,
-  0xac, 0xf9, 0xb3, 0x83, 0x04, 0x66, 0x0e, 0xa3, 0x79, 0x28, 0x00, 0xe3,
-  0x5a, 0x24, 0x8b, 0x9a, 0xbf, 0x58, 0xbc, 0x00, 0xbc, 0xa6, 0x3c, 0x69,
-  0x97, 0x36, 0x5e, 0x76, 0x5b, 0x6a, 0x67, 0x49, 0x6c, 0x10, 0x1c, 0xb4,
-  0xa7, 0x44, 0xa9, 0xed, 0x24, 0xea, 0xbb, 0xa4, 0x48, 0x3c, 0x26, 0x2d,
-  0xa2, 0xd5, 0xe8, 0xf4, 0x8d, 0xa2, 0x71, 0x4e, 0xcf, 0x77, 0x14, 0x9d,
-  0xb2, 0xfc, 0x91, 0x1a, 0x44, 0x25, 0xc6, 0xe3, 0xab, 0x42, 0x73, 0xb6,
-  0xb4, 0x18, 0x80, 0xeb, 0xf3, 0xed, 0x40, 0xb5, 0x82, 0xa5, 0x96, 0x06,
-  0x6e, 0xb5, 0xc4, 0x07, 0xca, 0x44, 0x61, 0x6c, 0x64, 0x96, 0xd3, 0x1b,
-  0xe6, 0xd1, 0x10, 0x20, 0xfb, 0x00, 0xdc, 0x0a, 0x9a, 0x7b, 0x28, 0x31,
-  0x6e, 0xf7, 0x45, 0x3d, 0xa6, 0x90, 0xeb, 0x9e, 0xcd, 0x89, 0xa1, 0xbf,
-  0x64, 0xf7, 0x23, 0xbc, 0x8f, 0xfb, 0x6b, 0x72, 0xa8, 0xce, 0x1c, 0x80,
-  0xdc, 0x94, 0x86, 0xc0, 0x29, 0x02, 0x9a, 0x2b, 0x22, 0x73, 0xf4, 0x93,
-  0x94, 0x04, 0x16, 0xa1, 0x15, 0x71, 0x47, 0x2e, 0xe3, 0xb4, 0x18, 0xb5,
-  0x7c, 0x9a, 0x0e, 0xf0, 0xd3, 0xa6, 0xc6, 0x92, 0xa2, 0x2b, 0xfb, 0xac,
-  0x55, 0x8e, 0x25, 0x14, 0x75, 0xb3, 0xdc, 0x32, 0x64, 0xd3, 0x35, 0x72,
-  0x7b, 0x2d, 0x1f, 0x49, 0x91, 0xfa, 0x61, 0x6b, 0x70, 0x75, 0x1f, 0x05,
-  0x4b, 0x15, 0x41, 0x49, 0x98, 0xf2, 0x2c, 0xa8, 0x0c, 0xd1, 0x8a, 0x5f,
-  0xb2, 0xba, 0x36, 0x23, 0x41, 0x16, 0xe0, 0xf3, 0xcf, 0x07, 0x8b, 0xfa,
-  0xcf, 0x25, 0xe1, 0x73, 0x3b, 0xa9, 0xa6, 0xdb, 0x02, 0x2d, 0x05, 0x12,
-  0xcf, 0x00, 0xb7, 0xe9, 0xb4, 0x83, 0x56, 0x99, 0xfb, 0x96, 0x83, 0x47,
-  0xcc, 0x0f, 0x41, 0xc9, 0xbb, 0x20, 0x1f, 0x0a, 0x1c, 0xd5, 0x7c, 0xb8,
-  0x1d, 0x06, 0xda, 0x4b, 0x83, 0x69, 0x0a, 0x16, 0xdd, 0x39, 0x3b, 0x0d,
-  0xbe, 0xa9, 0x76, 0x4f, 0xf0, 0x2b, 0xbe, 0xcc, 0x62, 0x07, 0xf5, 0x66,
-  0x49, 0x70, 0xeb, 0xb8, 0x50, 0xbb, 0x3a, 0x38, 0xa3, 0x83, 0x10, 0x0c,
-  0x36, 0xbe, 0xcb, 0xf4, 0xce, 0xa7, 0x07, 0x23, 0x90, 0xb8, 0x39, 0x83,
-  0x47, 0x00, 0x4a, 0xcd, 0x23, 0x00, 0x8c, 0x96, 0xc0, 0xae, 0xd1, 0x55,
-  0x3e, 0xbf, 0x9f, 0xad, 0xce, 0x33, 0xfd, 0xc4, 0x25, 0x48, 0x75, 0x04,
-  0x9e, 0xe9, 0xe6, 0x3e, 0x1c, 0x3c, 0xb4, 0x3b, 0x7a, 0x52, 0x3f, 0x03,
-  0xac, 0x11, 0x76, 0x55, 0x9c, 0x80, 0x10, 0x07, 0x4e, 0x88, 0x22, 0x19,
-  0x88, 0x0d, 0x93, 0x84, 0x1f, 0xb6, 0x30, 0x24, 0x16, 0x26, 0x84, 0x80,
-  0x03, 0x81, 0x13, 0x61, 0x6e, 0xa3, 0xa5, 0x39, 0xda, 0x60, 0x88, 0x81,
-  0xff, 0x88, 0xe3, 0x2c, 0xad, 0xf4, 0x4d, 0xa1, 0xd1, 0x96, 0x5e, 0x27,
-  0x92, 0x39, 0xab, 0xe5, 0x98, 0x78, 0x19, 0x1f, 0x95, 0xd5, 0x72, 0xd4,
-  0xae, 0x87, 0xe1, 0xe2, 0xc5, 0xf4, 0x5d, 0xea, 0x7e, 0x27, 0x4c, 0x3e,
-  0x44, 0xea, 0x8d, 0x46, 0xf2, 0x96, 0x56, 0xcc, 0xce, 0x82, 0x6d, 0x5a,
-  0x3c, 0x11, 0xac, 0x94, 0x6b, 0x11, 0x5c, 0xb8, 0x29, 0xeb, 0x9c, 0x35,
-  0x7b, 0x48, 0xd0, 0xc5, 0xf6, 0x79, 0x51, 0xa4, 0xe0, 0xd9, 0xc0, 0x7c,
-  0x01, 0x4f, 0x3f, 0x7e, 0x6c, 0xef, 0x84, 0x2f, 0x66, 0x0e, 0x5d, 0x51,
-  0x5d, 0xf3, 0xcf, 0x3e, 0x7e, 0xac, 0x7f, 0xf9, 0x40, 0x99, 0x6a, 0x96,
-  0x1d, 0x50, 0x8f, 0xab, 0xca, 0x75, 0xa5, 0xe2, 0x60, 0x15, 0x0d, 0x96,
-  0x58, 0x71, 0x1b, 0xef, 0x62, 0x89, 0x5e, 0x6d, 0xfb, 0x82, 0xa0, 0xfd,
-  0x09, 0x47, 0xaa, 0xae, 0x13, 0x7f, 0x4d, 0x30, 0x18, 0xd6, 0x35, 0x9d,
-  0x4a, 0xa9, 0x24, 0xa5, 0x44, 0xef, 0x2a, 0x57, 0xaf, 0x34, 0x7b, 0xac,
-  0x19, 0x16, 0x12, 0x4b, 0x75, 0x4e, 0x80, 0xe5, 0xaf, 0xb2, 0x2a, 0x9d,
-  0xf3, 0x3b, 0xa8, 0x50, 0x48, 0xaf, 0xef, 0xd2, 0xfa, 0xa7, 0xd9, 0x8a,
-  0x75, 0x2a, 0x59, 0x6d, 0x74, 0xe8, 0x8a, 0x65, 0x75, 0x2d, 0xfb, 0x3c,
-  0xbe, 0x8f, 0x5c, 0x24, 0x85, 0x81, 0xd7, 0x07, 0xc0, 0x2c, 0x18, 0x97,
-  0xa0, 0x20, 0x5a, 0x1e, 0x1a, 0xd6, 0x62, 0x88, 0x57, 0x3b, 0x0e, 0xb3,
-  0xbb, 0x83, 0x34, 0xe9, 0x2e, 0xf9, 0x48, 0x8b, 0x2d, 0xa1, 0x96, 0x92,
-  0x3a, 0x4a, 0x8a, 0x1e, 0xdf, 0x32, 0x57, 0x79, 0x41, 0x1b, 0xba, 0x50,
-  0xa9, 0x43, 0x82, 0x46, 0x5b, 0x61, 0x1a, 0xd2, 0x95, 0x2b, 0x5d, 0x28,
-  0x01, 0xbc, 0xa8, 0x59, 0x22, 0xde, 0xc1, 0xbc, 0x52, 0x39, 0xd5, 0xca,
-  0xad, 0x60, 0x75, 0x6d, 0xd4, 0x0f, 0x5d, 0x45, 0x7b, 0xe1, 0x31, 0xfc,
-  0xc7, 0xe7, 0x5c, 0x05, 0x6b, 0xf4, 0x40, 0xc1, 0x45, 0x13, 0x80, 0xcb,
-  0x79, 0x92, 0x2c, 0x35, 0x8e, 0xc5, 0x4a, 0xb0, 0xcb, 0xb4, 0xf4, 0x18,
-  0x8a, 0x08, 0xa0, 0x54, 0xa8, 0x6a, 0xcd, 0xba, 0x03, 0xae, 0xb7, 0x37,
-  0x7b, 0x9e, 0x7c, 0x22, 0x7e, 0x1c, 0x05, 0xac, 0x44, 0xcf, 0xd5, 0x66,
-  0x5a, 0x85, 0xe2, 0x4c, 0xf7, 0x89, 0x74, 0x5b, 0xa6, 0xab, 0xac, 0xdb,
-  0xe6, 0x48, 0x46, 0xd7, 0x7a, 0x6b, 0x54, 0x93, 0x92, 0xda, 0x88, 0x12,
-  0xe2, 0x7b, 0x85, 0x3c, 0x08, 0x33, 0xe1, 0x15, 0x04, 0x1f, 0x65, 0x7f,
-  0x08, 0xea, 0x95, 0x42, 0xb7, 0x88, 0x1c, 0x08, 0xea, 0x9c, 0xca, 0x12,
-  0xb6, 0x58, 0x2d, 0x02, 0xef, 0x1b, 0x6a, 0x84, 0xe9, 0xea, 0x36, 0x72,
-  0x4f, 0x6d, 0x3c, 0xf6, 0x91, 0xa7, 0x80, 0x36, 0xe4, 0xc0, 0x3f, 0x8b,
-  0x20, 0x1e, 0x2d, 0xc2, 0x29, 0xa6, 0x44, 0xd9, 0x66, 0x7e, 0x50, 0xe3,
-  0xa8, 0x38, 0x2e, 0x95, 0x27, 0xe4, 0x1d, 0xe3, 0xc2, 0x76, 0xdc, 0x9e,
-  0xab, 0x0a, 0xd5, 0x32, 0x83, 0x29, 0x5f, 0xb1, 0x51, 0x01, 0x6e, 0x27,
-  0xe6, 0x69, 0x30, 0x1a, 0xc6, 0x26, 0xe3, 0xb9, 0xe9, 0xd0, 0xb6, 0xf8,
-  0xe3, 0x79, 0xce, 0x91, 0xd2, 0xa5, 0x2b, 0xc7, 0x51, 0xb4, 0xf0, 0x6b,
-  0x50, 0x59, 0x40, 0xd8, 0xcd, 0xac, 0xa3, 0xa2, 0xd8, 0xbb, 0x9c, 0x73,
-  0xc9, 0x5d, 0xcd, 0x10, 0xd7, 0x8e, 0xbe, 0xd9, 0x2e, 0x1f, 0xa0, 0xed,
-  0x68, 0x25, 0xa2, 0x41, 0x1d, 0xf3, 0x44, 0x07, 0x0d, 0x94, 0x00, 0x81,
-  0x6d, 0xbc, 0x36, 0xe4, 0x6f, 0xbe, 0xe3, 0x3a, 0x4a, 0x84, 0xca, 0xe5,
-  0xc6, 0x8e, 0x4b, 0x44, 0x3d, 0xf0, 0x7c, 0x3a, 0xca, 0x9f, 0x61, 0x07,
-  0xa8, 0x91, 0x34, 0x9f, 0x21, 0x5e, 0x42, 0x38, 0x4a, 0xab, 0x38, 0xaf,
-  0xe4, 0x98, 0xea, 0x68, 0xfa, 0xa5, 0xab, 0xfe, 0xc4, 0xaf, 0x4b, 0x59,
-  0x16, 0x94, 0x56, 0x0d, 0x6a, 0xab, 0x8e, 0x22, 0x2d, 0x14, 0x55, 0xb5,
-  0x4b, 0xcd, 0x7a, 0x08, 0x15, 0xd0, 0x6e, 0x25, 0x00, 0x1d, 0x56, 0xbb,
-  0xd3, 0x31, 0xda, 0x7f, 0x22, 0x93, 0x2a, 0x51, 0x4d, 0x3a, 0x9d, 0xb7,
-  0x33, 0x1e, 0xc6, 0xf8, 0x50, 0x74, 0xb1, 0xbf, 0xae, 0x52, 0x94, 0xbe,
-  0x02, 0x7c, 0xc0, 0xeb, 0x9c, 0xf7, 0xbf, 0xd4, 0xd8, 0xe9, 0x2b, 0x48,
-  0x62, 0x1a, 0x46, 0x54, 0x28, 0x57, 0xa1, 0xee, 0x5b, 0x2a, 0x2c, 0x23,
-  0x0e, 0x8f, 0xac, 0x10, 0x08, 0xd0, 0xdf, 0x17, 0x74, 0x49, 0x8d, 0x1c,
-  0x8a, 0x39, 0x31, 0x84, 0x0e, 0x80, 0x7f, 0x35, 0xdc, 0x94, 0x37, 0x6d,
-  0x09, 0x74, 0x50, 0x8b, 0xdf, 0x87, 0xd3, 0x5e, 0x9d, 0x10, 0x15, 0x67,
-  0x84, 0x90, 0xe6, 0xb7, 0x2d, 0x70, 0x67, 0x56, 0x2b, 0x9d, 0x9b, 0xb2,
-  0xd0, 0xf0, 0x26, 0xd9, 0xd4, 0x02, 0x23, 0xcb, 0xb8, 0x9c, 0x0f, 0xd3,
-  0x26, 0xe1, 0x0b, 0x94, 0xa7, 0x0b, 0xd1, 0xf1, 0x22, 0x04, 0x12, 0xca,
-  0xc6, 0x07, 0xa4, 0x49, 0xb7, 0xf1, 0x3d, 0x1f, 0x62, 0x37, 0x4f, 0x76,
-  0x6b, 0xaa, 0xd0, 0x18, 0x5b, 0x41, 0xcb, 0x3a, 0xc4, 0x22, 0xae, 0x41,
-  0xd9, 0xf6, 0xec, 0x7c, 0x58, 0x8a, 0x14, 0x17, 0x48, 0x5b, 0xd8, 0x14,
-  0xcb, 0x21, 0x30, 0x9c, 0x67, 0x3e, 0x84, 0xad, 0xf2, 0xeb, 0x88, 0x5f,
-  0xa8, 0xcd, 0xb9, 0x9c, 0x4b, 0xb0, 0x94, 0xc1, 0x4d, 0x09, 0xf4, 0x94,
-  0x80, 0x4e, 0x5d, 0x14, 0xf7, 0x16, 0x14, 0xc9, 0xa9, 0xcc, 0x17, 0x27,
-  0xe3, 0x40, 0x05, 0xf0, 0xe6, 0x83, 0x36, 0xe7, 0xe1, 0xb4, 0x3f, 0x91,
-  0x9d, 0x61, 0x8a, 0x44, 0x3d, 0xe5, 0xb0, 0x7a, 0xb6, 0xab, 0xa8, 0x2c,
-  0xa6, 0x55, 0x2b, 0x5b, 0xa2, 0x76, 0xb3, 0x26, 0x45, 0x4a, 0xd7, 0xa1,
-  0x8d, 0x42, 0xd2, 0xed, 0x69, 0xec, 0x43, 0x4b, 0xfe, 0x67, 0x1e, 0x81,
-  0xd9, 0x10, 0x4b, 0xfb, 0xab, 0x88, 0x02, 0xaa, 0x02, 0x0c, 0x5b, 0x56,
-  0x90, 0x2a, 0x62, 0x48, 0xd3, 0x39, 0xa2, 0x11, 0x93, 0x6c, 0x5a, 0xdc,
-  0xd7, 0x10, 0x33, 0x67, 0x9f, 0x50, 0xf0, 0xaf, 0xae, 0x3c, 0x30, 0x3c,
-  0x2b, 0x33, 0x25, 0xc6, 0x24, 0xd7, 0x2a, 0x90, 0xf4, 0x89, 0x1b, 0x63,
-  0xfd, 0x5c, 0xef, 0xa2, 0xcc, 0x6a, 0xb3, 0x39, 0x5f, 0xc2, 0x5d, 0xdc,
-  0x75, 0xb4, 0x99, 0x72, 0x30, 0x4c, 0x8f, 0x02, 0x4a, 0x6d, 0x88, 0x04,
-  0xc9, 0x2e, 0xa6, 0x99, 0xd0, 0x60, 0x93, 0x7b, 0x5d, 0xae, 0x60, 0x16,
-  0xd5, 0xb4, 0xc5, 0xc6, 0x6e, 0x63, 0x7d, 0x3a, 0x82, 0xe5, 0x06, 0x91,
-  0x12, 0x80, 0x52, 0x80, 0x92, 0x00, 0x6d, 0xa6, 0x82, 0x3f, 0x87, 0x14,
-  0x50, 0xaf, 0x85, 0xde, 0x9a, 0x8e, 0x9c, 0xc3, 0x4a, 0x4d, 0x25, 0x9f,
-  0xba, 0xed, 0x6e, 0xa3, 0x3f, 0xb9, 0x32, 0xe9, 0xda, 0xdd, 0xf0, 0xdb,
-  0xa1, 0xfb, 0x01, 0x0b, 0x9a, 0xa7, 0x1a, 0xd0, 0xc8, 0x66, 0x3c, 0xeb,
-  0xc4, 0x20, 0x42, 0x9d, 0xf3, 0x67, 0x5b, 0xa3, 0x4f, 0xdd, 0x16, 0x27,
-  0x63, 0xeb, 0xa6, 0xb4, 0x41, 0x93, 0xe3, 0x47, 0xb6, 0x04, 0x02, 0x2c,
-  0x43, 0xc1, 0xb5, 0xb2, 0x05, 0x14, 0xb6, 0x3c, 0x94, 0xaf, 0xaa, 0x5a,
-  0xb0, 0x39, 0x5f, 0x24, 0x28, 0xd3, 0x12, 0x23, 0x7f, 0x23, 0x2c, 0x5e,
-  0x7e, 0x39, 0x8f, 0xef, 0xba, 0x00, 0x9c, 0x71, 0x98, 0xa5, 0x6a, 0x1d,
-  0xad, 0x76, 0x18, 0xb0, 0x5c, 0x7a, 0xea, 0xfd, 0xea, 0xe8, 0x60, 0x7c,
-  0x31, 0x6a, 0x5e, 0x39, 0xad, 0x74, 0x22, 0x14, 0x1b, 0x52, 0x33, 0x11,
-  0xb8, 0x02, 0x1b, 0x16, 0x23, 0x2e, 0x8d, 0x5b, 0x38, 0xf0, 0x3c, 0x1e,
-  0x9e, 0x8c, 0xce, 0xda, 0xe7, 0xfc, 0xa7, 0x0e, 0x00, 0x23, 0x48, 0x88,
-  0x70, 0x78, 0x4e, 0xd2, 0x39, 0xcf, 0x80, 0xc6, 0x45, 0xac, 0x77, 0xa1,
-  0x79, 0x16, 0x5c, 0xdf, 0x3e, 0xca, 0xe7, 0x00, 0xdf, 0x42, 0x37, 0x0d,
-  0x28, 0xf3, 0x56, 0xb9, 0xd0, 0x83, 0xf3, 0x77, 0xc7, 0xef, 0xbe, 0xde,
-  0xaf, 0xdd, 0x99, 0xf3, 0x3c, 0x2f, 0x13, 0xf5, 0xd1, 0x0b, 0x8a, 0xba,
-  0xac, 0x96, 0xe4, 0x87, 0x3a, 0xc4, 0x8d, 0x8e, 0x4b, 0x9c, 0xc1, 0x0d,
-  0x05, 0x2a, 0xb6, 0xbc, 0x11, 0xd3, 0x9c, 0xd6, 0x96, 0x61, 0x89, 0x67,
-  0xf4, 0x70, 0x9d, 0xdf, 0x32, 0x9f, 0xde, 0x94, 0x4f, 0xc5, 0xd8, 0xf5,
-  0xc9, 0xb1, 0xf6, 0xe3, 0xd3, 0xc3, 0x6f, 0xc7, 0x4f, 0x83, 0x48, 0xfb,
-  0xaa, 0x61, 0xb8, 0xd1, 0xf2, 0xb3, 0x78, 0xa3, 0x9d, 0xa6, 0xfa, 0x48,
-  0x98, 0x7d, 0x9d, 0x2b, 0x3d, 0x0b, 0x6d, 0xa2, 0x9d, 0xc7, 0xaa, 0x5e,
-  0xc4, 0x84, 0x4d, 0x5d, 0x69, 0xbe, 0x72, 0x08, 0xfa, 0x01, 0x5c, 0xd5,
-  0x40, 0xa5, 0xc8, 0xfb, 0x8e, 0x2a, 0x85, 0x56, 0xdd, 0x24, 0xa8, 0x67,
-  0xd2, 0x8a, 0x8e, 0x63, 0x18, 0x0e, 0x31, 0x96, 0x7c, 0x36, 0x68, 0x8a,
-  0x3b, 0xc4, 0x29, 0x48, 0xfe, 0x9b, 0xaf, 0xb8, 0x67, 0xe0, 0x75, 0x38,
-  0x40, 0x13, 0x17, 0xac, 0xd9, 0x94, 0x3f, 0x64, 0xe5, 0x2d, 0x7e, 0x9f,
-  0xa1, 0x5a, 0xfc, 0x50, 0x75, 0xb3, 0x63, 0x7d, 0x6a, 0x7f, 0x7b, 0xdb,
-  0x9b, 0xb3, 0x24, 0xb8, 0x70, 0xf4, 0xdb, 0x69, 0x05, 0xd2, 0x67, 0xfc,
-  0xab, 0x88, 0x22, 0xfe, 0x34, 0xaa, 0x68, 0x49, 0xc9, 0xbf, 0x90, 0x2a,
-  0x3e, 0x5f, 0xc7, 0x6c, 0x3b, 0x0b, 0xdb, 0x3c, 0x48, 0x13, 0xae, 0xce,
-  0xcd, 0xff, 0x20, 0xaa, 0x88, 0x3f, 0x8d, 0x2c, 0xe2, 0x1a, 0x5d, 0xac,
-  0xc9, 0x09, 0xff, 0x2d, 0x31, 0x25, 0x31, 0x8c, 0x67, 0x43, 0x87, 0x8d,
-  0xff, 0x18, 0xc5, 0xd4, 0x4c, 0xb4, 0x2c, 0x24, 0x80, 0x68, 0x9e, 0xe9,
-  0x6c, 0x37, 0x61, 0x09, 0x4e, 0x42, 0xd0, 0x34, 0x33, 0xc6, 0x77, 0x43,
-  0xf4, 0xe3, 0xee, 0xdb, 0x7a, 0x94, 0x03, 0x39, 0xda, 0x12, 0xfc, 0x26,
-  0xa1, 0xae, 0x56, 0x38, 0xf3, 0x2f, 0xa7, 0xb5, 0xff, 0x57, 0x70, 0xa0,
-  0x67, 0xbe, 0xb2, 0xc1, 0xa7, 0xd0, 0xdc, 0xb3, 0x6b, 0x47, 0x73, 0x5d,
-  0x45, 0x3f, 0x8d, 0x37, 0xfd, 0xc6, 0xf9, 0x3a, 0x1d, 0x72, 0x95, 0xad,
-  0x3a, 0xdc, 0xd4, 0x05, 0xa9, 0xd8, 0x88, 0x6e, 0x08, 0x01, 0xf4, 0x35,
-  0x09, 0xa4, 0x8d, 0xb4, 0xab, 0x74, 0xec, 0x52, 0xa9, 0x03, 0xeb, 0xb1,
-  0xa0, 0x51, 0xd1, 0x08, 0x5a, 0x77, 0xe6, 0xb3, 0x5f, 0xc3, 0x1e, 0x8d,
-  0xd2, 0x19, 0xcf, 0x60, 0x22, 0x49, 0xdb, 0x42, 0xdf, 0x5a, 0x71, 0x33,
-  0xb7, 0x62, 0xd2, 0x5d, 0xce, 0x60, 0xc0, 0x71, 0x5b, 0x5a, 0xdb, 0xa3,
-  0xb4, 0x5e, 0xe3, 0xa3, 0x1d, 0x99, 0x05, 0xeb, 0x52, 0xda, 0xfe, 0xdf,
-  0xc2, 0x43, 0x9f, 0x7d, 0x1a, 0x39, 0xff, 0x33, 0x6e, 0xd6, 0xff, 0x41,
-  0xc4, 0xdb, 0xb1, 0xcd, 0x9b, 0x8a, 0x4c, 0x26, 0x9a, 0xa1, 0x5c, 0x2c,
-  0x5b, 0x82, 0x33, 0xe3, 0x44, 0x78, 0x2c, 0xe2, 0xf1, 0xd9, 0x77, 0xcf,
-  0x25, 0xf0, 0x6d, 0xdc, 0x86, 0xd6, 0x3f, 0x79, 0x7d, 0x70, 0xd6, 0x71,
-  0x33, 0x5c, 0x91, 0xc2, 0xbf, 0x4c, 0x87, 0xac, 0x56, 0xb1, 0x09, 0xee,
-  0xa5, 0xfe, 0xc2, 0x24, 0xde, 0x65, 0x64, 0x34, 0x23, 0xa9, 0x3d, 0x2f,
-  0xd8, 0xdd, 0xe2, 0x31, 0xc6, 0x2c, 0x55, 0x3f, 0x63, 0x87, 0xd3, 0x74,
-  0x31, 0xdb, 0x96, 0x3f, 0x87, 0x97, 0x7f, 0x9d, 0xb5, 0x55, 0xbd, 0x10,
-  0x18, 0xbb, 0x96, 0x88, 0xa8, 0x60, 0xe3, 0x69, 0xb5, 0xae, 0x04, 0x73,
-  0xb9, 0x1f, 0x9c, 0xf2, 0x48, 0x73, 0x6b, 0x01, 0x2a, 0xbd, 0x6e, 0x5e,
-  0x42, 0x73, 0xad, 0xea, 0x07, 0x52, 0x2b, 0x04, 0x55, 0x07, 0xf8, 0xeb,
-  0xed, 0xa0, 0x29, 0xd7, 0x7e, 0xc7, 0x67, 0xd6, 0x7a, 0x47, 0x02, 0x0f,
-  0x77, 0x26, 0x6d, 0x31, 0xc2, 0x9e, 0x8e, 0x2a, 0xe8, 0xa7, 0xfd, 0x25,
-  0xec, 0x0d, 0x8c, 0xbd, 0x50, 0xb6, 0xaa, 0x90, 0xb0, 0x3b, 0xdf, 0xdf,
-  0xb5, 0x43, 0x2d, 0xfd, 0xa8, 0xfb, 0x2e, 0x35, 0x6b, 0x34, 0x81, 0x31,
-  0x9b, 0xa6, 0xcb, 0x78, 0xae, 0x69, 0x9d, 0x0f, 0xd5, 0x4e, 0x6a, 0x96,
-  0x9e, 0xa9, 0x4f, 0x88, 0x94, 0xed, 0x66, 0x39, 0xb7, 0x3a, 0x18, 0xb7,
-  0xd5, 0x93, 0xb3, 0xe4, 0x69, 0x6c, 0x1e, 0xce, 0xa7, 0xaa, 0xe9, 0x08,
-  0xdd, 0x47, 0x0e, 0x2f, 0x9e, 0x68, 0x27, 0x25, 0xc1, 0x41, 0x0d, 0xe8,
-  0xa7, 0xdd, 0x17, 0xcf, 0x77, 0xa3, 0x32, 0xbe, 0x07, 0x3e, 0x4a, 0xa9,
-  0xef, 0x3f, 0x1d, 0x3d, 0xd9, 0x7e, 0x3a, 0x7a, 0x1a, 0xf9, 0xd2, 0xb2,
-  0x93, 0xc4, 0xda, 0x27, 0xc6, 0xd9, 0x42, 0xc5, 0x90, 0xf3, 0xf4, 0xee,
-  0xe8, 0x90, 0x59, 0xb5, 0xa5, 0xf8, 0x36, 0xd4, 0x3b, 0x03, 0x65, 0xa2,
-  0x55, 0x1b, 0xb9, 0xac, 0xe0, 0x2e, 0xa5, 0xb4, 0x63, 0x39, 0x22, 0xa3,
-  0x4d, 0x84, 0xe8, 0x67, 0x6e, 0x24, 0xcc, 0x2c, 0x85, 0x4c, 0x75, 0x65,
-  0xba, 0x20, 0x40, 0xc2, 0x35, 0x09, 0x56, 0x6c, 0xf4, 0x70, 0x35, 0xa0,
-  0xb2, 0x22, 0x3d, 0xb5, 0xe8, 0x8e, 0x12, 0x3a, 0x57, 0x63, 0x24, 0x5c,
-  0x81, 0x5c, 0xed, 0x5a, 0xfc, 0xcc, 0xfa, 0x8a, 0xc5, 0xcf, 0xd7, 0x52,
-  0x2a, 0x2c, 0xf8, 0xa5, 0xab, 0xd2, 0x65, 0x2d, 0x9b, 0x41, 0xeb, 0xfb,
-  0xa0, 0x38, 0x70, 0x7f, 0xd8, 0xb7, 0x4b, 0xca, 0x62, 0x67, 0xb8, 0xb7,
-  0x4a, 0x2c, 0xa6, 0xcd, 0x9a, 0x10, 0xff, 0x70, 0xb9, 0xb5, 0xe2, 0xdb,
-  0xa0, 0x4a, 0xe6, 0x59, 0x52, 0x69, 0xb9, 0xc9, 0xe8, 0xe5, 0xe9, 0xd9,
-  0xc5, 0xab, 0xdb, 0x78, 0xde, 0x8a, 0xf1, 0x60, 0x14, 0x45, 0x2b, 0xcd,
-  0xe9, 0xac, 0xb9, 0xfc, 0x66, 0x90, 0x1c, 0x35, 0x76, 0x39, 0x42, 0xf6,
-  0x64, 0x17, 0xac, 0xd2, 0xc5, 0xc5, 0x9f, 0xcf, 0x8e, 0x5e, 0xbd, 0x64,
-  0x5b, 0xf0, 0x17, 0x6c, 0x90, 0x2f, 0x6b, 0xa6, 0x61, 0x2e, 0x03, 0xdd,
-  0xbe, 0x19, 0x7f, 0x78, 0x7d, 0x3c, 0x3e, 0x3b, 0x39, 0x3d, 0x7c, 0xf5,
-  0xf2, 0x07, 0x76, 0x61, 0xd2, 0xea, 0xdd, 0x07, 0xef, 0xba, 0xcf, 0x5c,
-  0xba, 0x43, 0xbb, 0xf8, 0xdd, 0xd1, 0xf7, 0x1f, 0x8e, 0xde, 0x7d, 0xf7,
-  0xea, 0xe5, 0x6d, 0x5c, 0x0c, 0x78, 0x7e, 0xf2, 0x36, 0x9b, 0x64, 0x3b,
-  0xea, 0x22, 0x07, 0x6b, 0x74, 0x81, 0x6a, 0x88, 0x4b, 0x8e, 0x1d, 0x7c,
-  0x20, 0xac, 0x4c, 0xee, 0x32, 0x5f, 0x6f, 0xae, 0x29, 0xe0, 0x07, 0x51,
-  0x6c, 0xf5, 0x94, 0xd6, 0xf7, 0xe7, 0x27, 0xa3, 0x4e, 0x82, 0x71, 0x15,
-  0x19, 0x7c, 0x3d, 0x0e, 0xb5, 0x0d, 0xf9, 0x56, 0x51, 0xfc, 0xc2, 0xd7,
-  0x9d, 0x56, 0xc8, 0xd0, 0x07, 0x63, 0xe8, 0x84, 0x75, 0xf9, 0x70, 0x5a,
-  0x57, 0x0a, 0x52, 0x82, 0x68, 0x68, 0x06, 0x29, 0x30, 0x0b, 0xb6, 0x2d,
-  0x32, 0x65, 0xde, 0x36, 0x79, 0xf9, 0xd8, 0x77, 0xf8, 0xde, 0x21, 0xd4,
-  0x70, 0x04, 0x08, 0xe6, 0x76, 0x28, 0x40, 0xc5, 0x92, 0xa0, 0x52, 0x9f,
-  0x84, 0x30, 0xe2, 0xbc, 0x58, 0x0b, 0xe6, 0xce, 0x60, 0xe6, 0x37, 0x6e,
-  0x5c, 0x85, 0xd0, 0x6f, 0x3d, 0xf9, 0xc1, 0x52, 0xd3, 0x82, 0x42, 0x22,
-  0x1d, 0xe9, 0x71, 0x75, 0x7c, 0x53, 0xf1, 0x44, 0xb2, 0x4c, 0xc9, 0xb9,
-  0x7b, 0x9c, 0x7e, 0xe9, 0x22, 0x87, 0x65, 0x63, 0x3d, 0x3a, 0x76, 0xdb,
-  0x97, 0x89, 0x9a, 0xec, 0xee, 0xcc, 0xd9, 0x61, 0xcb, 0x1d, 0x2c, 0xf8,
-  0xe6, 0x78, 0xcb, 0xa5, 0x3b, 0x72, 0x8b, 0x67, 0xef, 0x2f, 0x82, 0x4c,
-  0xd7, 0x56, 0xb4, 0x5a, 0xeb, 0x10, 0x36, 0x04, 0x65, 0xbf, 0x50, 0xbd,
-  0x61, 0xaf, 0x59, 0x57, 0xc6, 0x4c, 0xfd, 0xc4, 0x18, 0xb8, 0xb2, 0xb8,
-  0xc7, 0x2e, 0x68, 0x89, 0x7e, 0x1a, 0x47, 0x2c, 0xb9, 0x5e, 0x74, 0xbd,
-  0x68, 0x20, 0x52, 0xe2, 0xea, 0x9f, 0x04, 0xfd, 0x8c, 0xc2, 0x7e, 0xc4,
-  0xf1, 0xb6, 0xd5, 0x4a, 0xea, 0xbb, 0x6f, 0x46, 0xea, 0xbb, 0xbe, 0x79,
-  0x9c, 0x0e, 0x52, 0x4e, 0x46, 0x06, 0x9b, 0x37, 0xbb, 0x15, 0x26, 0x44,
-  0x79, 0x1d, 0x35, 0x54, 0x24, 0x6b, 0x0d, 0xc8, 0xe7, 0x28, 0xf3, 0x8d,
-  0xec, 0x74, 0x04, 0x7d, 0x19, 0xa4, 0xb5, 0xd5, 0xa4, 0x56, 0x9f, 0xa2,
-  0x35, 0x5b, 0x76, 0x82, 0x36, 0xc9, 0x26, 0x76, 0x2c, 0xea, 0x9f, 0x1b,
-  0x02, 0x32, 0xb3, 0xc2, 0xe1, 0x85, 0x8f, 0xda, 0xe3, 0xa0, 0xbb, 0xce,
-  0x00, 0x2c, 0x94, 0xd7, 0x1b, 0x5e, 0xb4, 0xf0, 0xe0, 0xf8, 0x05, 0x0e,
-  0x59, 0x0b, 0x42, 0xd9, 0x11, 0x21, 0xca, 0xfb, 0x22, 0x94, 0xa4, 0x19,
-  0x37, 0x10, 0x2a, 0x46, 0x1a, 0x40, 0xcb, 0xfe, 0x90, 0x35, 0x79, 0xcd,
-  0x65, 0xd4, 0xbb, 0x9a, 0xe7, 0x93, 0x09, 0x4d, 0xaa, 0xe7, 0x2a, 0x71,
-  0x5c, 0x10, 0xdb, 0xbc, 0x82, 0xc8, 0x3b, 0x30, 0xb4, 0x40, 0x7f, 0x58,
-  0x51, 0xc1, 0x0a, 0x7d, 0xad, 0xcb, 0xcd, 0xc5, 0xde, 0x1a, 0xb2, 0xbc,
-  0xed, 0x2b, 0x2a, 0x4c, 0xdd, 0x07, 0xe5, 0x2f, 0x11, 0x8b, 0xc5, 0x9f,
-  0x5a, 0xff, 0xad, 0x30, 0x5e, 0xce, 0x25, 0xf5, 0x59, 0x9f, 0xca, 0x7c,
-  0xc0, 0x72, 0xb4, 0xb2, 0x50, 0xda, 0x91, 0xe7, 0xc9, 0x13, 0xa6, 0x09,
-  0xf4, 0xfe, 0x83, 0x07, 0xb1, 0x3b, 0xe0, 0x7f, 0xf7, 0xfe, 0xde, 0xb3,
-  0xfa, 0x51, 0x5c, 0xb1, 0x4f, 0x06, 0x5f, 0x71, 0xc9, 0x9e, 0xd2, 0x8a,
-  0x56, 0x75, 0xd4, 0xa8, 0x62, 0xb7, 0xe1, 0xda, 0xd6, 0xd3, 0xc5, 0xd5,
-  0x8f, 0xbb, 0xc3, 0xdd, 0x9d, 0x9d, 0x9d, 0x9f, 0x47, 0x4b, 0x5e, 0xba,
-  0x4b, 0x34, 0x4f, 0xff, 0x8e, 0x96, 0xe9, 0x94, 0x0d, 0xf9, 0xb4, 0x99,
-  0x69, 0xcc, 0x4d, 0x6f, 0x4b, 0x7f, 0xdb, 0xc1, 0xcd, 0x5f, 0x4d, 0x97,
-  0xc3, 0x2c, 0xef, 0x0a, 0x91, 0xb9, 0x58, 0x15, 0x59, 0x50, 0x7c, 0xf5,
-  0xc3, 0xbb, 0xd3, 0xd7, 0x47, 0x27, 0x07, 0x7f, 0xb6, 0x10, 0x5b, 0x07,
-  0x9b, 0xc0, 0x03, 0xf9, 0x90, 0xc4, 0xe5, 0xfd, 0x87, 0x32, 0xa9, 0xe8,
-  0xcb, 0xcd, 0x27, 0x5b, 0xc8, 0x7c, 0x6d, 0xd5, 0xdf, 0xbe, 0x12, 0xb1,
-  0xdd, 0x70, 0x14, 0x34, 0x62, 0xc9, 0xdf, 0xde, 0xa3, 0xa6, 0xeb, 0xa9,
-  0x16, 0xf8, 0x5a, 0xb1, 0x37, 0x64, 0x32, 0xbf, 0x29, 0xd3, 0xbf, 0xd1,
-  0xbd, 0xc3, 0xd8, 0x8a, 0xed, 0x78, 0xe6, 0x0b, 0x45, 0x50, 0xa8, 0x22,
-  0xfe, 0x2d, 0xfa, 0xea, 0xe4, 0x5b, 0x0e, 0x23, 0x77, 0x4a, 0xcd, 0x42,
-  0x52, 0xf6, 0xa3, 0x2f, 0x9e, 0xed, 0xee, 0x6d, 0xb9, 0x82, 0x22, 0x92,
-  0x8c, 0xc2, 0x87, 0xb3, 0xe5, 0x56, 0xff, 0x5b, 0x12, 0x54, 0x76, 0x10,
-  0xae, 0xec, 0x7d, 0x8c, 0x52, 0xa4, 0x5d, 0x6f, 0x39, 0x80, 0xfe, 0xc1,
-  0x17, 0x5c, 0x01, 0x66, 0x91, 0x13, 0x45, 0x5a, 0x60, 0x45, 0x17, 0x3e,
-  0x2b, 0x68, 0x14, 0x14, 0x6b, 0x8d, 0x68, 0x38, 0x9a, 0x5f, 0xd2, 0x2d,
-  0x9b, 0xfc, 0xa3, 0x65, 0x9d, 0x47, 0x3d, 0x55, 0xb4, 0xda, 0xf3, 0x92,
-  0xbd, 0xc4, 0x2c, 0x7f, 0x44, 0x2f, 0xed, 0xb7, 0x2f, 0xda, 0x91, 0x75,
-  0x11, 0x3b, 0x65, 0xda, 0xa8, 0x41, 0x90, 0x5b, 0x22, 0xbe, 0xff, 0x38,
-  0xa6, 0xd1, 0x17, 0x9a, 0x0a, 0xf3, 0x0d, 0xda, 0xe1, 0x9f, 0x6e, 0x5e,
-  0xbd, 0xf1, 0xf9, 0x59, 0x6f, 0xa0, 0x7a, 0x0a, 0x75, 0x30, 0xa4, 0xbf,
-  0x69, 0xbc, 0x10, 0xe1, 0x9f, 0xed, 0x3c, 0x7b, 0xba, 0xa5, 0x46, 0x0f,
-  0x8c, 0x53, 0x0a, 0xfc, 0xb4, 0x6b, 0x2e, 0xe0, 0x4b, 0x57, 0x2c, 0x59,
-  0xb0, 0x2f, 0x7c, 0xa2, 0x1d, 0x91, 0x5e, 0x7d, 0x96, 0x62, 0x30, 0xd1,
-  0xaa, 0xd8, 0xeb, 0xa3, 0x22, 0x74, 0xcf, 0x20, 0xf7, 0x61, 0x98, 0xed,
-  0xf2, 0xea, 0x4f, 0x1b, 0x0b, 0xe9, 0xc6, 0xf0, 0xd2, 0x7e, 0xeb, 0x5a,
-  0x48, 0x5f, 0xd6, 0x59, 0x8b, 0xd2, 0x39, 0x5c, 0x25, 0x5e, 0xe1, 0xe6,
-  0x02, 0x2b, 0xd2, 0xd7, 0x7a, 0x6f, 0x8a, 0xf3, 0xbf, 0x87, 0x93, 0x1c,
-  0x39, 0x07, 0xa9, 0x82, 0x09, 0xf9, 0x05, 0xb4, 0x0c, 0x97, 0xb2, 0xa3,
-  0x1e, 0xda, 0xc3, 0xd3, 0xc3, 0xeb, 0x2f, 0xf9, 0xdf, 0xae, 0x69, 0xf1,
-  0xe7, 0x4e, 0x63, 0xff, 0x27, 0x4c, 0x2b, 0x98, 0x97, 0x5b, 0x51, 0x9d,
-  0x5b, 0x4b, 0x75, 0xae, 0x1e, 0xdf, 0xbb, 0xdb, 0xdd, 0xd1, 0x4e, 0xa7,
-  0x93, 0xf3, 0x0d, 0x97, 0xb0, 0xab, 0xa3, 0x68, 0xf1, 0x84, 0x0c, 0x7c,
-  0x97, 0xfd, 0x94, 0x60, 0x10, 0x4e, 0x07, 0x33, 0x68, 0xb0, 0x35, 0x40,
-  0x6f, 0xfc, 0xb2, 0x03, 0x3a, 0xa8, 0xd5, 0x68, 0x79, 0xda, 0x3a, 0x99,
-  0x34, 0xa8, 0xdd, 0x5f, 0x37, 0xa8, 0xdd, 0xdf, 0x74, 0x50, 0x7b, 0xbf,
-  0x6e, 0x50, 0x7b, 0xbf, 0xd5, 0xa0, 0x8a, 0xa1, 0x25, 0x65, 0x74, 0x63,
-  0x44, 0x9f, 0x6b, 0xf8, 0x16, 0xc3, 0x1b, 0x2d, 0x18, 0x51, 0x91, 0xd9,
-  0xe9, 0x85, 0x72, 0xf4, 0xe1, 0x91, 0xbe, 0xeb, 0x43, 0x68, 0x44, 0x60,
-  0x68, 0x47, 0xce, 0xaa, 0xac, 0xe2, 0x42, 0x0e, 0xcb, 0x7a, 0xc9, 0x51,
-  0x71, 0xd6, 0xae, 0x32, 0xeb, 0x44, 0x73, 0xbd, 0x11, 0x38, 0x04, 0x99,
-  0xae, 0x35, 0xcf, 0x69, 0x92, 0x2a, 0x82, 0xed, 0x63, 0x11, 0xda, 0xcf,
-  0xeb, 0x13, 0x66, 0xe8, 0x9c, 0x4e, 0x9d, 0xcc, 0x55, 0xf8, 0x8d, 0x39,
-  0xe0, 0x82, 0xe3, 0x32, 0xe4, 0xe1, 0x68, 0xb6, 0x5a, 0x2c, 0x0d, 0xd6,
-  0x22, 0xcd, 0x34, 0xc8, 0x97, 0xc7, 0x4b, 0x97, 0xf3, 0x55, 0x6e, 0xb7,
-  0xda, 0xa0, 0x65, 0xd8, 0xe1, 0x92, 0x48, 0xf8, 0x36, 0x11, 0x74, 0x53,
-  0x0e, 0xeb, 0x4f, 0x33, 0xa9, 0x6d, 0x26, 0x15, 0x61, 0xf3, 0x00, 0x14,
-  0x4e, 0x45, 0x58, 0x11, 0xc1, 0xdf, 0xb7, 0x5c, 0xe9, 0x2c, 0x36, 0x73,
-  0x54, 0x0a, 0x07, 0x73, 0xa9, 0xc6, 0x82, 0xfc, 0xb9, 0xa0, 0x42, 0xa4,
-  0x55, 0x51, 0x5a, 0x63, 0x07, 0xe8, 0xb6, 0x51, 0x87, 0xf6, 0x69, 0xc4,
-  0xcf, 0x0c, 0x6f, 0x07, 0x52, 0x27, 0x76, 0x92, 0x97, 0x89, 0x24, 0x85,
-  0x60, 0x1d, 0x5a, 0x36, 0xa3, 0x72, 0x9a, 0xa6, 0xbf, 0xa5, 0x93, 0x4c,
-  0x7a, 0x45, 0x37, 0x0f, 0x6f, 0x58, 0x2c, 0xdb, 0x25, 0xbb, 0x15, 0x6e,
-  0x96, 0xdf, 0x2d, 0x89, 0x38, 0x74, 0xfb, 0xf5, 0x7f, 0xd0, 0x86, 0xd1,
-  0xff, 0x73, 0x35, 0x64, 0xce, 0x3a, 0x4c, 0xe7, 0x31, 0x8c, 0x49, 0xba,
-  0x34, 0x82, 0x26, 0x3c, 0x4f, 0x62, 0xce, 0x4c, 0x37, 0x13, 0xf6, 0x75,
-  0xf2, 0x51, 0x94, 0xff, 0xf6, 0x65, 0xaf, 0x80, 0x49, 0xd7, 0x6c, 0x36,
-  0xc3, 0xb3, 0x07, 0xe3, 0xc3, 0xe3, 0xe3, 0x9a, 0x1d, 0x91, 0x17, 0x4f,
-  0x92, 0x3b, 0x10, 0x8a, 0x56, 0x72, 0x9a, 0x0b, 0x87, 0x03, 0x62, 0xb8,
-  0x5d, 0x00, 0x66, 0x82, 0x4c, 0xca, 0x15, 0x9d, 0xe3, 0x32, 0xb5, 0x94,
-  0xda, 0x58, 0x2f, 0xe8, 0x8c, 0xad, 0x03, 0x9c, 0xdb, 0x70, 0xbd, 0x22,
-  0x59, 0xb7, 0xfc, 0x47, 0x13, 0xe4, 0xe8, 0xb7, 0x26, 0xbd, 0x8e, 0xdc,
-  0xc7, 0xb3, 0x42, 0xd3, 0x33, 0x25, 0x6f, 0x41, 0x93, 0x17, 0x19, 0x41,
-  0x87, 0x35, 0x40, 0xa1, 0x40, 0x1a, 0xa1, 0x0d, 0x16, 0xea, 0xa1, 0xe5,
-  0xaf, 0x76, 0x40, 0x8e, 0xaa, 0x19, 0xaa, 0x6c, 0x56, 0x22, 0x6f, 0x70,
-  0xe9, 0x55, 0x96, 0x7e, 0x84, 0x0d, 0x94, 0x84, 0x85, 0x97, 0x9c, 0x7f,
-  0xb8, 0xa6, 0xfe, 0xe0, 0xa1, 0x15, 0xc7, 0x72, 0x38, 0x87, 0xb4, 0x08,
-  0x28, 0x40, 0xa4, 0x35, 0xdc, 0xa5, 0x8d, 0x41, 0xa8, 0x8e, 0x83, 0x61,
-  0x77, 0xd8, 0x1f, 0xb3, 0xa4, 0x62, 0x17, 0x46, 0x5d, 0xe1, 0x78, 0x5a,
-  0x17, 0x81, 0x57, 0x03, 0xab, 0xf5, 0x08, 0xd9, 0x66, 0x7f, 0xad, 0xec,
-  0x16, 0xa4, 0x4f, 0x06, 0x85, 0x1e, 0x39, 0xc1, 0xca, 0xe4, 0x8f, 0xb0,
-  0xae, 0xab, 0xe8, 0xf4, 0x0f, 0x17, 0xee, 0x1e, 0x45, 0xa7, 0x8e, 0x62,
-  0x86, 0xd9, 0x00, 0xc0, 0xa1, 0x55, 0x31, 0xd5, 0xa8, 0x41, 0xfc, 0x3e,
-  0xb4, 0x0c, 0xdc, 0xf5, 0x55, 0xbc, 0x91, 0xca, 0x7b, 0xef, 0x31, 0x1f,
-  0xe5, 0xda, 0x71, 0x43, 0x1c, 0x04, 0x5a, 0xcd, 0x92, 0xb4, 0x95, 0xa5,
-  0xa6, 0xe1, 0xb5, 0xd4, 0x36, 0x99, 0x44, 0x27, 0xd0, 0x65, 0xf7, 0x7c,
-  0x15, 0x67, 0x6e, 0x39, 0x4f, 0x2b, 0xae, 0xc5, 0x17, 0xe5, 0x99, 0x83,
-  0x1f, 0x42, 0x02, 0xca, 0x34, 0x9f, 0x13, 0xbf, 0x69, 0x79, 0x1e, 0x90,
-  0x73, 0x23, 0x67, 0x13, 0x66, 0xe0, 0xc5, 0x32, 0x27, 0x9d, 0x58, 0xc1,
-  0xb0, 0xc5, 0x22, 0x87, 0x37, 0x4d, 0xfb, 0xf6, 0x9d, 0x77, 0x20, 0xc3,
-  0xd6, 0xd4, 0x4a, 0xa4, 0x90, 0xd9, 0x66, 0x4c, 0x63, 0x5a, 0x51, 0x84,
-  0xc5, 0x75, 0x27, 0xd4, 0xc8, 0x25, 0xff, 0x2d, 0x11, 0x79, 0x52, 0xe4,
-  0x65, 0xf4, 0xdd, 0x33, 0xc3, 0x68, 0xfb, 0x3e, 0xcd, 0x66, 0xcc, 0x5e,
-  0xa4, 0x56, 0xbc, 0xb3, 0xce, 0xc8, 0x5a, 0xc3, 0x6f, 0xd0, 0xc9, 0x73,
-  0xcd, 0x8f, 0x6b, 0xaf, 0x2b, 0xb5, 0x8a, 0xfd, 0xae, 0x31, 0x13, 0x20,
-  0x63, 0xd3, 0x20, 0x19, 0x32, 0x28, 0x2f, 0x3a, 0x08, 0x37, 0xa8, 0x32,
-  0x06, 0x60, 0x3c, 0xbe, 0x1b, 0xee, 0xa3, 0x7c, 0x52, 0x49, 0x39, 0x06,
-  0x37, 0xea, 0x8b, 0x94, 0xcf, 0x82, 0xab, 0xca, 0x3b, 0xcb, 0xdb, 0x21,
-  0xed, 0xaa, 0xe7, 0xf8, 0x50, 0xe1, 0x86, 0x2c, 0x7e, 0xcd, 0x90, 0x3b,
-  0xd7, 0x1c, 0x9b, 0xce, 0x06, 0x2f, 0x58, 0xfe, 0x36, 0xd6, 0x44, 0xfb,
-  0xe2, 0xd6, 0x61, 0x60, 0x57, 0x55, 0xf3, 0xfc, 0xce, 0xb4, 0x50, 0x2d,
-  0x94, 0x28, 0xe3, 0x72, 0x5d, 0xa5, 0x56, 0x59, 0x86, 0xd0, 0x71, 0x29,
-  0x0b, 0x36, 0xd0, 0x68, 0xcc, 0x42, 0x7d, 0x06, 0x56, 0x57, 0x49, 0x97,
-  0xb3, 0xe3, 0x4a, 0xe0, 0x04, 0x84, 0x12, 0x86, 0x62, 0xd8, 0x4f, 0xa5,
-  0x2c, 0xdb, 0xa5, 0x87, 0xba, 0x6f, 0x53, 0x74, 0xde, 0x38, 0x2c, 0xe1,
-  0x56, 0x31, 0x01, 0x4a, 0x5e, 0x57, 0xf4, 0x3a, 0xbf, 0xcb, 0x86, 0x27,
-  0x1c, 0x93, 0x1b, 0x9d, 0xe4, 0x57, 0xb4, 0x54, 0xef, 0xa4, 0x26, 0x43,
-  0xd3, 0x8a, 0x79, 0xf6, 0x2e, 0xda, 0x7c, 0xcf, 0x73, 0x3a, 0x73, 0xce,
-  0x32, 0x7e, 0x72, 0x4b, 0x2b, 0xc0, 0x12, 0x63, 0x0c, 0x80, 0xf7, 0x07,
-  0xd1, 0xd1, 0x0f, 0x07, 0x6f, 0xcf, 0x4e, 0x8e, 0x7e, 0x12, 0x75, 0xac,
-  0x35, 0x1d, 0xfe, 0xf8, 0x4b, 0x1b, 0x3a, 0x57, 0x19, 0xd7, 0x9a, 0x26,
-  0x74, 0x5d, 0xcf, 0xef, 0xd7, 0x73, 0x01, 0x39, 0x38, 0x46, 0x7c, 0xe3,
-  0xf1, 0xd9, 0xf1, 0x50, 0xf1, 0x07, 0xe4, 0xfc, 0x2b, 0xa8, 0x1b, 0xce,
-  0xaf, 0x26, 0xe4, 0x7d, 0xdb, 0x8e, 0x42, 0xb6, 0xb3, 0x30, 0xf0, 0xc0,
-  0xc4, 0x03, 0x81, 0xf2, 0xa5, 0x19, 0x74, 0x83, 0x41, 0x57, 0xae, 0x48,
-  0xea, 0xb4, 0x65, 0x0b, 0x42, 0x3d, 0x2e, 0x8f, 0xbc, 0x5d, 0x26, 0xf3,
-  0x44, 0xb1, 0x53, 0xd7, 0x70, 0x50, 0xe0, 0x6e, 0x60, 0x1b, 0xd9, 0x43,
-  0xd1, 0x2a, 0x51, 0xae, 0x1e, 0x8b, 0x89, 0x43, 0x41, 0x54, 0x6f, 0xbe,
-  0xd0, 0x88, 0x70, 0x0d, 0xd5, 0x3b, 0x1d, 0x5b, 0xd8, 0x27, 0x21, 0x66,
-  0x15, 0xed, 0xf7, 0x7e, 0x43, 0x29, 0xef, 0xbd, 0x0b, 0x30, 0xf8, 0xc7,
-  0x5f, 0x24, 0x1a, 0x33, 0xf2, 0xc8, 0x45, 0xf2, 0x20, 0x59, 0xb0, 0x2e,
-  0x60, 0x84, 0xf1, 0x30, 0x65, 0xcc, 0x72, 0xa5, 0xfd, 0xa6, 0x23, 0xc9,
-  0xa1, 0x54, 0xd3, 0x88, 0x40, 0x0e, 0x2d, 0x43, 0x90, 0xc7, 0xb5, 0x40,
-  0xd2, 0x6a, 0x7d, 0xe7, 0x5b, 0x1a, 0xf9, 0x2f, 0xa3, 0x83, 0xc6, 0xbe,
-  0xb7, 0xe3, 0x07, 0x3f, 0x95, 0x0e, 0xde, 0xff, 0xb6, 0x74, 0x80, 0x6a,
-  0xd2, 0x2f, 0xdf, 0x9f, 0x9f, 0xac, 0xdb, 0xf2, 0x18, 0xc6, 0x67, 0x86,
-  0x5c, 0x48, 0xaa, 0xe9, 0x75, 0x3d, 0x41, 0x0d, 0x18, 0xf9, 0x79, 0xc9,
-  0xa1, 0xbb, 0xe0, 0xc9, 0xf7, 0x01, 0x58, 0x48, 0x2b, 0xe5, 0x52, 0x45,
-  0x6e, 0x6d, 0x96, 0x1a, 0xe5, 0x94, 0x70, 0x5c, 0x0d, 0x01, 0x4c, 0xed,
-  0x23, 0xc9, 0xc5, 0x0b, 0xc9, 0xb3, 0xd4, 0xd0, 0x92, 0x1a, 0x9a, 0xa8,
-  0x22, 0x5d, 0x12, 0xa3, 0xb4, 0x44, 0x06, 0xd8, 0xf6, 0xbb, 0xee, 0x5e,
-  0x9e, 0x10, 0xe3, 0x67, 0x88, 0x07, 0x77, 0xe0, 0x52, 0xde, 0x86, 0x39,
-  0x1f, 0x0a, 0xd5, 0x11, 0x34, 0x36, 0x1f, 0xb0, 0x02, 0x3e, 0xd7, 0xbf,
-  0xcb, 0x87, 0xe5, 0xea, 0x6d, 0xdb, 0x9a, 0x86, 0x72, 0x73, 0xe3, 0x85,
-  0xaf, 0x80, 0x05, 0xc8, 0x71, 0x0c, 0xfa, 0xfd, 0x76, 0x15, 0xcf, 0x6f,
-  0x24, 0xf3, 0x9c, 0xb4, 0x80, 0x42, 0x33, 0xea, 0x0d, 0x16, 0x4c, 0x73,
-  0x60, 0x88, 0x53, 0x33, 0xca, 0x6c, 0x17, 0xee, 0xef, 0x64, 0x75, 0x75,
-  0x65, 0x6a, 0x71, 0x99, 0x24, 0x86, 0x85, 0xd1, 0x2f, 0x23, 0xd1, 0xb8,
-  0x68, 0xd5, 0x7a, 0xab, 0x6c, 0xa6, 0xe8, 0xb8, 0xd1, 0x75, 0x9e, 0xcf,
-  0x7a, 0x52, 0xfd, 0x8f, 0x45, 0xe4, 0x36, 0x24, 0x48, 0x11, 0x96, 0x45,
-  0xed, 0x7f, 0xd1, 0xb7, 0xbc, 0xe1, 0x9e, 0xd6, 0x46, 0x66, 0x05, 0xae,
-  0x27, 0x0a, 0x14, 0x91, 0x36, 0x1f, 0x96, 0x41, 0xd4, 0x7f, 0xd9, 0xef,
-  0xcc, 0x4a, 0xaf, 0xbf, 0x23, 0xa6, 0x03, 0x01, 0x12, 0x9b, 0x3a, 0xe7,
-  0x23, 0xed, 0xc3, 0x75, 0x4a, 0x82, 0x6e, 0xa6, 0xbe, 0x28, 0xce, 0xf0,
-  0xd7, 0xf8, 0x8f, 0xa6, 0x18, 0x06, 0x55, 0x32, 0x56, 0xd9, 0xde, 0x0d,
-  0x15, 0x23, 0xed, 0xff, 0x41, 0x47, 0xe0, 0x0a, 0xfe, 0x00, 0xfe, 0xef,
-  0x32, 0xf7, 0x60, 0x5f, 0x2d, 0x2c, 0x36, 0x1e, 0x43, 0xdb, 0xfd, 0xec,
-  0xab, 0x1c, 0x8a, 0x78, 0x22, 0xa5, 0x9f, 0x50, 0x4a, 0x5b, 0x2a, 0xeb,
-  0x5e, 0x5b, 0x99, 0xe6, 0xd4, 0x44, 0x47, 0x21, 0x18, 0xa6, 0x92, 0xb4,
-  0x0d, 0x91, 0x6e, 0x82, 0x96, 0x53, 0xd8, 0x7c, 0xa5, 0x0f, 0x80, 0xe6,
-  0x14, 0x9c, 0x5f, 0x97, 0x03, 0xa8, 0xee, 0xb2, 0xa3, 0x6a, 0x89, 0x31,
-  0x45, 0xf3, 0xb8, 0xfa, 0xb3, 0x27, 0xd9, 0x13, 0x96, 0xf8, 0xc1, 0x9a,
-  0x31, 0x1e, 0x4c, 0x32, 0x68, 0x20, 0xea, 0xc8, 0x18, 0xb4, 0x61, 0xa7,
-  0x05, 0x09, 0xc1, 0xb2, 0x90, 0x9d, 0xe6, 0x54, 0x57, 0xfb, 0x2d, 0x46,
-  0xe2, 0xd7, 0x6a, 0x8e, 0xb5, 0xc6, 0x42, 0xcd, 0xb1, 0xc3, 0x9b, 0x1a,
-  0x66, 0xd0, 0xd5, 0xf1, 0x64, 0x91, 0x34, 0x17, 0xf0, 0xaa, 0x3b, 0x7e,
-  0x10, 0x51, 0x1e, 0x7c, 0x48, 0xa3, 0x97, 0x22, 0xab, 0xac, 0x4f, 0x08,
-  0xb6, 0x60, 0x83, 0xc0, 0x94, 0x10, 0x61, 0xe5, 0x90, 0xd3, 0x66, 0x30,
-  0xce, 0x6c, 0xfa, 0x9a, 0x27, 0xec, 0x3a, 0x83, 0xc3, 0xa4, 0x65, 0xd9,
-  0x85, 0x2d, 0x0f, 0x41, 0x32, 0xd2, 0x4a, 0xa4, 0x42, 0x5e, 0x55, 0x38,
-  0x7f, 0x1f, 0xb3, 0x25, 0x05, 0xa3, 0xd1, 0x80, 0x91, 0x2a, 0xf9, 0xc8,
-  0x4a, 0xfa, 0xc7, 0x96, 0x23, 0x41, 0x51, 0x74, 0x43, 0xce, 0x65, 0xc1,
-  0x0c, 0x5a, 0xf1, 0x59, 0x7b, 0x69, 0x89, 0xa7, 0x88, 0x59, 0x8c, 0x5b,
-  0xe0, 0xe8, 0x15, 0x38, 0x7e, 0xd4, 0x93, 0xf1, 0xb0, 0x67, 0x22, 0x57,
-  0xc9, 0x9f, 0x5b, 0x80, 0xe5, 0x43, 0x81, 0x38, 0x62, 0xc9, 0x11, 0xd5,
-  0xf6, 0xa5, 0x46, 0xe8, 0x46, 0x07, 0x46, 0x27, 0x86, 0xd8, 0xfb, 0xd2,
-  0x0c, 0x28, 0x3d, 0xf3, 0x95, 0xfa, 0x4a, 0xa5, 0x66, 0x6d, 0xa8, 0xc2,
-  0x55, 0xe9, 0x70, 0x2b, 0x89, 0x3b, 0x18, 0x00, 0x14, 0xbc, 0x6b, 0xd4,
-  0xe8, 0xb0, 0xd7, 0x5d, 0x95, 0xc0, 0xad, 0x01, 0x62, 0x0b, 0xc1, 0x5e,
-  0x54, 0x01, 0x31, 0x6b, 0x8f, 0xf4, 0x62, 0xb7, 0x18, 0x97, 0x99, 0xaa,
-  0xd2, 0x6a, 0xd5, 0xf6, 0xd4, 0x28, 0xee, 0x1f, 0x9c, 0x70, 0x60, 0xe2,
-  0xbc, 0x13, 0xde, 0x53, 0x86, 0x83, 0xc4, 0xd6, 0xa1, 0x0a, 0xb1, 0xcd,
-  0x6a, 0x72, 0x9a, 0x38, 0xd0, 0xe5, 0xa6, 0x71, 0xe3, 0x80, 0x65, 0x02,
-  0x3f, 0xba, 0xba, 0xa7, 0x86, 0x1a, 0xf8, 0xfd, 0x7f, 0xd8, 0x97, 0x00,
-  0xba, 0xfc, 0xbb, 0x2d, 0x96, 0x0e, 0x3b, 0x6e, 0x55, 0x16, 0x07, 0x83,
-  0xfb, 0x3d, 0x16, 0x05, 0x30, 0xdd, 0xb2, 0x32, 0xc0, 0xe0, 0xe1, 0xe6,
-  0x7e, 0x3f, 0x72, 0xde, 0x70, 0x6b, 0xc2, 0x6a, 0xcf, 0x77, 0x00, 0xe8,
-  0xca, 0x31, 0xfe, 0x29, 0xe3, 0xaa, 0x78, 0x56, 0x95, 0x5e, 0xa1, 0x2d,
-  0x64, 0x1b, 0x7f, 0x2a, 0xa4, 0x5a, 0x5b, 0x54, 0xc5, 0x13, 0xc1, 0x19,
-  0xd6, 0xcf, 0xdb, 0x56, 0x2f, 0x8e, 0x35, 0xd9, 0xc7, 0x6e, 0xfc, 0x7e,
-  0x28, 0x20, 0xa6, 0x4a, 0xe8, 0x8a, 0x49, 0x6c, 0x9f, 0xc9, 0xb6, 0xdc,
-  0xa5, 0xd9, 0x93, 0xbd, 0x61, 0x20, 0xe9, 0x0c, 0x3a, 0xc3, 0xf5, 0xd8,
-  0x1a, 0x98, 0x4f, 0xa7, 0xf0, 0xb5, 0x4d, 0x85, 0x39, 0xfc, 0x5e, 0x11,
-  0x70, 0x90, 0xe8, 0x25, 0x10, 0x0d, 0x33, 0x93, 0x1b, 0x56, 0x1e, 0x52,
-  0xa6, 0xd3, 0xc5, 0xd5, 0x49, 0x3c, 0xc1, 0xee, 0x38, 0x90, 0xaa, 0xae,
-  0x78, 0x26, 0x3e, 0xa1, 0x34, 0xd0, 0x0f, 0x70, 0xa9, 0x29, 0xdd, 0x1d,
-  0xca, 0x67, 0xc3, 0x0b, 0x7c, 0x66, 0x58, 0x58, 0x9a, 0xad, 0x9c, 0xcc,
-  0x5c, 0x4c, 0xeb, 0xa0, 0x8d, 0x18, 0x14, 0x75, 0x85, 0x02, 0x71, 0x74,
-  0x2c, 0x9d, 0xee, 0xd6, 0x38, 0xed, 0x30, 0x7d, 0x90, 0x62, 0x52, 0xc4,
-  0xad, 0x1f, 0x6e, 0x0d, 0x16, 0x8c, 0x39, 0xc9, 0x34, 0x56, 0x52, 0x42,
-  0x4c, 0x99, 0x8e, 0x8c, 0x2d, 0xd8, 0x4d, 0x31, 0xbe, 0x5a, 0x35, 0xba,
-  0xa3, 0x2e, 0x29, 0x2a, 0x55, 0x50, 0xb5, 0xa0, 0xb2, 0x21, 0xdd, 0x72,
-  0x86, 0xd2, 0x51, 0xe5, 0x73, 0x09, 0x89, 0xe0, 0x96, 0x1f, 0x99, 0x2b,
-  0xa7, 0xa3, 0x0a, 0x6e, 0x6d, 0x50, 0x42, 0xa9, 0x0e, 0xbe, 0x04, 0x36,
-  0x64, 0xd2, 0xd4, 0x23, 0x55, 0xd4, 0xd4, 0x16, 0x12, 0x1d, 0x23, 0x41,
-  0x3c, 0x97, 0x28, 0x27, 0x0c, 0x0f, 0xd8, 0xc3, 0x13, 0xc3, 0x43, 0x35,
-  0xff, 0xdc, 0xc3, 0xcd, 0xb9, 0x71, 0xc8, 0x55, 0x3d, 0x0c, 0x84, 0xb4,
-  0x51, 0x33, 0xb7, 0x6c, 0xb7, 0x15, 0x6a, 0x7c, 0x59, 0x2d, 0x3f, 0x00,
-  0x60, 0xf4, 0x03, 0x00, 0xc7, 0x2e, 0x02, 0x2b, 0x04, 0x3e, 0xc0, 0x72,
-  0x09, 0x26, 0x1c, 0xe9, 0xec, 0xa9, 0x56, 0x16, 0x9a, 0xe7, 0x22, 0x86,
-  0xb5, 0x62, 0x28, 0xdb, 0x2b, 0xd7, 0xa8, 0x93, 0x60, 0xee, 0xa2, 0x46,
-  0x12, 0xd9, 0xd3, 0xd6, 0xc0, 0x38, 0x34, 0xe3, 0x03, 0x90, 0x58, 0x1c,
-  0x85, 0xd0, 0x1d, 0x92, 0x14, 0x0c, 0x55, 0xdf, 0x80, 0x6a, 0x01, 0x9d,
-  0x48, 0x2e, 0xed, 0x2a, 0xb3, 0x90, 0x90, 0x87, 0x07, 0x06, 0x3d, 0x41,
-  0xeb, 0x45, 0x6a, 0x75, 0x1a, 0x8e, 0x98, 0xc2, 0x2e, 0xd2, 0x30, 0x59,
-  0x56, 0x77, 0x01, 0x05, 0xbc, 0x53, 0x8f, 0xcc, 0x13, 0x69, 0x28, 0x7b,
-  0x91, 0xfa, 0x9e, 0xd2, 0xd8, 0xe3, 0x20, 0xca, 0x14, 0x70, 0x4e, 0x30,
-  0x61, 0xd6, 0x09, 0xae, 0xf3, 0xbb, 0x47, 0x0f, 0x97, 0x04, 0xc2, 0xf0,
-  0x55, 0x3e, 0x5a, 0xb3, 0x32, 0x5a, 0xb0, 0xbe, 0xb1, 0x32, 0xf5, 0x05,
-  0xd1, 0x15, 0xf1, 0xc2, 0x5b, 0x47, 0xd8, 0x5c, 0xb4, 0x06, 0x05, 0x27,
-  0x8a, 0x36, 0x1d, 0xb0, 0xaa, 0x54, 0xbe, 0xb1, 0xd8, 0x1d, 0x3d, 0x93,
-  0x5a, 0xee, 0xe6, 0xb1, 0xe6, 0xc0, 0x5b, 0x5a, 0x18, 0x05, 0xed, 0x0d,
-  0x47, 0x34, 0xe0, 0x87, 0x74, 0x19, 0xb0, 0x84, 0xa0, 0xbe, 0xbb, 0xc3,
-  0xed, 0x93, 0xa0, 0x41, 0x26, 0xc9, 0x00, 0xcc, 0x8f, 0x0f, 0xd1, 0x63,
-  0xe3, 0x98, 0x22, 0xfc, 0x21, 0x12, 0x38, 0x8b, 0x20, 0xb5, 0x78, 0x68,
-  0xb2, 0x87, 0xda, 0x94, 0x8e, 0xcf, 0x6e, 0x9f, 0xb6, 0x4d, 0x48, 0x8d,
-  0xff, 0xe8, 0xa1, 0xe7, 0xf5, 0xc3, 0xf5, 0xa2, 0x23, 0x0d, 0x49, 0xa6,
-  0x24, 0x90, 0x62, 0x3a, 0x25, 0x19, 0x7e, 0x98, 0x1e, 0xa2, 0x3e, 0x11,
-  0xf0, 0x81, 0xc6, 0x30, 0x1f, 0x1e, 0x43, 0x30, 0x87, 0x47, 0x47, 0x42,
-  0x7d, 0x19, 0xc9, 0x70, 0xfd, 0xd4, 0x77, 0x0a, 0xd5, 0x45, 0x7d, 0xd3,
-  0x6d, 0x1b, 0xb9, 0x6f, 0x80, 0x9a, 0xa1, 0x57, 0x9e, 0x0c, 0xa5, 0x5b,
-  0x4a, 0x8c, 0x3a, 0x84, 0xc6, 0x47, 0x41, 0x28, 0x78, 0x0c, 0x06, 0xa7,
-  0x50, 0xba, 0x31, 0xd0, 0x10, 0xfc, 0x87, 0x8a, 0xc0, 0x89, 0xc8, 0x77,
-  0xa9, 0xe3, 0x9b, 0x78, 0xea, 0xfd, 0x75, 0x84, 0xd6, 0x1e, 0x87, 0x75,
-  0xf7, 0x01, 0x54, 0xac, 0xa6, 0x53, 0xc3, 0x7a, 0x72, 0x38, 0x22, 0xb1,
-  0xae, 0x86, 0xd9, 0x3f, 0x87, 0x62, 0x15, 0xc8, 0xe7, 0x8f, 0xac, 0x05,
-  0x07, 0x0e, 0xba, 0x09, 0x69, 0xb6, 0x8c, 0x5d, 0xd9, 0x0a, 0x5c, 0xc1,
-  0xa0, 0x0b, 0xe0, 0x14, 0x53, 0x4e, 0xbd, 0x79, 0xb8, 0x39, 0x56, 0xde,
-  0xc3, 0x12, 0x85, 0x2e, 0x9d, 0x00, 0x58, 0x25, 0x62, 0xce, 0xa1, 0xfb,
-  0xd0, 0xcf, 0xfa, 0x53, 0x18, 0x55, 0xc7, 0x92, 0x30, 0x83, 0x76, 0x87,
-  0xef, 0xc2, 0xf3, 0xec, 0xfa, 0x11, 0xfc, 0x6f, 0x13, 0xea, 0x9a, 0xc3,
-  0xd6, 0x38, 0x4f, 0x8f, 0xcd, 0xa1, 0x93, 0xc4, 0x75, 0x0e, 0x76, 0xda,
-  0x82, 0x39, 0xac, 0x3b, 0x6d, 0xbf, 0xd5, 0x61, 0xe3, 0x68, 0xb5, 0x0f,
-  0x86, 0xec, 0x2a, 0x23, 0x11, 0xd0, 0x29, 0x8f, 0xd3, 0x24, 0x31, 0x66,
-  0xc2, 0xa7, 0x99, 0xda, 0xed, 0xe9, 0x8e, 0xd8, 0x30, 0xb4, 0xa6, 0xa6,
-  0x85, 0xe8, 0xa1, 0xd6, 0xcc, 0xb9, 0xea, 0x9a, 0x82, 0xf2, 0xfe, 0x08,
-  0xb9, 0x72, 0x8d, 0x8d, 0xce, 0x1e, 0xed, 0x20, 0x7c, 0xda, 0xf8, 0xa5,
-  0x88, 0xcf, 0x27, 0x1d, 0xd4, 0xf0, 0x98, 0x75, 0x77, 0xad, 0x31, 0xab,
-  0x9f, 0xd8, 0xf5, 0xda, 0x30, 0x5b, 0x92, 0xe4, 0x93, 0x99, 0xdf, 0x07,
-  0x6e, 0x2b, 0x66, 0x83, 0x61, 0x00, 0xbb, 0x2b, 0xcf, 0x04, 0x82, 0x26,
-  0xc9, 0x8a, 0xe5, 0xaa, 0x10, 0x48, 0xb0, 0xc7, 0xef, 0x68, 0xd3, 0xa5,
-  0x5d, 0x7b, 0x1c, 0x4b, 0xc8, 0xa3, 0x5b, 0x32, 0x3a, 0x22, 0xc0, 0x9a,
-  0xd6, 0x8c, 0xca, 0x4d, 0x31, 0x1c, 0x95, 0x7e, 0xd8, 0x1c, 0x93, 0x1f,
-  0xd4, 0x2f, 0x1c, 0x95, 0xb4, 0xf7, 0x29, 0x63, 0x2a, 0xe7, 0x1f, 0x68,
-  0x0c, 0xe9, 0xe5, 0x3d, 0x6d, 0x7b, 0x49, 0x82, 0xf8, 0xe3, 0xd2, 0x7a,
-  0x24, 0x0f, 0x1a, 0xd1, 0x31, 0x22, 0x02, 0x0d, 0xbb, 0x88, 0xa6, 0x49,
-  0x51, 0x49, 0x8d, 0x64, 0x80, 0x56, 0xe0, 0xd7, 0x47, 0x48, 0x50, 0x7d,
-  0x14, 0x2a, 0xb2, 0x38, 0x65, 0x64, 0xc4, 0xc0, 0x80, 0x30, 0x72, 0x41,
-  0xc1, 0xd5, 0xb6, 0x3a, 0xf2, 0x76, 0xa2, 0xa6, 0xe9, 0xb5, 0x0c, 0x6a,
-  0x55, 0x8d, 0x1e, 0x00, 0x13, 0x75, 0xfd, 0x93, 0xa2, 0x12, 0x2f, 0x97,
-  0x7a, 0xc4, 0x3f, 0x61, 0xee, 0x02, 0xe6, 0x04, 0x72, 0x57, 0x48, 0x2e,
-  0x05, 0x48, 0xac, 0xf2, 0xfc, 0xc6, 0x97, 0x96, 0x83, 0xd1, 0xee, 0xe1,
-  0xe6, 0x04, 0x8d, 0x4f, 0x57, 0x70, 0x7b, 0x3c, 0xfe, 0x86, 0x61, 0x3a,
-  0x1d, 0xb7, 0xd9, 0xf6, 0x9e, 0x3f, 0x88, 0x5e, 0x9f, 0x70, 0x09, 0xba,
-  0x8a, 0x94, 0x58, 0x07, 0x67, 0xec, 0xf9, 0xd4, 0x65, 0xa8, 0x8b, 0x95,
-  0xbf, 0xc9, 0x44, 0x2f, 0x0e, 0xcf, 0x22, 0xd7, 0x8d, 0xce, 0xaa, 0x5e,
-  0x64, 0x95, 0x51, 0xad, 0x1f, 0xa1, 0x73, 0x15, 0x48, 0xeb, 0x73, 0xec,
-  0x9c, 0x11, 0xab, 0x43, 0x6c, 0x72, 0x5c, 0x2d, 0xff, 0x1f, 0xda, 0x58,
-  0xe8, 0x63, 0x92, 0x48, 0x0c, 0x03, 0xee, 0xe3, 0x43, 0xe6, 0x92, 0x4d,
-  0xdd, 0x25, 0xcc, 0x3a, 0xc6, 0x2c, 0x43, 0x96, 0x1c, 0xba, 0xe6, 0x80,
-  0xb5, 0x32, 0x82, 0x24, 0xfd, 0x7c, 0xea, 0x98, 0x7d, 0x1e, 0x86, 0x03,
-  0x8a, 0xe3, 0x31, 0x4b, 0xe1, 0x39, 0x83, 0xb6, 0x9c, 0x24, 0xa4, 0xff,
-  0x7d, 0x8a, 0x16, 0xae, 0x06, 0x61, 0x41, 0x76, 0x66, 0x04, 0x04, 0xd7,
-  0xa8, 0x2f, 0x29, 0x46, 0xa2, 0x3c, 0x47, 0x1c, 0x3e, 0xca, 0x26, 0x62,
-  0x4d, 0xf3, 0x42, 0xed, 0x4d, 0x6f, 0x99, 0x9a, 0x9a, 0x9a, 0x89, 0x5a,
-  0x11, 0xd3, 0x15, 0x87, 0x2f, 0x75, 0xe4, 0xe3, 0xb5, 0x54, 0xd3, 0x69,
-  0x3e, 0x17, 0x9f, 0xcc, 0x2d, 0xd0, 0x75, 0xbb, 0xf7, 0xc2, 0xcb, 0x5d,
-  0xdd, 0x8b, 0x9d, 0x56, 0x4a, 0x1b, 0x0a, 0xd0, 0x69, 0xcf, 0x3f, 0xca,
-  0xa6, 0x88, 0xc5, 0x2d, 0xcb, 0x20, 0x32, 0x01, 0x64, 0x22, 0x84, 0x3a,
-  0xb0, 0xf3, 0x81, 0x4a, 0x65, 0x9f, 0x46, 0x0a, 0xb0, 0xc3, 0xd9, 0xd2,
-  0x1a, 0x00, 0xa4, 0x86, 0x7a, 0xb0, 0x77, 0x40, 0xbe, 0x54, 0xd0, 0x69,
-  0xde, 0xd0, 0xc7, 0x46, 0x17, 0x4b, 0xb9, 0xb8, 0xc6, 0x2a, 0x48, 0x58,
-  0x57, 0xed, 0x96, 0x49, 0x3e, 0x26, 0xed, 0xca, 0x1c, 0x9d, 0x2c, 0x3e,
-  0xd5, 0xd8, 0x63, 0x9f, 0x12, 0x12, 0xac, 0x56, 0x10, 0x9c, 0xf4, 0x29,
-  0x52, 0x6c, 0x97, 0x60, 0x8f, 0xa1, 0x62, 0xe4, 0x9f, 0x7e, 0x7c, 0x7e,
-  0x93, 0x23, 0x2f, 0xd1, 0x35, 0x28, 0x1e, 0xd1, 0x75, 0x74, 0xa2, 0x4f,
-  0x55, 0xaa, 0x80, 0x29, 0x66, 0xd6, 0x2c, 0x3b, 0x48, 0x4d, 0x16, 0x21,
-  0x16, 0xcf, 0x36, 0x10, 0x6a, 0x87, 0x64, 0xa0, 0x78, 0xa8, 0x60, 0x07,
-  0x1a, 0x33, 0xc3, 0x30, 0xca, 0x89, 0xd4, 0xa7, 0x22, 0xd1, 0x7c, 0xce,
-  0xa7, 0xa7, 0x4a, 0x3e, 0xe9, 0xa6, 0xe1, 0xeb, 0xbf, 0xfb, 0xcc, 0x88,
-  0xc4, 0xe6, 0x57, 0xd8, 0x01, 0xae, 0xd6, 0x8f, 0x8e, 0x65, 0xe3, 0x49,
-  0x58, 0x25, 0x1c, 0x80, 0x9f, 0x42, 0x46, 0x6c, 0xc2, 0x48, 0xb4, 0x18,
-  0x16, 0x26, 0xe4, 0x70, 0x2a, 0xc5, 0xff, 0x91, 0x68, 0xed, 0xbe, 0x45,
-  0xfa, 0xa8, 0xaa, 0x96, 0x2a, 0xd0, 0x2e, 0xb8, 0xf3, 0xaa, 0xd3, 0xe2,
-  0x8a, 0x8c, 0x1a, 0x33, 0x62, 0xca, 0x84, 0xe0, 0x20, 0x76, 0x26, 0x27,
-  0x76, 0x13, 0x27, 0x52, 0xee, 0xc4, 0xe7, 0xb1, 0x40, 0xbd, 0x60, 0xe1,
-  0xe5, 0x91, 0x11, 0x78, 0xb3, 0x24, 0x3b, 0xc7, 0x90, 0xa9, 0x38, 0x9f,
-  0xf9, 0x68, 0x0c, 0xd5, 0x81, 0x7d, 0xb9, 0xac, 0xfd, 0x87, 0x9b, 0x53,
-  0x67, 0xdd, 0x6f, 0x51, 0xac, 0x21, 0x40, 0x68, 0x78, 0xf9, 0xa3, 0xa5,
-  0xd6, 0xee, 0x6f, 0x6f, 0xff, 0xfc, 0x63, 0x2d, 0x92, 0xe2, 0xcb, 0x9f,
-  0x7f, 0x79, 0x69, 0x68, 0x41, 0x24, 0xea, 0xf4, 0x93, 0x68, 0x68, 0x85,
-  0x3a, 0x9f, 0x5a, 0x3e, 0x22, 0x0d, 0x07, 0x0b, 0x86, 0xe3, 0x4a, 0x3b,
-  0xe6, 0xeb, 0xca, 0x2d, 0xd7, 0xb1, 0xcf, 0x3f, 0xfa, 0x22, 0x8a, 0xa5,
-  0x54, 0xca, 0x76, 0x88, 0x4e, 0x83, 0x28, 0x80, 0xf1, 0x19, 0x74, 0x62,
-  0x58, 0x70, 0x87, 0x1c, 0x49, 0xe8, 0x91, 0x57, 0xe0, 0x2a, 0x12, 0xc5,
-  0x29, 0x98, 0xe4, 0x54, 0xe0, 0x45, 0x5c, 0xa0, 0x7d, 0x17, 0x7a, 0xbb,
-  0xc0, 0xd8, 0xbe, 0xcb, 0x3d, 0xdc, 0x45, 0x00, 0x18, 0xa2, 0x79, 0x6a,
-  0x7a, 0xd4, 0xe7, 0x02, 0x12, 0x5f, 0x7a, 0x5c, 0xbf, 0x16, 0xaa, 0x2f,
-  0x97, 0x32, 0x83, 0xc3, 0xc6, 0x95, 0xb6, 0x16, 0xa0, 0xd0, 0x0b, 0xc9,
-  0x55, 0xd7, 0x0e, 0x14, 0x3e, 0xcf, 0x5b, 0x27, 0xd3, 0xac, 0x2b, 0x7c,
-  0x54, 0x90, 0x3f, 0xba, 0x41, 0x45, 0x1f, 0x86, 0x3a, 0x31, 0x5b, 0x92,
-  0xac, 0xb4, 0x6c, 0xa3, 0xb2, 0xd7, 0x96, 0xcb, 0xc3, 0xe0, 0x50, 0x84,
-  0x45, 0xae, 0x87, 0x3f, 0xe9, 0x80, 0xf5, 0xa1, 0x3b, 0x28, 0x15, 0x7c,
-  0xe0, 0xae, 0xac, 0x69, 0x95, 0x18, 0xca, 0xa4, 0x23, 0xee, 0x4e, 0x47,
-  0x66, 0x79, 0xb9, 0xc7, 0x1a, 0xd8, 0xd6, 0x5f, 0x9b, 0x82, 0x8d, 0x64,
-  0x15, 0x09, 0x1a, 0x68, 0xc5, 0x67, 0x0a, 0xd8, 0x8a, 0x83, 0x3f, 0x91,
-  0x1c, 0x74, 0x69, 0xbd, 0x87, 0x64, 0x54, 0x1b, 0x71, 0x57, 0x36, 0xc1,
-  0x81, 0xf1, 0xc0, 0x86, 0x90, 0xa3, 0xa1, 0x60, 0x9c, 0xdc, 0x8b, 0x70,
-  0xd5, 0x2c, 0xac, 0x56, 0xae, 0x89, 0x70, 0x1d, 0x97, 0x09, 0xc9, 0x42,
-  0x62, 0xdb, 0x90, 0x02, 0x21, 0x8c, 0xab, 0x29, 0x6b, 0xcb, 0x6f, 0x7b,
-  0x60, 0x7d, 0x17, 0x34, 0x4c, 0xdf, 0x23, 0x78, 0xcf, 0x88, 0xa3, 0xbb,
-  0x02, 0xfb, 0x34, 0x1c, 0xa2, 0xf8, 0xf8, 0xb5, 0x90, 0xb3, 0xf3, 0x45,
-  0x79, 0x26, 0x08, 0xa8, 0x5a, 0x96, 0x14, 0xe2, 0x36, 0x60, 0xdf, 0xa5,
-  0x5b, 0xa6, 0x6a, 0x45, 0xa2, 0xce, 0xbc, 0x5d, 0x33, 0x1d, 0xfe, 0x4a,
-  0x61, 0x48, 0x9a, 0xa5, 0x34, 0x5c, 0x1a, 0x0f, 0x6a, 0x4e, 0xf6, 0x5e,
-  0x1b, 0x59, 0xe3, 0x35, 0x7b, 0xaf, 0x61, 0x7c, 0x41, 0xf4, 0x56, 0x2d,
-  0xa8, 0xdc, 0x57, 0x48, 0x6b, 0x53, 0x2b, 0xef, 0xc1, 0x46, 0xdb, 0x24,
-  0x87, 0xaa, 0x24, 0x3e, 0xb8, 0x43, 0x27, 0x5d, 0x07, 0x32, 0xe1, 0xde,
-  0x70, 0xe1, 0xa9, 0x47, 0x51, 0x4b, 0x2a, 0xb5, 0x71, 0x22, 0x0a, 0x28,
-  0xac, 0x28, 0xec, 0xf1, 0xa5, 0xcf, 0x86, 0xfd, 0xfd, 0xd3, 0x1d, 0x66,
-  0x2e, 0xd6, 0x4a, 0x1c, 0x06, 0x4d, 0xfd, 0xfe, 0x49, 0xfc, 0x10, 0xc3,
-  0x84, 0x12, 0xd5, 0xe2, 0x96, 0x52, 0xe0, 0x87, 0x4b, 0xa3, 0xc3, 0xb7,
-  0x70, 0x17, 0x5b, 0xf0, 0xa7, 0xbc, 0xd5, 0x42, 0x3b, 0xed, 0x38, 0x49,
-  0x83, 0x20, 0x7b, 0xa1, 0x0a, 0x59, 0x89, 0xf1, 0xdd, 0x68, 0x53, 0x59,
-  0xd5, 0x56, 0x47, 0x34, 0x0b, 0x06, 0xc0, 0x25, 0x60, 0xe1, 0x4d, 0xe2,
-  0x4d, 0xf9, 0xe3, 0xfa, 0xa0, 0xe6, 0x7f, 0xdc, 0xd5, 0xf5, 0x83, 0x14,
-  0x4a, 0x11, 0xae, 0xbc, 0xb6, 0xec, 0xb7, 0x84, 0xb6, 0x8f, 0x5d, 0x02,
-  0xb5, 0xab, 0x1a, 0x62, 0x6f, 0x6a, 0x42, 0x5c, 0x98, 0x72, 0xca, 0x6d,
-  0xad, 0x32, 0xb6, 0x4a, 0x74, 0xc0, 0x4a, 0x7b, 0xc2, 0xc5, 0x81, 0x75,
-  0x79, 0x52, 0x17, 0xb5, 0xcb, 0xcf, 0x99, 0xd9, 0x3c, 0x44, 0x6b, 0x47,
-  0xfd, 0x0c, 0x0b, 0xa4, 0x0f, 0x3c, 0x1e, 0x32, 0x1a, 0x5f, 0x2d, 0x04,
-  0xab, 0xa3, 0xf5, 0x12, 0xc2, 0xcc, 0xc8, 0xaf, 0x8f, 0x2e, 0xb6, 0xda,
-  0x38, 0xbb, 0x1a, 0xcd, 0x80, 0x91, 0xa1, 0x68, 0x96, 0x9e, 0xef, 0xd8,
-  0x15, 0xa5, 0x71, 0xc9, 0xc1, 0x12, 0x88, 0x94, 0x7c, 0x24, 0xd9, 0x2a,
-  0xeb, 0xc6, 0xcb, 0x3c, 0xa4, 0x65, 0x60, 0x86, 0x1c, 0x04, 0x23, 0x69,
-  0xf4, 0x90, 0x95, 0x43, 0x09, 0xf4, 0x1c, 0x06, 0x22, 0xe0, 0x16, 0x5f,
-  0x1f, 0x9d, 0x1c, 0x5d, 0x1c, 0x21, 0xb9, 0xa4, 0x65, 0xc8, 0x9d, 0xe3,
-  0xf6, 0xaa, 0x92, 0xe9, 0x75, 0x46, 0x34, 0x7f, 0xc5, 0xdb, 0x81, 0xdc,
-  0xee, 0xef, 0x93, 0xc9, 0xeb, 0x83, 0xef, 0xb8, 0xea, 0x1b, 0x9f, 0x99,
-  0xb3, 0xf3, 0xd3, 0xb3, 0x37, 0xc7, 0xef, 0x5e, 0x0f, 0xa2, 0xc3, 0xd3,
-  0xb3, 0x3f, 0x0f, 0xa2, 0xb7, 0xa7, 0xdf, 0x1d, 0x75, 0x44, 0xeb, 0x72,
-  0xfc, 0x59, 0x47, 0xe0, 0x93, 0xd6, 0x56, 0xd1, 0xf2, 0x03, 0x80, 0xa8,
-  0x96, 0x9a, 0x22, 0xf5, 0x80, 0x75, 0x66, 0xcb, 0x25, 0x32, 0xe2, 0x69,
-  0xe9, 0x69, 0x2d, 0x07, 0xd1, 0x37, 0x47, 0x07, 0xaf, 0x9b, 0xe2, 0xc0,
-  0xd9, 0xe9, 0x58, 0x66, 0xc5, 0xb3, 0x73, 0x93, 0x66, 0xf6, 0x4d, 0xcc,
-  0x92, 0xed, 0xdc, 0xac, 0x64, 0xde, 0x24, 0x01, 0x4e, 0x28, 0x1d, 0x01,
-  0x18, 0xc9, 0x66, 0x6b, 0x2b, 0x46, 0x23, 0x06, 0xc2, 0x05, 0xdb, 0x3d,
-  0x7c, 0x13, 0x22, 0xe5, 0xc6, 0x60, 0xf9, 0x85, 0x40, 0xc4, 0xb9, 0xc0,
-  0xee, 0x82, 0x62, 0xa6, 0x38, 0xd0, 0xca, 0xde, 0x78, 0x6b, 0x36, 0x3a,
-  0x9d, 0x27, 0x52, 0x8b, 0xc9, 0x20, 0x86, 0x20, 0x2a, 0x49, 0xf4, 0x43,
-  0xac, 0x31, 0x6c, 0x93, 0x84, 0x23, 0x6c, 0x4a, 0xd4, 0x14, 0x02, 0x91,
-  0x68, 0x14, 0x74, 0x9b, 0xbd, 0xcb, 0xba, 0x4a, 0x24, 0x99, 0x45, 0x39,
-  0x41, 0x52, 0x63, 0x33, 0x24, 0x2f, 0xa1, 0xef, 0x53, 0x83, 0xb3, 0x7e,
-  0x90, 0x8f, 0x3b, 0xc0, 0x29, 0x20, 0x52, 0xac, 0x2e, 0x89, 0x3c, 0x13,
-  0x09, 0x17, 0xc1, 0x3e, 0xe9, 0x41, 0xc4, 0xcd, 0x70, 0xcc, 0x47, 0xfc,
-  0x1a, 0xa9, 0x26, 0xdd, 0x57, 0xc0, 0xe6, 0x9b, 0x35, 0xa7, 0x3b, 0x2c,
-  0x74, 0xa6, 0x2d, 0x06, 0x59, 0x2b, 0x27, 0xc7, 0xb4, 0xaf, 0x7c, 0xd4,
-  0x9b, 0x81, 0x88, 0x08, 0x36, 0x94, 0x12, 0xb5, 0x29, 0x6f, 0x35, 0xce,
-  0x3a, 0xb5, 0xd5, 0xee, 0x98, 0xb1, 0x91, 0x3b, 0x7b, 0xe6, 0x2f, 0x1e,
-  0xeb, 0xba, 0x65, 0x06, 0x3b, 0x3f, 0xba, 0x38, 0x6f, 0x78, 0xf5, 0x9f,
-  0x77, 0xd8, 0xf2, 0x36, 0x19, 0x8a, 0xb9, 0xb3, 0x57, 0xfe, 0x62, 0x5d,
-  0xaf, 0xe0, 0x2e, 0xdc, 0xef, 0x43, 0x69, 0xc7, 0x4f, 0xba, 0x80, 0x94,
-  0x37, 0x05, 0xf3, 0xb9, 0xa3, 0x3f, 0xfe, 0xe2, 0x81, 0x59, 0x7e, 0x73,
-  0x74, 0x72, 0xd6, 0x9e, 0xe5, 0x77, 0xe7, 0x6f, 0xfe, 0x3c, 0x7a, 0x20,
-  0xa1, 0xf4, 0x1f, 0x1f, 0x16, 0xfc, 0x31, 0xae, 0xaa, 0x4e, 0x04, 0xf5,
-  0x32, 0x86, 0xd5, 0xce, 0x60, 0xe6, 0x2d, 0x12, 0xa4, 0x0e, 0x83, 0x27,
-  0xc8, 0xca, 0x81, 0xde, 0x46, 0x53, 0x6f, 0x89, 0x0d, 0x4e, 0xc4, 0xd2,
-  0x12, 0xd9, 0xc4, 0x5e, 0x25, 0xf1, 0x94, 0x3e, 0x73, 0x75, 0xf7, 0xf0,
-  0x1d, 0x8f, 0x25, 0x9d, 0x70, 0x45, 0x96, 0x51, 0x90, 0xb7, 0xdf, 0x21,
-  0xbc, 0x6a, 0x64, 0x2f, 0x7a, 0x73, 0xc7, 0xfb, 0xe3, 0xec, 0x6a, 0x94,
-  0x17, 0x29, 0xdb, 0xe7, 0xb4, 0x4e, 0x9e, 0x34, 0x16, 0xa1, 0x1a, 0x2c,
-  0x9f, 0x5a, 0x66, 0x00, 0x5d, 0xcd, 0x59, 0xc8, 0x90, 0x80, 0x06, 0x44,
-  0xed, 0xa6, 0x17, 0xd0, 0xee, 0xf9, 0x3b, 0xd7, 0xaa, 0xc9, 0xcc, 0x5d,
-  0x91, 0x75, 0xe5, 0x3d, 0xed, 0xf3, 0xc2, 0x33, 0x14, 0xd3, 0x37, 0xdc,
-  0x6c, 0xfd, 0x44, 0x39, 0xa2, 0x8b, 0xb8, 0x45, 0x01, 0x50, 0x91, 0xb6,
-  0x6e, 0x90, 0x92, 0x6e, 0x50, 0xdb, 0xb0, 0x7b, 0x04, 0x51, 0xb2, 0xa3,
-  0x44, 0x4b, 0x63, 0xf0, 0xbf, 0x9d, 0xc5, 0x90, 0x9c, 0xab, 0x87, 0x67,
-  0xc3, 0x0e, 0x65, 0x2d, 0xed, 0x20, 0x2f, 0x4b, 0x15, 0x87, 0x49, 0xc3,
-  0x41, 0xa2, 0xa1, 0xc9, 0x2d, 0xd4, 0x88, 0xa0, 0x43, 0x01, 0xa4, 0x19,
-  0xd4, 0x3c, 0x6e, 0x5c, 0x09, 0x10, 0x60, 0x1a, 0x62, 0x3a, 0xa3, 0xee,
-  0x83, 0x17, 0x5a, 0x73, 0xb2, 0xd2, 0x86, 0x01, 0xac, 0x5e, 0x30, 0x24,
-  0x23, 0xd4, 0x5d, 0x2b, 0x46, 0xc0, 0xea, 0x84, 0x80, 0x25, 0xfe, 0xf9,
-  0xb1, 0x92, 0x54, 0x12, 0x10, 0x5e, 0x07, 0x7e, 0x12, 0xf9, 0x6b, 0xa5,
-  0xb8, 0x16, 0x60, 0xef, 0xb0, 0x6a, 0x60, 0x4d, 0x36, 0x3a, 0x7d, 0x9d,
-  0x65, 0x94, 0x54, 0xd3, 0x1a, 0xc6, 0x10, 0x62, 0xd7, 0x89, 0x8e, 0x45,
-  0x42, 0x20, 0x0e, 0x3f, 0x88, 0xa4, 0xe8, 0x88, 0xc4, 0x43, 0xe9, 0x7b,
-  0xc3, 0x0e, 0x9b, 0x10, 0xdb, 0xbe, 0xd6, 0xb0, 0xe6, 0x7f, 0xdc, 0x29,
-  0xfe, 0xb3, 0x27, 0x0a, 0x59, 0xc4, 0x97, 0xf8, 0xe3, 0x17, 0x91, 0x45,
-  0x50, 0xf1, 0x43, 0xfc, 0x70, 0x9b, 0x44, 0xfb, 0x35, 0xfa, 0x18, 0xb6,
-  0xf2, 0x5d, 0x67, 0x5b, 0x92, 0x50, 0xe8, 0x37, 0x5b, 0x6d, 0x5c, 0x7c,
-  0x9d, 0xd6, 0x69, 0x22, 0x78, 0x06, 0xe9, 0x04, 0x6d, 0xa5, 0x54, 0xf6,
-  0x58, 0x92, 0x3d, 0x52, 0x2e, 0x78, 0xcb, 0xb7, 0x29, 0x4e, 0x4f, 0xf2,
-  0x5b, 0x62, 0xae, 0xfd, 0x0d, 0x98, 0x6b, 0x5c, 0x37, 0x13, 0x07, 0xe0,
-  0xe5, 0x2c, 0x86, 0x69, 0x17, 0x59, 0xf2, 0xd4, 0xf4, 0x17, 0xff, 0xd9,
-  0x5d, 0xb6, 0xd2, 0xea, 0x39, 0x2b, 0xde, 0xbf, 0xa4, 0xf0, 0x8b, 0xf3,
-  0x80, 0x55, 0x2c, 0x2e, 0x2a, 0x84, 0x8a, 0x80, 0x8b, 0x7c, 0xa6, 0x88,
-  0x63, 0x71, 0xe5, 0x97, 0x3a, 0xe9, 0x84, 0x87, 0x92, 0xa2, 0x41, 0x7c,
-  0x0a, 0x91, 0xdb, 0x44, 0x2b, 0xcb, 0xe3, 0x5e, 0xd3, 0x5e, 0x60, 0xeb,
-  0x6e, 0xe1, 0xa8, 0x6a, 0x75, 0x15, 0x16, 0xb8, 0x5b, 0xf3, 0x31, 0xf5,
-  0x28, 0x0e, 0xe5, 0x3b, 0x3c, 0x24, 0x7a, 0x5f, 0xd9, 0xbe, 0x95, 0x50,
-  0x16, 0xc3, 0x85, 0xa0, 0x0b, 0x00, 0x23, 0x87, 0x36, 0xbb, 0x7a, 0x95,
-  0x34, 0xcc, 0xd2, 0x70, 0xf3, 0x38, 0x3c, 0x03, 0x78, 0xf8, 0xb1, 0x8b,
-  0x67, 0xec, 0x8a, 0xef, 0x0f, 0x8a, 0xb0, 0x5d, 0x25, 0x95, 0x8b, 0x66,
-  0x9a, 0x79, 0x59, 0x5c, 0x06, 0xb5, 0xb9, 0xe0, 0xc9, 0x6c, 0x89, 0x3d,
-  0xba, 0x73, 0x2b, 0x1c, 0xce, 0x5f, 0x0d, 0x0c, 0x88, 0x1a, 0xe5, 0xf7,
-  0x19, 0x08, 0x88, 0x6e, 0x60, 0x20, 0xff, 0x68, 0x19, 0x3c, 0x34, 0x1b,
-  0xac, 0x48, 0x2b, 0xd5, 0xa2, 0xaa, 0x57, 0xfc, 0xb0, 0x3c, 0x19, 0xb6,
-  0x83, 0x5b, 0xb9, 0x95, 0x70, 0x45, 0xcd, 0x18, 0xc7, 0x88, 0x60, 0xd1,
-  0xe6, 0x70, 0xcb, 0x49, 0x7d, 0x28, 0x35, 0x26, 0xa4, 0xd1, 0x76, 0x5f,
-  0xc7, 0x2e, 0xe4, 0xd4, 0xe5, 0x47, 0x08, 0x50, 0xbf, 0x51, 0x88, 0xd2,
-  0x04, 0x77, 0xb6, 0x2d, 0x26, 0x64, 0xe3, 0x96, 0x69, 0x47, 0x7c, 0x78,
-  0xab, 0xb1, 0x2c, 0xb9, 0x0b, 0x1b, 0xf3, 0x7a, 0x97, 0x6b, 0xf0, 0x37,
-  0x3c, 0x53, 0xd7, 0x22, 0x95, 0xce, 0x97, 0x2d, 0x7b, 0x04, 0x7b, 0xfb,
-  0x23, 0xfe, 0xc6, 0xcc, 0xfb, 0x22, 0x45, 0xc6, 0x12, 0x71, 0x8e, 0xe2,
-  0x83, 0x21, 0xf2, 0x97, 0xc3, 0x2d, 0xec, 0x04, 0xe3, 0x28, 0xaf, 0xf9,
-  0x52, 0x75, 0x60, 0x02, 0xb5, 0x2a, 0x11, 0x6f, 0x07, 0xa8, 0x34, 0x94,
-  0xb5, 0xe3, 0x8c, 0xde, 0xe2, 0xc3, 0x51, 0xf4, 0x5a, 0xb3, 0x06, 0x90,
-  0xd5, 0xbf, 0xba, 0x4a, 0x30, 0x2c, 0x84, 0x91, 0x07, 0xcd, 0x7c, 0xa7,
-  0x29, 0x3e, 0x1d, 0x84, 0xa2, 0xef, 0x97, 0xb5, 0xb4, 0x03, 0x71, 0x76,
-  0x08, 0xcc, 0x58, 0x66, 0xb5, 0x9a, 0x26, 0xf8, 0xdb, 0x6c, 0xa0, 0x29,
-  0xa2, 0x5e, 0xcb, 0x51, 0x87, 0x15, 0x43, 0xdc, 0x27, 0x98, 0xb8, 0xf7,
-  0x7a, 0x98, 0x9f, 0xc0, 0xde, 0x67, 0x59, 0x55, 0xf2, 0x71, 0x5c, 0xd3,
-  0x5d, 0x60, 0x04, 0xd0, 0xbe, 0x9e, 0x14, 0x33, 0x38, 0x07, 0xef, 0xf9,
-  0xd1, 0x22, 0x2e, 0x44, 0xa1, 0xcc, 0x6e, 0xcc, 0x84, 0x2c, 0x96, 0x91,
-  0x64, 0xba, 0xaa, 0xea, 0x28, 0x8b, 0xa1, 0x65, 0xc5, 0x6a, 0xf2, 0x61,
-  0x58, 0x9b, 0x70, 0x07, 0xe9, 0x7e, 0xf4, 0xce, 0xcc, 0x82, 0xbc, 0xdf,
-  0xdb, 0x52, 0x0f, 0x99, 0x78, 0x3b, 0xf5, 0xe3, 0x2e, 0x44, 0x03, 0x1b,
-  0x73, 0x91, 0x08, 0xde, 0x1a, 0xf2, 0x88, 0x21, 0x1e, 0x75, 0x76, 0x4f,
-  0x14, 0x59, 0xcc, 0xba, 0xfa, 0x7e, 0x23, 0xa5, 0xac, 0x83, 0xae, 0x9d,
-  0xa9, 0x4e, 0xab, 0x5c, 0x97, 0xad, 0x1c, 0x8a, 0x56, 0xcf, 0x50, 0xa8,
-  0x49, 0xd7, 0x75, 0xf1, 0xe4, 0xf6, 0xaa, 0xad, 0x7f, 0x2b, 0xb8, 0x1c,
-  0xf1, 0x5a, 0x1e, 0xc9, 0x8e, 0xa5, 0x7a, 0x7c, 0xe4, 0x52, 0xfa, 0x5a,
-  0xb3, 0xb8, 0x29, 0x26, 0x4f, 0xe9, 0xc7, 0xb7, 0xfc, 0x83, 0x19, 0x10,
-  0x2b, 0x5e, 0x02, 0x1f, 0x2d, 0x08, 0x54, 0x6d, 0x4e, 0xc3, 0x95, 0x3a,
-  0xf4, 0x87, 0x6e, 0x7a, 0x69, 0xf9, 0x23, 0x9c, 0x7d, 0xe3, 0x6b, 0x8f,
-  0xc0, 0x17, 0x6c, 0xed, 0x0c, 0xcc, 0x96, 0xb6, 0xb1, 0x36, 0xfa, 0x68,
-  0x3c, 0x00, 0x4a, 0xb2, 0x14, 0x2e, 0x1a, 0x4b, 0x2e, 0x19, 0x2d, 0x42,
-  0x5b, 0x34, 0xa1, 0xa5, 0xfa, 0x1b, 0x9b, 0x66, 0x57, 0xa4, 0xc9, 0x10,
-  0x61, 0x4f, 0x61, 0xf6, 0x5b, 0x38, 0x8e, 0x87, 0x8a, 0xc4, 0x0e, 0xad,
-  0x46, 0xe0, 0xed, 0x60, 0xa4, 0x15, 0xe3, 0x47, 0xba, 0x66, 0x08, 0xeb,
-  0xa7, 0x8c, 0xbc, 0xcd, 0xa8, 0x33, 0x7d, 0xf3, 0xc1, 0xa5, 0x7a, 0xcd,
-  0x79, 0x71, 0x26, 0x06, 0xca, 0x51, 0x40, 0x6e, 0x52, 0xec, 0x36, 0x7b,
-  0xb2, 0x4a, 0xad, 0x7c, 0x30, 0x1e, 0x56, 0x83, 0xa5, 0x64, 0x99, 0xae,
-  0x19, 0x27, 0x12, 0xf7, 0x50, 0x19, 0x0a, 0xe9, 0x4c, 0x37, 0x96, 0x77,
-  0xb7, 0x48, 0x16, 0x0c, 0x7b, 0xe9, 0x93, 0xf1, 0x20, 0x26, 0x22, 0x83,
-  0x1a, 0x9d, 0xaf, 0xf1, 0x79, 0xcd, 0x38, 0x4d, 0x9b, 0xd5, 0x7f, 0x09,
-  0xcb, 0xff, 0x97, 0x96, 0x01, 0xbc, 0xbc, 0xcf, 0xa6, 0xd7, 0xaf, 0xdf,
-  0x8d, 0x37, 0x1e, 0x88, 0xe9, 0x0f, 0x27, 0x87, 0xe7, 0x8b, 0x3c, 0x63,
-  0x62, 0x08, 0x82, 0x2c, 0x58, 0x6b, 0x3a, 0x08, 0xbe, 0xeb, 0x6e, 0xae,
-  0xf6, 0x82, 0x09, 0x03, 0x08, 0x0d, 0x16, 0x73, 0x84, 0xc6, 0x27, 0xe2,
-  0x22, 0x1d, 0xc6, 0x7c, 0x14, 0xba, 0x6b, 0xc7, 0xba, 0x33, 0xcd, 0x19,
-  0x42, 0xc9, 0xcc, 0x9a, 0x2c, 0x50, 0x47, 0x90, 0x21, 0x3c, 0xda, 0x74,
-  0x7d, 0xf6, 0xee, 0xe8, 0xeb, 0x53, 0xfb, 0xf1, 0x4b, 0xb6, 0xf9, 0x24,
-  0x2e, 0xae, 0x92, 0x0e, 0x68, 0xd1, 0x70, 0x85, 0x6a, 0x70, 0x47, 0x81,
-  0x02, 0x40, 0xb4, 0x3a, 0xe7, 0xd7, 0x85, 0x4c, 0x07, 0x4a, 0xad, 0xf8,
-  0xa8, 0x58, 0x37, 0x25, 0x5a, 0x94, 0xbd, 0xaf, 0xbf, 0x6a, 0x5f, 0x90,
-  0xaf, 0xdf, 0xad, 0xe9, 0x8e, 0xbf, 0x19, 0x9a, 0x3c, 0xa4, 0x96, 0xc0,
-  0x20, 0x73, 0xbf, 0xbd, 0x16, 0x0a, 0x28, 0xdd, 0x3d, 0x00, 0x43, 0x9b,
-  0x7e, 0x84, 0x4b, 0xd0, 0x13, 0xfa, 0xe3, 0xc1, 0x07, 0x15, 0xbb, 0xae,
-  0xbb, 0x2b, 0x06, 0xb5, 0xdb, 0x1c, 0x4b, 0xb1, 0xb1, 0x73, 0x89, 0x44,
-  0x3a, 0x53, 0xc3, 0xf4, 0x56, 0xc7, 0x16, 0xad, 0xc5, 0xcd, 0xf3, 0x78,
-  0x07, 0x11, 0xea, 0x51, 0x6d, 0xb4, 0x99, 0xcf, 0x9e, 0xfc, 0xd8, 0xde,
-  0x73, 0xea, 0xb0, 0x13, 0x6a, 0x71, 0x48, 0x87, 0x69, 0x9b, 0x0f, 0xbd,
-  0x25, 0x61, 0x8c, 0xef, 0xab, 0xc7, 0x4f, 0x86, 0xdb, 0x0a, 0xf7, 0x4e,
-  0xb4, 0x39, 0xa1, 0x4b, 0xd0, 0x5d, 0x9b, 0x52, 0xbe, 0xe9, 0x29, 0x10,
-  0xfc, 0xba, 0x9b, 0x7b, 0xf6, 0xf9, 0xb3, 0xa7, 0x5b, 0x5b, 0x83, 0xc8,
-  0x4c, 0xc9, 0x92, 0x30, 0xc6, 0xee, 0x1e, 0x66, 0x05, 0x12, 0xae, 0xc3,
-  0x63, 0xbe, 0x46, 0x79, 0x3e, 0xcb, 0xcf, 0x69, 0x5b, 0xed, 0xbc, 0x9a,
-  0xeb, 0x5e, 0xe5, 0x75, 0x61, 0xf8, 0x0a, 0x30, 0x49, 0x07, 0x22, 0x11,
-  0x1b, 0x9b, 0x29, 0xe9, 0x6e, 0x53, 0x3f, 0xc8, 0xda, 0x83, 0x26, 0xa5,
-  0xe5, 0x1d, 0x7a, 0x8b, 0x78, 0x9f, 0xc0, 0x99, 0xec, 0xf2, 0x62, 0x34,
-  0xed, 0x37, 0xc7, 0x27, 0x47, 0x8e, 0x8f, 0xfc, 0xd7, 0xf6, 0x88, 0x07,
-  0x59, 0x4c, 0x5b, 0x5c, 0x53, 0x04, 0xc9, 0x20, 0x1f, 0x7b, 0x10, 0xa1,
-  0xba, 0xe5, 0xb7, 0x03, 0xd1, 0x66, 0xf1, 0xb1, 0xc7, 0xc9, 0xa4, 0x86,
-  0x8f, 0xde, 0x7d, 0x77, 0x7c, 0x7e, 0xfa, 0xee, 0xed, 0xd1, 0x3b, 0x97,
-  0xf7, 0xc0, 0xd7, 0x73, 0xb7, 0xdb, 0xb1, 0xe5, 0x81, 0x49, 0x39, 0x73,
-  0x86, 0x05, 0x52, 0x76, 0x89, 0xf1, 0x2c, 0x68, 0xb7, 0xf4, 0xaf, 0x51,
-  0xd8, 0x5c, 0xf0, 0x90, 0xed, 0x1b, 0x13, 0xc9, 0x92, 0x03, 0x96, 0x67,
-  0x9c, 0x59, 0x36, 0x92, 0x24, 0x10, 0xf1, 0xf6, 0xa4, 0xe2, 0xac, 0xfc,
-  0x38, 0x4d, 0x14, 0x4e, 0xbf, 0x0c, 0xca, 0xf7, 0x59, 0x12, 0x94, 0xcf,
-  0x15, 0xab, 0x0d, 0xc2, 0x93, 0x9a, 0x94, 0x37, 0x5f, 0xe7, 0xf5, 0x04,
-  0x34, 0x44, 0x58, 0xf9, 0xe5, 0x5a, 0x5d, 0x47, 0x70, 0x25, 0x45, 0x12,
-  0x21, 0x11, 0x05, 0xb7, 0xae, 0x47, 0x74, 0xb5, 0xb0, 0x81, 0xa6, 0xfa,
-  0x1f, 0xcc, 0xa0, 0x16, 0x50, 0x80, 0xba, 0x1d, 0x5f, 0x68, 0xf4, 0x40,
-  0x1b, 0xc6, 0xb0, 0x0c, 0x5d, 0x74, 0x0e, 0x83, 0xc5, 0xb0, 0x18, 0xe0,
-  0xdd, 0xdc, 0x08, 0xef, 0xfa, 0x0f, 0x67, 0xe7, 0xa7, 0x3f, 0xfc, 0xf9,
-  0x1f, 0xdc, 0x45, 0x70, 0xb4, 0x7f, 0xe4, 0x1b, 0xcf, 0x1a, 0xff, 0xf9,
-  0x57, 0xf5, 0xf6, 0x60, 0x77, 0xf5, 0xf6, 0x07, 0x9a, 0x68, 0xb8, 0x0e,
-  0x73, 0x1e, 0xce, 0x38, 0x41, 0x72, 0xf7, 0xe5, 0xd5, 0x2d, 0x90, 0xd8,
-  0x31, 0x07, 0x49, 0x2d, 0x2f, 0x6b, 0xa5, 0x7e, 0xba, 0xea, 0x01, 0x02,
-  0x05, 0x1c, 0x25, 0xfe, 0xbc, 0xbc, 0x14, 0x16, 0x7a, 0x1c, 0xa0, 0xae,
-  0x04, 0xee, 0x7f, 0xb7, 0x1e, 0x07, 0x27, 0x27, 0xbf, 0x7e, 0x11, 0x5c,
-  0xc0, 0x47, 0x6d, 0x19, 0x60, 0x00, 0x71, 0x13, 0x1a, 0x3a, 0x01, 0xd7,
-  0xc8, 0xbf, 0x03, 0x4d, 0xd2, 0x0d, 0xe7, 0xdd, 0xa9, 0x8e, 0x46, 0x1c,
-  0x7f, 0xc3, 0x32, 0x21, 0x45, 0x00, 0x7e, 0x17, 0x56, 0xb9, 0xf8, 0x5a,
-  0xe4, 0x81, 0xb5, 0x4a, 0xea, 0x86, 0x5f, 0x5a, 0xe5, 0x76, 0x04, 0x11,
-  0x00, 0x5d, 0x08, 0x29, 0xe8, 0xb9, 0xf3, 0x59, 0x4b, 0xfd, 0x15, 0x94,
-  0xd5, 0x42, 0x06, 0x7b, 0x47, 0xa4, 0x01, 0xdb, 0x8d, 0x39, 0x6e, 0xa9,
-  0x48, 0xcb, 0x1b, 0xa4, 0xef, 0xf3, 0xa1, 0x1c, 0x48, 0xdd, 0xd9, 0x0a,
-  0x65, 0xb8, 0x59, 0x63, 0xc0, 0x50, 0x68, 0xec, 0x32, 0x62, 0xfa, 0xf7,
-  0xe2, 0xf4, 0xf0, 0xf4, 0x84, 0x7e, 0x39, 0x7a, 0x73, 0xfc, 0x83, 0x67,
-  0x68, 0x52, 0x8f, 0x45, 0x39, 0xaf, 0x31, 0x08, 0x57, 0x9f, 0xa5, 0xed,
-  0xc2, 0x6e, 0xc1, 0x64, 0xd7, 0xd5, 0xc8, 0xce, 0xf0, 0x99, 0x4f, 0x0a,
-  0x98, 0x09, 0xe3, 0x8c, 0x82, 0x1d, 0xc2, 0x45, 0x1c, 0x32, 0xbd, 0xfa,
-  0xde, 0xca, 0xa0, 0x20, 0x4f, 0xa5, 0x97, 0x2e, 0x3a, 0x35, 0x34, 0xb8,
-  0x9a, 0x8d, 0x45, 0x8d, 0x2c, 0x6c, 0x1b, 0xf6, 0x88, 0xcf, 0xac, 0x71,
-  0x0f, 0x82, 0x49, 0x9a, 0xf2, 0x1d, 0x04, 0xbd, 0x68, 0x90, 0xc4, 0x46,
-  0x18, 0x98, 0xe1, 0x07, 0x0b, 0x07, 0xac, 0x6b, 0xae, 0x3e, 0x27, 0x5d,
-  0x00, 0x4d, 0x7d, 0x46, 0x4a, 0x21, 0x7c, 0xfa, 0x5e, 0x01, 0x72, 0xf1,
-  0x41, 0x1d, 0x79, 0xf8, 0x30, 0xf8, 0x41, 0x99, 0xfc, 0xeb, 0x2a, 0xbd,
-  0x8d, 0x91, 0xe2, 0x0f, 0x7c, 0x00, 0x79, 0xa9, 0xd1, 0x46, 0xfc, 0xab,
-  0x1a, 0x89, 0xeb, 0xad, 0x3c, 0xfb, 0x35, 0x8d, 0x3c, 0x6b, 0xb4, 0x71,
-  0xfd, 0xab, 0x1a, 0x71, 0x75, 0xc5, 0xe8, 0x5a, 0xfc, 0xe1, 0xf8, 0x22,
-  0x3a, 0x3c, 0x7d, 0xed, 0x69, 0xf4, 0xc2, 0x5d, 0xed, 0x31, 0xc9, 0x35,
-  0x24, 0x8c, 0xc3, 0xbe, 0x86, 0xba, 0xaa, 0x41, 0x35, 0x71, 0xa4, 0x2b,
-  0x96, 0xbe, 0xd0, 0x7d, 0x8a, 0x8f, 0x0a, 0xc9, 0x41, 0x0c, 0xd1, 0x42,
-  0xf5, 0x71, 0xad, 0x50, 0xeb, 0xc2, 0x56, 0x98, 0xb2, 0xb9, 0xbc, 0x40,
-  0x5c, 0x18, 0x9a, 0xc8, 0x24, 0x66, 0x8f, 0x6a, 0x26, 0x8e, 0x68, 0xd6,
-  0x04, 0x2a, 0x1f, 0xf9, 0x98, 0xbb, 0x9c, 0x66, 0x18, 0x78, 0x38, 0xf3,
-  0x17, 0xf1, 0x48, 0xa2, 0xfe, 0x73, 0x61, 0x73, 0x8c, 0xa6, 0x96, 0x4c,
-  0xbd, 0xab, 0x9c, 0x30, 0xab, 0x51, 0x8c, 0x16, 0x96, 0x80, 0xe4, 0xc5,
-  0x52, 0x1b, 0x7c, 0x59, 0x38, 0x8f, 0x7c, 0x2f, 0x66, 0x4e, 0x97, 0xd7,
-  0x9a, 0xa7, 0x2d, 0x16, 0xe5, 0x9a, 0x70, 0xfd, 0xec, 0xc9, 0x8f, 0x37,
-  0x52, 0x80, 0x9d, 0xce, 0x9f, 0x66, 0xe1, 0xa6, 0x7f, 0x0b, 0xee, 0xe8,
-  0x27, 0x3e, 0x00, 0x65, 0x11, 0xcf, 0x25, 0x2c, 0x48, 0x02, 0x21, 0x49,
-  0xdf, 0xa9, 0xe2, 0x8f, 0x88, 0xe4, 0x62, 0x91, 0x08, 0x6b, 0x38, 0x0d,
-  0xd8, 0xe0, 0x53, 0x65, 0xce, 0x91, 0xa9, 0xf6, 0x72, 0xfe, 0xcc, 0x65,
-  0xa0, 0x79, 0x77, 0x71, 0xe9, 0x02, 0x42, 0x39, 0x7e, 0x45, 0x41, 0xa8,
-  0xc4, 0x45, 0x51, 0x72, 0x85, 0xdb, 0x6e, 0xb7, 0xb1, 0xeb, 0xd6, 0x40,
-  0x8b, 0x72, 0x09, 0x19, 0x47, 0xd0, 0x40, 0x3a, 0x4d, 0x25, 0xc5, 0x2a,
-  0x2d, 0xe5, 0x4b, 0xae, 0xe5, 0x26, 0x8b, 0x36, 0x5c, 0x63, 0xaf, 0xcd,
-  0x05, 0x7c, 0x4e, 0x39, 0x9c, 0xc9, 0x1f, 0xb3, 0x1c, 0x2b, 0x29, 0x01,
-  0x56, 0x5c, 0xe0, 0x93, 0xbe, 0xb8, 0x17, 0x57, 0x70, 0x9c, 0xe5, 0x1d,
-  0x90, 0x48, 0x6e, 0x63, 0x54, 0x09, 0xf6, 0x1a, 0xe7, 0x33, 0x8b, 0x5b,
-  0x50, 0x5e, 0x6e, 0x65, 0xbe, 0x8c, 0x89, 0xc3, 0xe0, 0xa3, 0xb5, 0x0a,
-  0x94, 0x6b, 0x49, 0x5e, 0xc2, 0x54, 0x72, 0xef, 0x78, 0xae, 0xed, 0xa8,
-  0x3b, 0x6d, 0x25, 0x50, 0x3d, 0x9e, 0xaf, 0xe9, 0x87, 0x1b, 0x93, 0x7d,
-  0x93, 0x4e, 0x9a, 0x69, 0x1b, 0xdc, 0x7e, 0xbb, 0xb5, 0xcf, 0x9a, 0x24,
-  0x62, 0x59, 0x14, 0x0c, 0xf9, 0x99, 0x87, 0xc9, 0x54, 0x9f, 0xeb, 0x93,
-  0x6c, 0x85, 0xb8, 0x4b, 0xd8, 0x72, 0xe4, 0xe2, 0x7d, 0x8b, 0x64, 0x39,
-  0x77, 0x53, 0xb4, 0x0f, 0x91, 0xbd, 0x05, 0x67, 0x24, 0x56, 0x7c, 0xaa,
-  0xe3, 0x6d, 0x87, 0x94, 0x85, 0x02, 0xe3, 0x0b, 0xdf, 0x49, 0x8c, 0x6c,
-  0x1b, 0x22, 0x92, 0x2c, 0x75, 0x04, 0xa9, 0x95, 0x7a, 0xf1, 0x11, 0xe7,
-  0x8b, 0x03, 0x4e, 0xcf, 0xfe, 0xb6, 0x37, 0xda, 0x91, 0x90, 0x72, 0x53,
-  0xf8, 0x40, 0x7e, 0xac, 0xc3, 0xaa, 0x10, 0xd4, 0x16, 0x5f, 0x73, 0x03,
-  0x20, 0x1b, 0x71, 0xa6, 0x31, 0x6d, 0xa8, 0x09, 0x3f, 0x8a, 0xde, 0xb6,
-  0xb3, 0x80, 0xf3, 0xcb, 0x4a, 0xb1, 0xcf, 0xd8, 0xd2, 0x3e, 0x0b, 0xea,
-  0x4b, 0xe1, 0x4a, 0x0e, 0x4a, 0x86, 0xf0, 0x09, 0x70, 0xf7, 0x0e, 0xe2,
-  0x09, 0xa3, 0x76, 0x7a, 0xbb, 0x07, 0xfe, 0xf3, 0xeb, 0xb0, 0xbb, 0xdb,
-  0x5c, 0xec, 0xb3, 0x83, 0xf1, 0xd8, 0x16, 0xfa, 0x30, 0x5c, 0x50, 0x59,
-  0x42, 0xcd, 0xae, 0x65, 0xf0, 0x3d, 0x43, 0x66, 0x6d, 0xab, 0x3b, 0xda,
-  0x46, 0x23, 0x4b, 0x6e, 0xf7, 0x89, 0xeb, 0xcb, 0x75, 0xf5, 0x9d, 0xb4,
-  0x35, 0xf8, 0xc4, 0xae, 0xba, 0xfb, 0xfa, 0xae, 0xa3, 0xaf, 0xa7, 0x2d,
-  0x22, 0xda, 0xdb, 0xfb, 0xcc, 0x00, 0x50, 0x04, 0x52, 0x7e, 0x1e, 0xf9,
-  0x0e, 0x83, 0x1e, 0xe9, 0xb9, 0x21, 0x6c, 0x95, 0xed, 0xbe, 0x94, 0x2e,
-  0x78, 0x34, 0x41, 0x57, 0xcf, 0x5c, 0x57, 0xa4, 0x33, 0xf5, 0xe1, 0x34,
-  0xd3, 0x43, 0xd2, 0x3a, 0x3b, 0xb0, 0x53, 0xf3, 0x41, 0x39, 0xe6, 0x35,
-  0x20, 0x31, 0x6c, 0x6d, 0xde, 0xa1, 0x8d, 0x22, 0xe8, 0xe7, 0x33, 0x3f,
-  0x25, 0x3f, 0x6e, 0x56, 0x6c, 0x14, 0x62, 0x6d, 0x14, 0x1c, 0x56, 0x47,
-  0x28, 0x16, 0x67, 0xef, 0x02, 0xc0, 0x9a, 0x7c, 0x46, 0x5e, 0xf5, 0xbd,
-  0xc8, 0xf1, 0x3b, 0x63, 0x22, 0xd6, 0xfa, 0x36, 0xa3, 0xe8, 0x14, 0x4a,
-  0x58, 0x0d, 0x05, 0x57, 0xd0, 0x67, 0x62, 0x6f, 0xa5, 0x29, 0xc2, 0xd3,
-  0xbe, 0xfb, 0xc2, 0xaf, 0x89, 0x0d, 0xc9, 0x9c, 0x96, 0xdb, 0x7a, 0x7c,
-  0xbc, 0x7f, 0xc4, 0x62, 0x12, 0x12, 0x44, 0x88, 0x70, 0xfe, 0x14, 0x50,
-  0x47, 0x5b, 0xf8, 0x7c, 0x74, 0xa4, 0xb6, 0x9c, 0x6b, 0xe1, 0x12, 0x9c,
-  0x24, 0xb8, 0x83, 0x3c, 0x25, 0xff, 0x75, 0xc5, 0x0c, 0x09, 0xb7, 0x2e,
-  0xdd, 0xa1, 0xfa, 0xa7, 0xbd, 0x27, 0x88, 0x2b, 0x5c, 0x05, 0x0b, 0xb7,
-  0xb2, 0xcf, 0x91, 0xd0, 0x93, 0xe1, 0xd6, 0xdf, 0xe7, 0x7b, 0x4a, 0xcd,
-  0x09, 0x61, 0x9c, 0x0e, 0x76, 0x61, 0xe4, 0x52, 0x09, 0x0d, 0x7f, 0x04,
-  0x30, 0xa8, 0xca, 0x00, 0x05, 0xba, 0xa0, 0xe5, 0x31, 0x72, 0x9d, 0x2b,
-  0xd3, 0xd7, 0x41, 0xd4, 0x83, 0xed, 0x02, 0xe9, 0x22, 0x52, 0xfb, 0x40,
-  0xf4, 0x74, 0x67, 0xa7, 0xa3, 0xca, 0x4f, 0x3c, 0xc9, 0x6f, 0x2d, 0x66,
-  0x55, 0x91, 0x64, 0xf0, 0x96, 0x28, 0xcd, 0x10, 0x2d, 0x4a, 0x16, 0x53,
-  0x87, 0x97, 0x6c, 0x13, 0xe0, 0x15, 0x33, 0x8f, 0x50, 0xb0, 0x6e, 0x72,
-  0x2a, 0xbf, 0x07, 0xb4, 0x8d, 0x2d, 0x5a, 0xe3, 0x38, 0x0a, 0xee, 0x8d,
-  0x95, 0xa5, 0x88, 0x83, 0xda, 0x47, 0x1a, 0x25, 0xd1, 0x1a, 0x99, 0x22,
-  0x31, 0x07, 0xdd, 0x3c, 0x6b, 0x53, 0xc4, 0xf8, 0xe2, 0xf4, 0x5c, 0x29,
-  0xac, 0xcd, 0x75, 0xb5, 0xb0, 0x36, 0x3f, 0xe2, 0xe3, 0x76, 0x07, 0x1d,
-  0x61, 0x08, 0xce, 0x20, 0x2f, 0x19, 0xa3, 0xb4, 0x5c, 0x41, 0xaf, 0xcf,
-  0x7d, 0xc8, 0xa0, 0x4e, 0xed, 0x3b, 0xb5, 0xc0, 0x5b, 0x79, 0x1c, 0xab,
-  0xb6, 0x1d, 0xbc, 0x24, 0x07, 0xed, 0x74, 0x05, 0x62, 0x17, 0x83, 0x31,
-  0xd3, 0x91, 0x9a, 0x8e, 0x39, 0x4e, 0x56, 0xad, 0x69, 0xce, 0x35, 0xd8,
-  0xa4, 0x45, 0x39, 0x44, 0xa7, 0xae, 0x02, 0x92, 0x85, 0x11, 0xb8, 0xbb,
-  0xcb, 0xab, 0xae, 0x70, 0x5b, 0xb3, 0xc3, 0x49, 0x82, 0x32, 0x34, 0x8d,
-  0x34, 0xe6, 0xbc, 0x8c, 0xe6, 0x6e, 0x4f, 0x49, 0x32, 0x92, 0xe8, 0xd5,
-  0xdc, 0x4a, 0xcc, 0x9b, 0xa8, 0xe8, 0xa5, 0xac, 0x1d, 0xb7, 0xce, 0x67,
-  0xa7, 0xe7, 0x17, 0x36, 0x34, 0x74, 0x8b, 0x0f, 0x1a, 0xe7, 0x87, 0x51,
-  0xd4, 0x22, 0x01, 0x02, 0x07, 0x67, 0x91, 0x4d, 0x68, 0x69, 0xa5, 0x2a,
-  0x11, 0xca, 0xa6, 0xa0, 0x1d, 0x6b, 0x88, 0x75, 0xb6, 0xe2, 0xde, 0xa2,
-  0xca, 0x58, 0xdb, 0x71, 0x3c, 0x47, 0xcc, 0x28, 0xcc, 0xa0, 0xbb, 0xdd,
-  0xbd, 0x5e, 0xa6, 0x79, 0xb2, 0xdb, 0xa6, 0x0e, 0x56, 0x9e, 0xcf, 0x8f,
-  0xb8, 0x1c, 0xfb, 0xc5, 0xb5, 0xfc, 0xd6, 0x1a, 0xbb, 0x58, 0x71, 0xf5,
-  0xc3, 0xee, 0x20, 0x15, 0x50, 0x07, 0xe7, 0xfb, 0x70, 0x10, 0x3a, 0xb7,
-  0xef, 0xac, 0xca, 0xc1, 0x9a, 0x3d, 0x09, 0x72, 0xbb, 0xc1, 0x36, 0x95,
-  0x56, 0x90, 0x86, 0x8f, 0x0f, 0x7a, 0xda, 0x4b, 0x8f, 0x6e, 0x5d, 0x39,
-  0x12, 0x8c, 0xfb, 0xec, 0x5b, 0x78, 0xea, 0x5b, 0x58, 0x32, 0x7f, 0xd7,
-  0x06, 0x8e, 0xcd, 0xbb, 0xce, 0x1f, 0xba, 0x30, 0xde, 0xab, 0x24, 0x33,
-  0xc2, 0x90, 0xe7, 0x7c, 0x3b, 0xcf, 0x9c, 0xf7, 0xc8, 0xe4, 0xa3, 0x60,
-  0x28, 0xfc, 0xb1, 0x25, 0xd5, 0x22, 0x84, 0xaf, 0x41, 0x76, 0x4f, 0x9e,
-  0xfb, 0x1b, 0x82, 0x55, 0x09, 0x1f, 0x27, 0xa2, 0x2b, 0x10, 0xdc, 0x48,
-  0x1c, 0x67, 0x93, 0x66, 0xab, 0x04, 0x46, 0xb3, 0xb8, 0x98, 0x33, 0x30,
-  0xb9, 0x06, 0x7a, 0xb4, 0xdc, 0xd2, 0x9a, 0x1e, 0xee, 0xfb, 0xd1, 0x9b,
-  0xe8, 0xf8, 0xe4, 0xc8, 0x6f, 0x97, 0x40, 0x9a, 0xe3, 0x30, 0x7b, 0x21,
-  0x8f, 0x0e, 0x6e, 0xe6, 0xae, 0x8b, 0x51, 0x74, 0xc6, 0xf5, 0xe8, 0xe0,
-  0x7e, 0x2a, 0xff, 0xcd, 0xb7, 0x26, 0x87, 0x05, 0xc6, 0x18, 0xba, 0x40,
-  0x61, 0x14, 0x4d, 0x33, 0xda, 0x5d, 0x7c, 0xc2, 0xbf, 0x06, 0xa5, 0xc4,
-  0x5a, 0x53, 0x7e, 0xe1, 0x5f, 0x2e, 0x69, 0x1e, 0xa4, 0xaa, 0x35, 0x1f,
-  0x79, 0xaa, 0xb4, 0x45, 0x7a, 0x1c, 0x9a, 0x70, 0xec, 0x99, 0xcf, 0x74,
-  0x21, 0xf5, 0x3e, 0x66, 0xd2, 0xc2, 0xa5, 0x3d, 0x53, 0x63, 0xe3, 0x41,
-  0x53, 0x72, 0x29, 0x1c, 0xc8, 0x3a, 0x21, 0x7e, 0x9e, 0x4e, 0x0e, 0x3b,
-  0x4b, 0xa8, 0xad, 0x8c, 0x39, 0xee, 0xdc, 0xc1, 0xd6, 0xba, 0x5c, 0x28,
-  0xe6, 0x98, 0xfc, 0x82, 0xa2, 0x09, 0xb6, 0x41, 0x71, 0x1b, 0xc5, 0xf5,
-  0x9e, 0x0a, 0x35, 0x3a, 0xd2, 0x71, 0xf7, 0x58, 0x6d, 0x74, 0xdc, 0xb1,
-  0x4f, 0x22, 0xe2, 0xdd, 0x66, 0xd3, 0x10, 0xdd, 0xf2, 0xa1, 0x74, 0xf7,
-  0xf4, 0x99, 0x6f, 0xea, 0x12, 0x65, 0x1a, 0x8c, 0xbf, 0x1f, 0xd4, 0x78,
-  0x90, 0xc3, 0xfc, 0x4f, 0xdd, 0x93, 0xa2, 0x2c, 0x88, 0x85, 0xba, 0xe3,
-  0x58, 0x05, 0x7d, 0x08, 0x31, 0x5c, 0xe4, 0x1c, 0x31, 0x91, 0xdd, 0x7b,
-  0xf8, 0x90, 0x91, 0xc4, 0x20, 0x8a, 0x0d, 0x42, 0xea, 0x5f, 0x38, 0x60,
-  0x11, 0xd1, 0x36, 0x55, 0x41, 0x5f, 0xc4, 0x1f, 0x5b, 0x57, 0xfd, 0x62,
-  0xb5, 0x50, 0xd4, 0x84, 0xa0, 0xa7, 0xcf, 0x55, 0x9b, 0xbd, 0xc9, 0x88,
-  0x24, 0xbd, 0xfe, 0x17, 0x32, 0xd3, 0xdc, 0xb9, 0x88, 0x2d, 0x95, 0x23,
-  0x93, 0x50, 0xe5, 0xd2, 0x55, 0xfb, 0xea, 0x00, 0x26, 0xe7, 0x0b, 0x59,
-  0xc5, 0x44, 0x0b, 0x8a, 0xcc, 0x03, 0xdc, 0x4b, 0x5e, 0x6f, 0x7d, 0x4c,
-  0xbe, 0x7a, 0xc0, 0x67, 0x5f, 0x24, 0x7f, 0x41, 0x91, 0xcd, 0x91, 0x5c,
-  0x3a, 0x02, 0x3b, 0x25, 0xb3, 0xe4, 0x90, 0x05, 0xcf, 0xf2, 0x9e, 0xbe,
-  0x50, 0x53, 0x85, 0xaa, 0xc2, 0x56, 0xf9, 0xb1, 0x69, 0x69, 0x7e, 0xb6,
-  0xeb, 0xec, 0x3e, 0x8c, 0x51, 0xd0, 0x2f, 0x85, 0x3b, 0x04, 0x48, 0x05,
-  0xc4, 0xe0, 0xc6, 0xe3, 0x6f, 0xa2, 0xb7, 0xaf, 0x9f, 0x71, 0xba, 0xec,
-  0x55, 0x52, 0x70, 0x51, 0x55, 0xaf, 0x8b, 0x9d, 0x7e, 0x1b, 0x34, 0xb6,
-  0x17, 0xc6, 0x04, 0x88, 0xfe, 0xa4, 0x0c, 0x4d, 0x25, 0x6d, 0xda, 0x42,
-  0x86, 0xdd, 0xbb, 0x32, 0x17, 0x8a, 0x21, 0x65, 0x1b, 0x1a, 0x25, 0x64,
-  0x97, 0x66, 0xb6, 0x45, 0x9d, 0x89, 0x3d, 0x7b, 0xe2, 0x99, 0x58, 0x71,
-  0xbf, 0x64, 0xe0, 0xff, 0xec, 0x8a, 0x05, 0xea, 0x8e, 0x13, 0xf5, 0x4c,
-  0x18, 0xe7, 0xa1, 0x9c, 0x7b, 0x16, 0x66, 0xdb, 0xaf, 0xc5, 0xa5, 0x85,
-  0xcd, 0x04, 0xef, 0x3d, 0x0b, 0xd5, 0x49, 0x12, 0xc8, 0x71, 0x2f, 0x2a,
-  0x1e, 0x3f, 0x24, 0x95, 0xe0, 0xd9, 0xe7, 0xee, 0x59, 0xb6, 0x1d, 0xa4,
-  0x59, 0x50, 0x19, 0x65, 0xcd, 0x1b, 0x2a, 0x04, 0x8b, 0x68, 0xe0, 0xc5,
-  0x33, 0x91, 0x7b, 0x82, 0xb5, 0x0f, 0x5e, 0x79, 0x51, 0xd7, 0x96, 0x51,
-  0x52, 0xd0, 0x17, 0xe8, 0xe6, 0x49, 0xa5, 0xcb, 0xeb, 0xf0, 0x70, 0x3e,
-  0x97, 0x9b, 0xfa, 0xac, 0x09, 0x3c, 0x61, 0x3c, 0x30, 0x09, 0x7d, 0x77,
-  0x76, 0xd4, 0x85, 0xf4, 0x0f, 0x0f, 0x22, 0x7b, 0xa5, 0x55, 0x28, 0x9d,
-  0x69, 0x3d, 0xe8, 0x64, 0x57, 0xcf, 0x0c, 0x4d, 0x39, 0xbf, 0xca, 0xd2,
-  0xbf, 0x25, 0x41, 0xa6, 0xb5, 0x55, 0xb5, 0x09, 0x1e, 0xdf, 0x53, 0x86,
-  0x71, 0x1b, 0xcf, 0x53, 0x65, 0x8a, 0x6c, 0x47, 0xf7, 0x0f, 0x3c, 0x51,
-  0xaa, 0xfd, 0x98, 0xf2, 0x11, 0x95, 0x48, 0x59, 0xae, 0x6f, 0xc6, 0x1e,
-  0x9c, 0xa4, 0x06, 0x64, 0xf2, 0xfc, 0xa9, 0xca, 0x5e, 0x26, 0x1f, 0xf3,
-  0xbd, 0xc4, 0x0b, 0x31, 0x07, 0xe4, 0x79, 0x93, 0x4d, 0x3f, 0xd7, 0xab,
-  0x4f, 0xb7, 0x52, 0x83, 0xb4, 0x62, 0xe3, 0xd0, 0xec, 0x15, 0x28, 0x92,
-  0xbb, 0x34, 0xd3, 0xfc, 0xa7, 0xd6, 0xeb, 0xcf, 0xd7, 0x98, 0xa0, 0x4a,
-  0xb9, 0x37, 0x8f, 0x40, 0x4b, 0xc1, 0xf3, 0x9f, 0xf9, 0x93, 0x20, 0x95,
-  0xbf, 0x04, 0x31, 0xde, 0xe5, 0xf4, 0x20, 0x76, 0xcf, 0x0a, 0x8a, 0xd8,
-  0x59, 0x62, 0xd5, 0x65, 0x09, 0x3b, 0x6d, 0x36, 0xeb, 0x4a, 0x36, 0xbc,
-  0x74, 0xdd, 0xcf, 0x73, 0xe6, 0xa6, 0x41, 0x7f, 0x42, 0x52, 0x6f, 0x50,
-  0x22, 0xd2, 0x2b, 0x08, 0x59, 0xad, 0x98, 0x9b, 0x7f, 0xfa, 0x85, 0xd2,
-  0x86, 0xdd, 0x97, 0x26, 0xa6, 0xae, 0x7d, 0xe3, 0xb3, 0x9d, 0x50, 0x68,
-  0x9d, 0xb1, 0xa5, 0x5e, 0x20, 0x24, 0xd7, 0xbe, 0x20, 0x94, 0x71, 0x4c,
-  0xd7, 0xc8, 0x15, 0x11, 0x35, 0x9e, 0xf1, 0x38, 0xc6, 0xfe, 0xb1, 0xbd,
-  0x1a, 0xd3, 0xbd, 0x08, 0x45, 0xa8, 0xe8, 0xf8, 0x75, 0xf0, 0xe0, 0x13,
-  0x3f, 0xc1, 0x78, 0xce, 0xd2, 0xc0, 0xbd, 0x58, 0x22, 0x4a, 0xad, 0xa7,
-  0x17, 0x3c, 0xfa, 0x54, 0xd3, 0x58, 0x24, 0xda, 0x05, 0xcb, 0xdf, 0x7a,
-  0x46, 0xc8, 0xe1, 0x10, 0x59, 0x67, 0x15, 0x10, 0x17, 0x32, 0xf3, 0x16,
-  0x34, 0xf7, 0xfe, 0xb3, 0xe7, 0x0f, 0x3c, 0xab, 0x97, 0x66, 0xe9, 0xae,
-  0xfa, 0xe0, 0xbd, 0xcf, 0xda, 0xc7, 0xdc, 0xd4, 0x02, 0xc3, 0x85, 0xa1,
-  0xa3, 0xc6, 0x27, 0x2d, 0xda, 0x64, 0x40, 0xc1, 0x7f, 0x33, 0xd3, 0x4f,
-  0xc1, 0xd9, 0x77, 0xe5, 0xbf, 0x85, 0xe3, 0xfd, 0x3c, 0x00, 0x9f, 0x52,
-  0xa3, 0x8f, 0xab, 0xea, 0x1c, 0x56, 0x7a, 0xf4, 0x11, 0xe5, 0x58, 0x9d,
-  0xa0, 0x05, 0xd9, 0x73, 0x92, 0x23, 0x56, 0x99, 0xe7, 0x1c, 0xa2, 0x0c,
-  0x2a, 0x2c, 0xa7, 0xc5, 0x76, 0xeb, 0xe8, 0xbe, 0xa1, 0x4d, 0x05, 0x75,
-  0x04, 0xc6, 0xb3, 0x9d, 0xc6, 0x31, 0x28, 0xaf, 0x57, 0xa2, 0x7a, 0xbb,
-  0x19, 0x79, 0x30, 0xa8, 0xe0, 0xb5, 0x3d, 0xcf, 0xbd, 0x30, 0x36, 0x48,
-  0x8d, 0x87, 0x34, 0x5a, 0xd1, 0xcd, 0x23, 0x90, 0xa1, 0x39, 0x3e, 0x50,
-  0x45, 0xde, 0x83, 0xc9, 0x6e, 0xc6, 0x6b, 0x80, 0x0f, 0x14, 0xab, 0x25,
-  0xe8, 0x46, 0x45, 0x1b, 0x0e, 0x88, 0xa7, 0x5d, 0xba, 0x4e, 0xa6, 0x37,
-  0x76, 0x64, 0x36, 0xe3, 0x06, 0xc2, 0x4b, 0xf0, 0xd6, 0x53, 0xb7, 0xb4,
-  0x50, 0x6b, 0xce, 0x8f, 0x9a, 0x9a, 0x80, 0x7f, 0x54, 0xa8, 0xe6, 0xfc,
-  0x62, 0x7c, 0xb6, 0xcf, 0x63, 0x16, 0x17, 0x0c, 0x1d, 0x88, 0xc3, 0x71,
-  0xf2, 0x57, 0xcd, 0xf3, 0x2d, 0xfd, 0xd3, 0xcf, 0xd7, 0x3c, 0x3d, 0xd6,
-  0x18, 0xa9, 0xe3, 0x19, 0xb3, 0x5f, 0xda, 0x87, 0xf0, 0xa5, 0xcf, 0x14,
-  0x2f, 0xc1, 0x4c, 0xbb, 0x62, 0x39, 0xe2, 0x91, 0xb9, 0x94, 0x1a, 0xff,
-  0xf0, 0xe7, 0x5e, 0xaf, 0xb9, 0x5e, 0x65, 0x37, 0x4e, 0x5e, 0xd4, 0x00,
-  0x36, 0xdb, 0x60, 0xff, 0xc2, 0x0b, 0x3b, 0x1a, 0x01, 0x66, 0x97, 0x73,
-  0x7f, 0x0f, 0xd4, 0x52, 0x61, 0x31, 0xab, 0xe2, 0x3b, 0x22, 0xfe, 0xba,
-  0x0a, 0xd6, 0xe0, 0xc5, 0x8e, 0xbb, 0x7e, 0x97, 0xab, 0x09, 0x09, 0xa4,
-  0xd1, 0x4d, 0x72, 0xdf, 0xa8, 0xbd, 0xce, 0x8e, 0x80, 0x34, 0x63, 0x43,
-  0x84, 0x7f, 0xc4, 0x35, 0xf0, 0xc3, 0x0f, 0xc2, 0xe3, 0x5d, 0x04, 0x95,
-  0xba, 0x16, 0x5c, 0x3d, 0x64, 0x62, 0x88, 0x22, 0x16, 0xf0, 0xf1, 0x82,
-  0x3d, 0xbe, 0x48, 0xe6, 0x09, 0xc3, 0x80, 0x8b, 0x9e, 0x02, 0xc2, 0xee,
-  0x4a, 0x2a, 0xe4, 0x18, 0x63, 0xb8, 0x55, 0x38, 0x7d, 0x17, 0x06, 0xbd,
-  0x8c, 0x03, 0x53, 0xd5, 0x58, 0x45, 0x3b, 0x7e, 0xf0, 0xfe, 0xe2, 0x9b,
-  0xd3, 0xf3, 0x71, 0xb4, 0xcd, 0xf8, 0x8c, 0x17, 0xe7, 0xc7, 0x5f, 0xbd,
-  0x27, 0xfd, 0xdf, 0xb9, 0x65, 0x5e, 0xc7, 0x59, 0x4a, 0x37, 0xc7, 0xb8,
-  0x4a, 0x32, 0xda, 0xc7, 0x2b, 0xab, 0xb9, 0x89, 0x10, 0x1d, 0xbe, 0x2b,
-  0xf3, 0x62, 0xe0, 0xca, 0xaa, 0xdf, 0x5d, 0xe7, 0xba, 0x19, 0x12, 0x6c,
-  0xc9, 0x69, 0x05, 0x9c, 0xad, 0x91, 0x7b, 0xdd, 0x36, 0xad, 0x63, 0x6e,
-  0x46, 0xe6, 0x5d, 0x8d, 0x2e, 0xbe, 0x39, 0x78, 0xf7, 0xed, 0xd8, 0x30,
-  0xee, 0xbf, 0xff, 0xfe, 0xfb, 0xd0, 0xeb, 0xbf, 0xbf, 0xbd, 0x0d, 0xf1,
-  0xf2, 0x3a, 0xfe, 0xf8, 0x71, 0x54, 0x26, 0x1b, 0x1b, 0x6f, 0xbc, 0xaf,
-  0xce, 0x57, 0x4c, 0x2d, 0x57, 0x24, 0x59, 0xd0, 0xd7, 0xdb, 0xb4, 0xbe,
-  0x5c, 0xa1, 0x75, 0x7b, 0x55, 0xa5, 0x73, 0xba, 0x90, 0x92, 0x12, 0x6f,
-  0x6f, 0x6f, 0x6c, 0x8c, 0x8f, 0x8e, 0xa2, 0x83, 0x93, 0xf1, 0x69, 0xf0,
-  0xee, 0xe6, 0x2e, 0x47, 0xae, 0x5c, 0x25, 0xd5, 0x26, 0x43, 0x9d, 0x9e,
-  0x1c, 0x5c, 0xb0, 0xce, 0xfb, 0xdd, 0xd1, 0xf9, 0xf8, 0xf8, 0xf4, 0x1d,
-  0xef, 0x0e, 0x07, 0x2c, 0xc6, 0xf3, 0x3b, 0x8e, 0x57, 0xbd, 0x4c, 0x81,
-  0x3b, 0x73, 0x67, 0xe5, 0x4f, 0x9b, 0x38, 0xf2, 0x74, 0x5f, 0xdd, 0x31,
-  0x04, 0xb4, 0x06, 0x3a, 0x70, 0xe0, 0x3a, 0xad, 0x84, 0x45, 0x22, 0x6e,
-  0x44, 0xde, 0xee, 0x25, 0xd5, 0x7b, 0x92, 0x89, 0x84, 0x57, 0x0f, 0x04,
-  0xad, 0x01, 0xe9, 0x2d, 0x41, 0xdc, 0x64, 0xe7, 0xc4, 0xc7, 0xc7, 0x5c,
-  0x67, 0x24, 0x7a, 0x3f, 0x3e, 0xf8, 0xfa, 0x88, 0x1f, 0xfd, 0x3a, 0xa9,
-  0xfc, 0x7e, 0x48, 0x99, 0x56, 0xee, 0xe4, 0x5d, 0x52, 0x95, 0xd3, 0x78,
-  0xc9, 0x69, 0xe9, 0xd4, 0xcd, 0x50, 0xee, 0xa1, 0xa0, 0x6d, 0xd1, 0x05,
-  0x7c, 0x2d, 0xdb, 0x4c, 0x9f, 0x47, 0xa1, 0xd9, 0xb0, 0xdd, 0xf3, 0xa3,
-  0x83, 0xd7, 0x6f, 0x8f, 0x2c, 0x40, 0x5f, 0x6a, 0x3b, 0x50, 0xa3, 0xd7,
-  0xf9, 0x22, 0x09, 0x6c, 0xe1, 0x2c, 0x1b, 0xf0, 0xe2, 0xd3, 0x37, 0x5c,
-  0xe9, 0xb5, 0xbb, 0x3b, 0xbf, 0x51, 0x78, 0x76, 0x74, 0x99, 0x6e, 0x4b,
-  0xeb, 0xd6, 0x5f, 0xec, 0x96, 0x44, 0xc1, 0xb7, 0x4d, 0x5c, 0x16, 0x9b,
-  0x06, 0x8c, 0x21, 0x9f, 0xef, 0xec, 0xec, 0x3c, 0x30, 0x0f, 0xe8, 0x13,
-  0x7a, 0xeb, 0xd2, 0x54, 0xf6, 0xf9, 0xf1, 0x6d, 0xdf, 0xbe, 0x1f, 0xf1,
-  0x5c, 0xd3, 0xff, 0xb9, 0x20, 0x5b, 0x26, 0x38, 0xb3, 0x69, 0x95, 0x74,
-  0x0f, 0x79, 0x9a, 0xe7, 0x6e, 0x07, 0x6a, 0x8b, 0x43, 0x12, 0x32, 0x24,
-  0x1e, 0x8d, 0xec, 0xc4, 0x1b, 0x32, 0x70, 0xd2, 0x7f, 0x10, 0xcd, 0x56,
-  0xdc, 0x37, 0x9b, 0xe4, 0x6f, 0xa8, 0x4d, 0xfe, 0x31, 0xca, 0x8b, 0xab,
-  0xed, 0xc5, 0x3e, 0x44, 0x1a, 0x7a, 0xe8, 0x0d, 0x03, 0x83, 0x44, 0x24,
-  0x1a, 0xbb, 0xa0, 0xf4, 0x92, 0x17, 0x96, 0xf3, 0x67, 0x3e, 0x61, 0x5c,
-  0xbf, 0x60, 0x15, 0x24, 0x22, 0xea, 0xd2, 0x66, 0x6e, 0x15, 0x19, 0x3b,
-  0x3a, 0x29, 0x79, 0xc3, 0xd8, 0xe2, 0x38, 0x22, 0x06, 0x42, 0xbd, 0x70,
-  0xb8, 0x1b, 0x48, 0x84, 0x7e, 0x2d, 0x88, 0x64, 0x46, 0xd5, 0x47, 0xf0,
-  0x5d, 0x2d, 0x0f, 0x2a, 0x38, 0x89, 0xec, 0xc1, 0x5d, 0x72, 0xde, 0x66,
-  0x81, 0xea, 0x22, 0xe8, 0x81, 0xf3, 0x41, 0x89, 0xf3, 0x5c, 0xe9, 0xc2,
-  0x21, 0x06, 0x88, 0x1b, 0x6e, 0xf6, 0x39, 0x1c, 0x82, 0x7e, 0x4a, 0x47,
-  0x2d, 0x9f, 0xd0, 0x79, 0x30, 0x29, 0x59, 0xfd, 0x4c, 0xaf, 0xe9, 0x80,
-  0x76, 0xc6, 0x34, 0x8a, 0x56, 0x5f, 0x2b, 0x5f, 0xe0, 0xb4, 0x94, 0xee,
-  0x82, 0x12, 0x3d, 0x0c, 0xab, 0xb6, 0x8d, 0x2c, 0xb2, 0x4f, 0xee, 0xe3,
-  0xf0, 0x4c, 0x7f, 0xe3, 0x58, 0x9a, 0xf4, 0x96, 0x27, 0xcf, 0x2c, 0x9e,
-  0x2e, 0x6b, 0xbe, 0x03, 0x4c, 0xc6, 0x45, 0x68, 0x0e, 0xd4, 0x55, 0x64,
-  0x3c, 0x84, 0xfa, 0xc6, 0x03, 0x23, 0xdc, 0xa7, 0xa5, 0xe1, 0x2b, 0xe5,
-  0xbf, 0xb6, 0x47, 0x65, 0x79, 0xbd, 0x9d, 0xce, 0x3e, 0x14, 0x65, 0x1c,
-  0xfd, 0x54, 0xe7, 0xf7, 0xe5, 0xb4, 0x39, 0x89, 0xff, 0xc2, 0x0a, 0xfe,
-  0xa2, 0x95, 0x5a, 0x3f, 0x8b, 0xdf, 0x62, 0x06, 0xc3, 0x21, 0xe0, 0x0a,
-  0xb4, 0xa7, 0x0f, 0xf4, 0xc0, 0x07, 0x87, 0xb9, 0xf0, 0x2b, 0x66, 0xd7,
-  0xc1, 0x0a, 0x69, 0x92, 0x12, 0x68, 0x4e, 0xbc, 0xa5, 0x9b, 0xd0, 0x7b,
-  0x7a, 0x74, 0x7e, 0xdc, 0xdb, 0xd9, 0xd9, 0xdd, 0xdf, 0xfd, 0xfc, 0xc5,
-  0xce, 0xfe, 0xee, 0xee, 0xee, 0xde, 0xfe, 0xee, 0xfe, 0xfe, 0xde, 0xce,
-  0xcf, 0xdb, 0xbd, 0x75, 0x4b, 0xf7, 0xf6, 0xab, 0x35, 0x0d, 0xd2, 0xac,
-  0x7b, 0x12, 0xc5, 0xfa, 0x93, 0x9b, 0x3d, 0x66, 0x35, 0xeb, 0x45, 0xe5,
-  0x62, 0x42, 0x5d, 0xe9, 0xe1, 0x0c, 0x27, 0x53, 0x92, 0x24, 0x9d, 0x04,
-  0x13, 0x7a, 0x7d, 0xfa, 0xfd, 0xbb, 0x93, 0xd3, 0x83, 0xd7, 0xd1, 0xc5,
-  0x69, 0x74, 0x00, 0xbb, 0x5f, 0x07, 0x9f, 0x44, 0x24, 0x3a, 0x67, 0x5c,
-  0x0a, 0xe0, 0x83, 0xf7, 0x11, 0x98, 0x91, 0xca, 0x85, 0x3e, 0x61, 0x10,
-  0xcd, 0x71, 0xe6, 0xd0, 0xeb, 0xb8, 0xa5, 0xd1, 0x75, 0xb5, 0x78, 0xfc,
-  0x46, 0xf8, 0x94, 0x9e, 0x07, 0xe2, 0x8a, 0xf7, 0xaa, 0x3b, 0x86, 0x63,
-  0x27, 0x5f, 0xd3, 0x9a, 0xd4, 0xa1, 0xa5, 0x6e, 0x6c, 0x97, 0x84, 0xb3,
-  0x29, 0x81, 0x5b, 0x78, 0x03, 0xe7, 0x12, 0xde, 0xaf, 0x66, 0x70, 0x90,
-  0x2b, 0xdf, 0xae, 0x71, 0x12, 0x90, 0x91, 0x58, 0x28, 0xdd, 0x6a, 0x4d,
-  0xf0, 0x74, 0xed, 0x94, 0xe8, 0x2e, 0x4f, 0x3e, 0x62, 0xd6, 0x75, 0xde,
-  0x2b, 0x61, 0xce, 0x7e, 0x76, 0x28, 0x3c, 0x60, 0xc6, 0x88, 0xb4, 0xb0,
-  0x21, 0x23, 0xc2, 0xab, 0xa3, 0x3b, 0xee, 0xc7, 0x58, 0xb2, 0xef, 0x82,
-  0xbf, 0x09, 0xef, 0xf1, 0x6d, 0x67, 0xdf, 0x95, 0x01, 0xbc, 0x1f, 0x1f,
-  0xbf, 0xfb, 0x1a, 0x1e, 0xdc, 0xef, 0x4f, 0xcf, 0x5f, 0x8f, 0xa9, 0x59,
-  0x16, 0x70, 0x36, 0x60, 0xe2, 0x63, 0x4e, 0xa8, 0xa3, 0x92, 0x73, 0xc9,
-  0x5d, 0xff, 0x51, 0xc8, 0x69, 0xe0, 0x50, 0x12, 0x30, 0xcc, 0x40, 0xe1,
-  0x61, 0xf4, 0x83, 0xee, 0x5b, 0x23, 0xa0, 0xc6, 0x2f, 0x17, 0xf1, 0xf4,
-  0x9a, 0x35, 0x74, 0x21, 0x56, 0x84, 0xda, 0x6d, 0x73, 0xce, 0xcc, 0x36,
-  0x2b, 0x5e, 0xdb, 0x55, 0x0e, 0x72, 0x44, 0x2b, 0x92, 0xad, 0x68, 0x35,
-  0xae, 0x02, 0xf3, 0x0c, 0xd1, 0xfa, 0xe5, 0x3c, 0xbe, 0x42, 0x87, 0xed,
-  0x63, 0x10, 0x74, 0xa6, 0xdd, 0x7f, 0x6a, 0x97, 0x7c, 0x6d, 0xa0, 0xbd,
-  0x63, 0x10, 0x00, 0x10, 0xd1, 0x00, 0xe9, 0xa0, 0x9e, 0x27, 0x91, 0x3a,
-  0xd9, 0x4f, 0x8f, 0x90, 0x1e, 0xae, 0x12, 0xdd, 0x2c, 0xa1, 0x84, 0xca,
-  0xbd, 0x82, 0x24, 0x43, 0x82, 0xf9, 0x30, 0x40, 0xa4, 0x11, 0xe5, 0x94,
-  0x5b, 0x0a, 0x8c, 0x40, 0xa5, 0x0f, 0x4b, 0xf4, 0x55, 0x6e, 0x64, 0xc9,
-  0x79, 0x30, 0x40, 0x53, 0x2a, 0x2d, 0xde, 0x4d, 0xc5, 0xe0, 0x1e, 0x97,
-  0xc4, 0xe3, 0x80, 0x95, 0x9e, 0xa1, 0xa3, 0xf8, 0x7a, 0x19, 0x1e, 0x55,
-  0xbe, 0xac, 0x68, 0x28, 0x31, 0x17, 0x57, 0x44, 0xc9, 0x60, 0x03, 0xcb,
-  0x26, 0x75, 0x4a, 0xb2, 0x9a, 0x7b, 0x16, 0xf6, 0x22, 0xad, 0xa4, 0xa5,
-  0xe4, 0x15, 0x38, 0xe8, 0x07, 0xbe, 0xbc, 0x04, 0xcb, 0x69, 0x43, 0x43,
-  0x0a, 0xfc, 0x3d, 0xe9, 0x4d, 0x97, 0x7c, 0xc7, 0x91, 0x10, 0x4f, 0x0c,
-  0x5c, 0x28, 0x47, 0x53, 0x70, 0x83, 0xfa, 0xac, 0xb5, 0x65, 0xb3, 0x2c,
-  0x1c, 0x69, 0x8e, 0x39, 0xb3, 0x37, 0xc3, 0xba, 0x15, 0xdc, 0x40, 0xe8,
-  0x91, 0xbb, 0x05, 0x3a, 0xf2, 0xf1, 0x63, 0x0f, 0xc8, 0x12, 0x2c, 0x9b,
-  0x04, 0xdb, 0xf9, 0xf7, 0x68, 0x8f, 0xb8, 0xa9, 0xb4, 0x2a, 0x93, 0xf9,
-  0xa5, 0x22, 0xe8, 0xc8, 0x15, 0xc2, 0xb3, 0x8c, 0x1b, 0x38, 0x3b, 0xec,
-  0x2f, 0xcd, 0x1c, 0xa8, 0x47, 0xae, 0xbc, 0xe4, 0x0a, 0x6c, 0x5d, 0x9e,
-  0x03, 0x49, 0xd6, 0x78, 0x88, 0x38, 0x45, 0xff, 0x24, 0x81, 0x5a, 0xae,
-  0xb9, 0x1a, 0xeb, 0xa8, 0x45, 0x18, 0xf3, 0xad, 0x63, 0x6b, 0xc7, 0xab,
-  0x75, 0xbf, 0x64, 0x34, 0x7c, 0x8e, 0x8a, 0xf0, 0xa5, 0x35, 0x63, 0x4b,
-  0xe3, 0x01, 0xf0, 0x47, 0xf2, 0x91, 0x93, 0x5a, 0x74, 0x6e, 0x5e, 0xc9,
-  0x73, 0x42, 0xbd, 0xce, 0x97, 0x5b, 0xc3, 0xe7, 0xe0, 0x85, 0xbc, 0xda,
-  0x8c, 0x91, 0xc5, 0x8a, 0x9a, 0x46, 0xe2, 0x8a, 0x18, 0x68, 0xaa, 0xa1,
-  0x2b, 0xbd, 0xab, 0x48, 0x17, 0x92, 0x6f, 0x76, 0x6f, 0xde, 0x3f, 0x38,
-  0x5f, 0x63, 0x51, 0x20, 0x21, 0x04, 0x07, 0x1d, 0x33, 0x29, 0xa1, 0x52,
-  0x48, 0x2d, 0x54, 0xb3, 0x36, 0xcb, 0xd5, 0xc4, 0x6f, 0x2c, 0xd3, 0x08,
-  0x82, 0x1c, 0xb9, 0x49, 0xf8, 0x9a, 0x71, 0x6a, 0x5c, 0x8c, 0xef, 0xaa,
-  0x05, 0x7a, 0x94, 0x2a, 0x74, 0x14, 0x31, 0x14, 0x24, 0x30, 0xae, 0x4a,
-  0x47, 0x39, 0xb4, 0x5a, 0x37, 0x7a, 0x21, 0x6e, 0x20, 0xfa, 0xb5, 0xcd,
-  0x6e, 0x94, 0xf3, 0xae, 0xe7, 0x37, 0x8f, 0xb3, 0x9a, 0xf6, 0x90, 0x4c,
-  0x5f, 0x9c, 0xdf, 0x0b, 0x37, 0x48, 0xb3, 0x87, 0x99, 0x8e, 0x0e, 0xe2,
-  0x93, 0x3a, 0xc6, 0x5c, 0x15, 0x2a, 0x06, 0x6e, 0x15, 0x1f, 0x7d, 0x28,
-  0x91, 0x1c, 0x48, 0x8a, 0x69, 0x24, 0x77, 0x98, 0x51, 0xd2, 0xad, 0x23,
-  0x0e, 0xbc, 0xa4, 0x7e, 0xee, 0x47, 0x5f, 0xc5, 0x65, 0x3a, 0x1d, 0x68,
-  0x95, 0x45, 0xad, 0xba, 0xc8, 0x6f, 0xf8, 0xe2, 0x7b, 0x9b, 0x92, 0xd6,
-  0xb3, 0x35, 0x8a, 0xbe, 0xb7, 0xba, 0x99, 0xa4, 0x43, 0x4a, 0x99, 0xb2,
-  0x74, 0x8a, 0xd2, 0xa8, 0x35, 0x1c, 0x21, 0xa5, 0xcf, 0x10, 0xb0, 0x07,
-  0x9d, 0xf8, 0xb2, 0x38, 0xd8, 0xd5, 0xb8, 0xbc, 0x71, 0x9e, 0x30, 0xec,
-  0x95, 0xb2, 0x22, 0xe0, 0x0c, 0x8a, 0x2c, 0x2d, 0x96, 0x81, 0x7c, 0xe5,
-  0xc2, 0x4b, 0xf0, 0xb7, 0x3b, 0xbe, 0x56, 0xed, 0x16, 0xd6, 0xd7, 0x52,
-  0xe3, 0x12, 0x2d, 0x7a, 0x84, 0xaf, 0x5f, 0x6e, 0xce, 0xb1, 0xa8, 0xe1,
-  0x90, 0x16, 0x8c, 0x97, 0x46, 0x19, 0xe8, 0xe9, 0xc5, 0xd1, 0xbf, 0x44,
-  0x07, 0x4d, 0xe7, 0x39, 0xdf, 0x4c, 0x35, 0xe0, 0xa0, 0x81, 0x27, 0x30,
-  0x8c, 0x5d, 0x42, 0x11, 0x33, 0x2d, 0x89, 0xca, 0xdb, 0xbf, 0xa1, 0x89,
-  0xcf, 0xde, 0x44, 0x5c, 0xe6, 0x1a, 0x59, 0x5d, 0xdd, 0x1b, 0x40, 0x3e,
-  0xbf, 0x06, 0x97, 0xc2, 0x9d, 0xaf, 0x02, 0x2b, 0xb9, 0xa3, 0x69, 0x2c,
-  0x91, 0xed, 0x0c, 0x0f, 0x46, 0x9b, 0x92, 0x09, 0x03, 0x45, 0x10, 0xb6,
-  0xc4, 0x0a, 0x0a, 0x00, 0x57, 0x5a, 0x41, 0xd5, 0x92, 0x0c, 0x2e, 0x29,
-  0x94, 0x17, 0x14, 0x94, 0x8d, 0x43, 0xa4, 0xb6, 0x0f, 0x7c, 0xe4, 0x3e,
-  0xd8, 0xc5, 0xa2, 0x57, 0xa0, 0x8c, 0xe5, 0x52, 0xf4, 0xa0, 0x3a, 0xc9,
-  0xda, 0xb1, 0x93, 0xdb, 0xec, 0xcc, 0xc2, 0x10, 0xb1, 0x11, 0x53, 0xe0,
-  0x20, 0xcd, 0xef, 0xc5, 0x6b, 0x8e, 0x3b, 0xd5, 0xb8, 0x66, 0x78, 0x31,
-  0x01, 0xd9, 0x0c, 0x78, 0x4a, 0xa8, 0x5a, 0xad, 0x75, 0x98, 0x24, 0xe8,
-  0x9b, 0x5a, 0xad, 0x87, 0xea, 0x23, 0x79, 0x07, 0xab, 0xca, 0xa3, 0x10,
-  0x18, 0xc1, 0x30, 0x55, 0xa0, 0x94, 0x0a, 0xad, 0x91, 0x15, 0x21, 0x6e,
-  0x10, 0x34, 0x71, 0xc3, 0xe3, 0xaa, 0xc1, 0x9e, 0x5c, 0x85, 0xa3, 0x20,
-  0x46, 0xf5, 0x8d, 0x83, 0x94, 0xd3, 0x66, 0xb9, 0x52, 0xe3, 0x34, 0x09,
-  0x32, 0x74, 0xb2, 0x7c, 0x23, 0xb8, 0xf9, 0x84, 0x7e, 0xf2, 0xd2, 0x78,
-  0xa2, 0xc0, 0x8d, 0x49, 0x91, 0xb6, 0x49, 0x22, 0x95, 0x13, 0xb8, 0xb8,
-  0x0e, 0x76, 0x11, 0x68, 0x9c, 0x7c, 0x02, 0x85, 0x32, 0x17, 0x20, 0xee,
-  0x0d, 0x4f, 0xdd, 0x7c, 0x07, 0xad, 0x9b, 0x27, 0xa7, 0xea, 0x32, 0xb9,
-  0x99, 0xbd, 0x5c, 0x44, 0x27, 0xd6, 0x53, 0x32, 0xad, 0x41, 0x09, 0xe3,
-  0x91, 0x8e, 0x9a, 0x77, 0x07, 0x92, 0x6d, 0xe6, 0xe4, 0x2c, 0xdb, 0xf4,
-  0x1a, 0x6e, 0x1e, 0xf3, 0x94, 0x59, 0xb4, 0xb8, 0xd7, 0xd4, 0x14, 0x95,
-  0x0d, 0x18, 0xe3, 0x01, 0x56, 0x89, 0xcf, 0x3f, 0x6f, 0xc9, 0x82, 0x1f,
-  0xdd, 0xd3, 0xfb, 0xf4, 0x75, 0x60, 0xfd, 0x98, 0x73, 0xa0, 0x09, 0x5b,
-  0x1b, 0x20, 0x87, 0x3a, 0x13, 0x48, 0x87, 0x86, 0x11, 0xc0, 0x80, 0x49,
-  0x8f, 0xce, 0x2f, 0xd3, 0xa2, 0xb2, 0x81, 0xe7, 0xfb, 0x1b, 0xa2, 0x5e,
-  0xcb, 0x40, 0xe3, 0x52, 0x02, 0x96, 0xd6, 0x28, 0x66, 0xc6, 0x26, 0x9b,
-  0xa3, 0x0d, 0xa4, 0x66, 0x92, 0xdc, 0x47, 0x7c, 0xa9, 0xb2, 0x12, 0x30,
-  0xce, 0xb5, 0x61, 0x5e, 0x64, 0x1d, 0x8c, 0xa3, 0x8e, 0x06, 0x1d, 0xb9,
-  0x02, 0x99, 0x9e, 0x47, 0xbc, 0x5f, 0x3f, 0x9c, 0xf7, 0xbf, 0x66, 0x38,
-  0x07, 0xd1, 0x83, 0x29, 0x1a, 0x5a, 0xfe, 0x94, 0x39, 0x7e, 0x69, 0xc9,
-  0x69, 0x39, 0xa8, 0xda, 0xe4, 0x1e, 0x59, 0x23, 0xd4, 0xb8, 0x9d, 0xd4,
-  0xeb, 0x96, 0xb5, 0x0d, 0x13, 0x59, 0x2e, 0x4f, 0x43, 0xa9, 0xe1, 0xf6,
-  0x07, 0x36, 0x94, 0x4f, 0x1d, 0xae, 0xc1, 0x5f, 0x5a, 0x0e, 0x56, 0x23,
-  0xbd, 0x42, 0xd3, 0x9e, 0x76, 0x47, 0x3b, 0xa1, 0x7c, 0xe5, 0x92, 0xa1,
-  0x0a, 0x40, 0xaa, 0x56, 0x80, 0x96, 0xf2, 0x22, 0x0a, 0xcf, 0x04, 0xd9,
-  0x81, 0x8d, 0xd7, 0xf4, 0xb3, 0x5d, 0x81, 0x99, 0xa6, 0x93, 0xa4, 0xb5,
-  0x77, 0x18, 0x41, 0x27, 0x59, 0x2c, 0x91, 0x34, 0x62, 0x1c, 0x30, 0x14,
-  0x02, 0x70, 0x8e, 0x9e, 0xfa, 0x23, 0xf5, 0xcc, 0x6d, 0xb7, 0x8e, 0x51,
-  0x72, 0x0a, 0xb4, 0x9c, 0xb9, 0x84, 0xf5, 0x43, 0xf8, 0x4c, 0x12, 0x69,
-  0xa9, 0x5a, 0x9b, 0xdc, 0x76, 0x58, 0x4f, 0x34, 0x65, 0x7a, 0xc6, 0x65,
-  0x1b, 0x5d, 0xae, 0x0a, 0x30, 0x5e, 0x05, 0x15, 0x54, 0x34, 0x1a, 0x6e,
-  0x95, 0xe3, 0x73, 0x3b, 0x38, 0x0d, 0xd2, 0xb7, 0x13, 0x14, 0x28, 0xe7,
-  0x73, 0x2d, 0xd6, 0x71, 0x20, 0x67, 0x68, 0xf9, 0x38, 0xef, 0x7b, 0x73,
-  0xe2, 0x19, 0xb5, 0x3b, 0x4f, 0x69, 0x40, 0x7d, 0xc0, 0xb2, 0x58, 0xf5,
-  0x65, 0xe5, 0x85, 0x46, 0xc2, 0x0e, 0x61, 0xbc, 0x5e, 0xd8, 0xb8, 0x5d,
-  0x8d, 0xaa, 0xc9, 0x74, 0xe5, 0x1a, 0x18, 0x44, 0xc3, 0xff, 0xa5, 0x2b,
-  0xc3, 0xe2, 0x39, 0xc7, 0x8e, 0xa1, 0x04, 0xc5, 0x32, 0x40, 0xe8, 0xd4,
-  0x14, 0x3f, 0x30, 0x7c, 0x0e, 0x0c, 0xb5, 0x79, 0xb8, 0xbc, 0x5b, 0xcb,
-  0x11, 0x02, 0xff, 0x7b, 0x13, 0x62, 0xb1, 0xd6, 0x2a, 0x4e, 0x2b, 0xab,
-  0x90, 0xe6, 0x36, 0x5c, 0x4d, 0x0b, 0x89, 0x15, 0x6c, 0x0d, 0xd8, 0x5d,
-  0x64, 0x5f, 0x71, 0xd5, 0xbf, 0xc3, 0x3c, 0x0e, 0x97, 0xd5, 0x57, 0x0d,
-  0xd3, 0x91, 0x0a, 0xf1, 0x3b, 0x53, 0x86, 0xe4, 0xb7, 0x0e, 0xe9, 0x85,
-  0xe1, 0x7b, 0x35, 0x67, 0x7c, 0x29, 0x3d, 0x8c, 0x60, 0x76, 0x97, 0x1e,
-  0xce, 0x50, 0x2b, 0xd9, 0x1e, 0xd8, 0xd7, 0x97, 0x38, 0x29, 0xb6, 0xa7,
-  0x96, 0x9c, 0xfa, 0xaa, 0xc8, 0xf3, 0x96, 0x34, 0xcb, 0x85, 0x76, 0x31,
-  0x85, 0xa1, 0x38, 0x74, 0xf8, 0x90, 0xc9, 0xaf, 0xf2, 0xae, 0x2a, 0x8f,
-  0xf7, 0xdc, 0xc4, 0x48, 0xa2, 0xee, 0xd5, 0xf6, 0xb2, 0xb7, 0xbb, 0x2d,
-  0x83, 0xd9, 0x96, 0x06, 0x44, 0xae, 0x53, 0x92, 0xf4, 0x41, 0x20, 0x06,
-  0x40, 0x14, 0xde, 0x5c, 0x9c, 0x23, 0xc0, 0xc1, 0x3b, 0x0b, 0x8d, 0x3c,
-  0x86, 0x77, 0x8d, 0xaf, 0x26, 0xba, 0x6b, 0xa5, 0xba, 0x50, 0xae, 0xfb,
-  0xb3, 0xe1, 0x37, 0x68, 0xe0, 0x44, 0x3e, 0x22, 0xa5, 0xe1, 0x6d, 0xa8,
-  0x35, 0x25, 0x0a, 0x97, 0xc9, 0x15, 0x51, 0x5d, 0x0e, 0x1d, 0x1f, 0x74,
-  0xf1, 0xaf, 0x13, 0x45, 0x9f, 0x1f, 0xbc, 0xfb, 0xfa, 0x08, 0x92, 0x80,
-  0x03, 0x52, 0x4c, 0x99, 0xda, 0x67, 0xab, 0x29, 0x54, 0x21, 0x5a, 0x31,
-  0xc4, 0xbe, 0x01, 0x5a, 0x58, 0xf8, 0x79, 0x0a, 0xa8, 0x2b, 0x21, 0x5e,
-  0x6c, 0xb7, 0x46, 0xb4, 0x6d, 0x44, 0x66, 0x51, 0x85, 0x04, 0xc1, 0x0a,
-  0x23, 0x23, 0xa5, 0xe7, 0x80, 0x36, 0x98, 0x2c, 0x63, 0x45, 0xa8, 0x89,
-  0x43, 0x08, 0x13, 0xb5, 0xb3, 0x8c, 0xea, 0x67, 0x71, 0xc3, 0xd2, 0x5b,
-  0x9c, 0x4e, 0x5f, 0x40, 0xa7, 0x1f, 0x85, 0x56, 0x35, 0x81, 0xd8, 0xd8,
-  0xdd, 0xd9, 0xf1, 0xb5, 0x63, 0x3c, 0x14, 0x4b, 0x8b, 0x5b, 0x16, 0xd1,
-  0xce, 0xf0, 0xc5, 0x8b, 0x75, 0x8c, 0xd0, 0x35, 0x0a, 0x3c, 0x94, 0x67,
-  0x9f, 0xdc, 0xe6, 0x90, 0x1f, 0x5d, 0xd7, 0x66, 0x87, 0x46, 0x83, 0x82,
-  0xf5, 0x1a, 0x4d, 0x58, 0x3a, 0xa9, 0x45, 0x2d, 0x3c, 0xe2, 0xac, 0x81,
-  0xf3, 0x2c, 0x73, 0x6a, 0x0d, 0x2f, 0xe5, 0x86, 0xc7, 0x7e, 0x06, 0x70,
-  0x86, 0x19, 0x83, 0x96, 0x1c, 0x50, 0x98, 0x3a, 0x1f, 0xee, 0x27, 0x2d,
-  0x4c, 0xa0, 0xc0, 0xaf, 0x59, 0xa2, 0xcb, 0xf6, 0x6c, 0x4c, 0x24, 0x78,
-  0x7f, 0xc6, 0xf6, 0xbf, 0xe3, 0x77, 0x5f, 0x8b, 0x39, 0x84, 0x74, 0x7b,
-  0xd8, 0xd2, 0xb7, 0x1b, 0x9a, 0xfe, 0x7b, 0x29, 0x02, 0xc3, 0xe1, 0xa4,
-  0x08, 0xde, 0x90, 0x0a, 0xae, 0x69, 0x26, 0xac, 0xc0, 0xef, 0xfe, 0x1a,
-  0x5b, 0xe5, 0x45, 0x34, 0x0c, 0x84, 0x13, 0xad, 0x00, 0xc3, 0x92, 0xc9,
-  0xe2, 0xde, 0x34, 0x23, 0xed, 0x01, 0xad, 0x9b, 0x67, 0xc6, 0x35, 0x2b,
-  0x7a, 0xae, 0xa8, 0xe7, 0xa0, 0xa0, 0x96, 0x6c, 0xd2, 0xd1, 0xa5, 0x74,
-  0x83, 0xf3, 0xdd, 0x90, 0x44, 0x3e, 0x6d, 0x28, 0x35, 0x53, 0x67, 0xbd,
-  0x66, 0x20, 0x4b, 0x56, 0x03, 0xb3, 0xfd, 0x34, 0xcd, 0x90, 0x52, 0x95,
-  0x3c, 0xe4, 0xea, 0xbc, 0xdb, 0x28, 0x30, 0x9a, 0xe7, 0xff, 0xfd, 0x71,
-  0x3e, 0x30, 0x42, 0x3e, 0xa8, 0x7c, 0x53, 0x65, 0x33, 0x6f, 0xd3, 0xd0,
-  0x11, 0x77, 0x3a, 0x42, 0x2e, 0xe4, 0x7d, 0xe9, 0x3a, 0xee, 0xee, 0x4e,
-  0xde, 0xb7, 0xa5, 0xe9, 0x38, 0x00, 0x2c, 0xd2, 0x6a, 0x8d, 0x20, 0x97,
-  0x7a, 0x6a, 0xba, 0x0c, 0x4b, 0xe1, 0xe0, 0x1c, 0x69, 0x5d, 0x2c, 0xd9,
-  0x88, 0x34, 0xbf, 0x1d, 0x05, 0x84, 0x98, 0x86, 0x80, 0x28, 0x8f, 0xcb,
-  0xeb, 0x06, 0x81, 0xa1, 0x97, 0x0a, 0xc1, 0xcc, 0x2c, 0x8d, 0x85, 0x1a,
-  0xc5, 0xb8, 0xf2, 0x40, 0xd6, 0xc5, 0x2a, 0x53, 0xde, 0xc7, 0xfa, 0x16,
-  0x0d, 0x3e, 0x2e, 0xaf, 0x51, 0x92, 0xd9, 0x99, 0xa2, 0xda, 0xe2, 0x15,
-  0xba, 0x57, 0x54, 0x66, 0x92, 0xa7, 0x44, 0x98, 0x82, 0x70, 0x5d, 0x5b,
-  0x8a, 0xfa, 0x0a, 0x6c, 0x6c, 0xb0, 0x11, 0x7e, 0x9b, 0x4d, 0xf1, 0xe3,
-  0xf6, 0x02, 0x9a, 0x2d, 0xfd, 0x41, 0x7b, 0xbc, 0xf7, 0x31, 0x3c, 0x62,
-  0x99, 0x0f, 0xac, 0x27, 0x9f, 0x7a, 0xe2, 0x44, 0x7e, 0xef, 0xf0, 0x2b,
-  0xe2, 0xd0, 0x05, 0x8c, 0xac, 0x93, 0xd4, 0xeb, 0xd6, 0xb4, 0x50, 0x17,
-  0x80, 0xd1, 0x07, 0x9a, 0x19, 0x50, 0x20, 0x1a, 0xdb, 0x05, 0x85, 0x1d,
-  0xb8, 0xb2, 0x82, 0x74, 0x66, 0xec, 0x3d, 0x84, 0x2c, 0xf1, 0xe5, 0x8e,
-  0xe6, 0x92, 0x87, 0xc2, 0xb2, 0x85, 0xa8, 0xbf, 0x70, 0x75, 0x4b, 0xf6,
-  0x1c, 0xfa, 0xc4, 0x0c, 0x65, 0x80, 0x02, 0x76, 0x50, 0x21, 0xaa, 0x7d,
-  0x7c, 0xc1, 0x66, 0x04, 0x5c, 0x7d, 0xa6, 0x8f, 0x7e, 0x77, 0x74, 0xfe,
-  0xd5, 0xe9, 0xf8, 0x88, 0xf6, 0xe3, 0xf5, 0xd1, 0x57, 0xef, 0x99, 0x6b,
-  0x31, 0x75, 0x88, 0xe9, 0x19, 0xc0, 0xc0, 0x62, 0xff, 0x02, 0xdc, 0x19,
-  0x87, 0xeb, 0x81, 0x4c, 0x45, 0x0e, 0x1a, 0x18, 0x15, 0x9a, 0x88, 0x27,
-  0xf8, 0xba, 0xf3, 0x44, 0x6c, 0x95, 0x29, 0x92, 0x10, 0x3c, 0x06, 0x38,
-  0xc7, 0xfa, 0x71, 0xcd, 0x76, 0xa8, 0x97, 0x7a, 0x94, 0xa4, 0x08, 0x65,
-  0xb9, 0xef, 0x8d, 0x9a, 0xb7, 0x62, 0x99, 0xd6, 0xc3, 0xe7, 0xeb, 0xcd,
-  0xa3, 0x02, 0x03, 0x88, 0xf7, 0xd0, 0xc9, 0xd1, 0x0a, 0xd7, 0x39, 0xcf,
-  0xe5, 0xd6, 0x44, 0x69, 0x74, 0x6e, 0x1b, 0xf7, 0x78, 0x5a, 0xe1, 0x0a,
-  0x17, 0x85, 0x42, 0xcb, 0xb4, 0x97, 0x42, 0xdc, 0xc4, 0xde, 0x24, 0xed,
-  0x7c, 0xae, 0xd7, 0x01, 0xb8, 0x5f, 0x99, 0x08, 0x4e, 0x9c, 0xdc, 0xda,
-  0xea, 0x0f, 0x97, 0x40, 0x5f, 0x2d, 0xa8, 0xb2, 0xa9, 0x4a, 0xf0, 0x1d,
-  0xe6, 0xa9, 0x05, 0x3e, 0xa5, 0x90, 0xb9, 0x95, 0xf9, 0xc3, 0xca, 0x07,
-  0x21, 0x39, 0x4a, 0x3a, 0xb7, 0xeb, 0x59, 0xcf, 0x85, 0xcc, 0x94, 0xed,
-  0x1c, 0x22, 0x08, 0x18, 0x22, 0x33, 0xa0, 0x01, 0xeb, 0x45, 0xbe, 0xbd,
-  0x80, 0x22, 0x67, 0x97, 0xf3, 0x09, 0x02, 0x15, 0x72, 0x7d, 0xe9, 0xf3,
-  0x3a, 0xb2, 0x58, 0x90, 0x4d, 0x24, 0xcc, 0x55, 0xc3, 0xf0, 0x78, 0x4b,
-  0xe1, 0x12, 0x10, 0xe2, 0x6b, 0x9f, 0x77, 0x69, 0x5d, 0xaa, 0x9e, 0xf3,
-  0x19, 0x0d, 0x1c, 0x27, 0x1b, 0x1b, 0x1b, 0xaf, 0x8f, 0x2e, 0x0e, 0x8e,
-  0x4f, 0x8e, 0x5e, 0x47, 0xc7, 0xef, 0xde, 0x9c, 0x9e, 0xbf, 0x3d, 0xb8,
-  0xd0, 0x68, 0x8c, 0xd7, 0xce, 0x22, 0xe7, 0xc1, 0x9c, 0x14, 0x8c, 0x3d,
-  0xb0, 0xd6, 0x81, 0x84, 0x69, 0x17, 0xaf, 0x14, 0x78, 0x5f, 0x96, 0x21,
-  0xa9, 0xad, 0xc1, 0x46, 0xa4, 0x51, 0x1c, 0x1e, 0xfd, 0x8a, 0xe5, 0x82,
-  0x6d, 0xe7, 0x7b, 0x1f, 0xd9, 0x72, 0x9a, 0x19, 0x0d, 0x55, 0x18, 0x1f,
-  0x6c, 0x2a, 0x66, 0x1b, 0xc8, 0xd5, 0x3c, 0xd1, 0x3b, 0x91, 0xb7, 0x53,
-  0xd2, 0xff, 0x41, 0x93, 0xc3, 0xe3, 0xed, 0x3a, 0xe4, 0x30, 0x0c, 0x2d,
-  0x06, 0x86, 0x16, 0x03, 0x0e, 0x25, 0x04, 0xdd, 0xb8, 0xcc, 0x11, 0x54,
-  0x12, 0xb6, 0xe9, 0xe0, 0x24, 0xb0, 0xa3, 0x8c, 0x1e, 0x8c, 0xd8, 0x1f,
-  0x7c, 0x12, 0xee, 0x2f, 0xe3, 0x39, 0x6c, 0x70, 0x11, 0x90, 0x4a, 0x31,
-  0x99, 0x18, 0x3f, 0xb5, 0xa4, 0x9d, 0x72, 0x67, 0x1d, 0x88, 0xae, 0x8e,
-  0x61, 0x9b, 0x77, 0x4e, 0x8b, 0x06, 0x86, 0x4d, 0x6d, 0x3a, 0x7f, 0x3d,
-  0x49, 0x4c, 0xc3, 0x63, 0x2d, 0x26, 0xc9, 0x6b, 0xc1, 0x80, 0xed, 0xfc,
-  0x33, 0x33, 0x44, 0x45, 0x17, 0x3e, 0xea, 0x35, 0xfe, 0x94, 0xa6, 0xac,
-  0x2e, 0x2a, 0x3d, 0x6d, 0xfe, 0xdc, 0x1a, 0x66, 0xcb, 0xf0, 0x35, 0x3d,
-  0x34, 0x5b, 0x2d, 0x96, 0x5a, 0x8f, 0xd8, 0x24, 0x6a, 0xd8, 0xf2, 0x6c,
+  0x7b, 0x5f, 0x23, 0x47, 0x92, 0x36, 0xfa, 0x3f, 0x9f, 0xa2, 0x96, 0x39,
+  0xb3, 0x82, 0x19, 0x49, 0x5c, 0xfa, 0x62, 0x37, 0xd3, 0xed, 0x35, 0xa6,
+  0x69, 0x9b, 0x35, 0xdd, 0xf0, 0x02, 0x6d, 0x7b, 0x5e, 0xdb, 0xbf, 0xfe,
+  0x95, 0xa4, 0x02, 0x6a, 0x90, 0x54, 0x9a, 0xaa, 0x12, 0x34, 0xb3, 0x3b,
+  0xfb, 0xd9, 0x4f, 0xc4, 0x13, 0x11, 0x99, 0x59, 0x95, 0x25, 0x68, 0x7b,
+  0xc7, 0x73, 0xf6, 0x3d, 0xe7, 0x78, 0x77, 0x1a, 0x90, 0xaa, 0xf2, 0x1a,
+  0x19, 0x19, 0xd7, 0x27, 0x92, 0xe4, 0xb1, 0xff, 0x3e, 0xe0, 0x7f, 0x1f,
+  0xe8, 0x3f, 0xfa, 0xb9, 0x96, 0x24, 0xa7, 0x65, 0xf1, 0x97, 0x6c, 0x5c,
+  0x77, 0x3f, 0xfb, 0xe1, 0xc3, 0x7f, 0x26, 0xf2, 0x7f, 0xf4, 0xce, 0x4f,
+  0xf4, 0x73, 0xed, 0xc1, 0xb6, 0xb7, 0x12, 0xff, 0xc2, 0x7f, 0x7e, 0xd8,
+  0x4c, 0x1e, 0x7b, 0xe1, 0x3f, 0x93, 0x0d, 0xbc, 0xf0, 0x41, 0x7b, 0x78,
+  0xc9, 0xbf, 0x7f, 0xf8, 0xf0, 0x70, 0x27, 0x3f, 0xf1, 0xa8, 0xf8, 0x9f,
+  0x2d, 0x7e, 0xef, 0xa7, 0x0f, 0xfc, 0x2b, 0x7d, 0xb2, 0xb6, 0xf6, 0x6e,
+  0xff, 0xed, 0xa1, 0xbd, 0x3a, 0x5e, 0x96, 0xd3, 0x64, 0x90, 0xd4, 0x65,
+  0x3a, 0xaf, 0x2e, 0xb3, 0x32, 0x49, 0x93, 0xf7, 0x67, 0xc7, 0x6b, 0x6b,
+  0xe7, 0x7f, 0x7e, 0x77, 0x72, 0x7a, 0x7e, 0x74, 0xde, 0x78, 0xec, 0xc7,
+  0x62, 0x51, 0xe7, 0xc5, 0xbc, 0xfa, 0x39, 0xf9, 0x91, 0x1e, 0x1a, 0x0e,
+  0x87, 0x3f, 0xaf, 0xad, 0xbd, 0x3e, 0x3c, 0x3f, 0x38, 0x3b, 0x3a, 0xbd,
+  0x38, 0x3a, 0x79, 0xd7, 0x78, 0x36, 0xc9, 0xab, 0x84, 0x1a, 0xab, 0x8b,
+  0x62, 0x4a, 0xff, 0xf8, 0xf6, 0x27, 0x69, 0x9d, 0x26, 0x97, 0x65, 0x31,
+  0x4b, 0x8a, 0x92, 0xbf, 0x48, 0x93, 0x2a, 0x2b, 0x6f, 0xb3, 0xb2, 0x9f,
+  0x2c, 0xab, 0x7c, 0x7e, 0x95, 0x14, 0xf3, 0x2c, 0x29, 0x2e, 0x93, 0xfa,
+  0x3a, 0xb3, 0xe6, 0xaa, 0xe5, 0x62, 0x51, 0x94, 0x75, 0x36, 0x49, 0x16,
+  0x65, 0x51, 0x17, 0xe3, 0x62, 0x5a, 0x25, 0x1b, 0xaf, 0x8f, 0x0e, 0x2e,
+  0xfa, 0xc9, 0x9b, 0xa3, 0xe3, 0x43, 0xfa, 0xf7, 0xe2, 0x14, 0xff, 0x9c,
+  0xf7, 0x93, 0xaf, 0x4f, 0x4e, 0xbf, 0x39, 0x3c, 0xeb, 0x27, 0xdf, 0x5c,
+  0xf0, 0x67, 0xfc, 0x2f, 0x7d, 0x98, 0x1c, 0xbd, 0xdd, 0x3f, 0xed, 0x5b,
+  0x73, 0xfc, 0x07, 0x7f, 0x78, 0xfc, 0x9a, 0x3e, 0x94, 0x1f, 0xfc, 0xe7,
+  0xe9, 0xc9, 0xe9, 0x13, 0xfd, 0xc1, 0x7f, 0x9e, 0x5d, 0xbc, 0xa5, 0x6f,
+  0xcf, 0x2e, 0xce, 0xe9, 0xdf, 0xf3, 0x03, 0xfe, 0x07, 0xbd, 0x9c, 0xbf,
+  0xfd, 0x0a, 0xff, 0x9c, 0xbb, 0xe6, 0xce, 0xdf, 0xca, 0xe7, 0xe8, 0xe9,
+  0xe2, 0xf0, 0xf8, 0xdd, 0xe1, 0x45, 0x92, 0xce, 0x27, 0xc9, 0x05, 0x3d,
+  0xbf, 0x39, 0x4c, 0x2e, 0xae, 0xb3, 0x64, 0x5c, 0xcc, 0x66, 0xfc, 0x11,
+  0xad, 0xc8, 0x24, 0xab, 0xf2, 0xab, 0x39, 0x4d, 0x85, 0x66, 0x7e, 0x57,
+  0x94, 0x37, 0x49, 0x72, 0x97, 0xd7, 0xd7, 0xc5, 0xb2, 0xb6, 0xe6, 0x96,
+  0xb4, 0x1a, 0x49, 0x3e, 0xaf, 0xb3, 0x32, 0x1d, 0xf3, 0x5a, 0x0f, 0xd7,
+  0x1a, 0xab, 0x5a, 0x5c, 0xd2, 0x1a, 0x56, 0xb4, 0x68, 0xa3, 0x65, 0x35,
+  0x2d, 0xd2, 0x09, 0x2f, 0x15, 0xbd, 0x72, 0xb9, 0xa4, 0x45, 0x2e, 0xf3,
+  0xf1, 0x4d, 0x95, 0x4c, 0xf3, 0x9b, 0x8c, 0x17, 0xea, 0xe3, 0xbd, 0x2d,
+  0x5c, 0x5f, 0x1a, 0x4d, 0x97, 0xb4, 0xa6, 0xf3, 0x81, 0x35, 0x57, 0xe7,
+  0xe3, 0x94, 0x3b, 0xc0, 0xca, 0x25, 0xcb, 0x05, 0xb7, 0x26, 0x2b, 0x96,
+  0x2c, 0x8a, 0x8a, 0x5e, 0x3a, 0x3f, 0x3f, 0xa6, 0x91, 0xcf, 0xe7, 0x19,
+  0xc6, 0x51, 0xf5, 0xe9, 0x8f, 0xe2, 0x26, 0xcf, 0xe8, 0x97, 0xcb, 0x7c,
+  0x9a, 0x25, 0xb2, 0xa3, 0xae, 0x39, 0xde, 0xda, 0xa4, 0xcc, 0xaa, 0xe5,
+  0x2c, 0xa3, 0xd5, 0x7b, 0x9b, 0xd5, 0xe9, 0x34, 0x9f, 0xdf, 0xd0, 0xaf,
+  0x3c, 0xf1, 0x59, 0x51, 0x66, 0xc3, 0x64, 0xbf, 0x4a, 0xee, 0x8b, 0x25,
+  0x4d, 0x78, 0x3a, 0xa5, 0x3d, 0xcf, 0x92, 0x51, 0x36, 0x2d, 0xee, 0xfa,
+  0xbc, 0xd3, 0xc9, 0x7c, 0x39, 0x1b, 0x51, 0x03, 0xc5, 0xa5, 0x6f, 0x2e,
+  0xad, 0x97, 0xd4, 0x9c, 0x3c, 0x3d, 0x4b, 0x69, 0x4e, 0xf4, 0x6e, 0x99,
+  0x5c, 0x67, 0x34, 0xe7, 0x6a, 0x91, 0xcf, 0xff, 0xa5, 0xb9, 0x2e, 0xb4,
+  0xb4, 0x8b, 0xe2, 0x2e, 0x2b, 0x69, 0x65, 0x47, 0xf7, 0x09, 0x2d, 0xc2,
+  0x48, 0x88, 0xf0, 0x92, 0x88, 0x2c, 0x49, 0xa9, 0x09, 0x47, 0x80, 0x83,
+  0x32, 0x9b, 0xa6, 0x4c, 0x4c, 0xae, 0x8f, 0x21, 0x6d, 0x62, 0xe6, 0xa8,
+  0x4d, 0x5f, 0xdd, 0x78, 0xb2, 0x89, 0x97, 0x27, 0x34, 0x93, 0x7c, 0x5a,
+  0xd1, 0x36, 0xf0, 0xb1, 0xd0, 0x67, 0x78, 0x53, 0xf9, 0x98, 0x10, 0x6d,
+  0xde, 0xcf, 0xeb, 0xf4, 0x23, 0xba, 0x57, 0xda, 0x1c, 0x4c, 0xb2, 0x45,
+  0x36, 0x9f, 0x64, 0xf3, 0x7a, 0x98, 0xfc, 0xb9, 0x58, 0xf6, 0xa8, 0xef,
+  0xcb, 0x9c, 0xd6, 0x20, 0xd5, 0xa6, 0xa8, 0x67, 0x22, 0x82, 0x71, 0x99,
+  0x2f, 0x82, 0xad, 0x28, 0xe6, 0xb4, 0xe7, 0xc9, 0xd9, 0x9b, 0x83, 0xe4,
+  0xc9, 0x8b, 0xcf, 0x9f, 0xfb, 0x3d, 0xa7, 0x06, 0x92, 0x71, 0x3a, 0xa7,
+  0x19, 0x67, 0xe3, 0xfc, 0xf2, 0x3e, 0x99, 0x2d, 0xa7, 0x75, 0xbe, 0xa0,
+  0xd5, 0xa7, 0xce, 0x2b, 0x3e, 0x40, 0x8b, 0xb4, 0xac, 0x2b, 0x26, 0x02,
+  0x7c, 0x80, 0xb9, 0xdf, 0x95, 0x79, 0xcd, 0x07, 0x09, 0xdf, 0xd1, 0x08,
+  0xb3, 0xba, 0xb2, 0xe6, 0x98, 0xd6, 0xa8, 0x9f, 0x11, 0xd1, 0x16, 0x2d,
+  0x6d, 0x5a, 0x51, 0xa7, 0x7b, 0x6b, 0x9e, 0x87, 0x5c, 0xd7, 0xf5, 0x62,
+  0x6f, 0x6b, 0xab, 0xca, 0xeb, 0x6c, 0xf8, 0x1f, 0x74, 0x0e, 0xfb, 0xf5,
+  0x5d, 0xd1, 0xaf, 0xaf, 0xcb, 0x2c, 0xfb, 0xfb, 0x90, 0x68, 0xd8, 0x3d,
+  0x49, 0xfd, 0xde, 0xeb, 0xc0, 0xae, 0xb2, 0x9a, 0x7a, 0xf8, 0xeb, 0x32,
+  0x9b, 0x73, 0x8b, 0x34, 0x8e, 0x74, 0xba, 0xb8, 0x4e, 0x69, 0x3b, 0x33,
+  0xa2, 0x46, 0x3e, 0xd9, 0x44, 0x30, 0x3c, 0x2a, 0x39, 0xdb, 0x3f, 0xfe,
+  0x1c, 0x77, 0x7a, 0x89, 0x3e, 0xe9, 0xdf, 0xa1, 0xbe, 0x95, 0xd2, 0x6a,
+  0x53, 0x6f, 0x5b, 0x4c, 0x65, 0x3f, 0xee, 0x0c, 0x76, 0xb6, 0xb7, 0x7f,
+  0x1e, 0xd6, 0x1f, 0xeb, 0x4f, 0x7e, 0x65, 0x7b, 0xdb, 0xbf, 0xc4, 0x4f,
+  0x6f, 0xf0, 0xac, 0x93, 0x29, 0x11, 0x0e, 0x0f, 0xe1, 0x6f, 0x59, 0x59,
+  0x54, 0x9b, 0x9d, 0x8d, 0x4d, 0xb3, 0x9a, 0x8e, 0x5d, 0xd0, 0x52, 0x3a,
+  0xf8, 0x5b, 0xb3, 0xeb, 0x77, 0x59, 0x05, 0xca, 0xf1, 0x33, 0x4e, 0xd2,
+  0x92, 0xa8, 0xb7, 0xa8, 0x3d, 0x93, 0xea, 0xd3, 0xd1, 0xac, 0xdd, 0xfa,
+  0xd0, 0xc9, 0xa3, 0xa7, 0x89, 0xbd, 0xa5, 0x53, 0xe6, 0x6c, 0x55, 0x32,
+  0xcf, 0x3e, 0xba, 0xb3, 0x4e, 0x3c, 0x20, 0x4b, 0xc7, 0xd7, 0x49, 0x41,
+  0x47, 0xa0, 0xec, 0xd8, 0x88, 0x74, 0x7e, 0x3f, 0x2c, 0xca, 0xab, 0xad,
+  0xb4, 0x1c, 0x5f, 0xe7, 0xb7, 0xb4, 0x18, 0x2f, 0x5e, 0x3c, 0x1f, 0xd0,
+  0x3f, 0x2f, 0x7e, 0xde, 0xba, 0x2d, 0xa6, 0xb4, 0x36, 0x4f, 0x7f, 0xde,
+  0xe2, 0x4d, 0xfe, 0x8f, 0xb4, 0x3f, 0xea, 0x8f, 0xff, 0x3e, 0xbc, 0xae,
+  0x67, 0xd3, 0x95, 0xa4, 0x43, 0x8d, 0x25, 0xe9, 0xac, 0x58, 0xce, 0x6b,
+  0x47, 0x2e, 0x44, 0x75, 0x75, 0xc0, 0x9e, 0xe8, 0xc0, 0xd2, 0x29, 0x65,
+  0xe2, 0x66, 0x2a, 0xe2, 0x73, 0x47, 0x47, 0xd4, 0x1f, 0xc8, 0x7a, 0x7c,
+  0x4d, 0x73, 0x27, 0xf2, 0x49, 0x75, 0xfe, 0x75, 0x9e, 0xf2, 0xd1, 0x24,
+  0x0e, 0xc1, 0x1c, 0x0b, 0x4d, 0x49, 0x67, 0x39, 0x3d, 0x57, 0x94, 0x93,
+  0xac, 0x6c, 0x12, 0x32, 0x86, 0xe3, 0xc7, 0x93, 0xd0, 0x5a, 0x2e, 0xa8,
+  0xf3, 0x25, 0x33, 0x3b, 0x9c, 0x35, 0x6e, 0x81, 0x4e, 0xe9, 0x15, 0x2d,
+  0x13, 0x2d, 0x0d, 0x93, 0x16, 0xaf, 0xdc, 0x7d, 0xf2, 0x8e, 0xf6, 0x4f,
+  0x38, 0x44, 0x40, 0x81, 0xb2, 0x5b, 0x1d, 0xab, 0x76, 0x77, 0x77, 0xb7,
+  0x9a, 0x94, 0xf6, 0x76, 0x22, 0x6a, 0x0a, 0x5e, 0xeb, 0xa2, 0x80, 0xbd,
+  0xdd, 0xe6, 0x0b, 0xdf, 0x13, 0x13, 0xf5, 0xe4, 0x4c, 0x03, 0xf9, 0x8f,
+  0xbf, 0x07, 0xf4, 0x70, 0xc7, 0xdf, 0xe6, 0xf3, 0xdb, 0xe2, 0x86, 0xd6,
+  0x00, 0xb7, 0x5c, 0xda, 0x58, 0xdf, 0x84, 0xf9, 0xc4, 0x6c, 0x51, 0xbb,
+  0xeb, 0x83, 0x09, 0x85, 0x3e, 0x1a, 0xa5, 0xa3, 0xe9, 0x7d, 0x72, 0x9d,
+  0xde, 0x66, 0x3c, 0xf5, 0x05, 0x51, 0x10, 0x2f, 0x06, 0xb1, 0xf5, 0x29,
+  0xf8, 0x8c, 0x1e, 0xdc, 0x49, 0xb1, 0x1c, 0xd1, 0xe1, 0xff, 0xeb, 0xb2,
+  0xa8, 0x65, 0x8d, 0xd2, 0xdb, 0x22, 0x9f, 0x34, 0xee, 0xca, 0xeb, 0x8c,
+  0x19, 0x0e, 0x77, 0x8c, 0x4b, 0x84, 0x18, 0x1e, 0x8f, 0x14, 0x47, 0x20,
+  0xaf, 0xf9, 0x3a, 0x22, 0x56, 0x45, 0xcb, 0x52, 0x24, 0xc9, 0x55, 0xc1,
+  0xf4, 0x0b, 0x06, 0x09, 0x02, 0xa4, 0xfd, 0xb9, 0x4e, 0xf9, 0xd6, 0xa1,
+  0x15, 0x70, 0x14, 0x5a, 0x66, 0xe0, 0x95, 0xd8, 0xb4, 0x74, 0xda, 0x97,
+  0xdb, 0x85, 0xdf, 0xc9, 0x3e, 0xa6, 0x33, 0x66, 0x44, 0xbd, 0x7f, 0xed,
+  0xf5, 0x93, 0xde, 0xbf, 0xf5, 0xc0, 0xe7, 0x7b, 0x7f, 0xe8, 0xf9, 0x2d,
+  0x27, 0x71, 0xe9, 0x36, 0x9f, 0xf0, 0x45, 0x41, 0x33, 0x39, 0x3a, 0xbd,
+  0x7d, 0x9e, 0xfc, 0x8d, 0xef, 0x76, 0xe2, 0x85, 0xd9, 0x47, 0xa3, 0x17,
+  0x9b, 0x1b, 0xbd, 0x9d, 0x10, 0x53, 0x4c, 0x17, 0x7c, 0xc9, 0x67, 0xe5,
+  0x98, 0x88, 0x2b, 0xbd, 0x22, 0x72, 0xa2, 0xbb, 0xd2, 0x9a, 0xe3, 0xf6,
+  0xf9, 0x15, 0x99, 0x16, 0x31, 0xb0, 0x64, 0x9e, 0xce, 0x88, 0x5e, 0x8f,
+  0x79, 0x44, 0xf9, 0x3c, 0xde, 0xd0, 0x1f, 0x2f, 0xb3, 0xcf, 0xb7, 0xf7,
+  0xf6, 0x9e, 0xfc, 0x7e, 0xf7, 0x59, 0x56, 0x5f, 0x6f, 0xff, 0xbc, 0xe5,
+  0x1e, 0x39, 0xba, 0xc4, 0xb2, 0x1b, 0x25, 0xda, 0x20, 0xe8, 0x16, 0x76,
+  0x5c, 0x9c, 0xde, 0xa7, 0xdf, 0xb3, 0xcb, 0xfc, 0x63, 0xdf, 0xe4, 0x19,
+  0x39, 0x11, 0x29, 0x51, 0x08, 0xed, 0x1f, 0x1f, 0x5e, 0x6b, 0xee, 0x6a,
+  0x99, 0x55, 0xb4, 0x92, 0x77, 0xd7, 0x69, 0x9d, 0xb8, 0x06, 0x64, 0x67,
+  0x67, 0xf9, 0xd5, 0x75, 0x9d, 0xdc, 0xa5, 0x7c, 0x19, 0x1c, 0xd5, 0xd2,
+  0x04, 0xdf, 0xc2, 0x74, 0x05, 0x5c, 0xa6, 0xc4, 0xcb, 0x79, 0x0f, 0x71,
+  0xe5, 0x8e, 0xbc, 0x04, 0x50, 0x13, 0xc5, 0xcb, 0x86, 0x78, 0x71, 0x67,
+  0x94, 0x56, 0x7c, 0xa6, 0xe6, 0x74, 0x74, 0x6b, 0xba, 0xc3, 0x97, 0xfc,
+  0xd7, 0x35, 0xdd, 0xd2, 0x58, 0x03, 0x1d, 0x28, 0x2e, 0xb2, 0x37, 0xbc,
+  0x9d, 0xbc, 0x37, 0xee, 0x72, 0xa1, 0x4d, 0xea, 0xeb, 0x36, 0xbb, 0x37,
+  0x2a, 0x3a, 0x7b, 0xc4, 0x37, 0x1c, 0x65, 0xac, 0x33, 0xfb, 0x5b, 0x97,
+  0x79, 0x62, 0x8c, 0x69, 0xc5, 0x17, 0xb9, 0x5c, 0xd7, 0x34, 0xf8, 0x60,
+  0xb2, 0xb4, 0x68, 0xe9, 0x0d, 0x8b, 0x0c, 0x2d, 0xc1, 0x04, 0xaf, 0x4d,
+  0x0a, 0x22, 0x32, 0x1a, 0x2d, 0xb1, 0x49, 0x9e, 0x19, 0x33, 0x3f, 0xac,
+  0x0a, 0x88, 0x9c, 0xda, 0xe4, 0x0f, 0xf3, 0x9a, 0xef, 0x00, 0x48, 0x99,
+  0x34, 0x5e, 0x5a, 0x14, 0x08, 0x8a, 0xc4, 0x42, 0x83, 0xf9, 0xe3, 0xfa,
+  0xa2, 0x67, 0x93, 0x5b, 0x92, 0x22, 0x48, 0x60, 0xcc, 0xdc, 0x5b, 0xb8,
+  0x6f, 0xc7, 0x2c, 0xbb, 0x4c, 0xe9, 0xbc, 0x8c, 0x8b, 0xb2, 0x64, 0x89,
+  0x9c, 0x77, 0x70, 0x24, 0x2c, 0x6e, 0x96, 0xd1, 0x35, 0x1f, 0x2e, 0x67,
+  0xce, 0x17, 0x0e, 0xb1, 0x1a, 0x92, 0x1b, 0xc0, 0x4c, 0xe8, 0x7e, 0x07,
+  0x37, 0xc6, 0xc4, 0x31, 0x3a, 0x6e, 0x7b, 0x3c, 0xce, 0x16, 0x75, 0xd5,
+  0x35, 0x27, 0xdb, 0x70, 0x1a, 0x4e, 0x99, 0xf1, 0xca, 0x87, 0x42, 0x11,
+  0xd6, 0xd5, 0x5d, 0xca, 0x90, 0x8b, 0x4c, 0xce, 0x20, 0x39, 0xa9, 0x72,
+  0xab, 0x56, 0x83, 0x36, 0x88, 0xa3, 0x61, 0xcd, 0x67, 0x3c, 0x50, 0x7e,
+  0xb8, 0x92, 0x93, 0x0a, 0xce, 0xc9, 0x1b, 0x29, 0x92, 0xb0, 0xf4, 0xcb,
+  0x97, 0x0a, 0xad, 0xa7, 0x6b, 0x9c, 0x7a, 0x75, 0x7b, 0xca, 0xdd, 0x57,
+  0xa4, 0x43, 0xd0, 0x4d, 0x3b, 0xa9, 0xae, 0x49, 0x38, 0xaa, 0xf4, 0x64,
+  0xe7, 0x33, 0xa2, 0x99, 0x5b, 0xde, 0xdf, 0x45, 0x96, 0x4d, 0x86, 0xc9,
+  0xc9, 0x25, 0x33, 0xd8, 0x92, 0x06, 0x5d, 0xe3, 0x6b, 0xe6, 0xf9, 0xb4,
+  0x6e, 0x13, 0x08, 0xd9, 0xee, 0x68, 0xc9, 0x50, 0x02, 0xe6, 0xcd, 0x94,
+  0x46, 0x8b, 0x9d, 0x30, 0x97, 0x9b, 0x36, 0x2f, 0x08, 0x9c, 0x43, 0x62,
+  0xe4, 0x3c, 0xbc, 0x51, 0x96, 0x80, 0x12, 0x47, 0x59, 0x7d, 0x97, 0x65,
+  0xae, 0xb9, 0x2a, 0xa3, 0x4b, 0x89, 0x37, 0x4d, 0x24, 0x33, 0x30, 0x43,
+  0x5e, 0xda, 0xd3, 0xb3, 0x93, 0xaf, 0xcf, 0x0e, 0xcf, 0xcf, 0x93, 0xb7,
+  0x87, 0x17, 0x87, 0x67, 0x8d, 0x95, 0x9e, 0x17, 0xe5, 0x0c, 0x3b, 0x3a,
+  0xc9, 0xab, 0xc5, 0x34, 0xbd, 0xe7, 0xad, 0xa6, 0x99, 0x5c, 0x95, 0x7c,
+  0xb2, 0x66, 0x19, 0x5f, 0x10, 0x93, 0x25, 0x38, 0x59, 0x52, 0x10, 0x7f,
+  0x48, 0x55, 0x22, 0x65, 0x66, 0x02, 0x31, 0x76, 0x7e, 0xe5, 0x57, 0x9a,
+  0x38, 0x8e, 0xde, 0x73, 0x7c, 0xd1, 0xb9, 0xfd, 0x60, 0xd1, 0x10, 0xca,
+  0x47, 0xdf, 0x7f, 0x26, 0xcb, 0x54, 0x61, 0x4e, 0x44, 0xb3, 0xf9, 0x0c,
+  0xcc, 0x8e, 0x7e, 0x7a, 0x69, 0x30, 0xbb, 0x24, 0x51, 0x98, 0xee, 0xbe,
+  0x16, 0x69, 0xb8, 0x71, 0x62, 0x5d, 0xa1, 0xd3, 0xb0, 0x92, 0x43, 0x9d,
+  0xd3, 0x58, 0x67, 0xf9, 0x9c, 0x08, 0x8c, 0x08, 0x52, 0x4f, 0x39, 0x53,
+  0x02, 0x8d, 0xf5, 0x52, 0x78, 0x82, 0xae, 0x48, 0x53, 0x59, 0xa2, 0x97,
+  0x69, 0xb3, 0x89, 0x0b, 0xba, 0xe9, 0x61, 0x50, 0x44, 0x9a, 0xcc, 0xaf,
+  0x47, 0xcc, 0x9a, 0x58, 0x63, 0x20, 0xd1, 0x2e, 0xeb, 0xec, 0xcd, 0xdd,
+  0x27, 0xf4, 0x06, 0x8d, 0x8d, 0x6e, 0x13, 0xbe, 0x20, 0xae, 0xb3, 0xf6,
+  0x2a, 0xd2, 0x21, 0x02, 0x6f, 0xb9, 0xcb, 0x2b, 0x1c, 0xaa, 0xbb, 0x62,
+  0x39, 0x25, 0xf9, 0x9c, 0x1f, 0x58, 0x2e, 0xf0, 0x02, 0x75, 0xb5, 0xf0,
+  0xa7, 0x67, 0x96, 0x7f, 0xe4, 0x55, 0x6f, 0xb7, 0x42, 0x43, 0xa3, 0x3f,
+  0x17, 0xb4, 0x09, 0x32, 0x9c, 0x61, 0x9b, 0xb7, 0x82, 0x6b, 0x44, 0x7b,
+  0xc8, 0xa7, 0x05, 0xec, 0xee, 0xf4, 0xe4, 0xfc, 0x82, 0xef, 0xce, 0xd3,
+  0xf7, 0x17, 0xd4, 0x10, 0x5d, 0x9e, 0x55, 0x4d, 0xdb, 0xc9, 0x2f, 0xce,
+  0x33, 0x28, 0x47, 0xd6, 0x1c, 0xed, 0x5a, 0x8e, 0x23, 0x0e, 0xd9, 0xc0,
+  0xba, 0x94, 0x31, 0x8a, 0xf6, 0xc8, 0xc4, 0x6b, 0xba, 0xa3, 0xdc, 0x7e,
+  0xfe, 0xa5, 0x64, 0xe3, 0x8b, 0x4d, 0xda, 0xee, 0x81, 0x6b, 0xee, 0x47,
+  0x7e, 0x1a, 0xb7, 0x76, 0x95, 0xcf, 0xf2, 0x69, 0x1a, 0x48, 0x28, 0xca,
+  0x89, 0x98, 0xae, 0xdd, 0x79, 0x1c, 0x13, 0xdb, 0xc5, 0xa0, 0xbd, 0x8a,
+  0xc4, 0x2b, 0x88, 0xd3, 0xec, 0x37, 0x6a, 0xc2, 0x17, 0x29, 0x64, 0xc0,
+  0x45, 0xee, 0x16, 0x8e, 0x77, 0x8c, 0x8f, 0x79, 0x63, 0x99, 0xda, 0xbb,
+  0x16, 0x2d, 0x1b, 0x73, 0x72, 0xe8, 0xe0, 0x6e, 0xe1, 0xd6, 0x47, 0x69,
+  0xb9, 0xee, 0x38, 0x98, 0x28, 0xc6, 0xd4, 0xe8, 0xd5, 0x92, 0x06, 0x2f,
+  0xab, 0xda, 0x4f, 0x06, 0xbf, 0xe3, 0x91, 0xb3, 0x7e, 0xe4, 0x4e, 0x34,
+  0xc9, 0xdd, 0xf3, 0xc9, 0x70, 0xed, 0x04, 0x7a, 0xb9, 0x53, 0xe2, 0x4f,
+  0x44, 0x7d, 0x4f, 0x84, 0xfd, 0x8b, 0x3e, 0x90, 0x88, 0xc6, 0x4d, 0xd2,
+  0xd7, 0x1d, 0xd1, 0x60, 0x4a, 0x4b, 0x48, 0xcc, 0xe4, 0x2d, 0x0f, 0x5d,
+  0x3b, 0x53, 0x9d, 0x1f, 0xfb, 0x44, 0xcb, 0x4a, 0xb3, 0x72, 0x57, 0xf2,
+  0x64, 0x92, 0xf3, 0x77, 0x44, 0xec, 0xc4, 0xa8, 0x97, 0x19, 0x84, 0x5b,
+  0x9d, 0xe3, 0xcc, 0xcf, 0x8d, 0xb5, 0xa5, 0xea, 0x9a, 0x84, 0xe3, 0x64,
+  0x5d, 0x18, 0xca, 0x80, 0xbb, 0x59, 0xe7, 0x85, 0x9d, 0xb5, 0x3a, 0xa1,
+  0xb9, 0x4c, 0xf4, 0xb2, 0x52, 0x01, 0x83, 0xb6, 0x6f, 0x96, 0xde, 0x87,
+  0x92, 0x28, 0x58, 0x0e, 0x46, 0x5e, 0x94, 0xee, 0xde, 0xa6, 0x9b, 0x61,
+  0xc1, 0x32, 0x81, 0xb2, 0x22, 0xf0, 0x74, 0x9c, 0x9f, 0x4a, 0x86, 0xd6,
+  0x27, 0xa1, 0x87, 0x9f, 0xbc, 0xba, 0xb6, 0x47, 0x83, 0xfb, 0x21, 0xa5,
+  0xb9, 0x31, 0x8f, 0x63, 0xb5, 0x6d, 0x62, 0xec, 0xab, 0x28, 0x45, 0x79,
+  0x9f, 0x16, 0xcc, 0x75, 0xd6, 0x45, 0xf4, 0xd2, 0x91, 0x63, 0xe8, 0x4c,
+  0x58, 0x03, 0xec, 0x2a, 0xff, 0x69, 0xcd, 0xb9, 0x61, 0xeb, 0x72, 0x55,
+  0x8f, 0x0e, 0xcd, 0x2f, 0xd4, 0x39, 0x16, 0x89, 0x6e, 0x80, 0x8a, 0xc9,
+  0xca, 0xd6, 0x1d, 0xd4, 0x46, 0x1c, 0xbb, 0x57, 0xcb, 0xe1, 0x80, 0x20,
+  0xdf, 0x5a, 0xf9, 0x0a, 0xb2, 0xb5, 0xf2, 0x63, 0x37, 0x33, 0x9a, 0xd1,
+  0x24, 0x27, 0x96, 0x46, 0x7c, 0xd5, 0x76, 0xc6, 0xeb, 0x1b, 0x1d, 0xb2,
+  0xdc, 0x7d, 0x24, 0xa4, 0xb3, 0xea, 0x1c, 0x72, 0x56, 0x1b, 0xd3, 0xe0,
+  0x84, 0x76, 0xea, 0x18, 0xf3, 0x18, 0xdc, 0x26, 0x7c, 0x1a, 0x48, 0xfa,
+  0xe5, 0xa3, 0x31, 0x38, 0x39, 0xbe, 0x0d, 0xa8, 0x9a, 0x15, 0xc4, 0x39,
+  0x5f, 0xb7, 0x7d, 0x28, 0xe1, 0xa3, 0xa2, 0x20, 0x3d, 0xcc, 0x4f, 0x8d,
+  0x95, 0xa7, 0x6c, 0xce, 0xcc, 0x4a, 0x77, 0x74, 0x30, 0x90, 0xaf, 0xd0,
+  0xf2, 0x3d, 0x29, 0x00, 0xe9, 0x55, 0x9a, 0x3b, 0x7a, 0x53, 0xc6, 0xe6,
+  0x9e, 0x9d, 0x17, 0xfa, 0x38, 0xef, 0x14, 0x5f, 0xe4, 0xca, 0x43, 0x96,
+  0xb8, 0xef, 0x32, 0x9e, 0x17, 0x31, 0x01, 0x9c, 0x64, 0x6d, 0x16, 0xd2,
+  0x8f, 0x35, 0x37, 0x82, 0xbc, 0xc7, 0xa2, 0x13, 0x38, 0x21, 0x04, 0x21,
+  0x6a, 0x72, 0x7d, 0x98, 0x7c, 0x53, 0xdc, 0x65, 0x30, 0x49, 0x41, 0x4c,
+  0xcd, 0xd9, 0xa8, 0x42, 0x12, 0xcd, 0x5d, 0x96, 0xcc, 0x48, 0x82, 0xa2,
+  0xd5, 0xc4, 0x25, 0x8a, 0xcf, 0x68, 0x9c, 0x5e, 0xf4, 0x2e, 0xee, 0xd0,
+  0xad, 0x9b, 0x84, 0xdb, 0xc9, 0x4b, 0x39, 0x11, 0xc9, 0x06, 0x2e, 0xe9,
+  0x31, 0x2f, 0xd6, 0xa2, 0xf6, 0xb3, 0x70, 0xeb, 0x41, 0x6c, 0xb3, 0x0a,
+  0x0e, 0x17, 0xdf, 0x58, 0x34, 0x82, 0xe4, 0xb3, 0xe1, 0xce, 0x8b, 0xe1,
+  0xf6, 0x90, 0x45, 0xea, 0xec, 0x36, 0x2f, 0x96, 0x15, 0xf5, 0x8e, 0xa1,
+  0x24, 0xc1, 0x9b, 0x59, 0xc9, 0xa2, 0x76, 0x71, 0x75, 0x35, 0x95, 0x0b,
+  0x7c, 0xab, 0xb8, 0xbc, 0x0c, 0xee, 0xf8, 0x32, 0x5b, 0x88, 0x28, 0xcf,
+  0x8b, 0xa3, 0x87, 0x4e, 0x78, 0x5c, 0x78, 0xb9, 0xeb, 0x72, 0x7a, 0xfd,
+  0x78, 0xf0, 0x3b, 0xda, 0xe8, 0x81, 0x71, 0xa3, 0x01, 0x31, 0xa3, 0x96,
+  0xc9, 0xf1, 0x2d, 0x9b, 0x66, 0xc2, 0x2b, 0xd1, 0xb3, 0x2e, 0x11, 0xd8,
+  0x72, 0x90, 0x96, 0xfb, 0x90, 0x5a, 0x48, 0x1c, 0x3b, 0x0b, 0x0c, 0x3e,
+  0x01, 0x91, 0x11, 0x73, 0x9a, 0x4f, 0xd2, 0x92, 0x34, 0x69, 0xb6, 0x1b,
+  0xd1, 0xc3, 0x7c, 0xda, 0x52, 0x21, 0xf7, 0xbe, 0xf0, 0x3c, 0x4f, 0x62,
+  0x83, 0x3d, 0x1e, 0x60, 0xa8, 0x55, 0x1b, 0xd7, 0xa1, 0xab, 0xa0, 0x92,
+  0x91, 0xa9, 0x28, 0x9a, 0x7a, 0xc9, 0xc4, 0x33, 0x6f, 0xd3, 0x3b, 0x2f,
+  0x8b, 0xe9, 0xb4, 0xb8, 0xe3, 0x4b, 0x84, 0x85, 0xc9, 0x60, 0x5b, 0x6d,
+  0x3b, 0xaa, 0xaa, 0x18, 0xe7, 0x62, 0x38, 0xd2, 0x45, 0x87, 0xae, 0x0c,
+  0x2b, 0x27, 0xbf, 0x5a, 0xe9, 0xed, 0xce, 0x62, 0x6b, 0x45, 0x9c, 0x24,
+  0x71, 0x7a, 0x3f, 0x4c, 0x45, 0xad, 0xe6, 0xfc, 0xa5, 0x27, 0x47, 0x52,
+  0x59, 0x31, 0x8d, 0x24, 0x67, 0x7d, 0xec, 0xce, 0xf4, 0xf6, 0x7c, 0xec,
+  0x59, 0x63, 0x70, 0x54, 0xfb, 0xad, 0xe6, 0xaa, 0x25, 0xb5, 0x41, 0xeb,
+  0x3d, 0xc9, 0xd9, 0x3e, 0x48, 0xda, 0x93, 0x98, 0xfc, 0x44, 0xd6, 0xa7,
+  0xd7, 0xc6, 0xcb, 0xaa, 0x26, 0x41, 0xd3, 0x7a, 0x95, 0xa6, 0xa8, 0x5f,
+  0x22, 0xc9, 0x7d, 0xa6, 0xb3, 0x56, 0x73, 0x44, 0x74, 0x9f, 0x0d, 0x9f,
+  0x3c, 0x1f, 0x6e, 0x07, 0x84, 0xb0, 0xcd, 0xeb, 0xcc, 0xaa, 0xd5, 0xce,
+  0x70, 0xbb, 0xf5, 0xf8, 0x06, 0xdf, 0xe9, 0x9b, 0xb6, 0xe4, 0x8d, 0x35,
+  0xc7, 0x6d, 0x6f, 0xe7, 0x80, 0xde, 0x0c, 0x6f, 0x32, 0xb9, 0xb3, 0x73,
+  0x6f, 0x9e, 0x72, 0xbd, 0xd3, 0x0e, 0xcf, 0x21, 0x0e, 0xca, 0x7d, 0x48,
+  0xf7, 0xf9, 0x9e, 0xb4, 0xb4, 0x33, 0xdc, 0x09, 0xb6, 0x5e, 0x87, 0xb3,
+  0xd3, 0x3d, 0x9c, 0x98, 0x00, 0x5a, 0x83, 0xd9, 0x31, 0xa1, 0x59, 0x24,
+  0x25, 0xd7, 0x6f, 0xab, 0x39, 0x53, 0xd5, 0xf4, 0x45, 0x5b, 0x32, 0x5d,
+  0xa4, 0x27, 0x8d, 0x45, 0xc2, 0x88, 0x76, 0x3f, 0x61, 0x79, 0x40, 0x26,
+  0x39, 0x69, 0x59, 0xdc, 0x2f, 0x6d, 0x88, 0xdf, 0x1a, 0x59, 0x15, 0x0c,
+  0x75, 0x57, 0x06, 0xd8, 0x41, 0x3a, 0xb8, 0x58, 0x70, 0x31, 0xf0, 0xc8,
+  0x97, 0x74, 0x6f, 0x95, 0x53, 0x68, 0x4d, 0x66, 0xf8, 0x24, 0x46, 0x42,
+  0xfc, 0x2d, 0x9f, 0xd6, 0x4a, 0x90, 0x62, 0x9d, 0xe2, 0xbe, 0x86, 0xed,
+  0xd1, 0x3d, 0x30, 0x1b, 0xe2, 0x86, 0xf3, 0xc5, 0xbc, 0xf5, 0xc2, 0x6b,
+  0xe1, 0xc2, 0x2a, 0x6a, 0xbf, 0x3b, 0x7d, 0x47, 0x33, 0x3b, 0x3e, 0xe7,
+  0x9b, 0x8f, 0x54, 0x53, 0x59, 0x21, 0x7c, 0x4a, 0xcb, 0x6a, 0xbc, 0xdd,
+  0x8b, 0xc2, 0x24, 0x05, 0xb7, 0x9a, 0x8b, 0x47, 0x6c, 0x06, 0x01, 0x36,
+  0x40, 0xd3, 0xb7, 0x65, 0x4a, 0x5a, 0x1b, 0xe6, 0xaa, 0xb3, 0xa8, 0xb8,
+  0xf9, 0xa1, 0xf4, 0x1c, 0xad, 0x0e, 0xa4, 0x03, 0x28, 0x83, 0xae, 0xe5,
+  0xe6, 0xbb, 0xb2, 0xb2, 0xbc, 0x2a, 0xf3, 0xec, 0xaa, 0xa8, 0xf9, 0x48,
+  0xdb, 0x67, 0xf4, 0xcc, 0xa0, 0xd5, 0x1c, 0x56, 0x0d, 0x03, 0x02, 0x67,
+  0x12, 0xfd, 0x4c, 0x55, 0x11, 0xde, 0x6b, 0xd2, 0xb4, 0x88, 0xab, 0x81,
+  0x1b, 0xac, 0x3d, 0xb4, 0xb0, 0xcf, 0xa3, 0x85, 0x4d, 0xa7, 0x2b, 0x57,
+  0x96, 0xbb, 0xda, 0x3f, 0xa6, 0xe9, 0xf1, 0xba, 0x06, 0xcb, 0x8a, 0xcf,
+  0x82, 0x65, 0x85, 0xb9, 0xd7, 0x16, 0x76, 0xf5, 0xca, 0x62, 0x69, 0x3f,
+  0x79, 0x6d, 0xb9, 0x13, 0xe9, 0xaa, 0x7d, 0x2c, 0x2b, 0xd5, 0xf6, 0x3e,
+  0x65, 0x6d, 0x83, 0xc5, 0x95, 0x4f, 0x93, 0xdd, 0x88, 0x65, 0x2d, 0x7e,
+  0x9b, 0xc5, 0xdd, 0x61, 0x46, 0x55, 0x4f, 0xab, 0xdb, 0x88, 0x2f, 0xd0,
+  0xa4, 0x37, 0xd9, 0x42, 0xc2, 0x86, 0xba, 0x90, 0x2f, 0xf0, 0x32, 0x7b,
+  0xb6, 0xf0, 0x51, 0x8c, 0x78, 0x36, 0x01, 0x67, 0x24, 0x49, 0xa3, 0x73,
+  0x38, 0x2b, 0x6a, 0x79, 0x59, 0x86, 0x3e, 0xf4, 0x46, 0x57, 0x6e, 0xd5,
+  0xdf, 0xcd, 0x3a, 0x9c, 0xe1, 0x76, 0xdf, 0xff, 0xbe, 0xd3, 0x66, 0xe1,
+  0x7c, 0x07, 0xbb, 0x6f, 0xb1, 0x86, 0x24, 0x27, 0xd4, 0x65, 0x01, 0x83,
+  0x51, 0x63, 0x88, 0xb8, 0x15, 0x89, 0x33, 0x8e, 0x49, 0x87, 0x23, 0x1e,
+  0xb9, 0x91, 0x37, 0xbc, 0x65, 0x26, 0x4b, 0xd2, 0x06, 0x8f, 0xd2, 0xf1,
+  0x0d, 0xdf, 0x44, 0xb9, 0xda, 0xa1, 0x6d, 0x9b, 0xe4, 0xb6, 0x20, 0xdd,
+  0xf6, 0x36, 0x63, 0x8f, 0x92, 0x75, 0xb4, 0x19, 0xb0, 0xd6, 0x5d, 0x5e,
+  0xc4, 0xaa, 0x9a, 0xde, 0xee, 0x7e, 0xea, 0x22, 0x72, 0x87, 0x36, 0xc2,
+  0xdd, 0x78, 0x09, 0xf5, 0x82, 0x5b, 0xb1, 0x88, 0x78, 0xdb, 0x2f, 0xe3,
+  0x79, 0x41, 0xb7, 0x7c, 0x3e, 0xb3, 0x1e, 0xf2, 0x90, 0x33, 0xb0, 0xb4,
+  0x4f, 0x4f, 0xdf, 0xae, 0x3c, 0xae, 0x43, 0xfd, 0x3a, 0x67, 0xe7, 0xd1,
+  0x24, 0x83, 0x99, 0x88, 0x0e, 0xd0, 0x04, 0xce, 0x21, 0xba, 0x7e, 0x32,
+  0x6a, 0x33, 0x10, 0xba, 0x07, 0x4f, 0x6c, 0xaa, 0x4f, 0x7e, 0xcd, 0x54,
+  0x9f, 0xfc, 0x13, 0xa6, 0xfa, 0x64, 0xe5, 0x54, 0xfd, 0x2c, 0x9e, 0xf2,
+  0x2c, 0xf2, 0xc5, 0xed, 0xd3, 0xb6, 0x18, 0xc4, 0x37, 0x9c, 0xca, 0xa3,
+  0x75, 0xe3, 0x46, 0xa4, 0x2b, 0xa4, 0x98, 0xde, 0x66, 0x2a, 0x24, 0xd0,
+  0x07, 0x47, 0xa7, 0xb7, 0x4f, 0x59, 0xec, 0x64, 0x39, 0x8d, 0xed, 0x41,
+  0x2c, 0xe5, 0x76, 0x51, 0x29, 0xab, 0xba, 0xa1, 0xda, 0xc0, 0x06, 0x4b,
+  0xb6, 0xef, 0x06, 0xa3, 0x79, 0xae, 0xa3, 0x79, 0xde, 0x35, 0x9a, 0x4f,
+  0x1f, 0xce, 0xf3, 0x60, 0x38, 0xbf, 0x70, 0x34, 0x4f, 0x83, 0xd1, 0xa4,
+  0x3c, 0x9a, 0x74, 0xc1, 0x6e, 0xb9, 0xf6, 0x16, 0x93, 0x62, 0xbf, 0xc5,
+  0x9e, 0xdd, 0x4d, 0xb3, 0xeb, 0xab, 0x8b, 0x63, 0xee, 0x3c, 0xa2, 0x90,
+  0xff, 0xd9, 0x01, 0xa9, 0x43, 0x95, 0x76, 0x54, 0xcb, 0x6d, 0x4b, 0xaf,
+  0x69, 0xc9, 0x5e, 0x0b, 0x75, 0x90, 0x06, 0x52, 0x2e, 0xfd, 0x8f, 0xb6,
+  0xdb, 0x79, 0xe6, 0xd8, 0x12, 0xcf, 0x2a, 0xbf, 0x2a, 0xf3, 0xa0, 0x0b,
+  0x7e, 0xa7, 0x2d, 0x79, 0x14, 0x59, 0xc5, 0x6a, 0x5f, 0xf6, 0x31, 0x67,
+  0x87, 0x6c, 0xae, 0x06, 0x64, 0x52, 0xf3, 0x92, 0xb1, 0x18, 0xe6, 0x87,
+  0xec, 0x94, 0x02, 0x55, 0x89, 0x85, 0x11, 0x83, 0x4d, 0x2e, 0xa7, 0xe9,
+  0x55, 0xc7, 0xd5, 0x98, 0x5f, 0xcd, 0x0b, 0x75, 0x90, 0x56, 0x44, 0x75,
+  0xf0, 0x68, 0x2b, 0x21, 0x56, 0xc4, 0x45, 0xe6, 0xe3, 0xe9, 0x12, 0x2e,
+  0xb2, 0x13, 0x9a, 0xe0, 0xf9, 0xf9, 0x37, 0x21, 0x3b, 0xd8, 0xe7, 0x15,
+  0x64, 0x91, 0x72, 0x90, 0x5e, 0xb1, 0x74, 0xf9, 0x52, 0x7e, 0x54, 0x35,
+  0xf3, 0xea, 0x2f, 0xba, 0xe5, 0x9d, 0x73, 0xd5, 0x21, 0x61, 0xe7, 0xe7,
+  0x57, 0xf7, 0x83, 0x77, 0x78, 0xfd, 0x2a, 0xbf, 0x8e, 0x72, 0x47, 0xe8,
+  0xa1, 0x68, 0x73, 0x32, 0x1e, 0x2b, 0xf1, 0xb2, 0x09, 0x6b, 0x3d, 0xb0,
+  0x5c, 0x26, 0x07, 0x5f, 0x1f, 0xf1, 0x34, 0xd3, 0x7c, 0x2a, 0x66, 0x35,
+  0x9d, 0x76, 0x9e, 0x4d, 0x59, 0x63, 0xc2, 0x9a, 0xc1, 0xf1, 0x99, 0x84,
+  0x66, 0x7a, 0xfd, 0x6f, 0xfd, 0x6d, 0xf1, 0x37, 0x5a, 0xc5, 0x74, 0xeb,
+  0xe9, 0x70, 0x7b, 0x9d, 0x45, 0x78, 0xba, 0xac, 0xb2, 0xf9, 0xb8, 0x60,
+  0x4f, 0xc5, 0x68, 0x9a, 0xce, 0x6f, 0x2a, 0x51, 0xba, 0x44, 0x13, 0xe1,
+  0xb1, 0xf6, 0xe9, 0xf8, 0x95, 0x65, 0xb1, 0x9c, 0x4f, 0x3a, 0xb6, 0x5c,
+  0xa7, 0x83, 0x23, 0xaf, 0xe6, 0x52, 0xb8, 0x67, 0x88, 0x64, 0xca, 0x1b,
+  0x33, 0xcb, 0xf2, 0x95, 0x00, 0xa7, 0x0b, 0x6f, 0x1d, 0xc6, 0xe5, 0xc4,
+  0xfd, 0x56, 0x73, 0x83, 0x6f, 0x20, 0x66, 0x13, 0xd9, 0xb0, 0x3b, 0x5c,
+  0xce, 0x49, 0x61, 0x46, 0xdc, 0xe8, 0x16, 0x3c, 0xba, 0x94, 0xa9, 0xeb,
+  0x83, 0x76, 0x43, 0x9b, 0xe2, 0x01, 0xbe, 0x22, 0x0e, 0xf6, 0x69, 0x5a,
+  0xd5, 0x30, 0xf4, 0x18, 0x05, 0xf1, 0x83, 0xa1, 0x28, 0x9d, 0xce, 0xef,
+  0x39, 0x40, 0xe0, 0x53, 0x44, 0xe9, 0xcb, 0xfc, 0x8a, 0x38, 0xa8, 0x58,
+  0xb8, 0x10, 0x53, 0x60, 0xa1, 0x04, 0xac, 0x9b, 0x5d, 0x17, 0x20, 0x30,
+  0x92, 0x69, 0xb3, 0xe9, 0x65, 0xd7, 0x79, 0x35, 0xe5, 0x1c, 0xfa, 0xab,
+  0x30, 0x63, 0x0c, 0x2c, 0x38, 0x0a, 0xec, 0x80, 0x4e, 0xc6, 0xd3, 0x34,
+  0x9f, 0x55, 0x0d, 0xf1, 0x75, 0xd8, 0xc5, 0x4d, 0xd8, 0xfc, 0xca, 0xef,
+  0x8f, 0xd8, 0xa4, 0x5e, 0x56, 0x6c, 0x2a, 0xe1, 0x0d, 0x49, 0x4d, 0xa2,
+  0x16, 0x83, 0xf5, 0x75, 0x36, 0xbe, 0x01, 0xd9, 0x05, 0x66, 0xc4, 0x36,
+  0x47, 0x95, 0x55, 0xc7, 0x82, 0x2d, 0x39, 0x9c, 0x80, 0x44, 0x0f, 0x76,
+  0xca, 0xe5, 0xf3, 0xc9, 0x72, 0x8c, 0x63, 0xcb, 0x96, 0x11, 0x12, 0xc7,
+  0xca, 0x94, 0xc5, 0x9b, 0x5a, 0xc2, 0x37, 0x40, 0x17, 0x03, 0x22, 0x82,
+  0x45, 0xe7, 0xe8, 0xe0, 0xdc, 0x10, 0x99, 0xb4, 0xc1, 0x0e, 0x2a, 0x75,
+  0x05, 0xc0, 0xca, 0x6e, 0x9a, 0x5e, 0x73, 0x35, 0x5b, 0xcd, 0xc9, 0xda,
+  0xf6, 0xe9, 0xba, 0xc9, 0xe9, 0xf6, 0x36, 0xff, 0xf2, 0xa4, 0x50, 0x52,
+  0x1a, 0x90, 0x6e, 0x5e, 0xe5, 0x63, 0x31, 0x4a, 0xe5, 0x57, 0x19, 0x33,
+  0x0c, 0x16, 0x34, 0xeb, 0xe9, 0x4c, 0x82, 0x30, 0xda, 0x84, 0x36, 0x70,
+  0x12, 0x5a, 0x44, 0x56, 0x21, 0x47, 0x11, 0x75, 0xc4, 0xd1, 0x87, 0x99,
+  0x48, 0x43, 0x83, 0x59, 0x2e, 0xb6, 0x4b, 0x1a, 0x8a, 0xf0, 0xcc, 0x36,
+  0xdf, 0x81, 0x8f, 0xa3, 0xaa, 0x89, 0xb7, 0xf4, 0xf9, 0x88, 0x8c, 0x61,
+  0x78, 0x66, 0xa3, 0x9e, 0x59, 0x14, 0xcd, 0x34, 0x3a, 0x62, 0x21, 0x90,
+  0xbd, 0x4d, 0x77, 0xf9, 0x58, 0x1c, 0x0d, 0x70, 0x96, 0x75, 0x98, 0x08,
+  0xc6, 0xd3, 0x9c, 0x1f, 0x9c, 0x91, 0x5a, 0xcb, 0x6f, 0x89, 0xd4, 0xcc,
+  0x77, 0x08, 0x69, 0xf0, 0xc4, 0x14, 0x8f, 0xc4, 0xbe, 0x01, 0x73, 0x59,
+  0x75, 0x0d, 0x13, 0x77, 0x5a, 0xe6, 0xf0, 0x46, 0x45, 0xcd, 0xc9, 0x98,
+  0x79, 0x92, 0xe1, 0x38, 0xa1, 0x56, 0x89, 0xc1, 0xd7, 0xdb, 0x0a, 0x70,
+  0x76, 0x98, 0xeb, 0x04, 0x07, 0x67, 0xc4, 0xe7, 0x55, 0x22, 0x63, 0x92,
+  0x97, 0x7c, 0x77, 0xbd, 0xe2, 0xd9, 0xac, 0x60, 0x89, 0xa7, 0xf0, 0x81,
+  0x5d, 0x37, 0x8d, 0xc1, 0x01, 0xeb, 0x13, 0x93, 0x89, 0xb4, 0x06, 0x87,
+  0x21, 0x53, 0x4f, 0xe7, 0xdd, 0x4f, 0x14, 0xc5, 0xec, 0xd0, 0xb5, 0xb5,
+  0xf0, 0x96, 0x21, 0xda, 0x9a, 0x2c, 0xbf, 0x35, 0xf7, 0x73, 0x20, 0x59,
+  0xc3, 0x75, 0xbf, 0x7e, 0x9e, 0xd5, 0xed, 0xe6, 0x0e, 0xd0, 0xe1, 0xde,
+  0x7a, 0x10, 0x01, 0x20, 0xad, 0xea, 0xda, 0x8d, 0x32, 0xf3, 0xd7, 0x8a,
+  0x25, 0x86, 0x98, 0x28, 0x47, 0x90, 0xed, 0xbc, 0xfa, 0x6e, 0xff, 0xf8,
+  0xfd, 0xe1, 0xce, 0x9f, 0xda, 0xe4, 0x43, 0xdf, 0xed, 0xca, 0x77, 0xbb,
+  0xeb, 0x5d, 0x3c, 0x8b, 0x28, 0x28, 0x49, 0x7a, 0xaf, 0x7a, 0x49, 0x75,
+  0x3f, 0x1b, 0x15, 0x53, 0xc7, 0xb7, 0xb4, 0x13, 0x1e, 0x45, 0x5f, 0x5d,
+  0x1f, 0xe6, 0x80, 0xc6, 0xc2, 0xf0, 0x15, 0xd9, 0x1e, 0x3b, 0x1c, 0xa0,
+  0x2a, 0x97, 0x81, 0x02, 0xd2, 0x49, 0xb8, 0x18, 0x55, 0x8d, 0x2b, 0x4f,
+  0x37, 0x88, 0x5b, 0xae, 0x84, 0x20, 0xfb, 0x89, 0x9c, 0xa4, 0x36, 0x3b,
+  0x97, 0x19, 0x3b, 0xd7, 0x96, 0x19, 0x00, 0x55, 0x11, 0x49, 0x44, 0xd6,
+  0xbe, 0x27, 0xf2, 0xad, 0xd9, 0x7a, 0xf2, 0xbe, 0x12, 0xa6, 0x92, 0x57,
+  0x7a, 0x3e, 0xdb, 0x0c, 0x8f, 0x99, 0x3e, 0xfb, 0x2b, 0x6f, 0xd3, 0x5a,
+  0x1d, 0x32, 0xeb, 0x3a, 0x96, 0x45, 0x4a, 0x1c, 0xbd, 0x5c, 0xd7, 0xf3,
+  0xec, 0xc3, 0x9c, 0xd4, 0x3e, 0xc0, 0x07, 0xac, 0x8c, 0xed, 0x32, 0x74,
+  0xea, 0xb8, 0x47, 0x0d, 0xc5, 0xe2, 0xe8, 0x3a, 0xe3, 0x08, 0x7c, 0xa0,
+  0x68, 0xd4, 0xec, 0x12, 0xbc, 0xd7, 0x23, 0xd9, 0x2b, 0x33, 0x3d, 0xbf,
+  0xe2, 0xfd, 0x6b, 0x93, 0x3e, 0x35, 0x36, 0xca, 0xe7, 0x46, 0xdb, 0xaa,
+  0x86, 0x0d, 0x8e, 0x99, 0xa2, 0xa7, 0x85, 0xb2, 0x74, 0x6f, 0x60, 0x55,
+  0xff, 0xa6, 0xa3, 0x81, 0x4e, 0xdb, 0x9d, 0xc5, 0x86, 0x15, 0x89, 0x6c,
+  0x85, 0x0d, 0x54, 0xce, 0x96, 0x23, 0xa7, 0x05, 0x31, 0xf7, 0xb9, 0x50,
+  0xbe, 0x72, 0xdd, 0xa4, 0x28, 0x3b, 0x9a, 0x7b, 0x97, 0xd5, 0x88, 0x0a,
+  0xd8, 0xd2, 0x4b, 0xdb, 0x36, 0x12, 0xbd, 0xc8, 0x40, 0x22, 0x02, 0x73,
+  0x23, 0xf5, 0xfe, 0x4c, 0xb1, 0xb4, 0x86, 0x47, 0xd5, 0x3c, 0xa1, 0xd8,
+  0xe4, 0x14, 0x57, 0xfe, 0x62, 0xc9, 0x52, 0xd9, 0xbb, 0x22, 0x5a, 0x24,
+  0x99, 0x81, 0x8b, 0x88, 0x81, 0x17, 0x8e, 0x74, 0x72, 0x3b, 0xbf, 0xdc,
+  0xd7, 0x90, 0xc5, 0x08, 0xd0, 0x9a, 0x8f, 0x92, 0xd3, 0x8b, 0xae, 0xcd,
+  0x77, 0xc7, 0x7e, 0x14, 0x83, 0xbf, 0xa4, 0x76, 0xc9, 0xff, 0x86, 0x57,
+  0xfb, 0x57, 0x2a, 0xbb, 0x0d, 0xd2, 0x6a, 0x9c, 0xe7, 0x5d, 0x02, 0x30,
+  0x87, 0x40, 0x6e, 0x26, 0x87, 0xb0, 0x2a, 0x24, 0xfb, 0xe7, 0x07, 0x47,
+  0x47, 0xce, 0x43, 0x3a, 0x94, 0x88, 0x02, 0xc4, 0x3e, 0xaa, 0x98, 0x05,
+  0x07, 0x81, 0x84, 0x90, 0x8c, 0xda, 0xb3, 0xcb, 0xd8, 0x56, 0x3b, 0x36,
+  0xd3, 0x84, 0xd0, 0x1e, 0x3d, 0xce, 0x26, 0x55, 0x5c, 0x27, 0x74, 0x61,
+  0x54, 0x6a, 0x69, 0xff, 0x53, 0x7d, 0xbf, 0xc8, 0x5e, 0xed, 0xaf, 0x0f,
+  0x43, 0x15, 0xa5, 0xbd, 0xf6, 0xe9, 0x92, 0x45, 0x7f, 0xe1, 0x45, 0xb8,
+  0x19, 0x78, 0x95, 0x27, 0xea, 0x0d, 0x55, 0xb6, 0xc4, 0x9e, 0x8d, 0x19,
+  0x8b, 0x6f, 0x97, 0xf0, 0x07, 0xcd, 0x9f, 0x90, 0x66, 0x78, 0x4f, 0x57,
+  0xed, 0xac, 0x0a, 0xe5, 0x1b, 0xdc, 0x8e, 0x9f, 0x6a, 0x28, 0x54, 0x93,
+  0xc5, 0x57, 0xfc, 0x4e, 0xd2, 0x16, 0x72, 0x56, 0xca, 0x6e, 0xa6, 0xe0,
+  0x71, 0x98, 0xc5, 0x30, 0xbc, 0xff, 0x71, 0x30, 0xcc, 0x4e, 0x23, 0x71,
+  0x2c, 0xad, 0x9d, 0x5d, 0xb2, 0xb5, 0x33, 0x62, 0xf2, 0x39, 0xdd, 0xde,
+  0xc4, 0x77, 0x88, 0x94, 0xe6, 0xfc, 0xd3, 0xf9, 0x36, 0x72, 0x4c, 0x9f,
+  0x35, 0x8a, 0x92, 0x03, 0x6c, 0x1a, 0xdc, 0x9f, 0xa5, 0xcb, 0xce, 0xb5,
+  0x94, 0xeb, 0x9c, 0xa3, 0x01, 0x21, 0x74, 0x78, 0x4b, 0xf1, 0x0a, 0x21,
+  0x6e, 0xc3, 0x6c, 0xca, 0x2a, 0x44, 0x44, 0xf2, 0x83, 0x49, 0x19, 0xb4,
+  0xea, 0x81, 0x30, 0xb1, 0x19, 0x51, 0xf2, 0xfb, 0x0a, 0x1e, 0x5d, 0x52,
+  0x8c, 0xae, 0xb3, 0x52, 0x8f, 0xe2, 0xd2, 0xf4, 0x09, 0x71, 0x21, 0x7d,
+  0x54, 0x27, 0xc3, 0xc7, 0xfb, 0xe8, 0xed, 0xf3, 0x2c, 0x13, 0x62, 0xd3,
+  0x07, 0x64, 0x23, 0x83, 0x9d, 0x6d, 0x9f, 0xa7, 0x97, 0x38, 0xfb, 0x7c,
+  0x2d, 0x3c, 0xa6, 0x97, 0x14, 0xca, 0x39, 0xf1, 0x82, 0x73, 0x5a, 0x1b,
+  0x1d, 0x88, 0xaf, 0x1d, 0xa1, 0xa3, 0x7a, 0xa4, 0xdb, 0xbc, 0xfd, 0x92,
+  0x5d, 0xda, 0x12, 0xdf, 0x45, 0x8a, 0x27, 0xdf, 0x52, 0x4e, 0x54, 0x18,
+  0x26, 0x07, 0xb0, 0x69, 0x72, 0x1b, 0x15, 0x1a, 0x31, 0x36, 0xe2, 0xb7,
+  0x2a, 0xa2, 0x9e, 0xd4, 0x45, 0x8c, 0x79, 0xce, 0x85, 0xb1, 0xd1, 0x26,
+  0xdc, 0x65, 0x88, 0xca, 0x69, 0x34, 0xe5, 0x2e, 0x7a, 0xbc, 0xd6, 0x4d,
+  0x8c, 0x72, 0xf5, 0x6f, 0x54, 0x9b, 0x10, 0x8a, 0xe6, 0x85, 0x7b, 0x99,
+  0x5d, 0x6f, 0x37, 0xf3, 0xe2, 0x8e, 0x64, 0x9d, 0x79, 0x21, 0x27, 0xcc,
+  0xf8, 0x07, 0x8f, 0xba, 0x7d, 0xcd, 0x12, 0xbf, 0x0b, 0xee, 0x80, 0xf0,
+  0xc9, 0xda, 0x85, 0xc3, 0xa9, 0x41, 0x58, 0x59, 0xb6, 0x2d, 0x5b, 0xd2,
+  0xa5, 0xd9, 0x2a, 0xeb, 0x16, 0x69, 0x00, 0x6e, 0x13, 0x68, 0x45, 0xfe,
+  0x06, 0xb1, 0x6b, 0x3d, 0x35, 0xa5, 0x8a, 0x1d, 0xaf, 0xfd, 0x64, 0x7d,
+  0xb0, 0xde, 0xef, 0x38, 0x79, 0x36, 0xa9, 0xf6, 0xb8, 0x1c, 0xbb, 0xe8,
+  0xb8, 0x24, 0xe0, 0x88, 0x8b, 0x5c, 0x5f, 0x1a, 0xf3, 0xa3, 0x37, 0xb6,
+  0x0c, 0xc8, 0xe6, 0x91, 0xcd, 0xaf, 0x10, 0xc1, 0xc7, 0x27, 0xa9, 0x2d,
+  0x9c, 0x7b, 0xfb, 0x80, 0x5c, 0xdc, 0x4e, 0xd5, 0xd1, 0xa1, 0x0d, 0x93,
+  0xfd, 0xb9, 0x04, 0x75, 0xdd, 0xa5, 0x20, 0x3d, 0xd7, 0x05, 0xe4, 0x9c,
+  0xf6, 0x6a, 0x17, 0x4e, 0x4d, 0x6a, 0xdc, 0x5a, 0x0f, 0xdd, 0x15, 0xd6,
+  0x55, 0xc2, 0x87, 0x80, 0x78, 0x74, 0x0f, 0x92, 0xb1, 0xda, 0x09, 0xe0,
+  0x2a, 0x77, 0x8b, 0x22, 0xf7, 0xc6, 0xdd, 0x75, 0x31, 0x15, 0xd7, 0x5d,
+  0xab, 0x39, 0x2f, 0xf0, 0x26, 0x77, 0x70, 0x3b, 0x8b, 0xa6, 0xcd, 0x36,
+  0x96, 0x5b, 0x7a, 0xbf, 0xcc, 0x60, 0xb7, 0xe5, 0x88, 0x3d, 0xd2, 0x8a,
+  0xa9, 0xaf, 0x69, 0x96, 0x96, 0xd3, 0x7b, 0x13, 0x86, 0x06, 0xb7, 0xad,
+  0xe6, 0xb0, 0xa2, 0x6c, 0x16, 0x21, 0x0a, 0x4b, 0xcb, 0x39, 0x3f, 0xa3,
+  0xae, 0x42, 0x0b, 0x96, 0xad, 0xc5, 0x79, 0x2b, 0x1e, 0x66, 0xbe, 0x95,
+  0x6f, 0x73, 0x56, 0xbd, 0x88, 0xd8, 0x48, 0x80, 0x6f, 0x53, 0x22, 0x1b,
+  0x35, 0x41, 0x32, 0x68, 0x52, 0x22, 0x63, 0xae, 0xf3, 0x40, 0x5f, 0xa3,
+  0xa3, 0x78, 0x4d, 0x37, 0x24, 0x29, 0x91, 0xcb, 0x74, 0xd5, 0x72, 0xe9,
+  0x55, 0x66, 0x5e, 0xe1, 0xc7, 0x6e, 0xd7, 0xe6, 0x79, 0xec, 0x92, 0x40,
+  0x57, 0xdc, 0xbd, 0x07, 0xb2, 0x79, 0xc4, 0x5c, 0xe7, 0x4b, 0xba, 0x80,
+  0xeb, 0xe4, 0x65, 0x71, 0x79, 0x49, 0xa4, 0xfe, 0x45, 0x24, 0x81, 0xcb,
+  0x23, 0x5b, 0x67, 0x88, 0xa0, 0x0f, 0x58, 0x7a, 0x33, 0xa8, 0x2c, 0x49,
+  0xed, 0x94, 0x5c, 0xe5, 0xbc, 0x17, 0x89, 0x34, 0x37, 0xec, 0x10, 0x81,
+  0x9a, 0x4f, 0x04, 0x17, 0x91, 0x78, 0xc5, 0x7d, 0xc8, 0x3d, 0x5d, 0xd5,
+  0xb5, 0x79, 0x93, 0x74, 0x1a, 0x6d, 0xa1, 0xf8, 0x26, 0x5f, 0x2c, 0x78,
+  0xb3, 0x10, 0xac, 0xeb, 0x54, 0x25, 0x6e, 0x6d, 0x94, 0xd1, 0x99, 0xc0,
+  0x9e, 0x9a, 0x4f, 0xb9, 0x58, 0x92, 0x00, 0x60, 0x72, 0xe0, 0x28, 0xa3,
+  0x93, 0xde, 0x6e, 0xce, 0x24, 0x7b, 0x1f, 0x97, 0xa5, 0x92, 0xd4, 0x84,
+  0x63, 0xb0, 0xe6, 0xca, 0x40, 0x79, 0x9b, 0x7c, 0xa8, 0x87, 0x6a, 0x96,
+  0x5d, 0x87, 0xdf, 0x5b, 0xb1, 0xdc, 0x81, 0x3e, 0x3f, 0xfa, 0xdf, 0x87,
+  0x3e, 0x8a, 0xce, 0x85, 0xa9, 0xdd, 0x83, 0xda, 0xbb, 0x2e, 0x28, 0x62,
+  0x2c, 0x07, 0xc9, 0x60, 0x1d, 0x03, 0x61, 0x4e, 0x6b, 0x97, 0x00, 0x5d,
+  0x8d, 0x05, 0xbb, 0x9e, 0x25, 0xdc, 0x10, 0x71, 0xfc, 0x4c, 0x70, 0xac,
+  0x47, 0x96, 0xd9, 0x16, 0x3b, 0xfc, 0x63, 0x03, 0x93, 0x24, 0x41, 0xe8,
+  0x62, 0x7b, 0x39, 0xea, 0xa8, 0x96, 0xc8, 0x4f, 0x48, 0x34, 0xfc, 0x9d,
+  0xec, 0x8f, 0x84, 0x32, 0x6d, 0x41, 0xfc, 0x94, 0x40, 0xbc, 0x98, 0x17,
+  0xa8, 0xc1, 0x45, 0xc2, 0x8e, 0x3a, 0x98, 0xd9, 0x3f, 0xd0, 0x0c, 0x34,
+  0xce, 0x17, 0xd7, 0x2c, 0x8d, 0xbf, 0x44, 0x74, 0x03, 0x5b, 0x9e, 0xe4,
+  0x83, 0x2f, 0x3a, 0x6d, 0xe3, 0xe7, 0x7a, 0x2e, 0x2a, 0xbd, 0x49, 0xed,
+  0x6d, 0xe5, 0x5f, 0xb9, 0xc5, 0x97, 0x5b, 0xbc, 0xa4, 0x46, 0xd4, 0x50,
+  0xd3, 0x6d, 0x96, 0x43, 0x47, 0xd2, 0x5e, 0x16, 0xad, 0xde, 0x87, 0xa0,
+  0x20, 0x06, 0xd4, 0xbe, 0x1d, 0x26, 0x67, 0x7c, 0x4f, 0x2e, 0x17, 0x1c,
+  0xa2, 0x88, 0x0c, 0x15, 0x7c, 0x1e, 0x79, 0xbe, 0xaa, 0x3a, 0x74, 0xe0,
+  0x22, 0x85, 0x23, 0xec, 0x6e, 0xde, 0x10, 0x8c, 0xf2, 0xf0, 0x3b, 0x92,
+  0x55, 0xf7, 0xda, 0x86, 0x21, 0xf6, 0x45, 0x69, 0x88, 0x38, 0x31, 0xc7,
+  0x79, 0x55, 0x4d, 0x11, 0x97, 0x3f, 0x29, 0xc6, 0xd5, 0x56, 0xba, 0x58,
+  0x54, 0x5b, 0x36, 0xba, 0x46, 0x04, 0xbe, 0xa9, 0xc3, 0xe7, 0xe7, 0xc1,
+  0xe4, 0xf8, 0xde, 0x15, 0x83, 0x95, 0x93, 0xc0, 0xa6, 0x70, 0xc1, 0xcd,
+  0xd5, 0xee, 0x2a, 0x51, 0x35, 0x5f, 0xcf, 0x97, 0x17, 0xc7, 0xe7, 0x58,
+  0xaf, 0xf6, 0xd5, 0xc9, 0x31, 0xe1, 0xb6, 0x3b, 0xdc, 0xb6, 0x35, 0x0d,
+  0x0d, 0x4f, 0xb4, 0xa6, 0xf3, 0xf3, 0x03, 0x7c, 0x78, 0xbe, 0x64, 0x19,
+  0x86, 0xba, 0x28, 0xef, 0x13, 0x33, 0x0f, 0xb7, 0x89, 0x9f, 0xa6, 0x9b,
+  0x7c, 0xea, 0x7f, 0xb6, 0x10, 0x57, 0x79, 0x3d, 0xbc, 0xcc, 0x26, 0x45,
+  0x99, 0x46, 0x36, 0xb4, 0x82, 0x33, 0x24, 0xb0, 0x3a, 0x63, 0x7a, 0x6a,
+  0x8b, 0x04, 0xf3, 0x0f, 0xb4, 0x5e, 0x43, 0xfe, 0x1d, 0x4a, 0x9f, 0x2c,
+  0x9a, 0x7d, 0xcc, 0xeb, 0xf5, 0xbb, 0xd7, 0x08, 0xd6, 0xa3, 0xd3, 0x50,
+  0xfd, 0x96, 0x84, 0x4d, 0x42, 0x1a, 0x3c, 0x09, 0x93, 0x6e, 0xa9, 0xf0,
+  0xcc, 0xac, 0x85, 0x89, 0x7f, 0xd2, 0x07, 0xef, 0xb5, 0x53, 0xd3, 0x48,
+  0x0e, 0xbb, 0x2a, 0xe8, 0x3e, 0xbd, 0x9e, 0xb5, 0xd7, 0x53, 0xb4, 0x77,
+  0x73, 0xb5, 0x69, 0xfe, 0x53, 0x52, 0x71, 0x60, 0xbf, 0x70, 0x84, 0xe5,
+  0x3c, 0xe8, 0x80, 0x16, 0x83, 0x78, 0xc5, 0x5c, 0x25, 0xa1, 0x8e, 0xed,
+  0x69, 0xcd, 0xdc, 0x82, 0xe0, 0x95, 0xdf, 0xc1, 0x84, 0x5e, 0x89, 0x61,
+  0x72, 0x39, 0xf7, 0x79, 0x72, 0x62, 0xd0, 0x66, 0xd3, 0x75, 0xd7, 0xe8,
+  0xb0, 0x44, 0xad, 0x5b, 0xbc, 0xb9, 0x54, 0x38, 0xaf, 0x03, 0x5e, 0x5e,
+  0xe6, 0x76, 0x2f, 0x2b, 0x12, 0x69, 0xa8, 0x9f, 0x2f, 0xa2, 0xd0, 0x9f,
+  0x8f, 0xf9, 0x6c, 0x39, 0x4b, 0xb0, 0x0f, 0x62, 0x34, 0xd7, 0x27, 0x4d,
+  0xdb, 0xe0, 0x6b, 0x1a, 0xc1, 0x31, 0xe8, 0xb8, 0x57, 0x05, 0xac, 0x20,
+  0xe6, 0x9b, 0x35, 0xc9, 0x50, 0xa6, 0x36, 0x69, 0x80, 0xd5, 0x8c, 0x43,
+  0x23, 0x9a, 0x2c, 0x24, 0x59, 0x5c, 0xa7, 0x55, 0xe6, 0x23, 0x6a, 0x65,
+  0xbd, 0xc3, 0xe0, 0xe8, 0x46, 0x8c, 0xb4, 0x65, 0x4e, 0x78, 0x86, 0x4b,
+  0xc2, 0x4d, 0x5e, 0x4c, 0x9c, 0x33, 0xc5, 0x2e, 0xe7, 0x64, 0xc0, 0xcd,
+  0xf1, 0x75, 0xa1, 0xdf, 0xb4, 0x35, 0xdb, 0x8f, 0x70, 0xda, 0x9c, 0xc3,
+  0x7e, 0x69, 0xce, 0xbf, 0xcf, 0x86, 0x4f, 0x76, 0xd9, 0xab, 0x1b, 0x12,
+  0xa9, 0x86, 0x92, 0x13, 0xd7, 0x19, 0xe7, 0x33, 0x17, 0x9f, 0xb7, 0x5a,
+  0xaf, 0x81, 0x90, 0x37, 0x63, 0x39, 0x61, 0x96, 0x7e, 0xc4, 0x9a, 0xff,
+  0xf6, 0x26, 0x81, 0x81, 0x88, 0x85, 0xa4, 0xc2, 0x95, 0x6d, 0x82, 0x6b,
+  0xb8, 0xc1, 0x68, 0x71, 0xfe, 0x42, 0xf4, 0xda, 0x32, 0x10, 0x59, 0xbc,
+  0x5a, 0x2b, 0x33, 0x42, 0xda, 0xec, 0xb2, 0x09, 0xd1, 0x56, 0x10, 0xb9,
+  0x73, 0xa8, 0x41, 0xc2, 0x76, 0x25, 0x0e, 0x15, 0xe3, 0x13, 0x5f, 0xd0,
+  0x07, 0xd7, 0x39, 0x8d, 0xbd, 0x1c, 0x5f, 0xdf, 0xb3, 0x72, 0xc3, 0xf6,
+  0x5a, 0xf6, 0x69, 0x3d, 0x60, 0x10, 0x40, 0x1f, 0x6a, 0x43, 0xa5, 0xc1,
+  0x27, 0x7c, 0x78, 0xe8, 0x31, 0x13, 0x13, 0x5a, 0xe3, 0x63, 0x91, 0x9b,
+  0x0f, 0x6e, 0x36, 0xad, 0x32, 0x1c, 0xb1, 0xae, 0xd1, 0x0d, 0x8a, 0x40,
+  0xe5, 0xc0, 0xed, 0xcc, 0x0a, 0x51, 0x5e, 0xb2, 0xc0, 0x2b, 0xe6, 0x3e,
+  0xe9, 0x8a, 0x8d, 0xd6, 0xd2, 0x1b, 0xab, 0x61, 0xac, 0xae, 0xdd, 0xc7,
+  0x34, 0xc2, 0x0a, 0xb1, 0xbe, 0x6e, 0x6b, 0x6f, 0xae, 0xba, 0x48, 0x05,
+  0x29, 0xf4, 0x2b, 0xd3, 0xd5, 0x6c, 0x55, 0x72, 0xcb, 0x23, 0x12, 0xae,
+  0xc3, 0xf2, 0x0d, 0x0d, 0x45, 0xf2, 0x4f, 0x99, 0x93, 0xd3, 0xfe, 0x5d,
+  0xd6, 0x91, 0x4d, 0x38, 0xd8, 0xd2, 0xe6, 0x4e, 0x4f, 0x2f, 0x59, 0xbc,
+  0x24, 0x1a, 0xa9, 0x93, 0xe3, 0x37, 0x7c, 0x35, 0x1f, 0x9c, 0xd1, 0xcf,
+  0xdc, 0x3c, 0x9c, 0x2c, 0xb7, 0x23, 0x7f, 0x94, 0xcd, 0x27, 0x6f, 0xbf,
+  0x3b, 0x4f, 0x36, 0x4e, 0xce, 0xb7, 0x9e, 0xbc, 0xd8, 0x8e, 0x15, 0xf9,
+  0x0d, 0x4e, 0x72, 0xd5, 0xb8, 0x44, 0x04, 0x5e, 0x3c, 0xdd, 0x6e, 0x46,
+  0xb5, 0x70, 0x5f, 0xbc, 0x92, 0x50, 0xc1, 0x3b, 0xb5, 0xef, 0xf3, 0x2d,
+  0x4e, 0xd3, 0xdd, 0xf4, 0xc9, 0x41, 0x62, 0xd4, 0xd5, 0x99, 0x9e, 0x1e,
+  0xbe, 0x35, 0xeb, 0xa2, 0x44, 0x5c, 0x24, 0x07, 0x34, 0x6a, 0x76, 0x8d,
+  0xc4, 0x84, 0x75, 0x96, 0xdd, 0x9a, 0x89, 0xf2, 0x98, 0x2f, 0x43, 0x30,
+  0x1c, 0xb6, 0x81, 0x9a, 0xdc, 0xb0, 0xc8, 0x58, 0x20, 0xf4, 0xef, 0xab,
+  0x84, 0x2b, 0x17, 0x70, 0xc4, 0x7c, 0x46, 0x59, 0x18, 0x25, 0x40, 0xb2,
+  0x37, 0x27, 0x70, 0xfd, 0x76, 0x27, 0xb0, 0x23, 0x8a, 0x65, 0xe7, 0xc5,
+  0xf0, 0xb3, 0x4d, 0xb7, 0x96, 0x93, 0xbe, 0x05, 0x17, 0xbf, 0x7c, 0xc0,
+  0x9f, 0x40, 0x5c, 0x44, 0xb9, 0x6d, 0x16, 0xa6, 0x6f, 0xe0, 0x3d, 0x58,
+  0xfb, 0x11, 0x67, 0x6f, 0x8e, 0xb0, 0xc0, 0xdf, 0xd0, 0x16, 0xf0, 0x35,
+  0x03, 0xdb, 0xb2, 0xf8, 0xa0, 0xd1, 0xa4, 0x1a, 0x19, 0x94, 0x26, 0xa3,
+  0xb2, 0xb8, 0x63, 0x5b, 0x8d, 0x44, 0xba, 0x0b, 0x6d, 0xb2, 0x0d, 0x09,
+  0x06, 0x9c, 0xe4, 0x3a, 0x8d, 0x1c, 0x3e, 0x34, 0x67, 0x8d, 0x5d, 0x4d,
+  0xd9, 0xca, 0xfb, 0xf6, 0x58, 0x62, 0xbd, 0xf9, 0xf6, 0x5a, 0xa8, 0x3b,
+  0x1f, 0xfd, 0x2c, 0x47, 0xc4, 0xe1, 0x59, 0x05, 0xac, 0x45, 0x36, 0xcc,
+  0xab, 0x2e, 0xd6, 0x0b, 0x2b, 0xa0, 0x13, 0xc9, 0x17, 0x5d, 0x3e, 0x14,
+  0xbd, 0x0f, 0xcd, 0xd8, 0x8d, 0xcd, 0x24, 0x5d, 0x97, 0xee, 0xb0, 0xfb,
+  0x45, 0x9b, 0x72, 0x48, 0x60, 0x9b, 0xaa, 0xad, 0x6b, 0xeb, 0xe3, 0x80,
+  0x64, 0xba, 0x01, 0x0f, 0x6e, 0x40, 0xcd, 0x8b, 0x1b, 0x98, 0x9d, 0xea,
+  0x07, 0x74, 0x45, 0x33, 0xa1, 0x50, 0xf3, 0x83, 0x37, 0xbc, 0x15, 0xfc,
+  0x48, 0xb4, 0x7d, 0xc1, 0x2e, 0xa9, 0xf6, 0x8a, 0x95, 0x83, 0xcd, 0x8c,
+  0x3f, 0x15, 0x8b, 0xeb, 0xd0, 0xfe, 0x2a, 0xd3, 0x3b, 0x44, 0x9b, 0x4f,
+  0xe1, 0xfa, 0xec, 0x70, 0x25, 0xf3, 0xcb, 0xac, 0x0f, 0xbb, 0x84, 0x02,
+  0xe4, 0x03, 0xa6, 0x96, 0x7d, 0x27, 0x01, 0x8a, 0xb4, 0x80, 0x75, 0x5a,
+  0xfb, 0xb0, 0xe2, 0xe4, 0x4b, 0xcd, 0xdb, 0x8b, 0x4d, 0x36, 0xa5, 0xba,
+  0xb7, 0x17, 0x08, 0x15, 0x96, 0x50, 0xf5, 0x05, 0x69, 0x12, 0xec, 0x39,
+  0x62, 0xc3, 0x7f, 0x79, 0x2f, 0xf1, 0xd2, 0x6a, 0x97, 0x37, 0x07, 0xe5,
+  0x0a, 0xc3, 0xb5, 0x4c, 0x42, 0xde, 0x73, 0x6e, 0x01, 0x6e, 0x9f, 0x44,
+  0xc8, 0x81, 0x7a, 0xd0, 0x79, 0x3c, 0x92, 0x0a, 0xc0, 0xa9, 0xc0, 0x62,
+  0xe7, 0x51, 0xc7, 0x7c, 0xab, 0x39, 0x64, 0xc7, 0xa5, 0x30, 0xc0, 0x5b,
+  0xd3, 0x6e, 0x07, 0x3a, 0x35, 0x76, 0x9f, 0x91, 0x50, 0xf9, 0x38, 0x74,
+  0x3b, 0x81, 0x08, 0x89, 0x82, 0x10, 0x8d, 0x40, 0xf4, 0x62, 0xde, 0x88,
+  0x6f, 0x1e, 0x44, 0xd6, 0x1a, 0x35, 0xfa, 0xf4, 0x03, 0x07, 0x5a, 0xce,
+  0x97, 0x54, 0x98, 0x03, 0xe5, 0xec, 0xfd, 0xc4, 0xf6, 0xcb, 0x2b, 0xfe,
+  0xc4, 0x8c, 0x98, 0x91, 0x81, 0x03, 0xe1, 0x3e, 0x2e, 0xf1, 0x09, 0xb6,
+  0xb0, 0x7f, 0x1d, 0x88, 0x73, 0x0b, 0x12, 0xcd, 0x92, 0x05, 0x41, 0x35,
+  0x92, 0xf5, 0x06, 0x93, 0x44, 0xfd, 0x84, 0x73, 0x5a, 0x17, 0x22, 0xa2,
+  0x58, 0xdb, 0x9e, 0x4e, 0x5f, 0x4d, 0x49, 0xf7, 0xbf, 0xef, 0x25, 0x9a,
+  0xa0, 0xa3, 0x61, 0xf4, 0x6c, 0x5d, 0x4e, 0x6d, 0x3f, 0xc7, 0xd7, 0xcb,
+  0xf9, 0x8d, 0x49, 0x5a, 0xd3, 0xa2, 0xe0, 0xc0, 0x05, 0x0e, 0xe9, 0x6f,
+  0x35, 0xd7, 0x0b, 0x3a, 0xfb, 0xd7, 0xb0, 0xed, 0xce, 0x55, 0x16, 0x5b,
+  0x9c, 0x64, 0x87, 0xb8, 0xb5, 0x71, 0x57, 0xab, 0xe4, 0xc7, 0x26, 0x5f,
+  0xf6, 0xcd, 0x8f, 0x5e, 0x07, 0x3e, 0x9d, 0x34, 0xe6, 0x02, 0xde, 0x8e,
+  0x07, 0xeb, 0xa6, 0x6b, 0x50, 0x1c, 0x70, 0x6c, 0x38, 0x36, 0xe7, 0xb1,
+  0x37, 0xbd, 0x3a, 0xdf, 0x51, 0xc7, 0x5d, 0xed, 0xb1, 0x23, 0xe0, 0xa6,
+  0x1d, 0x26, 0x6f, 0xc3, 0xd4, 0xbb, 0x66, 0x9c, 0x85, 0xdb, 0xc9, 0x61,
+  0x72, 0x4a, 0xeb, 0x35, 0x88, 0x5c, 0x69, 0x57, 0x41, 0x73, 0xa9, 0x1f,
+  0xed, 0x24, 0xe9, 0x5d, 0x16, 0xc5, 0x28, 0x2d, 0xfd, 0xe2, 0x23, 0x1e,
+  0x00, 0x94, 0x20, 0xe1, 0x27, 0xbc, 0x1e, 0x9d, 0xa7, 0x23, 0x49, 0xbe,
+  0x94, 0x77, 0x87, 0x2a, 0x48, 0xb9, 0xcf, 0x99, 0x3f, 0x14, 0xd3, 0x89,
+  0x5b, 0x8a, 0xb0, 0xd7, 0x8e, 0x4d, 0xe3, 0x4d, 0xed, 0xd3, 0x74, 0xca,
+  0x32, 0xe7, 0x3c, 0x58, 0x3a, 0xf2, 0xcb, 0x72, 0x2e, 0x79, 0x6a, 0xf3,
+  0xec, 0x4e, 0xdc, 0x98, 0x76, 0xb3, 0x70, 0x04, 0x0a, 0x9b, 0x67, 0x60,
+  0x1a, 0xd0, 0x44, 0xa2, 0x28, 0x90, 0x08, 0x66, 0x3c, 0x49, 0xe5, 0x0c,
+  0x58, 0x06, 0x6f, 0x26, 0x8d, 0xe8, 0x61, 0x36, 0x43, 0x07, 0xac, 0x9b,
+  0x15, 0x80, 0x9f, 0x09, 0xcf, 0x08, 0x24, 0x8e, 0xd7, 0xe0, 0x89, 0xcb,
+  0xd9, 0xc2, 0xa2, 0x58, 0x3a, 0xa5, 0x81, 0xef, 0x61, 0x5d, 0xd7, 0x04,
+  0x35, 0x49, 0x98, 0x35, 0x47, 0xa0, 0xb1, 0xf4, 0x86, 0xcd, 0xad, 0xdb,
+  0x80, 0xeb, 0xef, 0x61, 0x71, 0x7b, 0xba, 0x9c, 0x53, 0x5a, 0xfa, 0x20,
+  0x77, 0x55, 0x3d, 0x73, 0x72, 0x4d, 0x6a, 0x37, 0x9d, 0xde, 0x11, 0xd6,
+  0xa3, 0xc4, 0x1d, 0x9f, 0xc3, 0x76, 0xce, 0x97, 0x2b, 0xbd, 0x4e, 0x4d,
+  0x0d, 0xd5, 0x49, 0x1e, 0x64, 0x6c, 0xda, 0x78, 0xc7, 0x4c, 0x24, 0x31,
+  0xb1, 0x22, 0x1d, 0x07, 0x7b, 0x8d, 0x9b, 0x58, 0x55, 0x23, 0x07, 0x8e,
+  0x32, 0x77, 0xe2, 0x4b, 0xe0, 0x2a, 0x53, 0x81, 0x74, 0x14, 0x3b, 0x5b,
+  0xcc, 0x06, 0x2d, 0x33, 0xfe, 0x17, 0xd8, 0x51, 0x56, 0xb8, 0x12, 0x25,
+  0xa3, 0x69, 0x24, 0x47, 0x55, 0xac, 0xcd, 0x51, 0xcc, 0x52, 0xe0, 0xa8,
+  0x8c, 0x56, 0xb6, 0xa1, 0x01, 0x88, 0xd0, 0x49, 0x9d, 0x05, 0x56, 0x36,
+  0xa7, 0x15, 0xab, 0x3b, 0x1d, 0x12, 0x95, 0x97, 0x9e, 0x22, 0xc9, 0x8a,
+  0x67, 0xb6, 0xae, 0xab, 0xb5, 0xae, 0x2a, 0xec, 0x52, 0x3c, 0x10, 0xac,
+  0x17, 0x83, 0x2f, 0x94, 0xbf, 0x69, 0x70, 0x93, 0xbf, 0x8c, 0xbb, 0xc5,
+  0x29, 0x56, 0xc6, 0xfc, 0x65, 0x1e, 0xbd, 0xa9, 0x77, 0xde, 0x83, 0x92,
+  0x98, 0x78, 0xfb, 0x98, 0x33, 0xab, 0xbf, 0x12, 0x66, 0xd6, 0x29, 0xf4,
+  0x9a, 0x96, 0x23, 0x9a, 0xf4, 0x03, 0x89, 0x22, 0x22, 0xd2, 0x8f, 0xa4,
+  0x78, 0x8e, 0x33, 0xe0, 0x78, 0x32, 0xa2, 0xc7, 0xaa, 0xc8, 0x6e, 0xc3,
+  0x54, 0x97, 0x56, 0xf6, 0x3a, 0x98, 0xf4, 0x27, 0xf1, 0xe8, 0x30, 0xaa,
+  0xa1, 0x93, 0x4d, 0x4b, 0x26, 0x7d, 0x92, 0xbc, 0x36, 0x5e, 0x85, 0x89,
+  0x38, 0xb4, 0x07, 0x49, 0x95, 0x34, 0xa8, 0x87, 0x96, 0x78, 0xd3, 0x11,
+  0xb3, 0xd8, 0xa7, 0xf9, 0x21, 0xc3, 0x09, 0xa7, 0xca, 0x31, 0x2c, 0xc9,
+  0x1c, 0x56, 0x96, 0xe6, 0x78, 0x9a, 0x90, 0x0f, 0x8b, 0x85, 0x4c, 0x5d,
+  0x93, 0x8e, 0x88, 0xb1, 0x31, 0xb4, 0x97, 0xca, 0x65, 0x8c, 0xcd, 0x33,
+  0xc4, 0x89, 0xd3, 0x86, 0x7f, 0x9a, 0x69, 0x7f, 0x25, 0xdd, 0x00, 0x90,
+  0xc3, 0x27, 0xfe, 0xc4, 0x32, 0x8f, 0x04, 0x94, 0x89, 0x4b, 0x48, 0xc2,
+  0x3e, 0xb1, 0xd6, 0x69, 0xa5, 0x10, 0x2e, 0x23, 0x59, 0xa2, 0x07, 0x48,
+  0x87, 0x79, 0xe4, 0x43, 0x74, 0x73, 0xa1, 0xae, 0x0b, 0xa3, 0x1a, 0x5d,
+  0xeb, 0x29, 0x78, 0x99, 0x5e, 0x1e, 0x2c, 0x12, 0x5a, 0x38, 0xb0, 0x49,
+  0xfa, 0x11, 0xdd, 0x30, 0xe3, 0x7e, 0x44, 0x40, 0x84, 0x40, 0xd8, 0x22,
+  0xf5, 0xe4, 0x81, 0x04, 0xa0, 0xa7, 0xad, 0x6c, 0x90, 0xa6, 0x90, 0xf6,
+  0x4b, 0xa6, 0xd5, 0x77, 0x34, 0xa4, 0xcc, 0x5d, 0x5c, 0x61, 0x3a, 0x3f,
+  0x13, 0xe6, 0x3a, 0xae, 0x55, 0xc9, 0xe2, 0x63, 0x5a, 0x82, 0xc9, 0x48,
+  0x12, 0x5e, 0xb8, 0xe9, 0xac, 0x64, 0xd1, 0xb2, 0xf2, 0xb2, 0x27, 0x6d,
+  0x60, 0x33, 0x33, 0x67, 0xe7, 0x73, 0x1e, 0x7d, 0xa4, 0x72, 0xe3, 0x0c,
+  0x1c, 0x7c, 0x7d, 0x04, 0x83, 0xe0, 0x34, 0xa7, 0x0b, 0xa2, 0x2f, 0xdd,
+  0xc8, 0x74, 0x04, 0x34, 0xc7, 0x09, 0x35, 0x57, 0xf9, 0xdc, 0x54, 0xd1,
+  0x30, 0x73, 0xd0, 0x79, 0x31, 0x99, 0x74, 0x2c, 0x25, 0xc2, 0xe5, 0x8d,
+  0x82, 0x68, 0x53, 0x53, 0x41, 0x5c, 0x78, 0x5f, 0xea, 0x2d, 0xe0, 0xdd,
+  0x6b, 0x87, 0xae, 0x35, 0x8f, 0x93, 0xb5, 0x1c, 0x71, 0x8c, 0xe0, 0xbe,
+  0x88, 0xec, 0x8f, 0x9e, 0x6a, 0x05, 0x81, 0x28, 0xab, 0xf6, 0xd6, 0x22,
+  0xa7, 0x28, 0xfa, 0xef, 0x86, 0x08, 0x13, 0x76, 0xe5, 0xa3, 0x8e, 0xd0,
+  0x4b, 0x4b, 0x90, 0xb7, 0x09, 0x40, 0x6d, 0x13, 0xad, 0x2b, 0x5d, 0xd1,
+  0x1c, 0x4f, 0xec, 0xdf, 0x35, 0x18, 0x8f, 0x8e, 0x38, 0xec, 0x09, 0xb0,
+  0x6d, 0x69, 0x86, 0x92, 0x35, 0xe5, 0x42, 0x9a, 0xf1, 0x49, 0x1a, 0x45,
+  0x24, 0xb9, 0x53, 0x4f, 0x57, 0xe2, 0x2b, 0xc0, 0xbc, 0x10, 0xf5, 0x6a,
+  0x98, 0x18, 0x1d, 0xda, 0x34, 0x74, 0x53, 0xe1, 0x8e, 0xc5, 0xe0, 0x21,
+  0x2e, 0x60, 0x19, 0xba, 0x9b, 0x43, 0xb0, 0x56, 0xb8, 0x7a, 0x42, 0x7e,
+  0x9c, 0xdd, 0x5d, 0x09, 0x0a, 0xd5, 0xbf, 0xb4, 0x17, 0xef, 0xd5, 0xe3,
+  0xab, 0xf7, 0x0b, 0x17, 0xef, 0x91, 0xd5, 0xbb, 0xb8, 0x96, 0x9c, 0x8e,
+  0x0c, 0xa1, 0x88, 0xaf, 0x82, 0xd0, 0x38, 0xd8, 0x24, 0x11, 0x9c, 0xed,
+  0x43, 0xe4, 0x9a, 0xbc, 0x26, 0x70, 0x44, 0xbe, 0xfa, 0x87, 0xed, 0x3a,
+  0xa8, 0xd1, 0x46, 0xdf, 0xdd, 0x9c, 0x38, 0xa4, 0x68, 0xf0, 0x08, 0x18,
+  0x75, 0x9b, 0x2d, 0x98, 0x24, 0xfc, 0x3a, 0xe7, 0x2a, 0x7d, 0x24, 0xf2,
+  0xaf, 0x85, 0x94, 0x71, 0xf6, 0xb8, 0xbb, 0xee, 0xe6, 0x54, 0xfd, 0x36,
+  0xe3, 0x5a, 0x34, 0xbf, 0x2f, 0xed, 0xaa, 0x7a, 0x74, 0x72, 0x8d, 0x48,
+  0x3a, 0x04, 0x71, 0xaa, 0xf6, 0x0b, 0xe1, 0x2d, 0x74, 0xa0, 0x76, 0xf8,
+  0x73, 0x8d, 0x93, 0xf9, 0x80, 0x78, 0x26, 0x47, 0xbb, 0xc5, 0x36, 0xfb,
+  0xcd, 0x05, 0xe3, 0xdc, 0x6c, 0x34, 0x0d, 0x3b, 0xff, 0xea, 0xb5, 0xca,
+  0x79, 0xa5, 0x6c, 0xfb, 0xd8, 0x2c, 0xd3, 0xb9, 0x7d, 0xff, 0xa7, 0x4f,
+  0x11, 0x9e, 0x35, 0x8b, 0x9e, 0x97, 0x69, 0xaa, 0x37, 0xda, 0x13, 0xc5,
+  0x15, 0x87, 0x20, 0xb1, 0xdf, 0xe1, 0xaf, 0x4b, 0xb8, 0xe9, 0xaf, 0x56,
+  0x31, 0x01, 0xdc, 0xb8, 0xec, 0x76, 0x66, 0x8f, 0xea, 0x14, 0x6a, 0x35,
+  0x35, 0x0d, 0x2a, 0xf7, 0xc6, 0x9a, 0x01, 0x82, 0x42, 0x95, 0x68, 0x85,
+  0x12, 0x1f, 0x20, 0x56, 0x47, 0x9e, 0x2d, 0xca, 0x1c, 0x65, 0xc1, 0x94,
+  0x3b, 0x28, 0x90, 0x6e, 0xaa, 0x6c, 0x9a, 0x5d, 0xa9, 0xbd, 0xf1, 0xf0,
+  0xbb, 0xc3, 0xe3, 0x48, 0x82, 0xac, 0xe5, 0x73, 0xe7, 0x42, 0x0e, 0xcc,
+  0x52, 0x86, 0x32, 0x03, 0xe3, 0x8f, 0xdc, 0x18, 0x8c, 0xf7, 0x21, 0x2d,
+  0x76, 0x06, 0x25, 0xd3, 0xc3, 0x74, 0x3f, 0x65, 0xe6, 0x49, 0x2d, 0xd9,
+  0xba, 0x3b, 0x11, 0xc4, 0xad, 0x6a, 0x28, 0x11, 0x55, 0xb8, 0x96, 0xbe,
+  0x3e, 0x3f, 0xdf, 0xba, 0xc9, 0xca, 0x11, 0x83, 0x9a, 0xc5, 0x04, 0x05,
+  0x65, 0x35, 0x79, 0x0d, 0xe5, 0x4f, 0xdc, 0x30, 0xbc, 0xcd, 0x7e, 0x26,
+  0xd1, 0x1b, 0x8b, 0x62, 0x9a, 0x8f, 0xef, 0x93, 0xd7, 0x3a, 0xb2, 0x8a,
+  0xb5, 0x73, 0xde, 0x74, 0xb8, 0x63, 0xd4, 0x16, 0x7e, 0xf2, 0xed, 0x60,
+  0xff, 0x7c, 0xf0, 0xfa, 0xf0, 0xf8, 0xf0, 0xeb, 0xfd, 0x8b, 0x43, 0x97,
+  0x6b, 0x82, 0x08, 0x9e, 0x15, 0x74, 0x61, 0xf4, 0xf0, 0xad, 0x8e, 0x54,
+  0x0c, 0x8e, 0x1c, 0xe3, 0xcd, 0x28, 0x84, 0x37, 0x59, 0x6d, 0xc1, 0xb8,
+  0xa2, 0xba, 0xcc, 0x52, 0x48, 0xb0, 0x51, 0x7c, 0xa9, 0x0f, 0x94, 0x9a,
+  0xce, 0x74, 0xa8, 0xd1, 0x0c, 0xd2, 0xe9, 0x1d, 0xa3, 0xb2, 0xbc, 0x9f,
+  0xb3, 0xb2, 0xa5, 0x10, 0x09, 0x2c, 0x84, 0x63, 0xf6, 0xc1, 0x96, 0x04,
+  0xeb, 0xdf, 0xd8, 0x65, 0xc4, 0xb4, 0x75, 0xcb, 0x34, 0x12, 0x1f, 0xa9,
+  0x49, 0x8e, 0xaf, 0xf1, 0x60, 0x2b, 0x74, 0xce, 0xe7, 0x13, 0x23, 0x44,
+  0x52, 0xbf, 0x8b, 0x44, 0x35, 0x55, 0xfb, 0xaa, 0xf1, 0x75, 0x36, 0x73,
+  0x71, 0xf6, 0x1c, 0xef, 0x41, 0x4f, 0x2b, 0x68, 0x0b, 0x9d, 0xb1, 0x3b,
+  0x8e, 0x22, 0xc2, 0x61, 0x16, 0x0d, 0x0a, 0xf1, 0x8f, 0x1c, 0xf3, 0xd7,
+  0x21, 0x22, 0xdd, 0xe5, 0xc8, 0x93, 0x97, 0x50, 0x1c, 0x44, 0x44, 0x82,
+  0x48, 0x2c, 0xec, 0xb7, 0x3b, 0xd0, 0x57, 0x41, 0x77, 0xda, 0xaa, 0xe6,
+  0x12, 0x79, 0x03, 0x62, 0xda, 0x35, 0x21, 0x5a, 0x72, 0xda, 0x6b, 0xb3,
+  0xf8, 0xe2, 0x04, 0xb9, 0xbb, 0x81, 0x07, 0x3a, 0x74, 0xfe, 0xac, 0x38,
+  0xcd, 0x00, 0x19, 0x08, 0x41, 0x84, 0xa0, 0x84, 0xfc, 0xb9, 0x84, 0x02,
+  0x76, 0x3b, 0x18, 0x24, 0xa3, 0x25, 0xd6, 0xff, 0x3a, 0x55, 0x50, 0xc8,
+  0xd4, 0x82, 0xc8, 0x4a, 0xc0, 0x23, 0xf0, 0x09, 0xe8, 0xcc, 0x11, 0x6e,
+  0xee, 0x3a, 0xf2, 0x6e, 0x07, 0xd9, 0xa2, 0xac, 0x3b, 0xe2, 0x63, 0x25,
+  0x42, 0xd4, 0x19, 0xa0, 0x27, 0x41, 0x96, 0x6e, 0x00, 0xa6, 0x70, 0x78,
+  0x7a, 0x26, 0xc0, 0x9f, 0xc7, 0xfc, 0x8b, 0x46, 0xa2, 0xb4, 0x7b, 0x86,
+  0x65, 0x42, 0x13, 0x54, 0xe0, 0xf2, 0x86, 0x5e, 0xed, 0x20, 0xa3, 0x2c,
+  0x6c, 0x50, 0x22, 0x57, 0x14, 0x12, 0x49, 0x49, 0x1a, 0x33, 0x6a, 0x53,
+  0xbb, 0x07, 0x23, 0xc3, 0x50, 0x78, 0x0c, 0x7d, 0x11, 0x8c, 0x30, 0x0a,
+  0x09, 0xbf, 0x31, 0xef, 0xca, 0x09, 0x7f, 0x69, 0xca, 0xc4, 0x6a, 0x67,
+  0xb3, 0x4f, 0x34, 0xe3, 0x26, 0xf9, 0xad, 0xa4, 0x04, 0x8c, 0x59, 0x4a,
+  0xe3, 0x18, 0xfa, 0x79, 0x4a, 0x17, 0xa2, 0xbe, 0x21, 0x49, 0xb9, 0x4d,
+  0xe8, 0xa2, 0xb1, 0x81, 0x78, 0xb0, 0x27, 0x05, 0x35, 0x03, 0x64, 0x24,
+  0x4c, 0xda, 0x19, 0x7e, 0xfa, 0x02, 0x11, 0x9a, 0xde, 0x43, 0xd2, 0x41,
+  0x56, 0x0d, 0xbb, 0x51, 0x23, 0x37, 0x80, 0x66, 0xaa, 0x59, 0xc8, 0x58,
+  0x76, 0xaf, 0x79, 0xd0, 0x62, 0xfc, 0xbd, 0x54, 0x3f, 0x65, 0x3a, 0xcd,
+  0xeb, 0x7b, 0xd1, 0x5b, 0x43, 0x13, 0xc8, 0x75, 0xda, 0x95, 0x46, 0x42,
+  0x0b, 0xef, 0x70, 0x54, 0x30, 0x51, 0xdd, 0xb6, 0xd8, 0xd2, 0x0f, 0xda,
+  0x08, 0x41, 0x56, 0x00, 0xa6, 0xf2, 0x91, 0x3d, 0x09, 0x39, 0x6b, 0xf9,
+  0x3a, 0x14, 0x59, 0x1c, 0xc6, 0x2c, 0x51, 0x2a, 0x9f, 0x17, 0x5d, 0x54,
+  0x25, 0x1c, 0x82, 0x86, 0x9a, 0x0a, 0x14, 0x43, 0x93, 0x04, 0xa3, 0xde,
+  0x25, 0x2f, 0x9c, 0xf7, 0x10, 0xed, 0x83, 0xcc, 0x49, 0xa5, 0x13, 0xa0,
+  0x44, 0x0e, 0x46, 0x10, 0x52, 0x1a, 0x65, 0xd7, 0xe9, 0x6d, 0xce, 0xb8,
+  0x35, 0x21, 0x08, 0x53, 0x87, 0xf9, 0x87, 0xf6, 0x9f, 0x21, 0x27, 0x78,
+  0x63, 0xf8, 0x00, 0xf3, 0xbb, 0x12, 0x41, 0x1d, 0x22, 0x30, 0x61, 0x37,
+  0x60, 0x9d, 0x3f, 0xed, 0xab, 0xc7, 0x11, 0x11, 0x03, 0x51, 0x9c, 0x3e,
+  0x22, 0xbe, 0x1d, 0x82, 0x8a, 0x3e, 0x99, 0x56, 0xb7, 0xdd, 0x27, 0xac,
+  0xba, 0xfd, 0xe5, 0x27, 0x4c, 0x70, 0xbc, 0x98, 0x84, 0x0e, 0x4f, 0xcf,
+  0xbf, 0x4b, 0x5c, 0x98, 0x57, 0xd7, 0xcd, 0x29, 0x87, 0xcb, 0xcf, 0x0b,
+  0xa4, 0x16, 0x1c, 0xb0, 0x5f, 0x79, 0xc2, 0xdc, 0x01, 0xa3, 0xfe, 0xf5,
+  0x54, 0x9d, 0xee, 0x9f, 0x7f, 0xd7, 0x3a, 0x4f, 0xde, 0x31, 0x9e, 0xd7,
+  0x49, 0x97, 0x2b, 0x0b, 0xe8, 0x52, 0xa5, 0xc1, 0xa1, 0x72, 0x6b, 0x9d,
+  0xa4, 0x56, 0xdd, 0x7e, 0x0a, 0xa9, 0xd1, 0x50, 0x22, 0x52, 0x8b, 0x96,
+  0xf7, 0x21, 0x52, 0x0b, 0xf7, 0xa8, 0x83, 0xd4, 0xa8, 0xfd, 0x88, 0xd4,
+  0x6c, 0x5d, 0xbb, 0x69, 0x6d, 0x15, 0xa9, 0x59, 0xbc, 0x6b, 0x26, 0x64,
+  0x16, 0x52, 0x59, 0x4c, 0x61, 0x0d, 0xba, 0x99, 0x57, 0x03, 0x0f, 0xf8,
+  0xf8, 0xd2, 0xfd, 0xfa, 0x45, 0x07, 0xd8, 0x4b, 0x88, 0xac, 0x21, 0x00,
+  0x2c, 0xc5, 0xb2, 0xbe, 0x02, 0x39, 0xbc, 0x7e, 0x77, 0xee, 0x01, 0x36,
+  0xea, 0xeb, 0x12, 0x38, 0x50, 0x41, 0x6b, 0xc3, 0x87, 0x8d, 0xcb, 0xa9,
+  0xa1, 0x94, 0x0a, 0xa2, 0x2e, 0x77, 0x30, 0x08, 0x86, 0x95, 0x6c, 0x88,
+  0xf0, 0xa2, 0xee, 0xd1, 0x00, 0xca, 0xd0, 0x45, 0x8a, 0x5f, 0x02, 0x8d,
+  0x8c, 0x86, 0xa1, 0x88, 0xd0, 0x1c, 0xaa, 0x33, 0x65, 0x83, 0xa0, 0xa6,
+  0x8f, 0xba, 0x44, 0xb6, 0x79, 0x0b, 0xdf, 0x32, 0xd9, 0xe8, 0x68, 0x6e,
+  0x6e, 0x69, 0xd1, 0x9b, 0x0f, 0x9a, 0xc5, 0x9b, 0x40, 0x21, 0x5d, 0x68,
+  0x10, 0xde, 0x75, 0xa5, 0xd9, 0xd7, 0x65, 0x47, 0xb0, 0x6d, 0x26, 0x79,
+  0x78, 0x21, 0xce, 0x83, 0xd2, 0xba, 0x0b, 0x76, 0x07, 0xc8, 0xf5, 0x20,
+  0xe5, 0xbe, 0x1c, 0xe6, 0x40, 0xd5, 0x61, 0x4f, 0x03, 0x39, 0x21, 0xaf,
+  0x80, 0x8d, 0x77, 0x0f, 0x42, 0x8f, 0x60, 0xe7, 0x17, 0xb7, 0x4f, 0x07,
+  0x3c, 0x55, 0xda, 0xab, 0xc5, 0x40, 0xe7, 0xdc, 0xb9, 0xf5, 0xc6, 0x39,
+  0x46, 0xb9, 0xa4, 0x14, 0x87, 0xcf, 0xcb, 0xa5, 0x4b, 0xea, 0x12, 0x2f,
+  0x34, 0x72, 0xdc, 0x43, 0x72, 0x88, 0x90, 0x74, 0x8a, 0x40, 0x55, 0x68,
+  0xd0, 0x8d, 0x5e, 0x5f, 0x9c, 0xaa, 0x2d, 0x2e, 0x00, 0xa6, 0x0c, 0xe9,
+  0x43, 0x56, 0x20, 0x2d, 0xaf, 0x96, 0x91, 0xab, 0x11, 0x16, 0x20, 0xef,
+  0x23, 0xb3, 0x70, 0xf6, 0x30, 0xd7, 0xfe, 0xff, 0xec, 0x4d, 0xfc, 0x94,
+  0x5d, 0x7c, 0xfe, 0x8f, 0xdf, 0xc5, 0xe7, 0xff, 0x43, 0x76, 0xf1, 0xf9,
+  0xff, 0x47, 0x76, 0xd1, 0x70, 0x02, 0x82, 0x3d, 0xe9, 0xaf, 0xde, 0x4e,
+  0x56, 0x87, 0x6b, 0x0d, 0xf5, 0xe5, 0xdb, 0x9b, 0xb7, 0xc0, 0x5a, 0x10,
+  0x75, 0xbb, 0x23, 0x27, 0x5a, 0x6c, 0xdb, 0x48, 0xdd, 0xea, 0x86, 0x60,
+  0x52, 0x5b, 0x82, 0x35, 0x7a, 0x74, 0x1a, 0xc0, 0x43, 0xf8, 0xdd, 0x31,
+  0x90, 0x2f, 0x55, 0x91, 0x3b, 0xfd, 0xff, 0x15, 0x3b, 0x85, 0x89, 0x97,
+  0x4b, 0x10, 0x7c, 0x05, 0xe9, 0x13, 0x8e, 0x63, 0xd9, 0x2f, 0x48, 0x05,
+  0x23, 0x8b, 0x18, 0xa4, 0x4d, 0xda, 0x7b, 0xc9, 0xab, 0x3d, 0x90, 0xc7,
+  0xbf, 0xe8, 0x4c, 0x04, 0x02, 0x8c, 0x97, 0x1f, 0x52, 0x37, 0x39, 0x38,
+  0x8d, 0xca, 0x11, 0x84, 0xf9, 0xef, 0x43, 0x92, 0x08, 0xa1, 0x7a, 0x1e,
+  0x23, 0x87, 0x5f, 0x43, 0x0d, 0xff, 0x3d, 0x72, 0xc8, 0xf8, 0xb2, 0x06,
+  0x2e, 0x17, 0x3b, 0x77, 0xdf, 0x9f, 0x1d, 0xaf, 0xca, 0xb3, 0x12, 0xf7,
+  0x29, 0xa7, 0xbc, 0x9e, 0x09, 0x8a, 0x57, 0x99, 0x9c, 0xa6, 0x57, 0xd9,
+  0x7a, 0x88, 0xe8, 0xf6, 0x09, 0xf8, 0x0f, 0x11, 0x82, 0x02, 0x6b, 0xa2,
+  0x3e, 0xda, 0x2f, 0x04, 0x4c, 0x80, 0x31, 0xc2, 0xc3, 0x25, 0x88, 0x2f,
+  0xb3, 0x0b, 0x20, 0x4a, 0x44, 0xd5, 0x66, 0xa6, 0xab, 0xa5, 0xd4, 0xab,
+  0xa7, 0x67, 0xfd, 0x4f, 0x1c, 0xfc, 0xbf, 0x6e, 0x03, 0x74, 0x53, 0x8e,
+  0xe3, 0xa7, 0xf9, 0x11, 0x6f, 0x4e, 0x6d, 0xa6, 0x0c, 0x54, 0x7a, 0x10,
+  0x5c, 0x3a, 0x07, 0xc0, 0xa6, 0xaf, 0x05, 0x06, 0xf2, 0xb2, 0x98, 0xb6,
+  0x49, 0x53, 0x80, 0xe4, 0x88, 0x0b, 0x1c, 0xeb, 0xb0, 0xf6, 0xd4, 0xcf,
+  0x2c, 0x7b, 0x69, 0x83, 0x52, 0xb1, 0x21, 0x14, 0x12, 0xd3, 0x29, 0x23,
+  0xf6, 0xb7, 0x23, 0x12, 0x99, 0x7e, 0x5d, 0x7e, 0x3e, 0xdb, 0x81, 0x78,
+  0x40, 0x90, 0x32, 0x72, 0xc0, 0xb7, 0xbb, 0x69, 0xfd, 0x86, 0xee, 0xd7,
+  0x43, 0xb8, 0xa9, 0x39, 0xfe, 0xf0, 0x65, 0x10, 0x8f, 0xf7, 0xe3, 0x9e,
+  0x19, 0x0f, 0x7e, 0xee, 0x4e, 0x2e, 0x88, 0xd3, 0x32, 0x9b, 0x61, 0x01,
+  0x06, 0x02, 0x10, 0x06, 0xf9, 0x75, 0x26, 0x9b, 0x61, 0xb9, 0x0d, 0x7b,
+  0x39, 0xb5, 0x0c, 0x36, 0x22, 0x00, 0x2d, 0x0f, 0xc2, 0x21, 0x89, 0x09,
+  0xdc, 0x36, 0xe2, 0x17, 0xa0, 0xde, 0x07, 0x02, 0xb8, 0x0d, 0x15, 0x35,
+  0xb2, 0xdf, 0x70, 0x50, 0x0f, 0x0e, 0x56, 0xd0, 0xaf, 0x09, 0x70, 0x74,
+  0x60, 0x4e, 0xbf, 0x3d, 0x38, 0xff, 0xdd, 0xce, 0xae, 0x45, 0x32, 0x72,
+  0x90, 0xb2, 0x7a, 0xf7, 0xcf, 0x81, 0x76, 0xd1, 0x26, 0x6f, 0xd6, 0x4d,
+  0xa4, 0x4c, 0x07, 0xfc, 0x1d, 0x1c, 0x04, 0xe9, 0x72, 0xac, 0xfd, 0xcb,
+  0x08, 0x7f, 0xc2, 0xf0, 0x24, 0x0d, 0xcd, 0x22, 0xc6, 0xb3, 0x4e, 0x1d,
+  0x9e, 0x36, 0xc8, 0xd9, 0x90, 0x04, 0x0f, 0xc5, 0xad, 0x5b, 0x03, 0x47,
+  0x86, 0x2e, 0xc5, 0x12, 0x21, 0x16, 0xd4, 0xb3, 0x04, 0x4d, 0xc5, 0x41,
+  0x64, 0x82, 0x54, 0xdb, 0x85, 0x33, 0x63, 0x11, 0xcf, 0x00, 0x0b, 0x67,
+  0x31, 0x79, 0x3d, 0x58, 0x92, 0xf5, 0xae, 0xad, 0x08, 0x33, 0xbd, 0x16,
+  0xa5, 0x24, 0xc0, 0xdd, 0x64, 0xf7, 0x0e, 0xeb, 0x21, 0x71, 0x9f, 0x36,
+  0x77, 0x95, 0x21, 0x33, 0x39, 0xba, 0x35, 0x32, 0x99, 0x13, 0x9b, 0xff,
+  0x17, 0xf1, 0x69, 0x0a, 0x85, 0x89, 0x2a, 0xc4, 0x4d, 0x72, 0xd8, 0x87,
+  0x47, 0xa0, 0x99, 0x01, 0x77, 0x5e, 0x0b, 0x73, 0x4c, 0xef, 0x3b, 0x1d,
+  0xc7, 0xbe, 0x6c, 0x8d, 0x30, 0x60, 0x28, 0x57, 0x12, 0xa9, 0x87, 0x44,
+  0x8b, 0x26, 0x66, 0x5a, 0x36, 0x0f, 0xcf, 0x47, 0x64, 0xe3, 0x9b, 0x87,
+  0x89, 0x44, 0x6c, 0x75, 0xce, 0xc7, 0x37, 0x10, 0xe8, 0xd5, 0x5c, 0x14,
+  0x4e, 0xcf, 0xc2, 0x56, 0x24, 0x54, 0xbd, 0x63, 0x17, 0x90, 0x42, 0xc2,
+  0x36, 0x78, 0x26, 0x4b, 0xbe, 0x0d, 0xf3, 0xb9, 0x78, 0x1d, 0xe1, 0x1f,
+  0x9d, 0xdf, 0xe6, 0x65, 0x31, 0x87, 0x8c, 0x72, 0x9b, 0x96, 0x39, 0xb4,
+  0x43, 0x1a, 0xeb, 0x87, 0xd7, 0x47, 0x67, 0xc9, 0x06, 0x6d, 0xec, 0xe8,
+  0x7e, 0x05, 0xa2, 0xe1, 0x56, 0x56, 0x8f, 0xb7, 0x16, 0x37, 0xf9, 0xd6,
+  0xbc, 0xaa, 0x26, 0xa3, 0x4d, 0x87, 0x9b, 0x81, 0xee, 0x40, 0x87, 0x42,
+  0xcb, 0x3b, 0x30, 0x0f, 0x2c, 0x39, 0xa1, 0x6b, 0x83, 0x16, 0x20, 0xda,
+  0x85, 0x8a, 0x16, 0x7a, 0x36, 0xac, 0x8a, 0x4d, 0x2d, 0xfa, 0x73, 0x9b,
+  0xe6, 0x53, 0x07, 0x11, 0x38, 0x97, 0xa6, 0x24, 0x40, 0x4b, 0x41, 0x0a,
+  0xd8, 0x5f, 0x91, 0x4d, 0x56, 0x04, 0x2b, 0x59, 0xd0, 0x8e, 0x40, 0x76,
+  0x4a, 0xa6, 0xbf, 0xc5, 0xdc, 0xd0, 0x72, 0x22, 0x67, 0xd9, 0x05, 0x90,
+  0xf7, 0x19, 0xdf, 0x9e, 0x17, 0x45, 0x7c, 0x67, 0x6c, 0x87, 0xe8, 0x8c,
+  0xce, 0x5b, 0x1f, 0x6e, 0xad, 0x27, 0x0e, 0xd1, 0x9f, 0x56, 0x19, 0xf5,
+  0x29, 0x7c, 0x09, 0x05, 0x22, 0xb0, 0xcb, 0x65, 0xe5, 0xec, 0xa3, 0xa9,
+  0xdb, 0xaf, 0x61, 0x77, 0xae, 0xa5, 0xdb, 0x4e, 0xf5, 0x63, 0x56, 0xc9,
+  0xfa, 0xde, 0x3a, 0x8e, 0xd6, 0x1c, 0x88, 0xe2, 0x22, 0xe4, 0xe8, 0xa0,
+  0xb0, 0x55, 0xeb, 0x3f, 0xad, 0x27, 0x49, 0x64, 0x1f, 0x95, 0xe3, 0x94,
+  0x7b, 0xec, 0x69, 0x4e, 0x1f, 0xbd, 0x9a, 0xe7, 0x7f, 0x13, 0x58, 0x02,
+  0x77, 0x88, 0x27, 0x19, 0xb2, 0x21, 0x10, 0xd2, 0x19, 0x0c, 0xa1, 0x13,
+  0x0d, 0xc3, 0x0f, 0xe9, 0xa7, 0x78, 0x48, 0x56, 0x65, 0x21, 0xe5, 0xaf,
+  0x69, 0x48, 0xe6, 0xa5, 0x95, 0x21, 0x74, 0x98, 0x2b, 0x9a, 0x03, 0x72,
+  0x75, 0x1a, 0x82, 0x98, 0x82, 0x28, 0xaa, 0x39, 0x3f, 0x39, 0x57, 0x67,
+  0xd1, 0xdb, 0x74, 0x9c, 0xd0, 0x1f, 0x3f, 0x40, 0xbe, 0xd8, 0xe4, 0x91,
+  0x37, 0x51, 0xce, 0xec, 0x88, 0x09, 0x67, 0x14, 0x5e, 0xd8, 0x05, 0x74,
+  0xd6, 0xb7, 0x03, 0xd7, 0x3c, 0x38, 0xc1, 0x35, 0x98, 0xe5, 0x60, 0x8e,
+  0x23, 0xcd, 0xd9, 0x15, 0x13, 0x35, 0x4b, 0x95, 0x69, 0x14, 0x61, 0xe3,
+  0xde, 0xdf, 0x72, 0xcc, 0x86, 0x19, 0x86, 0x8b, 0x7e, 0x86, 0x04, 0xca,
+  0xbc, 0x18, 0xd6, 0x6e, 0xfa, 0x8a, 0xa6, 0xca, 0x98, 0x30, 0x82, 0x14,
+  0x1b, 0x39, 0xed, 0x6b, 0xb1, 0x6f, 0x18, 0xdf, 0x77, 0x4e, 0xa4, 0x70,
+  0xa0, 0x12, 0xf9, 0xec, 0x3b, 0xf3, 0x99, 0xcf, 0xff, 0x04, 0xe2, 0x07,
+  0xed, 0xff, 0x2a, 0xd2, 0xff, 0xed, 0x22, 0xb2, 0x34, 0x97, 0xfa, 0x65,
+  0x57, 0x9e, 0xfe, 0x79, 0x36, 0x35, 0xc4, 0x77, 0x4b, 0x89, 0x1b, 0x97,
+  0xf7, 0x0b, 0xb6, 0x82, 0xc9, 0x5b, 0xba, 0x3e, 0x80, 0x09, 0x97, 0xec,
+  0xb7, 0xb0, 0x2c, 0xc0, 0xb0, 0x23, 0xbd, 0xd3, 0xf7, 0xa8, 0xb9, 0x81,
+  0xb0, 0x7d, 0x12, 0xf1, 0xd4, 0x10, 0xb6, 0xe4, 0x33, 0x4e, 0x85, 0x25,
+  0xaa, 0x9c, 0x48, 0x12, 0x8e, 0xcb, 0xa6, 0x8a, 0x20, 0x2e, 0xb8, 0x9d,
+  0x2a, 0x74, 0x7a, 0xf3, 0x31, 0xe1, 0xc4, 0x7c, 0x66, 0xb6, 0xf0, 0xba,
+  0x6d, 0x06, 0x0a, 0x8d, 0x3e, 0x1f, 0xc1, 0x98, 0x9b, 0xf2, 0xe0, 0x98,
+  0x25, 0x35, 0x54, 0x2e, 0xe7, 0xe8, 0xbc, 0xb9, 0x52, 0x8e, 0xbd, 0xb7,
+  0xcf, 0xd9, 0xd9, 0xd1, 0xf9, 0x41, 0xc2, 0xe7, 0xeb, 0xe4, 0xdd, 0xf1,
+  0x9f, 0x59, 0xe0, 0xae, 0x81, 0x65, 0xce, 0xd6, 0x3a, 0xee, 0xbf, 0xeb,
+  0x62, 0xa8, 0xfa, 0x3e, 0x48, 0xbe, 0x83, 0x77, 0xc8, 0xcd, 0x3c, 0xb8,
+  0xb3, 0x2d, 0xf6, 0x79, 0x6c, 0x4c, 0x2e, 0x70, 0xa2, 0x11, 0xc1, 0xe5,
+  0x2c, 0x85, 0x70, 0x04, 0xdb, 0xd8, 0xc2, 0x8c, 0x96, 0x31, 0x9a, 0x16,
+  0x87, 0x80, 0x84, 0x82, 0xbe, 0x68, 0x49, 0x6c, 0x35, 0xa4, 0xde, 0x69,
+  0xa2, 0xad, 0x5c, 0x5c, 0x9a, 0xe8, 0x95, 0x38, 0x73, 0x57, 0xa4, 0x8f,
+  0x40, 0x26, 0x74, 0xe0, 0x0d, 0x2a, 0x2c, 0xf0, 0xe1, 0xd3, 0xb3, 0xae,
+  0x72, 0xfa, 0x21, 0x43, 0x59, 0x2e, 0xee, 0x93, 0xaf, 0x53, 0xe6, 0x07,
+  0x30, 0xfe, 0xa5, 0xd9, 0x2c, 0xba, 0xa0, 0xab, 0x82, 0xfd, 0x8e, 0x6a,
+  0x8c, 0xc3, 0xef, 0x8e, 0x9c, 0x81, 0x4c, 0x27, 0x51, 0x89, 0x09, 0x2f,
+  0xe6, 0x84, 0xfd, 0xe9, 0x46, 0x3d, 0xa0, 0x39, 0x1a, 0x4a, 0x1c, 0x6b,
+  0x63, 0x25, 0x41, 0x86, 0xad, 0xd4, 0xae, 0x81, 0x34, 0x21, 0x53, 0x6b,
+  0x67, 0x76, 0x89, 0xd4, 0x82, 0x2c, 0x85, 0xe4, 0x25, 0xff, 0xbb, 0x62,
+  0xda, 0x81, 0x2c, 0x0c, 0x67, 0x72, 0x43, 0x7a, 0xe0, 0x97, 0x35, 0x92,
+  0x96, 0x73, 0x6a, 0x1a, 0x9c, 0x27, 0xb6, 0x06, 0x73, 0xd8, 0x34, 0x5d,
+  0xc8, 0xfd, 0xe4, 0xf5, 0xe1, 0x19, 0xf8, 0xd2, 0xe1, 0xbb, 0xaf, 0xe1,
+  0xc4, 0x09, 0x18, 0x3d, 0x37, 0x59, 0x09, 0x8f, 0x92, 0xba, 0x06, 0x26,
+  0x3b, 0xb6, 0x9a, 0xe3, 0x8b, 0x9d, 0xed, 0x27, 0x10, 0x00, 0x27, 0xbf,
+  0x69, 0xc2, 0x5a, 0x2a, 0x0a, 0xc4, 0xc1, 0x7e, 0x38, 0xbb, 0x5f, 0xa7,
+  0x38, 0x84, 0x8b, 0x27, 0xd9, 0xf5, 0x05, 0x67, 0xf4, 0x11, 0x59, 0x75,
+  0xb8, 0x88, 0x38, 0x8d, 0x28, 0x40, 0xbe, 0xe0, 0x43, 0xac, 0xf7, 0x6b,
+  0xe2, 0x6b, 0xb3, 0x24, 0x34, 0xac, 0x46, 0xae, 0x91, 0x58, 0x2a, 0x56,
+  0xdf, 0x3c, 0x1b, 0xd5, 0x66, 0xd2, 0xd0, 0x19, 0x5c, 0xe6, 0x13, 0xf3,
+  0x15, 0x75, 0x4b, 0x34, 0xaf, 0xca, 0xc8, 0xb6, 0x2e, 0x57, 0x84, 0xc9,
+  0x72, 0x86, 0x88, 0x84, 0x15, 0xef, 0xcb, 0xb5, 0xde, 0x58, 0x7a, 0xda,
+  0x53, 0xd5, 0x49, 0x95, 0xca, 0x23, 0xcf, 0x39, 0xa2, 0xc1, 0x11, 0xed,
+  0x11, 0xb4, 0x19, 0x6d, 0xaa, 0x87, 0xa7, 0x02, 0xb1, 0x54, 0xab, 0x65,
+  0x50, 0x8d, 0xa6, 0x3f, 0x20, 0x95, 0xf7, 0xc3, 0xc1, 0xfe, 0x87, 0xaf,
+  0xde, 0xbf, 0x7b, 0x7d, 0x7c, 0xd8, 0x6b, 0x53, 0xe4, 0xa5, 0x46, 0x46,
+  0x54, 0x1c, 0x06, 0xa0, 0xa8, 0x19, 0x61, 0x82, 0x3c, 0xce, 0x38, 0xe0,
+  0xbf, 0xe4, 0xb4, 0x33, 0xe7, 0x4e, 0xfd, 0x8a, 0xb7, 0xcd, 0x22, 0xcb,
+  0xf9, 0x04, 0x70, 0x4c, 0xc1, 0xe4, 0x0d, 0x28, 0x47, 0xad, 0x6f, 0x36,
+  0xbe, 0x4e, 0xe0, 0x28, 0x06, 0x10, 0x9a, 0x40, 0x07, 0xb7, 0x1c, 0x4f,
+  0xc9, 0x4d, 0xf7, 0xe5, 0x80, 0x1a, 0xea, 0x3d, 0xa7, 0x5d, 0x60, 0xd5,
+  0x53, 0x1a, 0x50, 0xc7, 0x76, 0x57, 0x8d, 0xbc, 0x02, 0x6e, 0x85, 0x28,
+  0x79, 0xa0, 0x83, 0x1c, 0x97, 0x75, 0xaf, 0x6f, 0x82, 0x4b, 0x98, 0x7a,
+  0x85, 0x0b, 0x3e, 0x4a, 0xe7, 0xe1, 0x74, 0xc9, 0x54, 0xe8, 0x7a, 0x98,
+  0x7d, 0xcc, 0x20, 0x8f, 0xe8, 0x5b, 0x07, 0x2a, 0x19, 0x7c, 0x5f, 0x94,
+  0xb0, 0x8f, 0xbe, 0xf6, 0x12, 0x82, 0x3c, 0x44, 0xda, 0x63, 0x1c, 0xbb,
+  0xc8, 0x52, 0x40, 0x8a, 0xf2, 0x16, 0x28, 0xad, 0x78, 0xba, 0x7f, 0xf1,
+  0x4d, 0xd7, 0x11, 0xee, 0x96, 0xd8, 0x14, 0xec, 0x85, 0x35, 0x05, 0x00,
+  0xda, 0xaa, 0x62, 0xd4, 0x0f, 0xbf, 0x20, 0xaa, 0x6e, 0x33, 0x8c, 0x2e,
+  0x7d, 0x22, 0xd4, 0x1f, 0x44, 0x54, 0x55, 0x59, 0xd5, 0xdf, 0x8d, 0x46,
+  0xd8, 0xdd, 0xd9, 0xd1, 0x56, 0x4b, 0x93, 0x18, 0xe0, 0x82, 0x81, 0xd0,
+  0x7f, 0x5b, 0x46, 0x04, 0x32, 0x6c, 0x31, 0x22, 0x2f, 0x93, 0xfd, 0xf7,
+  0x59, 0x52, 0x90, 0x1d, 0x1b, 0x9f, 0x52, 0xe1, 0x53, 0x76, 0xfd, 0x81,
+  0x37, 0xf9, 0x24, 0x18, 0x1e, 0x99, 0xab, 0x04, 0xe2, 0x6e, 0x03, 0x86,
+  0x7b, 0x75, 0x89, 0x49, 0x31, 0x87, 0x9b, 0xa9, 0x90, 0xb8, 0xb7, 0x9e,
+  0x6c, 0x64, 0xc3, 0x2b, 0x6a, 0x6f, 0x9d, 0xdb, 0xd9, 0xd9, 0xe3, 0x7f,
+  0x77, 0xf1, 0xef, 0x93, 0xf5, 0xcd, 0xc8, 0xe2, 0x51, 0x81, 0x7d, 0xc5,
+  0x59, 0x94, 0x88, 0xf6, 0x09, 0x6c, 0x18, 0x96, 0x01, 0x9f, 0xaf, 0x22,
+  0x24, 0x15, 0xf1, 0xba, 0x90, 0x3d, 0xfc, 0x42, 0x80, 0x55, 0x22, 0x4d,
+  0x65, 0xc4, 0x25, 0x54, 0x68, 0x6e, 0x63, 0x49, 0xa0, 0x0f, 0xf3, 0x26,
+  0xc6, 0x1f, 0xca, 0xec, 0x3a, 0xad, 0x88, 0x47, 0x2c, 0xeb, 0x9c, 0xc3,
+  0x00, 0x3a, 0x10, 0xc7, 0xa7, 0x9a, 0xda, 0x45, 0x33, 0xd6, 0x8e, 0x1d,
+  0x6e, 0x8d, 0x6d, 0xad, 0x98, 0x1a, 0x59, 0xd4, 0xd1, 0x27, 0x06, 0x5a,
+  0x59, 0xb4, 0x8b, 0x11, 0x9a, 0xe9, 0x8f, 0x1f, 0x0b, 0xeb, 0x82, 0xcd,
+  0xd8, 0x94, 0x8a, 0xc0, 0x84, 0x24, 0xbb, 0xa4, 0x15, 0xcb, 0x05, 0xe7,
+  0x41, 0x72, 0xd4, 0x64, 0xd4, 0x71, 0x8e, 0x87, 0xdc, 0x71, 0x1a, 0x67,
+  0xe5, 0xfe, 0x06, 0x07, 0x71, 0x3a, 0x1d, 0x6a, 0x87, 0x35, 0x89, 0xef,
+  0x53, 0xe2, 0x65, 0xc0, 0x5d, 0x05, 0x63, 0x45, 0x78, 0xbb, 0x4e, 0x56,
+  0x92, 0xf5, 0x8c, 0xd8, 0x15, 0x21, 0xb8, 0x0b, 0xb6, 0xd5, 0xf1, 0xe9,
+  0x5f, 0x7d, 0x72, 0x16, 0x39, 0x2d, 0xcf, 0x64, 0xb1, 0x1c, 0xb1, 0xb2,
+  0xf5, 0x52, 0xfe, 0x4a, 0xe8, 0xcf, 0x69, 0x3e, 0x86, 0xfe, 0xb5, 0x71,
+  0x8d, 0xe2, 0x43, 0x9b, 0x9f, 0x72, 0x82, 0x24, 0x2c, 0xa0, 0x95, 0xf6,
+  0x6a, 0x8d, 0x89, 0x36, 0x27, 0x00, 0x34, 0x1b, 0x51, 0xb8, 0x82, 0xf6,
+  0xa2, 0xf5, 0xe5, 0xe4, 0x38, 0x85, 0x17, 0x7d, 0xee, 0x4e, 0x50, 0x1a,
+  0x28, 0x77, 0x62, 0x34, 0xec, 0x00, 0x8c, 0x74, 0x1b, 0xe3, 0x9c, 0x42,
+  0xc1, 0x94, 0xf4, 0x66, 0x27, 0xe6, 0xc5, 0xc2, 0x96, 0x1d, 0x08, 0x98,
+  0x1a, 0xef, 0x5b, 0x15, 0x2d, 0x03, 0x20, 0x14, 0x36, 0xf2, 0x3c, 0x7f,
+  0xea, 0xe3, 0x61, 0x93, 0xea, 0x3a, 0xdd, 0x7d, 0xf6, 0xdc, 0x86, 0x9e,
+  0x78, 0xb3, 0x02, 0x9f, 0xed, 0x9e, 0x7c, 0xbb, 0xb5, 0xd5, 0xeb, 0x40,
+  0x79, 0xa5, 0x83, 0x9f, 0x89, 0x2f, 0x84, 0x9f, 0xfc, 0x53, 0xaf, 0x33,
+  0xd7, 0x27, 0xc4, 0x2e, 0x4f, 0x81, 0x34, 0x5f, 0x94, 0xad, 0xea, 0xbf,
+  0xc6, 0xd6, 0xdb, 0xb8, 0x13, 0xab, 0x25, 0x9c, 0xb0, 0x36, 0x9b, 0x94,
+  0xb8, 0xc8, 0x11, 0xc0, 0x58, 0x93, 0xee, 0xbb, 0xdf, 0x58, 0xa3, 0xca,
+  0x74, 0x89, 0xe8, 0x84, 0x79, 0x0f, 0x5d, 0x5b, 0x97, 0x16, 0x6a, 0x74,
+  0x79, 0xb2, 0x96, 0x6b, 0x23, 0x81, 0xde, 0xc2, 0x1b, 0x97, 0x91, 0x9d,
+  0xca, 0xd1, 0x86, 0x63, 0x8d, 0x75, 0xd1, 0x0c, 0xdb, 0x08, 0xae, 0xf9,
+  0x51, 0x51, 0xd6, 0x2d, 0xe8, 0x89, 0x88, 0xd9, 0x21, 0x0c, 0x84, 0x97,
+  0x02, 0xc1, 0xf9, 0xa5, 0x02, 0xb2, 0x99, 0xb5, 0xb6, 0x33, 0x46, 0x3b,
+  0x74, 0xab, 0xbc, 0x18, 0x6e, 0xe3, 0x62, 0x73, 0x1c, 0x50, 0x40, 0x5f,
+  0x04, 0xff, 0xe5, 0xfc, 0x5b, 0xc6, 0x9b, 0xd8, 0x0f, 0x8b, 0x00, 0x71,
+  0x3e, 0x46, 0x1c, 0x7b, 0xa3, 0x77, 0x2d, 0xbf, 0x74, 0x57, 0x4c, 0x2f,
+  0xa9, 0xa1, 0xad, 0x83, 0xfb, 0x14, 0x8c, 0x4d, 0xe9, 0xc6, 0x2a, 0x2d,
+  0x84, 0x99, 0xfb, 0x4f, 0xa5, 0xef, 0x56, 0x73, 0xad, 0x91, 0xf4, 0xd1,
+  0x74, 0x57, 0xcb, 0x27, 0x66, 0x28, 0x37, 0xb7, 0x52, 0x67, 0xdc, 0x83,
+  0x53, 0xa1, 0x7f, 0xd3, 0x0b, 0x99, 0x15, 0xa8, 0xaa, 0x4e, 0xeb, 0x65,
+  0xf5, 0xa8, 0xee, 0xe4, 0x04, 0x7d, 0xab, 0x33, 0x44, 0x2f, 0x39, 0xe0,
+  0x2a, 0x85, 0x90, 0x5a, 0xa9, 0x3b, 0xb9, 0x2a, 0xc6, 0x90, 0xb8, 0x02,
+  0x82, 0x3c, 0x97, 0x76, 0x0c, 0x41, 0x66, 0x23, 0xbd, 0x49, 0x69, 0x85,
+  0x0e, 0xce, 0x4f, 0xb9, 0x87, 0x05, 0x07, 0xd3, 0x6c, 0xf2, 0xa9, 0x8a,
+  0xc0, 0x22, 0xac, 0xae, 0xc7, 0xca, 0x24, 0x26, 0xbf, 0x3a, 0x56, 0xf1,
+  0xa3, 0x85, 0xff, 0x22, 0xc7, 0x10, 0xee, 0x1c, 0x41, 0x49, 0xc2, 0x0d,
+  0x1e, 0x75, 0xb4, 0xa0, 0x7b, 0x74, 0xb2, 0xe9, 0xf2, 0xf6, 0xfa, 0x76,
+  0xc5, 0xb8, 0x44, 0xbe, 0x6a, 0x79, 0x75, 0xa5, 0xb1, 0x31, 0xea, 0x33,
+  0xf7, 0xab, 0x11, 0xc9, 0xa1, 0xee, 0x80, 0x5f, 0xc3, 0x7b, 0xcd, 0xf7,
+  0xb1, 0x01, 0x26, 0x80, 0xb7, 0xcd, 0x0b, 0xdf, 0x70, 0x2a, 0x86, 0x91,
+  0xdc, 0x83, 0x15, 0xf6, 0x3b, 0x74, 0x2c, 0xec, 0x89, 0xc1, 0x4f, 0x5e,
+  0x6a, 0xb9, 0xed, 0x0e, 0x27, 0x60, 0x5e, 0x99, 0x0d, 0xcc, 0x6a, 0x70,
+  0xa1, 0xb8, 0x14, 0x6b, 0x1d, 0x3e, 0x35, 0xc2, 0x13, 0xb1, 0x9d, 0xa7,
+  0x0e, 0xbe, 0xc8, 0x74, 0x6d, 0x94, 0xdb, 0xf2, 0x76, 0x3e, 0xdd, 0x69,
+  0x3a, 0xbf, 0x2f, 0x49, 0x95, 0xcf, 0x06, 0xc8, 0xb6, 0x5b, 0x7b, 0x88,
+  0xc0, 0x7c, 0xf4, 0x11, 0x6c, 0x53, 0xfc, 0x96, 0xe6, 0xe8, 0x69, 0x45,
+  0x13, 0x2b, 0xe3, 0xe1, 0x8a, 0x76, 0xb6, 0x37, 0xea, 0x4d, 0xf0, 0x8e,
+  0x04, 0x42, 0x73, 0xb0, 0x14, 0xa0, 0xc6, 0x58, 0xe3, 0xc1, 0x54, 0xcc,
+  0xe7, 0x25, 0x39, 0x00, 0x9a, 0xa8, 0xad, 0x2c, 0x68, 0x35, 0xce, 0x81,
+  0xc4, 0xef, 0x2b, 0xc3, 0x92, 0x13, 0x60, 0x23, 0x92, 0x8d, 0xee, 0x55,
+  0xc9, 0x9b, 0x7c, 0x9e, 0x57, 0x5c, 0xe1, 0x99, 0x8b, 0x41, 0xa6, 0x57,
+  0x59, 0xbc, 0x51, 0x44, 0xe3, 0x95, 0x98, 0x6f, 0xd2, 0x44, 0xe1, 0xf0,
+  0xcb, 0x7c, 0x21, 0xee, 0x35, 0x4d, 0xc8, 0x52, 0x0f, 0x1b, 0x43, 0x54,
+  0x05, 0xd3, 0xfc, 0xd5, 0x7b, 0x69, 0xec, 0x47, 0xcd, 0xc3, 0xab, 0xed,
+  0xc3, 0x7c, 0xd1, 0x73, 0xe6, 0x01, 0x1b, 0x9e, 0x3f, 0x23, 0xd6, 0x06,
+  0x4f, 0x1a, 0xc7, 0x14, 0x97, 0x20, 0x49, 0x98, 0xa0, 0x77, 0xb6, 0x87,
+  0x2f, 0x50, 0x38, 0x9a, 0x3f, 0xde, 0xf4, 0xdb, 0xff, 0x00, 0x26, 0xc7,
+  0xd3, 0xdd, 0x06, 0x2d, 0x5c, 0x22, 0x4c, 0x8d, 0xe8, 0xb3, 0xdb, 0xe1,
+  0xfd, 0x86, 0x51, 0x12, 0x2b, 0x4e, 0xe0, 0xe0, 0x39, 0x6d, 0x70, 0x5d,
+  0x37, 0xa9, 0x53, 0x29, 0xa7, 0x60, 0x93, 0x3d, 0x6c, 0x76, 0x81, 0x02,
+  0x74, 0xc9, 0x2a, 0x88, 0xc5, 0x46, 0x1a, 0x2b, 0x34, 0x87, 0x7c, 0x73,
+  0x28, 0x43, 0x08, 0x65, 0xd5, 0xd0, 0x3f, 0x54, 0x8f, 0xa7, 0xd3, 0x9a,
+  0xd5, 0xe3, 0xe0, 0xcb, 0x49, 0xa6, 0x55, 0x6d, 0xdb, 0x77, 0x84, 0x14,
+  0x9d, 0xd7, 0x48, 0x46, 0xea, 0xf3, 0x68, 0xae, 0xa1, 0x8f, 0x9a, 0x01,
+  0x85, 0x0d, 0x4c, 0x15, 0x8e, 0xd9, 0x8d, 0xf0, 0x52, 0x30, 0xd3, 0x22,
+  0x0d, 0x84, 0x3d, 0x11, 0xb7, 0x02, 0x7c, 0xea, 0xe0, 0xab, 0x34, 0xe0,
+  0xd1, 0xa7, 0x74, 0x22, 0x8f, 0xfa, 0xed, 0xb1, 0x7b, 0x00, 0xbc, 0x16,
+  0x51, 0xec, 0xed, 0xe6, 0x34, 0x76, 0x0e, 0x75, 0x8d, 0xc5, 0x6a, 0x66,
+  0xa9, 0x95, 0x3c, 0x30, 0xf1, 0x0c, 0xb2, 0x1c, 0xbd, 0xa9, 0xb2, 0x99,
+  0xe4, 0x1b, 0x08, 0xf9, 0x93, 0x1c, 0x34, 0x88, 0xf4, 0x23, 0xc3, 0x11,
+  0x80, 0xf0, 0x20, 0x1b, 0x50, 0x0b, 0xb1, 0xa7, 0xb5, 0x16, 0x2e, 0xe5,
+  0x51, 0x2a, 0x78, 0xe5, 0xee, 0xee, 0x8a, 0x40, 0x0d, 0x45, 0xc1, 0x55,
+  0xaf, 0x0c, 0x2f, 0xc6, 0xa0, 0x4a, 0x2f, 0x33, 0xe3, 0xc0, 0x7c, 0x24,
+  0xb9, 0x70, 0xc1, 0x98, 0x96, 0x50, 0x92, 0x17, 0xf1, 0xd9, 0x3c, 0xc6,
+  0xa1, 0xaa, 0x96, 0x63, 0xd6, 0x55, 0xd8, 0x1c, 0xea, 0xd8, 0x22, 0xcb,
+  0x75, 0x95, 0x9d, 0xe1, 0x29, 0x9d, 0x21, 0x0b, 0x4a, 0xe4, 0x72, 0x70,
+  0x9a, 0x86, 0xcf, 0xda, 0x42, 0x47, 0x7c, 0x6b, 0x0b, 0xac, 0x17, 0x06,
+  0xbd, 0x5b, 0x0e, 0x10, 0x21, 0xe6, 0xdf, 0x6a, 0xff, 0xe9, 0xf6, 0x0e,
+  0x86, 0xfb, 0x74, 0xfb, 0xb3, 0xb0, 0x96, 0x87, 0xc3, 0x33, 0x51, 0xbc,
+  0x7a, 0xcd, 0x9d, 0x79, 0x38, 0xb1, 0x79, 0xca, 0xb6, 0x65, 0xac, 0x6b,
+  0x36, 0x5b, 0x4e, 0x21, 0x86, 0x29, 0xcc, 0xcb, 0x20, 0x9f, 0x0b, 0xcc,
+  0x07, 0xa7, 0x4a, 0x62, 0x2f, 0x53, 0x38, 0x4e, 0x62, 0xb1, 0x3b, 0x31,
+  0xd4, 0xb3, 0x55, 0xd8, 0x2f, 0x0a, 0xf7, 0x1c, 0xc4, 0x71, 0x02, 0xbf,
+  0x06, 0xdc, 0x2b, 0x32, 0x7e, 0x79, 0xbd, 0xef, 0x40, 0xb1, 0x5e, 0x2e,
+  0xd8, 0x10, 0xaa, 0x46, 0x39, 0xe2, 0x8b, 0x5b, 0x80, 0x75, 0xd1, 0xcc,
+  0xa5, 0x31, 0x83, 0xb2, 0x5a, 0x59, 0xe9, 0xb3, 0x37, 0x07, 0xad, 0xe6,
+  0x76, 0x9f, 0x7c, 0xfe, 0xb9, 0x0e, 0x22, 0xd3, 0x34, 0x0f, 0x5f, 0x17,
+  0x80, 0xfd, 0x02, 0x92, 0x01, 0x2e, 0x4e, 0x4c, 0xae, 0x06, 0x8c, 0x54,
+  0x52, 0x89, 0x7c, 0xee, 0x50, 0x5c, 0x7b, 0xba, 0xa6, 0x3d, 0x4d, 0xea,
+  0x74, 0xc9, 0x6f, 0x69, 0xa2, 0xf5, 0x6a, 0xb5, 0xee, 0xa4, 0xe1, 0x87,
+  0x1b, 0x88, 0xa8, 0x14, 0xe7, 0xfa, 0x32, 0x0a, 0xa4, 0xbf, 0x9a, 0xa3,
+  0xc7, 0xbf, 0xb0, 0x1a, 0x7c, 0x95, 0xd5, 0x71, 0xa2, 0x5e, 0x80, 0x27,
+  0xd1, 0x68, 0x7c, 0x25, 0x60, 0xa9, 0x47, 0xb1, 0xb6, 0x54, 0xc3, 0x97,
+  0xa2, 0xe3, 0x1b, 0x2c, 0x61, 0x50, 0xb1, 0xf4, 0x4b, 0x90, 0xd1, 0x4b,
+  0x75, 0xdc, 0x77, 0x02, 0x4b, 0x7f, 0xa9, 0x10, 0xb8, 0xaa, 0x29, 0x01,
+  0x9b, 0xb5, 0xae, 0xd3, 0xf1, 0xb5, 0x67, 0xe6, 0x40, 0x2d, 0x81, 0x21,
+  0x4f, 0x75, 0x33, 0xad, 0xb0, 0x13, 0x45, 0x6b, 0xe4, 0xae, 0xb8, 0xdc,
+  0x4b, 0x43, 0xd6, 0xa5, 0x97, 0x80, 0xf3, 0x2d, 0x25, 0x5e, 0x78, 0x34,
+  0x5d, 0x4b, 0x51, 0x75, 0x88, 0xb4, 0x22, 0xd1, 0xf8, 0x77, 0x83, 0x85,
+  0x8a, 0x4e, 0xfe, 0xa1, 0xd5, 0x6e, 0xb5, 0xe2, 0x34, 0xb0, 0x8b, 0xf9,
+  0x64, 0x1c, 0xb5, 0x15, 0xfb, 0x6b, 0xb3, 0xaf, 0xc7, 0x3e, 0xe9, 0xf1,
+  0x43, 0xed, 0x93, 0xcf, 0x2f, 0xf5, 0x2c, 0xda, 0x21, 0xf4, 0xfd, 0x83,
+  0x30, 0x65, 0x38, 0x0e, 0x84, 0x5a, 0x7c, 0xf1, 0xdc, 0xd5, 0x64, 0x05,
+  0x0a, 0x2b, 0xbf, 0x09, 0x98, 0xd0, 0xbd, 0x4e, 0x93, 0xec, 0xe0, 0x8d,
+  0x1b, 0xe9, 0xab, 0x2f, 0x1b, 0xad, 0xdd, 0xdd, 0x0d, 0x67, 0xf7, 0xf6,
+  0x5d, 0x35, 0x1c, 0x17, 0xb3, 0x0e, 0x28, 0x32, 0x45, 0xeb, 0x17, 0x92,
+  0xf2, 0x10, 0x2b, 0x61, 0xbd, 0x46, 0x5f, 0x6b, 0x99, 0xd1, 0xf2, 0xd2,
+  0xca, 0x51, 0x6f, 0x97, 0x17, 0xda, 0x01, 0xa0, 0x5f, 0x21, 0x28, 0x9a,
+  0x15, 0x95, 0x51, 0x41, 0x14, 0x67, 0xb4, 0xc4, 0x78, 0x11, 0x75, 0xb9,
+  0x1c, 0xf3, 0x85, 0xf4, 0x9e, 0xdd, 0x44, 0xf5, 0x72, 0x2e, 0xa5, 0x6a,
+  0x23, 0x27, 0xa6, 0xaf, 0xaf, 0xac, 0x8a, 0x0c, 0x8f, 0xd5, 0xe4, 0x17,
+  0xef, 0x22, 0x4d, 0xd5, 0xcc, 0xba, 0xc8, 0x17, 0xa8, 0x67, 0x6c, 0x39,
+  0xe7, 0x91, 0x35, 0xa3, 0x0a, 0x7c, 0xe2, 0xdc, 0x02, 0x4b, 0x2b, 0x55,
+  0xfe, 0xb7, 0xcc, 0x04, 0x24, 0xcd, 0x0c, 0xd1, 0x0a, 0xe1, 0x2c, 0x62,
+  0xc5, 0xf2, 0xe8, 0x9f, 0x5d, 0xa9, 0x5c, 0x41, 0xc2, 0xaf, 0x83, 0x00,
+  0x74, 0x78, 0x68, 0x5a, 0x5c, 0xc9, 0x6c, 0x16, 0xa6, 0x44, 0xb4, 0x19,
+  0x06, 0xc0, 0xf0, 0x7b, 0x7d, 0x49, 0x5c, 0x51, 0xa0, 0x05, 0x9f, 0x33,
+  0xbf, 0x72, 0xc7, 0xd7, 0xef, 0xb2, 0xd1, 0xab, 0x2f, 0x39, 0xb4, 0xe5,
+  0x23, 0xb0, 0x34, 0x05, 0x54, 0x9f, 0xc9, 0x7d, 0x8b, 0xff, 0x5c, 0x4f,
+  0xd8, 0x58, 0xdc, 0xb1, 0xe1, 0x74, 0x4c, 0x56, 0xb5, 0x18, 0xc0, 0x05,
+  0x05, 0xad, 0x5d, 0x16, 0xc5, 0xca, 0xc6, 0xac, 0xe8, 0x1d, 0x56, 0x22,
+  0x48, 0x54, 0x90, 0xbc, 0x01, 0x4f, 0xfd, 0x42, 0xf1, 0x0a, 0x0c, 0x15,
+  0x70, 0x80, 0xae, 0x34, 0x78, 0x18, 0x2d, 0xe5, 0xe2, 0xb6, 0x94, 0xd8,
+  0x57, 0x5a, 0xb1, 0x98, 0x55, 0xa3, 0xd5, 0x0b, 0xc2, 0x4f, 0xbf, 0xfa,
+  0x12, 0x30, 0x83, 0xfc, 0xeb, 0x9f, 0xdc, 0xdb, 0xfc, 0x0f, 0x1d, 0x1f,
+  0x62, 0x42, 0x2b, 0x27, 0xc2, 0x8a, 0x97, 0x3d, 0xbf, 0x25, 0xb6, 0x40,
+  0xb3, 0xee, 0xf4, 0xfa, 0x3d, 0xa6, 0xa9, 0xde, 0x9f, 0x7a, 0x88, 0xa8,
+  0x30, 0xd7, 0x0d, 0x4a, 0x3d, 0x49, 0x7d, 0xcb, 0x22, 0x8a, 0x1a, 0xe6,
+  0x24, 0x0b, 0x3c, 0x50, 0x61, 0xe0, 0x8f, 0x8d, 0xf9, 0xa7, 0x75, 0x37,
+  0xea, 0x9f, 0xd6, 0xfd, 0xb8, 0x7f, 0x5a, 0xf7, 0x23, 0xff, 0x69, 0xfd,
+  0x57, 0xec, 0x68, 0x4f, 0x9a, 0xf7, 0xad, 0x07, 0x8d, 0x07, 0x6d, 0xaf,
+  0xf7, 0x56, 0x35, 0xed, 0x1d, 0xdd, 0xb9, 0x31, 0x01, 0xbf, 0x42, 0x7c,
+  0xc4, 0x75, 0x15, 0xa4, 0x1c, 0xa5, 0xd4, 0xc9, 0x96, 0x79, 0xc3, 0xf8,
+  0x1b, 0x45, 0x1f, 0x05, 0x4f, 0xf0, 0x9a, 0xb2, 0x20, 0x5e, 0x4d, 0xd9,
+  0x6e, 0x1b, 0x60, 0x75, 0x5a, 0x27, 0x6e, 0xa5, 0x2d, 0x6e, 0x25, 0x0a,
+  0x66, 0x72, 0xaf, 0x77, 0x42, 0x6c, 0x5e, 0x2e, 0x4b, 0x09, 0x9a, 0x13,
+  0xd6, 0x2e, 0x20, 0x24, 0x06, 0x08, 0xac, 0x7d, 0xbd, 0xdd, 0x7f, 0xf7,
+  0x7e, 0xff, 0xf8, 0xc1, 0xf8, 0xed, 0x30, 0xd0, 0xd2, 0x79, 0xfd, 0x60,
+  0xa5, 0x08, 0x4d, 0x11, 0x9c, 0xc1, 0xc2, 0x92, 0xc6, 0x92, 0x58, 0xe8,
+  0x8f, 0x2c, 0x78, 0xfc, 0xdc, 0x99, 0xeb, 0xf4, 0xbd, 0xca, 0xdb, 0x6f,
+  0xc2, 0xba, 0x3f, 0x37, 0x92, 0x9e, 0xb3, 0x6e, 0xef, 0xf3, 0xeb, 0xeb,
+  0xea, 0x34, 0x77, 0xb5, 0x7c, 0xbb, 0x4a, 0x46, 0xba, 0xeb, 0x89, 0x25,
+  0x2c, 0xb3, 0x8e, 0xc3, 0xbc, 0xa5, 0xb8, 0xa4, 0x86, 0x4f, 0x27, 0x09,
+  0xa4, 0x97, 0x97, 0x2b, 0x03, 0x00, 0xf6, 0x0f, 0x0e, 0x7c, 0x06, 0x5c,
+  0x13, 0x4b, 0xa3, 0x11, 0x01, 0xfc, 0x8f, 0xb7, 0xe1, 0x60, 0xe1, 0xa6,
+  0xa8, 0xbe, 0xcb, 0x59, 0x42, 0x83, 0xba, 0x90, 0x04, 0xd4, 0x97, 0x3a,
+  0x9a, 0x2f, 0x3a, 0xd7, 0x91, 0x06, 0x10, 0x4a, 0xc3, 0x56, 0x85, 0x0d,
+  0xf5, 0xe6, 0xce, 0xd5, 0xb9, 0x7d, 0xba, 0x0f, 0xf4, 0x65, 0xcd, 0xc6,
+  0x54, 0xad, 0x26, 0xca, 0x16, 0xd0, 0xb8, 0x7a, 0x54, 0x37, 0xb1, 0xf9,
+  0x1b, 0x82, 0x97, 0xd9, 0xff, 0x54, 0x76, 0x4c, 0x2e, 0x96, 0x33, 0x22,
+  0x5f, 0x92, 0x8b, 0x26, 0xa4, 0x34, 0x3f, 0x1c, 0xd1, 0x69, 0xbb, 0xcb,
+  0x0e, 0x48, 0x89, 0x32, 0x55, 0xb1, 0x35, 0xed, 0x0c, 0x5e, 0xed, 0x77,
+  0x3b, 0x06, 0xd6, 0xcf, 0x8f, 0x2e, 0x0e, 0x69, 0x77, 0xde, 0x5f, 0x7c,
+  0xb3, 0xae, 0x9a, 0x4f, 0x3b, 0xc1, 0x1c, 0xa8, 0x62, 0xa4, 0x8c, 0xd3,
+  0xd2, 0x5b, 0xd2, 0x5c, 0x29, 0x2c, 0x37, 0x2e, 0x0c, 0xd1, 0x8a, 0xa1,
+  0x6a, 0x6d, 0xf4, 0xb3, 0xe1, 0xb3, 0xcd, 0xd6, 0xc6, 0xac, 0xc6, 0x8a,
+  0x6d, 0x57, 0x4f, 0x54, 0x9a, 0x56, 0xb0, 0x52, 0x0e, 0x75, 0xde, 0xf2,
+  0xb5, 0x04, 0x44, 0xb4, 0x4f, 0x2d, 0x68, 0xa3, 0x03, 0x0d, 0xc3, 0x63,
+  0x83, 0x38, 0xc3, 0x00, 0x10, 0x55, 0x1d, 0x9c, 0x9f, 0xca, 0x5c, 0x61,
+  0x8d, 0x70, 0x97, 0x88, 0x16, 0xa7, 0x8b, 0x9b, 0xbb, 0x89, 0x01, 0xd4,
+  0xb9, 0x66, 0x57, 0x58, 0xac, 0x29, 0x36, 0xf8, 0x9a, 0x9c, 0xe3, 0x13,
+  0xfe, 0x3a, 0xf1, 0x55, 0x93, 0x59, 0x2e, 0x00, 0x4d, 0x01, 0x58, 0x6b,
+  0x9b, 0x92, 0x55, 0x75, 0xfc, 0x51, 0x7e, 0x76, 0xf3, 0x00, 0x88, 0x07,
+  0x5c, 0xdc, 0x15, 0xc2, 0x82, 0xbe, 0x81, 0xd1, 0x68, 0x22, 0x83, 0xaf,
+  0x67, 0x05, 0x8d, 0x4a, 0xa2, 0x47, 0x78, 0x89, 0x63, 0xf4, 0xfb, 0x8d,
+  0xf3, 0x4d, 0x57, 0x4f, 0x94, 0x25, 0x78, 0x6d, 0x8d, 0x13, 0x59, 0x5a,
+  0x89, 0x2b, 0x01, 0x04, 0x8a, 0x22, 0xc8, 0x74, 0xc1, 0xe2, 0x05, 0x27,
+  0x31, 0xbe, 0x68, 0xc1, 0xfd, 0xc6, 0x77, 0x93, 0xee, 0xdc, 0x7c, 0x11,
+  0x80, 0x24, 0x0f, 0x8e, 0x31, 0xcf, 0xc4, 0x23, 0x72, 0xf0, 0xfd, 0xeb,
+  0x56, 0xc5, 0x75, 0xcc, 0x0a, 0x84, 0x20, 0x38, 0x21, 0xf3, 0x55, 0x98,
+  0x0d, 0x16, 0x05, 0x40, 0xb4, 0x24, 0xa5, 0x88, 0x26, 0x59, 0xb6, 0x70,
+  0xa8, 0xc1, 0x28, 0x81, 0x25, 0xc5, 0xb7, 0xe8, 0xc8, 0xb1, 0x65, 0xeb,
+  0x1e, 0xe8, 0x8e, 0xf7, 0x2b, 0x46, 0xa7, 0x6c, 0xa0, 0x51, 0x9c, 0x87,
+  0x41, 0xfc, 0x49, 0x21, 0x4c, 0x76, 0x3e, 0x7b, 0xf2, 0x79, 0x52, 0x71,
+  0x1e, 0x68, 0x1e, 0x2e, 0x99, 0xc0, 0x4c, 0xad, 0x46, 0xe3, 0x50, 0xf1,
+  0xde, 0xdc, 0x6a, 0x9a, 0x9b, 0x4c, 0x5a, 0x7d, 0x71, 0x97, 0xe1, 0xe6,
+  0xd2, 0x3c, 0xc9, 0x18, 0x9c, 0x81, 0x16, 0x51, 0x17, 0x4c, 0x05, 0x5c,
+  0xac, 0x93, 0xd8, 0x8a, 0x86, 0x01, 0x65, 0x4e, 0x88, 0xe9, 0x70, 0x41,
+  0x03, 0x62, 0x0f, 0x67, 0x87, 0x17, 0x67, 0xf4, 0xe3, 0xfc, 0xe2, 0xe4,
+  0x6c, 0x05, 0x84, 0x4a, 0x3d, 0x06, 0xdb, 0xe3, 0x45, 0x33, 0x43, 0x9c,
+  0x39, 0xb1, 0x02, 0x7e, 0x81, 0x88, 0x05, 0x61, 0x21, 0x55, 0x27, 0x42,
+  0x66, 0x00, 0x94, 0x59, 0x35, 0xab, 0xa4, 0x5f, 0x12, 0x2f, 0x7f, 0x70,
+  0x62, 0xb2, 0xe7, 0x0f, 0x53, 0x08, 0x26, 0xcc, 0xc4, 0xc8, 0x33, 0x76,
+  0x4c, 0x1b, 0xa3, 0xd5, 0x12, 0xaa, 0xde, 0xf5, 0xab, 0x06, 0x97, 0x15,
+  0x14, 0x22, 0x64, 0x25, 0xd5, 0x6a, 0x1b, 0x15, 0xc8, 0xd6, 0x2d, 0xbb,
+  0x77, 0x9d, 0x63, 0x0c, 0x6e, 0x5c, 0x31, 0x82, 0x47, 0xe8, 0x37, 0xad,
+  0x9c, 0xa5, 0x89, 0xaf, 0xcc, 0x62, 0x96, 0x89, 0x34, 0x2f, 0xae, 0x5c,
+  0xe3, 0x3a, 0x72, 0x4f, 0x08, 0x7c, 0x54, 0xd2, 0x95, 0x5c, 0xee, 0xb0,
+  0x37, 0x79, 0x97, 0x7b, 0x11, 0x82, 0x97, 0xec, 0x0b, 0x09, 0x38, 0xd3,
+  0x1a, 0xa0, 0xa6, 0x3d, 0x1b, 0x55, 0xef, 0x61, 0x88, 0xe0, 0x67, 0xc3,
+  0x9d, 0x36, 0x77, 0xe6, 0x4c, 0xeb, 0x6e, 0x0e, 0x83, 0xb8, 0x47, 0xcb,
+  0xd7, 0x75, 0x05, 0xb2, 0x1c, 0x60, 0x5c, 0x58, 0x95, 0xe1, 0x54, 0x9f,
+  0xea, 0xcc, 0x14, 0x43, 0x42, 0x2a, 0x67, 0x14, 0x38, 0x1a, 0xd7, 0xad,
+  0x97, 0xe4, 0xe7, 0x65, 0x9b, 0xab, 0x36, 0x84, 0xa5, 0x98, 0x8f, 0x76,
+  0x94, 0xad, 0x4a, 0x06, 0xa7, 0x5b, 0x41, 0x82, 0xb9, 0x42, 0xcb, 0x36,
+  0x66, 0xbe, 0xd3, 0x2d, 0x80, 0xac, 0x02, 0x7b, 0x6b, 0x4b, 0x21, 0x30,
+  0x30, 0x8b, 0x5c, 0x59, 0xaa, 0x2c, 0xd2, 0x8d, 0x0a, 0x41, 0xba, 0xa8,
+  0xc2, 0x33, 0xcc, 0x7d, 0x31, 0x33, 0x5b, 0x44, 0x46, 0x1e, 0x61, 0x05,
+  0x55, 0x6e, 0xa9, 0x49, 0x21, 0x31, 0xee, 0xbc, 0x08, 0x1d, 0x91, 0xbc,
+  0x10, 0x5c, 0x11, 0xb5, 0x6c, 0x57, 0x8b, 0xb6, 0xa7, 0x16, 0x8b, 0x92,
+  0x09, 0xbc, 0x9d, 0x5c, 0x8f, 0xa0, 0x88, 0x88, 0x06, 0x4e, 0xc3, 0x4d,
+  0x14, 0x56, 0x07, 0x71, 0xdc, 0xf3, 0x88, 0x5a, 0x52, 0x12, 0x24, 0x69,
+  0xdb, 0xd2, 0xe3, 0x65, 0xae, 0xb1, 0xf3, 0x03, 0x83, 0x92, 0xec, 0x75,
+  0x2d, 0x2c, 0xd6, 0x4c, 0x0a, 0x37, 0x51, 0xae, 0x7d, 0xaf, 0x71, 0x19,
+  0x18, 0xd0, 0xdb, 0x20, 0x5f, 0x3c, 0x9e, 0xc4, 0x6f, 0xf0, 0x01, 0x3c,
+  0x2c, 0x9f, 0x16, 0xd7, 0xf0, 0x5e, 0x99, 0xd7, 0x29, 0x8f, 0xe1, 0x6f,
+  0xaa, 0xc4, 0x5b, 0x4b, 0x15, 0x04, 0x8d, 0xc4, 0x2d, 0x1e, 0xb4, 0x9b,
+  0x1e, 0xcc, 0xd6, 0xe8, 0x4d, 0x49, 0xd9, 0xc3, 0x42, 0xaf, 0x8c, 0xce,
+  0x64, 0xe3, 0xb7, 0x6c, 0x46, 0x58, 0x09, 0x61, 0x10, 0x44, 0x13, 0xc0,
+  0x36, 0x46, 0xe3, 0x75, 0x03, 0x8e, 0xed, 0x11, 0x8a, 0x0e, 0x24, 0x12,
+  0x8d, 0x9d, 0x29, 0x2b, 0xd6, 0x1e, 0xf6, 0xd5, 0xa0, 0xe0, 0xa7, 0xc3,
+  0xdd, 0xcd, 0x07, 0x73, 0x02, 0x59, 0x7e, 0x67, 0x68, 0x48, 0x49, 0x16,
+  0x27, 0x55, 0x4b, 0x00, 0x3b, 0x04, 0xf2, 0xa1, 0x94, 0xad, 0xf5, 0x95,
+  0x32, 0x31, 0x8b, 0x38, 0x78, 0x80, 0x57, 0xa8, 0xbd, 0x6f, 0x0c, 0x08,
+  0xf8, 0xf8, 0x7e, 0x41, 0x08, 0x4e, 0x93, 0x53, 0xba, 0x63, 0xdc, 0x12,
+  0x07, 0x48, 0x07, 0xf4, 0x0e, 0xd4, 0x0d, 0x1e, 0xc6, 0x66, 0xfb, 0x42,
+  0x64, 0x6f, 0x28, 0x22, 0x22, 0xdf, 0x78, 0x0f, 0x02, 0x2b, 0x7f, 0x33,
+  0xfa, 0x90, 0xbd, 0x18, 0x25, 0x0d, 0x03, 0x38, 0x4e, 0x52, 0xef, 0x15,
+  0x87, 0x96, 0x4d, 0xe5, 0xc6, 0x4f, 0xd7, 0x3a, 0xef, 0x69, 0xac, 0xad,
+  0xbf, 0x08, 0x38, 0x48, 0x9b, 0x4e, 0x66, 0x15, 0x96, 0x43, 0x5b, 0x2e,
+  0x54, 0x0b, 0x9a, 0x14, 0x77, 0x73, 0x54, 0x08, 0x4a, 0x62, 0x6a, 0xc2,
+  0xf0, 0xf9, 0xec, 0xb4, 0x3c, 0x7d, 0xbb, 0xdb, 0xc3, 0x8f, 0x6d, 0x76,
+  0x5a, 0x55, 0xd3, 0xc1, 0x78, 0x3c, 0x7e, 0x80, 0xa3, 0x1e, 0x1c, 0x1c,
+  0xd0, 0x07, 0x07, 0x40, 0xda, 0x61, 0x9c, 0x70, 0x8c, 0xf4, 0xe0, 0x9a,
+  0x4d, 0x36, 0xd3, 0xcd, 0xe4, 0xfc, 0x7a, 0xc9, 0x98, 0x87, 0x34, 0x1a,
+  0x50, 0x05, 0xfb, 0xcc, 0x63, 0xd7, 0x2f, 0x97, 0xbe, 0x2a, 0x55, 0xb7,
+  0x6b, 0x6a, 0x30, 0x22, 0xc0, 0x01, 0xb4, 0xd3, 0xf2, 0x84, 0x8c, 0xae,
+  0xa4, 0x87, 0xce, 0x74, 0xd6, 0xe5, 0x3c, 0xa8, 0x4d, 0xa8, 0x1a, 0xd6,
+  0x3c, 0x9b, 0x23, 0x68, 0xde, 0xd5, 0x53, 0x40, 0x48, 0x53, 0x95, 0xbc,
+  0xdb, 0xbf, 0x60, 0xe7, 0x5d, 0xad, 0x99, 0xb8, 0xdd, 0x29, 0x88, 0x0e,
+  0xf1, 0x15, 0x66, 0xb0, 0x34, 0xa8, 0xdd, 0x63, 0x77, 0x00, 0x58, 0x51,
+  0x5e, 0x19, 0x6b, 0x54, 0x5c, 0xc9, 0xae, 0xba, 0x04, 0xba, 0xa2, 0x03,
+  0x77, 0x03, 0x49, 0x16, 0x1b, 0xff, 0xd9, 0x76, 0xbd, 0xee, 0x3c, 0x8f,
+  0xef, 0xb7, 0xc6, 0xeb, 0x3f, 0x0a, 0x8a, 0xc4, 0x96, 0xf6, 0xfa, 0xf3,
+  0xaf, 0xdf, 0xa6, 0x4c, 0xb9, 0x05, 0x3f, 0x26, 0xa4, 0x71, 0xd1, 0x91,
+  0xda, 0x11, 0xb0, 0x5d, 0x57, 0x4d, 0x4a, 0x32, 0x27, 0x15, 0xbc, 0xb8,
+  0xa2, 0xed, 0x9e, 0xa0, 0x88, 0x9e, 0x5c, 0x03, 0x2e, 0x9f, 0xf9, 0x2e,
+  0x8d, 0xd8, 0x86, 0x71, 0x8a, 0x00, 0x81, 0xaa, 0x20, 0xe6, 0x22, 0x41,
+  0xaf, 0xae, 0xf9, 0x32, 0x5b, 0x08, 0xf8, 0x67, 0xd8, 0xfc, 0x2a, 0x3d,
+  0x2e, 0x94, 0xfa, 0x43, 0x80, 0x0d, 0x1b, 0x63, 0xd5, 0x6c, 0x05, 0x1d,
+  0xa5, 0x79, 0xa7, 0x9d, 0x3c, 0xd5, 0x9e, 0x5b, 0x45, 0x83, 0xe3, 0x1d,
+  0xda, 0xed, 0xdc, 0x21, 0xa1, 0xd2, 0xee, 0xfd, 0x38, 0xd3, 0x63, 0x6f,
+  0xa7, 0x41, 0xc3, 0x56, 0x8c, 0xc6, 0xa6, 0xc5, 0x15, 0x67, 0xd7, 0x08,
+  0x76, 0x15, 0x16, 0xc9, 0x6a, 0x66, 0xb5, 0xed, 0x13, 0x42, 0xc1, 0x5a,
+  0x33, 0xbc, 0xe9, 0x08, 0x13, 0x59, 0x84, 0x79, 0x8a, 0xa3, 0x7b, 0x03,
+  0xc4, 0x73, 0xe0, 0x2f, 0x5d, 0xb1, 0x33, 0x16, 0x9c, 0x37, 0xe6, 0x94,
+  0x1c, 0x78, 0x70, 0xab, 0xa6, 0xfd, 0x37, 0x6f, 0x44, 0x87, 0x98, 0x8a,
+  0xda, 0x59, 0x93, 0x99, 0xee, 0x6f, 0x9d, 0x61, 0xbc, 0x6a, 0xdb, 0x9b,
+  0x7a, 0x65, 0x93, 0x5c, 0x41, 0x6c, 0xcc, 0x9b, 0x41, 0x54, 0x36, 0x8c,
+  0x90, 0x62, 0x46, 0x52, 0x16, 0xe4, 0xd6, 0x40, 0x78, 0x2f, 0x97, 0xf5,
+  0xb2, 0x74, 0x95, 0x67, 0x1a, 0x2c, 0x9e, 0xbd, 0x09, 0x9a, 0x09, 0x25,
+  0x1e, 0x3d, 0xf9, 0x63, 0x65, 0xcd, 0x08, 0x35, 0x2b, 0x2b, 0x8e, 0x09,
+  0x7c, 0x77, 0x21, 0x5e, 0xaf, 0xc7, 0xf0, 0xd7, 0x46, 0x2f, 0x3b, 0x13,
+  0x9f, 0xd4, 0xd8, 0x9e, 0x96, 0xf4, 0x93, 0x19, 0x99, 0x5d, 0x4d, 0x53,
+  0xce, 0x52, 0x63, 0x39, 0x69, 0x98, 0x1c, 0xab, 0x9d, 0xbe, 0xf7, 0x65,
+  0x4f, 0xb8, 0x74, 0xef, 0x65, 0x2f, 0x59, 0x5d, 0xad, 0xa0, 0xea, 0xbb,
+  0xf8, 0x96, 0x9e, 0x98, 0x9e, 0x7b, 0x36, 0x04, 0x15, 0xde, 0x65, 0x58,
+  0x88, 0x03, 0x9d, 0x17, 0x0e, 0xaf, 0x9c, 0x25, 0xa2, 0x0e, 0x3d, 0xb6,
+  0x09, 0x81, 0xb6, 0x90, 0x3c, 0x67, 0x76, 0x6b, 0x01, 0x59, 0x57, 0x5c,
+  0x96, 0x97, 0xe2, 0xcb, 0xed, 0x55, 0x88, 0xd8, 0x92, 0x12, 0x82, 0x5d,
+  0xa1, 0xa3, 0x96, 0xf5, 0x0a, 0x1d, 0x00, 0x23, 0xd2, 0xb1, 0x00, 0x38,
+  0x60, 0x3c, 0x46, 0x6c, 0x1b, 0x84, 0x43, 0xfa, 0x96, 0xa4, 0x1a, 0x39,
+  0xe9, 0x3c, 0x6f, 0x36, 0x1a, 0xbf, 0x6c, 0x07, 0xbd, 0x5f, 0x66, 0x29,
+  0xef, 0x26, 0x62, 0x8f, 0xda, 0xb5, 0x25, 0x06, 0x57, 0x2c, 0x11, 0x5e,
+  0x4d, 0x8b, 0x51, 0x71, 0x79, 0xf9, 0x80, 0x49, 0x52, 0xa0, 0x75, 0xd0,
+  0x86, 0x90, 0xe8, 0x3a, 0xa7, 0x96, 0xf3, 0x7b, 0x23, 0x1e, 0x9f, 0x96,
+  0x97, 0x1e, 0x8a, 0x65, 0x06, 0x80, 0xd1, 0x91, 0x14, 0x10, 0x0a, 0xcf,
+  0x7d, 0x97, 0xff, 0x6e, 0x59, 0xb3, 0xd4, 0x9c, 0xc9, 0x99, 0x9a, 0xf0,
+  0xe0, 0xe1, 0xa5, 0xab, 0xe4, 0x3f, 0xfe, 0xfe, 0xe3, 0xcf, 0x1d, 0xc9,
+  0x66, 0xac, 0xe1, 0x68, 0x8e, 0x0f, 0x62, 0x8b, 0x05, 0xbb, 0xce, 0xe1,
+  0x12, 0xfb, 0x2a, 0x7c, 0x2c, 0xe3, 0x65, 0xd3, 0xcb, 0x61, 0x90, 0x56,
+  0x1c, 0x33, 0x38, 0x66, 0xe4, 0xd6, 0x21, 0x90, 0x9f, 0x8b, 0xda, 0x42,
+  0x17, 0x18, 0xbb, 0x0f, 0xd8, 0xa5, 0xde, 0xf9, 0xe7, 0x70, 0xc1, 0x44,
+  0x7b, 0x8f, 0x0f, 0x94, 0x83, 0x77, 0x74, 0xde, 0x60, 0xe5, 0xb3, 0xef,
+  0xcf, 0x8e, 0x9c, 0x6e, 0x17, 0xec, 0xc4, 0xd7, 0xd8, 0x89, 0x68, 0xd9,
+  0x1c, 0x40, 0x7a, 0xb3, 0xf0, 0x93, 0x87, 0x55, 0x45, 0xd1, 0x58, 0x61,
+  0x3e, 0x8d, 0x7a, 0x12, 0x6c, 0xf7, 0x1a, 0x4c, 0xfa, 0x9d, 0x68, 0xfa,
+  0xfd, 0xa8, 0xc2, 0x46, 0x19, 0x43, 0x2e, 0x07, 0xd0, 0x19, 0xb9, 0x0b,
+  0xd9, 0x68, 0x35, 0xf7, 0xf5, 0xa1, 0xaf, 0xf8, 0x12, 0x38, 0xef, 0x0c,
+  0x76, 0xd4, 0x57, 0x83, 0x01, 0x78, 0x2b, 0x93, 0xff, 0x5d, 0xce, 0xc9,
+  0xc7, 0x86, 0x10, 0xde, 0xa9, 0x15, 0x5d, 0x78, 0x98, 0x71, 0x61, 0x5d,
+  0x06, 0xce, 0xe9, 0x57, 0xf0, 0xd8, 0xd2, 0x07, 0x7b, 0xff, 0xd6, 0xf3,
+  0x58, 0xc8, 0x1d, 0xe9, 0xb3, 0x0e, 0xfa, 0xa3, 0xa3, 0x00, 0xf9, 0xe0,
+  0xa8, 0xef, 0x47, 0xea, 0x3b, 0xb4, 0x79, 0x8c, 0x3a, 0x6a, 0xb9, 0xac,
+  0x1a, 0xc6, 0x37, 0x87, 0xfb, 0xaf, 0x6d, 0xb2, 0xff, 0x14, 0x40, 0x41,
+  0x6f, 0x10, 0x1a, 0x65, 0x52, 0xb2, 0x66, 0x69, 0xba, 0x24, 0x36, 0xc5,
+  0xee, 0x0e, 0x90, 0x08, 0x49, 0xdb, 0x1c, 0x88, 0xc7, 0x24, 0x1b, 0xab,
+  0x8e, 0x6a, 0x7d, 0x5a, 0xa9, 0x3c, 0x06, 0x06, 0x3a, 0x33, 0xf6, 0xf1,
+  0xe1, 0x15, 0x16, 0x17, 0xd0, 0x6f, 0x08, 0x8d, 0xf1, 0x52, 0x7e, 0xae,
+  0xb8, 0x14, 0x0e, 0x81, 0x47, 0xaf, 0x8f, 0xd2, 0x5a, 0x2a, 0xde, 0xb0,
+  0xf1, 0x5d, 0xa3, 0x19, 0xa8, 0x5c, 0x16, 0xf0, 0xda, 0x45, 0x7c, 0x9a,
+  0x9c, 0x63, 0xb2, 0xc3, 0x9f, 0xb5, 0xc8, 0x8b, 0xb1, 0x14, 0x1f, 0xf6,
+  0x8c, 0xfc, 0xc4, 0xa0, 0xd3, 0xaa, 0x13, 0xba, 0xd5, 0x9c, 0x4e, 0x41,
+  0x91, 0x1a, 0x52, 0xcb, 0x18, 0x8f, 0x8b, 0x94, 0x6b, 0x92, 0x53, 0x6c,
+  0xc0, 0xfc, 0xd8, 0x75, 0x1a, 0x94, 0xe0, 0x99, 0x4b, 0x1d, 0x9e, 0x08,
+  0xe4, 0x24, 0xc4, 0x92, 0x73, 0x76, 0x0d, 0xc1, 0x81, 0x17, 0x85, 0xd0,
+  0x6c, 0xaf, 0x7d, 0xf1, 0xfd, 0x73, 0x90, 0x66, 0x39, 0x37, 0x24, 0x8f,
+  0x76, 0x48, 0x8b, 0xf4, 0x1e, 0x3a, 0x35, 0xda, 0x27, 0xce, 0xf5, 0x01,
+  0x54, 0x95, 0x50, 0x0e, 0x8f, 0x77, 0x9d, 0xd7, 0x4e, 0x40, 0x7d, 0x81,
+  0xda, 0xc1, 0x37, 0xc9, 0xf8, 0x26, 0x47, 0xb4, 0x75, 0xbd, 0x04, 0x8f,
+  0x4f, 0xe7, 0xe1, 0x28, 0x1d, 0x7c, 0xdd, 0xa4, 0xc0, 0x4a, 0x77, 0x13,
+  0x91, 0xc9, 0x94, 0x0c, 0x28, 0x66, 0xa3, 0x51, 0x5c, 0x12, 0x2b, 0x60,
+  0x61, 0x7c, 0x1b, 0xf5, 0xa0, 0x05, 0x3d, 0x2f, 0x0e, 0xfb, 0x64, 0xa5,
+  0x94, 0xde, 0x83, 0xe2, 0x05, 0x93, 0x18, 0x4d, 0xa0, 0x57, 0x66, 0x82,
+  0xb7, 0xc7, 0x55, 0x39, 0x59, 0x56, 0x71, 0xf8, 0x65, 0x3c, 0x65, 0x5d,
+  0x1e, 0xe2, 0xf7, 0x57, 0xf9, 0x6d, 0xa7, 0x9d, 0xd9, 0x06, 0x06, 0x2b,
+  0xb5, 0x8d, 0xc2, 0x41, 0x85, 0x3b, 0x83, 0x9e, 0xa0, 0x4f, 0x26, 0x5c,
+  0x5e, 0xc2, 0x6d, 0x5f, 0x8c, 0xc9, 0xc1, 0x57, 0x18, 0xbb, 0xf6, 0xe7,
+  0x7b, 0x44, 0xf8, 0xc9, 0xfa, 0x37, 0x45, 0x55, 0xef, 0xad, 0x3b, 0x78,
+  0xba, 0x2a, 0x53, 0xc9, 0xa2, 0x49, 0x39, 0x5a, 0x8f, 0x21, 0x8a, 0x22,
+  0xc3, 0xdd, 0x2e, 0xe7, 0x8f, 0x2e, 0x16, 0x7d, 0xd8, 0x5c, 0x91, 0x8a,
+  0x89, 0xe1, 0x10, 0x86, 0x18, 0xfa, 0x7d, 0x96, 0xeb, 0x10, 0x00, 0xa2,
+  0x13, 0x47, 0x1c, 0xf0, 0x90, 0x7e, 0x18, 0x1c, 0xa0, 0xf3, 0xc1, 0x37,
+  0x68, 0xef, 0x4f, 0xeb, 0x4e, 0xed, 0x6e, 0x7f, 0x45, 0x03, 0xef, 0x4e,
+  0xbb, 0x0b, 0xa1, 0x9f, 0xab, 0x65, 0x69, 0x78, 0x1c, 0x30, 0xa7, 0xeb,
+  0x28, 0x51, 0x73, 0x71, 0x32, 0xd9, 0x72, 0x9b, 0x2e, 0x9e, 0xbf, 0xae,
+  0xc4, 0x70, 0x4d, 0x1a, 0x5d, 0x20, 0xb2, 0x70, 0x32, 0x28, 0x2e, 0x07,
+  0xa8, 0x84, 0x3d, 0x4b, 0xcb, 0x1b, 0xf6, 0xb3, 0x04, 0xa7, 0x0e, 0xc1,
+  0x9f, 0x48, 0x73, 0x9e, 0x4c, 0xba, 0xee, 0x6a, 0xcd, 0xcf, 0x2b, 0x9d,
+  0xda, 0xaa, 0x83, 0xd1, 0xcd, 0xdc, 0x63, 0x55, 0xc7, 0x5e, 0x77, 0xf5,
+  0x20, 0xb8, 0x76, 0xb4, 0x96, 0x83, 0x88, 0x4a, 0xe8, 0x22, 0x90, 0xb0,
+  0x2f, 0xd7, 0x39, 0x26, 0x0d, 0x56, 0x3c, 0x13, 0x0b, 0x12, 0xac, 0x00,
+  0xa4, 0xfa, 0xb3, 0x60, 0xca, 0xb5, 0x59, 0x1e, 0xae, 0xad, 0xb8, 0x6f,
+  0xb5, 0xe6, 0x07, 0xd4, 0x91, 0x22, 0xb2, 0x37, 0x41, 0x8c, 0x56, 0xc1,
+  0xce, 0x9e, 0x73, 0xec, 0x87, 0x8a, 0x9f, 0x9f, 0x0d, 0x9f, 0x7c, 0xc6,
+  0xa5, 0x1e, 0x1d, 0x76, 0xa1, 0xd5, 0xa3, 0xf7, 0x4c, 0x13, 0x5b, 0x19,
+  0xd0, 0x57, 0x9b, 0xaa, 0x50, 0xa4, 0x95, 0xd7, 0x63, 0xa2, 0x88, 0x2b,
+  0xa8, 0x00, 0xd2, 0x51, 0xf3, 0x5e, 0xe3, 0x90, 0x22, 0xdf, 0xcb, 0xef,
+  0xd4, 0xa7, 0x0f, 0x5a, 0x7a, 0xc3, 0x17, 0xd2, 0xe0, 0x1d, 0x31, 0xba,
+  0xbd, 0xe4, 0xdf, 0x8b, 0x6c, 0x1d, 0xc5, 0x59, 0xf7, 0xb6, 0xb6, 0x76,
+  0x5e, 0xec, 0x92, 0xc2, 0xf1, 0xf9, 0x70, 0x7b, 0xb8, 0xb3, 0x15, 0xa5,
+  0x7b, 0xec, 0x9f, 0xbd, 0x3b, 0x7a, 0xf7, 0xf5, 0x9e, 0xab, 0x82, 0xa3,
+  0xb0, 0xbe, 0x16, 0x0b, 0x16, 0xda, 0x52, 0x7d, 0xf9, 0x2b, 0x7e, 0x24,
+  0xef, 0x42, 0x64, 0x75, 0xa0, 0x6a, 0x03, 0x61, 0x59, 0x62, 0xd1, 0x28,
+  0x33, 0xb1, 0xd9, 0x88, 0xc8, 0xe6, 0x8a, 0x24, 0xf4, 0xa5, 0x3a, 0x95,
+  0x95, 0x8f, 0xe3, 0x6a, 0x48, 0x9d, 0x48, 0x1d, 0x8c, 0xca, 0x14, 0xc0,
+  0x32, 0x05, 0x29, 0x39, 0x53, 0xd4, 0x90, 0x2a, 0x42, 0xfa, 0x0a, 0xa0,
+  0x91, 0x63, 0x43, 0x33, 0xec, 0x0c, 0xd7, 0x85, 0xc6, 0xb5, 0xcb, 0x4d,
+  0xe6, 0x30, 0x68, 0xf9, 0x73, 0xa4, 0xc9, 0xf2, 0x4d, 0x9c, 0xe3, 0x2a,
+  0xf5, 0x6b, 0xb2, 0x42, 0x7e, 0xf4, 0xd0, 0x51, 0x74, 0xbf, 0x8b, 0xa9,
+  0x1b, 0x02, 0x8c, 0x7d, 0xea, 0x8b, 0x32, 0xb8, 0x35, 0x78, 0x04, 0x06,
+  0x0c, 0x11, 0x44, 0xbc, 0xc6, 0x1d, 0x91, 0x05, 0x48, 0x3c, 0xf2, 0x07,
+  0x79, 0x4b, 0xd4, 0xc1, 0x2e, 0x77, 0x1c, 0xbf, 0x62, 0xd7, 0x68, 0xa0,
+  0x18, 0xf2, 0x14, 0x17, 0xcb, 0xd1, 0x6c, 0xf2, 0x2c, 0x79, 0x49, 0xff,
+  0xc4, 0x79, 0x55, 0x07, 0xe6, 0xbd, 0x65, 0x03, 0x33, 0xb3, 0x31, 0x85,
+  0xd3, 0x10, 0x71, 0x9f, 0x7f, 0x7d, 0xb2, 0x4b, 0x0d, 0x7f, 0x4c, 0xad,
+  0x96, 0x69, 0x32, 0xa1, 0xd5, 0xab, 0xbb, 0xb3, 0x9b, 0x4d, 0x2f, 0x0a,
+  0x6a, 0xcd, 0xf0, 0x82, 0xef, 0xec, 0x7e, 0x9e, 0x8c, 0xf2, 0x3a, 0x79,
+  0xfb, 0xfa, 0x19, 0x69, 0x7e, 0xd9, 0xf8, 0xa6, 0x5a, 0xce, 0x8c, 0x49,
+  0x68, 0xdd, 0x4b, 0x1e, 0x67, 0xaf, 0x7d, 0x57, 0xfb, 0x0c, 0xa1, 0x7e,
+  0xc3, 0x56, 0x7b, 0x69, 0x36, 0xe5, 0xa0, 0x24, 0xac, 0x63, 0x66, 0xdc,
+  0x92, 0xda, 0xb4, 0x3b, 0xac, 0x25, 0xb4, 0x06, 0xd4, 0x79, 0x25, 0x59,
+  0x42, 0x2d, 0xeb, 0xec, 0x67, 0x4d, 0xcb, 0x93, 0x24, 0xc2, 0x19, 0xac,
+  0xfc, 0x80, 0xe4, 0xef, 0xab, 0x28, 0xae, 0xda, 0xf4, 0xe9, 0x23, 0x3c,
+  0xdb, 0x8a, 0x45, 0x3d, 0xc6, 0x1b, 0x01, 0x76, 0x97, 0x48, 0x86, 0xcc,
+  0x22, 0xf3, 0xf1, 0x12, 0x15, 0x5e, 0x62, 0x19, 0xd2, 0xaa, 0x70, 0x1a,
+  0x52, 0x5e, 0xb9, 0x94, 0xd2, 0xea, 0xfb, 0x0b, 0x0e, 0xa4, 0x4c, 0x76,
+  0x86, 0x1f, 0xfb, 0x1a, 0x2d, 0x18, 0x96, 0xf0, 0x65, 0x61, 0xad, 0x88,
+  0xee, 0x6b, 0x78, 0x17, 0x5a, 0xa3, 0xe1, 0xb6, 0x25, 0x84, 0x75, 0xca,
+  0x5e, 0xb6, 0x52, 0x8e, 0xc5, 0x2e, 0xdd, 0xcf, 0x57, 0x29, 0x8a, 0xc0,
+  0x07, 0xd4, 0x93, 0xf7, 0x81, 0x71, 0x0a, 0x31, 0x70, 0xd5, 0xc4, 0x55,
+  0x48, 0x94, 0x99, 0xf3, 0x87, 0xc6, 0x0c, 0x55, 0x6c, 0x94, 0xe8, 0x6b,
+  0xd1, 0x1e, 0x82, 0xaf, 0x23, 0x51, 0x00, 0xcd, 0x38, 0xc6, 0x0e, 0x2e,
+  0x21, 0x4b, 0x30, 0x60, 0x39, 0xae, 0xcf, 0x8a, 0x40, 0xe6, 0xe5, 0xb6,
+  0x20, 0xe8, 0x1c, 0x8d, 0xc6, 0x19, 0xb2, 0xc8, 0xdb, 0xb6, 0xc0, 0xf1,
+  0xe1, 0x30, 0x98, 0xd5, 0x91, 0x49, 0xc4, 0x5d, 0x53, 0xe2, 0xda, 0xa4,
+  0x5b, 0x6f, 0x8e, 0x8e, 0x0f, 0x37, 0x93, 0x37, 0x99, 0x25, 0x92, 0x85,
+  0xd3, 0xe2, 0x3b, 0xe8, 0x5f, 0xe4, 0x13, 0xdb, 0x22, 0xd5, 0xe4, 0xbb,
+  0x62, 0x2c, 0xd4, 0xe6, 0x08, 0x3d, 0x44, 0x76, 0x0d, 0x0c, 0x56, 0xd2,
+  0xdb, 0x0b, 0xc4, 0xae, 0x5a, 0x7d, 0x5a, 0xd8, 0x0e, 0x83, 0xea, 0x64,
+  0x1d, 0x49, 0x81, 0x41, 0xb4, 0xfd, 0x30, 0x28, 0xd1, 0x55, 0x84, 0x51,
+  0x17, 0x3c, 0x76, 0x8d, 0xd1, 0x14, 0x37, 0x6b, 0x5e, 0x11, 0xeb, 0xb8,
+  0xef, 0x3a, 0x0b, 0x70, 0x92, 0x22, 0xe8, 0x11, 0xb5, 0x10, 0x39, 0x40,
+  0x67, 0x56, 0x4c, 0x7c, 0x16, 0x8e, 0xd4, 0x21, 0x9e, 0x4f, 0x1b, 0x35,
+  0x10, 0x02, 0x24, 0xde, 0x2e, 0xdc, 0x96, 0x53, 0xc9, 0x01, 0xe1, 0x01,
+  0x85, 0x61, 0x1f, 0x22, 0xea, 0x79, 0x45, 0xd8, 0xb5, 0x32, 0x74, 0x91,
+  0x83, 0x5c, 0xa2, 0xbc, 0x83, 0x2e, 0x1c, 0xc0, 0xae, 0x90, 0x41, 0xe8,
+  0x46, 0x2a, 0x84, 0xb3, 0x6b, 0xa8, 0xe9, 0xfe, 0xdc, 0x02, 0xbc, 0xa4,
+  0x1a, 0x1b, 0xf2, 0xf2, 0xa3, 0xec, 0xbf, 0x8e, 0x10, 0x3c, 0xbd, 0x50,
+  0x83, 0x99, 0x91, 0x3a, 0xb5, 0xbd, 0xb7, 0x63, 0x97, 0x29, 0xc7, 0xce,
+  0xce, 0xb3, 0x1a, 0xb1, 0x67, 0x1c, 0x1a, 0xb7, 0xf5, 0xdb, 0x05, 0x41,
+  0xfd, 0x85, 0x49, 0xf3, 0x2f, 0xcb, 0xf9, 0x0d, 0xd1, 0x56, 0xc5, 0x14,
+  0xac, 0x95, 0xdd, 0xaa, 0xee, 0xd3, 0xf7, 0xbd, 0xf3, 0x7e, 0xb5, 0x4b,
+  0x0b, 0x8e, 0xc3, 0x42, 0x75, 0x69, 0x50, 0x04, 0xa4, 0xff, 0x40, 0x0a,
+  0x7d, 0x43, 0xb2, 0xe4, 0x5c, 0x0e, 0xa2, 0x9d, 0x31, 0xc7, 0xd7, 0xb0,
+  0x2d, 0x63, 0x5d, 0x47, 0x64, 0x4d, 0xaf, 0xaf, 0xae, 0xd5, 0x3a, 0x4a,
+  0x2b, 0x85, 0x46, 0x80, 0x95, 0xce, 0x29, 0x64, 0xea, 0xd5, 0x4a, 0xa5,
+  0xa4, 0x04, 0xcb, 0x80, 0x89, 0x35, 0x2a, 0xc5, 0x23, 0x58, 0xd4, 0xe2,
+  0xf5, 0x68, 0xdd, 0x96, 0x02, 0x5a, 0x91, 0x58, 0x09, 0xda, 0xca, 0x55,
+  0x78, 0x70, 0x03, 0x4c, 0x5a, 0x83, 0x13, 0xf9, 0x82, 0x05, 0xc7, 0x5e,
+  0x74, 0x2e, 0xc7, 0xd3, 0x42, 0xaa, 0xae, 0xdf, 0x85, 0x16, 0xd4, 0x7f,
+  0x17, 0x59, 0x90, 0xef, 0x22, 0x3d, 0xe9, 0x83, 0x8e, 0x60, 0xbb, 0xb0,
+  0xb2, 0x95, 0xe1, 0x0e, 0x20, 0xf1, 0x0b, 0x42, 0xe6, 0x49, 0xd0, 0x86,
+  0x84, 0x7a, 0x3b, 0x68, 0x82, 0xee, 0x72, 0xaa, 0xca, 0xe0, 0x02, 0xfb,
+  0x90, 0xe3, 0xd6, 0xaf, 0xe9, 0xd8, 0x16, 0x55, 0x2e, 0xfb, 0xe2, 0x23,
+  0x21, 0x03, 0xef, 0x42, 0x1c, 0xec, 0x64, 0x70, 0x3c, 0x0e, 0xe1, 0xd0,
+  0x85, 0x7f, 0x99, 0x5d, 0xa4, 0x0b, 0xee, 0x02, 0x96, 0xcf, 0x79, 0x11,
+  0xa2, 0x9c, 0xd3, 0x55, 0xcf, 0x96, 0xa6, 0xdf, 0x13, 0x15, 0x92, 0x70,
+  0x37, 0xe7, 0x9a, 0xa8, 0x1b, 0xf7, 0x59, 0xbd, 0xe9, 0xab, 0x78, 0x58,
+  0x78, 0xe1, 0xaa, 0x72, 0x9f, 0x11, 0xf8, 0x08, 0x5b, 0x00, 0xf4, 0x25,
+  0x81, 0x0a, 0xe7, 0xeb, 0xba, 0x04, 0x3e, 0x0f, 0xfb, 0xa9, 0xb4, 0x0c,
+  0xcb, 0xaa, 0xe6, 0xc2, 0x4b, 0xe9, 0x46, 0x2e, 0xa5, 0xaa, 0x2b, 0xea,
+  0x4e, 0xd3, 0xc4, 0x83, 0x7e, 0x83, 0x50, 0x64, 0x55, 0xba, 0x5d, 0xfa,
+  0xb8, 0xa6, 0xab, 0x25, 0xc9, 0xba, 0xb5, 0xb6, 0xde, 0x96, 0xfd, 0x1b,
+  0xf9, 0xcf, 0x12, 0x37, 0x1a, 0xc0, 0xc8, 0xef, 0xd3, 0xb1, 0x88, 0x1e,
+  0x61, 0xaf, 0x84, 0xac, 0x64, 0x34, 0x1d, 0xb1, 0xdc, 0xcd, 0x88, 0xb8,
+  0xcc, 0x7f, 0xd1, 0x4c, 0x27, 0x6d, 0xa2, 0x49, 0x28, 0x8c, 0x89, 0xec,
+  0x78, 0xca, 0x59, 0x36, 0x71, 0x2e, 0x6a, 0x03, 0x14, 0x17, 0x19, 0x4b,
+  0x9a, 0x29, 0x31, 0x9d, 0x36, 0x46, 0x15, 0x94, 0xb5, 0x5e, 0x39, 0x59,
+  0x8e, 0x8f, 0x73, 0xb1, 0x00, 0x8d, 0x45, 0x8e, 0x63, 0x01, 0x02, 0x1d,
+  0xcb, 0x99, 0x90, 0x61, 0x29, 0x03, 0x3e, 0x92, 0xc0, 0x17, 0x2f, 0x91,
+  0x17, 0xa3, 0x2e, 0x96, 0xc4, 0x05, 0xe1, 0x4a, 0xfa, 0x18, 0x62, 0x6f,
+  0xf7, 0xda, 0xb6, 0x14, 0xe1, 0xb7, 0x00, 0x37, 0xb9, 0x4e, 0x3f, 0x7e,
+  0x1c, 0x56, 0xd9, 0x16, 0xdd, 0x77, 0xd5, 0x56, 0x55, 0x4d, 0x01, 0xa4,
+  0x82, 0xf0, 0x76, 0x4f, 0x09, 0xdf, 0x4a, 0xe9, 0xcb, 0xf9, 0x65, 0x7e,
+  0xc5, 0x51, 0xa2, 0xf8, 0xd9, 0x05, 0x1b, 0xe5, 0xf0, 0xa2, 0xe4, 0x06,
+  0x0e, 0x9e, 0xf4, 0xfc, 0x12, 0xa8, 0xad, 0x1a, 0x2c, 0x27, 0x6c, 0x53,
+  0xd1, 0x2e, 0xe2, 0x64, 0x2e, 0xf7, 0x32, 0xf2, 0x33, 0x35, 0xad, 0x64,
+  0x9a, 0xf9, 0xdc, 0x27, 0xbb, 0xf5, 0xb1, 0x1a, 0xbe, 0x51, 0x13, 0xf4,
+  0xdb, 0x1a, 0x4f, 0x99, 0xd7, 0x9c, 0xf7, 0xa6, 0x2f, 0x8b, 0xc5, 0xa1,
+  0x61, 0x4f, 0x12, 0x86, 0x29, 0x6a, 0x30, 0x67, 0x9a, 0xd8, 0x1b, 0x9d,
+  0x60, 0x9d, 0xc4, 0x00, 0xb8, 0xa4, 0x52, 0x38, 0x86, 0x68, 0xdf, 0x4e,
+  0x16, 0x01, 0x3d, 0x5f, 0x67, 0x79, 0xe9, 0x5d, 0x38, 0x95, 0xb3, 0x70,
+  0x78, 0xae, 0x14, 0x56, 0x52, 0x5e, 0xb5, 0x20, 0x1a, 0x71, 0x25, 0x05,
+  0x95, 0x03, 0xf8, 0x65, 0xa6, 0x52, 0x9a, 0x18, 0xc9, 0x95, 0x24, 0xbf,
+  0xb2, 0x4c, 0x22, 0x16, 0x12, 0x75, 0x83, 0xa2, 0xfc, 0x53, 0xd5, 0x99,
+  0xe9, 0x74, 0xcc, 0x98, 0x34, 0x7a, 0x88, 0x05, 0x95, 0x6c, 0x0c, 0x99,
+  0x22, 0x86, 0x66, 0xf6, 0x5c, 0x49, 0x76, 0xb6, 0x8b, 0x89, 0x78, 0xfb,
+  0x96, 0x58, 0xe4, 0x04, 0xf8, 0x56, 0xa2, 0xd0, 0x49, 0xb4, 0x04, 0xa4,
+  0x82, 0x62, 0x0a, 0x54, 0x45, 0x5f, 0x65, 0xb7, 0x29, 0xe3, 0x06, 0xb5,
+  0x25, 0x12, 0x19, 0xb2, 0x47, 0x3e, 0xac, 0x9a, 0x00, 0xbc, 0x95, 0x37,
+  0x7b, 0x57, 0x43, 0x8d, 0x4e, 0xca, 0xc2, 0xe0, 0xa4, 0xf6, 0x64, 0xdb,
+  0xbe, 0x01, 0xb1, 0x4f, 0xb2, 0x67, 0xee, 0xae, 0x48, 0x74, 0x68, 0x82,
+  0xbc, 0xc0, 0xe5, 0x5a, 0xa5, 0x2b, 0xe2, 0xd6, 0x9f, 0x38, 0x3a, 0x97,
+  0xbe, 0x05, 0x51, 0x5c, 0xa1, 0x5a, 0x79, 0x9e, 0x75, 0xe5, 0xf7, 0xbc,
+  0xdb, 0x32, 0x9e, 0x35, 0xfd, 0x7a, 0x1c, 0x80, 0xa3, 0x2e, 0xa0, 0x70,
+  0x3f, 0x9b, 0xcf, 0x29, 0xed, 0x44, 0x68, 0x79, 0x7a, 0xe7, 0x3a, 0x74,
+  0x53, 0xc9, 0x0c, 0x60, 0x6c, 0x66, 0xfd, 0x40, 0x77, 0x22, 0xb1, 0x94,
+  0x81, 0x46, 0x79, 0xc3, 0x76, 0x73, 0x82, 0x3d, 0xe9, 0xef, 0x26, 0xf0,
+  0x5c, 0x83, 0x09, 0xda, 0x4b, 0x7e, 0xfa, 0xa9, 0x9f, 0x30, 0xe8, 0xe5,
+  0x4f, 0xa4, 0x1d, 0xfc, 0xc4, 0xd6, 0xb8, 0x9f, 0x4a, 0x0d, 0x10, 0xf9,
+  0xe9, 0x96, 0xba, 0xdc, 0x5f, 0x95, 0x3b, 0x90, 0x04, 0xb5, 0xf7, 0xa4,
+  0xfa, 0xa0, 0x58, 0x0f, 0xb4, 0x98, 0x2a, 0x2b, 0x6f, 0x02, 0x8d, 0xe2,
+  0x30, 0x52, 0xbb, 0x8a, 0x85, 0xd0, 0xc6, 0x2c, 0x67, 0x73, 0xc9, 0x70,
+  0x51, 0x4e, 0x03, 0x3e, 0x00, 0x66, 0xd1, 0xfb, 0x5d, 0xcf, 0xef, 0x4d,
+  0x50, 0x9c, 0x55, 0x75, 0x61, 0x7e, 0x30, 0xb2, 0x87, 0x08, 0x23, 0xa8,
+  0x11, 0x79, 0x2c, 0xf0, 0x9b, 0x38, 0xdc, 0xd0, 0x01, 0x4e, 0xd8, 0x20,
+  0x76, 0x87, 0x32, 0xca, 0x08, 0xeb, 0x95, 0x0d, 0x66, 0x5b, 0xde, 0xe2,
+  0xfa, 0x1e, 0x42, 0x58, 0x24, 0x00, 0xcf, 0x9d, 0x41, 0x3f, 0xe0, 0x83,
+  0x31, 0x67, 0xf7, 0xa8, 0xb9, 0x5e, 0x92, 0x60, 0x9f, 0x69, 0xc8, 0x73,
+  0x69, 0x2c, 0xbd, 0x41, 0x2f, 0xb0, 0x59, 0x1b, 0x2c, 0x58, 0x67, 0xdd,
+  0x6e, 0x9f, 0xa4, 0x25, 0x75, 0xbb, 0x3b, 0x33, 0x4c, 0xcc, 0xc9, 0x2a,
+  0xa9, 0x92, 0x52, 0x00, 0xc6, 0x63, 0xf8, 0xa6, 0xf0, 0xed, 0xc4, 0xc3,
+  0xef, 0x77, 0x58, 0xd2, 0xad, 0xb6, 0x88, 0xbd, 0x9b, 0xd7, 0xc1, 0x55,
+  0x3b, 0x60, 0x7f, 0x9a, 0x2f, 0xd4, 0x02, 0xe2, 0x60, 0xd3, 0x24, 0xee,
+  0xd4, 0x8a, 0x93, 0xd0, 0xef, 0x3b, 0xb8, 0xb4, 0xcf, 0x36, 0xe5, 0x61,
+  0xa0, 0x94, 0x1f, 0x17, 0x13, 0xb8, 0x9b, 0x0b, 0x97, 0x4d, 0xce, 0x8b,
+  0xbe, 0x14, 0x6d, 0x33, 0xed, 0x23, 0xc8, 0xde, 0xea, 0xf0, 0xba, 0x46,
+  0x8a, 0x08, 0x8f, 0xe9, 0x55, 0xb2, 0xbe, 0xf2, 0x1a, 0x5c, 0xef, 0x44,
+  0x6e, 0x31, 0xf9, 0x9f, 0x53, 0x80, 0x6f, 0x14, 0xda, 0x59, 0xe5, 0xe3,
+  0x0d, 0xbb, 0xce, 0xff, 0x6a, 0x57, 0xf8, 0xa6, 0xda, 0x5f, 0xc4, 0xf4,
+  0xb8, 0x02, 0x12, 0xd8, 0x96, 0x56, 0x59, 0x27, 0x56, 0x07, 0x1a, 0x6b,
+  0x0e, 0x47, 0xcc, 0x25, 0xa7, 0xfd, 0x37, 0x23, 0x81, 0x56, 0x33, 0x5e,
+  0x36, 0xdb, 0x71, 0x8f, 0x6a, 0xed, 0xb4, 0xcc, 0x1e, 0x67, 0x24, 0x83,
+  0x59, 0x4b, 0xb3, 0x70, 0x58, 0x6a, 0x63, 0x58, 0xd2, 0x68, 0x61, 0x76,
+  0x36, 0x55, 0x6a, 0x2b, 0x73, 0xd1, 0x9b, 0x2f, 0x73, 0xb5, 0xe4, 0xaf,
+  0x5f, 0x17, 0x82, 0x95, 0xb6, 0xbe, 0x97, 0x1c, 0xd5, 0xe6, 0xa0, 0xd3,
+  0x39, 0xba, 0x10, 0x93, 0x76, 0xa4, 0x1a, 0x83, 0xd1, 0x7d, 0x73, 0xf2,
+  0xf6, 0xd0, 0xc5, 0x15, 0x8b, 0x96, 0xcf, 0x9f, 0x74, 0xe2, 0x65, 0x0e,
+  0x11, 0x14, 0x62, 0x09, 0xe4, 0xfd, 0xb8, 0x4e, 0x1f, 0x56, 0x87, 0x94,
+  0xf9, 0xc5, 0xdd, 0x32, 0x9f, 0x6c, 0x20, 0xc9, 0xff, 0xfd, 0x3c, 0xff,
+  0x38, 0x10, 0x33, 0x06, 0xb0, 0x64, 0x2b, 0xcb, 0x72, 0xb7, 0x04, 0x79,
+  0x51, 0xf5, 0x8b, 0x59, 0x07, 0xe0, 0x95, 0x55, 0x6d, 0x0c, 0x01, 0x5f,
+  0x91, 0x0b, 0x93, 0xcf, 0xc5, 0x25, 0x25, 0x4d, 0x6e, 0x32, 0x03, 0x20,
+  0x16, 0x0a, 0xb0, 0x3a, 0xec, 0x7b, 0x47, 0x8c, 0x74, 0xb0, 0xdf, 0xdc,
+  0xdc, 0xfe, 0xe9, 0xe9, 0xeb, 0xfd, 0x8b, 0x7d, 0x37, 0x37, 0x41, 0x22,
+  0x62, 0xa6, 0x02, 0xdd, 0x94, 0x05, 0x37, 0xc5, 0xbc, 0xe9, 0xfd, 0x9e,
+  0x13, 0x68, 0xda, 0x77, 0xfd, 0xe9, 0xd9, 0x09, 0x5b, 0x18, 0x7e, 0xff,
+  0xd3, 0x7e, 0x80, 0x2c, 0xc1, 0x25, 0xa3, 0xe3, 0xa8, 0xe5, 0xdd, 0xcd,
+  0x84, 0xc7, 0x67, 0x68, 0x7a, 0x7d, 0x17, 0x69, 0x21, 0x09, 0xf5, 0xc9,
+  0x07, 0xde, 0xd3, 0x72, 0xec, 0x84, 0x27, 0x31, 0xde, 0xc9, 0x76, 0xf6,
+  0xe3, 0x88, 0xcb, 0x60, 0x22, 0x85, 0x67, 0x62, 0x86, 0x95, 0x67, 0x6b,
+  0x35, 0x25, 0x89, 0x9f, 0x84, 0xd6, 0x1a, 0xac, 0x83, 0x8d, 0x6d, 0x4c,
+  0x5f, 0x13, 0x5e, 0xa8, 0x36, 0x22, 0xac, 0xdb, 0x1f, 0xdb, 0x20, 0x01,
+  0x30, 0x00, 0xc3, 0x15, 0x16, 0x20, 0x11, 0xb5, 0x85, 0x54, 0xd6, 0x1c,
+  0xda, 0x68, 0x55, 0x9d, 0x8a, 0xce, 0x8e, 0x78, 0x84, 0x88, 0xce, 0x6d,
+  0x0e, 0xc3, 0xd8, 0x74, 0x3f, 0x18, 0x0c, 0xcc, 0xb0, 0x2f, 0xd3, 0xa6,
+  0x0f, 0xa2, 0x87, 0x6a, 0xab, 0x1f, 0x68, 0x7c, 0xbe, 0x9b, 0x4d, 0x84,
+  0xfc, 0xa1, 0x2d, 0xcb, 0x2b, 0xe6, 0x84, 0x3e, 0x85, 0xca, 0xea, 0x48,
+  0x05, 0x8d, 0xcd, 0x8d, 0xe6, 0x10, 0xa1, 0x47, 0xab, 0x25, 0x1b, 0x6c,
+  0xf8, 0xaf, 0xad, 0x9d, 0xe1, 0xf6, 0x7a, 0x3c, 0x7a, 0x84, 0x63, 0xc2,
+  0x28, 0x66, 0x28, 0xf9, 0x52, 0xf8, 0xa0, 0x78, 0x7c, 0x80, 0xc2, 0xc0,
+  0x48, 0x22, 0x5d, 0x50, 0x07, 0x9d, 0x63, 0x19, 0x9c, 0x44, 0xc6, 0x4b,
+  0x71, 0xcc, 0x78, 0x8e, 0x38, 0x2f, 0x90, 0x69, 0x9d, 0xb2, 0x36, 0x04,
+  0x43, 0xcc, 0x7a, 0xf7, 0x02, 0xcf, 0x27, 0xe2, 0x59, 0x6e, 0xad, 0xf3,
+  0xaf, 0x4a, 0xed, 0x73, 0xfb, 0x1f, 0x00, 0x7d, 0xae, 0xe4, 0x76, 0x0d,
+  0xcb, 0xfb, 0x4d, 0x46, 0x82, 0xe0, 0x14, 0x99, 0x6c, 0x6c, 0x47, 0x7b,
+  0x49, 0xba, 0x54, 0x31, 0x9f, 0xc4, 0x45, 0x6f, 0x1a, 0xbe, 0x80, 0x8a,
+  0x63, 0x12, 0x85, 0x35, 0xe0, 0xad, 0x24, 0x8c, 0xd1, 0xf7, 0x18, 0xde,
+  0x65, 0xc6, 0x51, 0xb5, 0x49, 0x3e, 0x89, 0xf2, 0xfa, 0x5b, 0x80, 0x54,
+  0x6e, 0x10, 0xac, 0x7c, 0x8f, 0x32, 0x27, 0xf2, 0x4b, 0xeb, 0x26, 0x1c,
+  0x02, 0xa6, 0x8b, 0x54, 0xf3, 0x65, 0x24, 0x2f, 0xb4, 0xdf, 0x1f, 0x32,
+  0x97, 0x6d, 0xc0, 0xb6, 0x88, 0x51, 0x87, 0x9f, 0x28, 0x9c, 0xc9, 0x0f,
+  0x15, 0xa9, 0x71, 0xa6, 0x22, 0x23, 0xe6, 0xa5, 0xe0, 0xf1, 0xca, 0x14,
+  0x2f, 0x0e, 0x4e, 0x3f, 0x7c, 0x7b, 0x78, 0x78, 0x7a, 0xf4, 0xfa, 0xf8,
+  0x50, 0xef, 0x19, 0xf7, 0xd1, 0xbb, 0x8b, 0xef, 0x8e, 0x0d, 0xa2, 0xd7,
+  0xd6, 0x27, 0x32, 0x83, 0x71, 0xd4, 0x17, 0x9a, 0x3b, 0xce, 0xe7, 0xcb,
+  0x8f, 0x7d, 0x00, 0x0c, 0x11, 0x31, 0xef, 0x1f, 0xfd, 0xd0, 0x4f, 0xbe,
+  0x39, 0x1d, 0xbc, 0xff, 0x21, 0x82, 0x0e, 0x69, 0xc4, 0x59, 0xb7, 0x05,
+  0x4b, 0x17, 0x75, 0x8d, 0x42, 0x6a, 0x7e, 0xee, 0xa6, 0xff, 0x76, 0xd4,
+  0x16, 0xff, 0x47, 0x9b, 0x02, 0xa3, 0xe6, 0x96, 0xf3, 0xa0, 0x6a, 0x43,
+  0x20, 0xc5, 0xeb, 0xd5, 0x0b, 0x72, 0x78, 0xbe, 0x9d, 0x28, 0x75, 0x35,
+  0x09, 0xf0, 0x3e, 0x79, 0x49, 0xff, 0x74, 0x61, 0xe9, 0x6d, 0x9d, 0x9f,
+  0x7f, 0xb3, 0x99, 0x9c, 0x06, 0xd5, 0x17, 0x9c, 0xad, 0x65, 0x68, 0x31,
+  0x96, 0x6c, 0xa6, 0xa1, 0xc6, 0x03, 0xab, 0x4d, 0xc9, 0x70, 0xd9, 0xb1,
+  0x9f, 0x5c, 0x5b, 0xb0, 0x3b, 0xdc, 0x94, 0x3f, 0x91, 0x2c, 0x91, 0xb0,
+  0x45, 0xbd, 0x81, 0xfd, 0x37, 0x81, 0x84, 0x45, 0x60, 0x6c, 0x4b, 0x46,
+  0xb8, 0xe3, 0x93, 0x30, 0x3f, 0x0d, 0x3b, 0x4c, 0x47, 0x74, 0x92, 0x4f,
+  0x24, 0xcd, 0x87, 0x35, 0x06, 0x91, 0x14, 0x92, 0xa4, 0xf7, 0x5f, 0x5b,
+  0xc3, 0xaa, 0xba, 0xde, 0xca, 0x27, 0x1f, 0xca, 0x2a, 0xed, 0xb5, 0x2f,
+  0xe7, 0xe0, 0xeb, 0x09, 0x7f, 0x9d, 0xf4, 0x86, 0xee, 0x51, 0xfd, 0x9d,
+  0x3f, 0xff, 0x2d, 0xc1, 0xc9, 0x68, 0x6d, 0x1e, 0x05, 0x77, 0x8e, 0x76,
+  0x82, 0x1f, 0x1d, 0x3a, 0x31, 0x5c, 0x5d, 0x07, 0xdc, 0x08, 0xb6, 0x41,
+  0x36, 0x97, 0xb7, 0x26, 0xda, 0x0d, 0x60, 0xda, 0x25, 0x2d, 0x50, 0x7b,
+  0x3a, 0xb7, 0xaf, 0x0f, 0xcf, 0xfa, 0x82, 0xf9, 0x1c, 0xe2, 0x3d, 0x7b,
+  0x74, 0x36, 0xc5, 0x79, 0x5e, 0xa5, 0x9e, 0xf6, 0xff, 0x89, 0x38, 0xcf,
+  0x37, 0xe5, 0x28, 0x79, 0x39, 0xa5, 0x17, 0xa7, 0xdd, 0x39, 0xbf, 0x52,
+  0x84, 0xd7, 0x57, 0x12, 0x6e, 0xc1, 0xe1, 0x28, 0x7e, 0xb0, 0x48, 0xa8,
+  0x68, 0x46, 0xf4, 0xd2, 0x2e, 0xc5, 0xb4, 0x86, 0x4d, 0x8c, 0xdf, 0x88,
+  0x12, 0x24, 0x7b, 0x08, 0x46, 0x66, 0x2a, 0x61, 0xcc, 0x1f, 0xfe, 0x09,
+  0xbe, 0xaf, 0x15, 0x98, 0x7b, 0xfd, 0x58, 0xf9, 0xee, 0xe9, 0xaa, 0xf7,
+  0x68, 0xe3, 0xa4, 0x35, 0x3e, 0x42, 0x02, 0xd1, 0x2c, 0xe3, 0xd0, 0x4a,
+  0x0f, 0x95, 0x6a, 0x1b, 0x61, 0x2c, 0x52, 0x15, 0x81, 0x6d, 0xb9, 0xe6,
+  0xda, 0xf1, 0x6f, 0xdd, 0xc6, 0xb8, 0x55, 0xb5, 0xa5, 0x52, 0x87, 0xcb,
+  0x1b, 0xd6, 0x94, 0xb2, 0x82, 0xd1, 0x4f, 0x8d, 0x04, 0x86, 0x2b, 0x00,
+  0xba, 0x78, 0xa0, 0xc8, 0xa9, 0x64, 0x61, 0x84, 0x5d, 0xf1, 0x1c, 0x50,
+  0x3b, 0xf8, 0x8e, 0xd5, 0x40, 0xf3, 0xb2, 0x09, 0x58, 0x3a, 0xea, 0xd4,
+  0x80, 0x3a, 0xbb, 0x8e, 0xb5, 0xab, 0x4e, 0x95, 0xd7, 0xbf, 0x21, 0xe9,
+  0x4c, 0x51, 0xcc, 0x29, 0xaf, 0xea, 0x01, 0xbb, 0xad, 0xba, 0x23, 0xd1,
+  0xa1, 0x34, 0x69, 0x1e, 0x89, 0xf9, 0xcd, 0x82, 0x6a, 0x0a, 0xc2, 0xc2,
+  0xa4, 0x64, 0x25, 0xa2, 0xed, 0x2a, 0x05, 0x15, 0x19, 0x74, 0x55, 0xcb,
+  0xba, 0xcd, 0xb3, 0x3b, 0xef, 0xd9, 0x6d, 0xe0, 0x36, 0xa9, 0x2f, 0x17,
+  0xcb, 0x02, 0x66, 0x26, 0x75, 0x93, 0xb9, 0xb8, 0x43, 0x17, 0xa4, 0xd6,
+  0x2c, 0x1d, 0x5f, 0x93, 0xf8, 0x38, 0x40, 0xcc, 0x6e, 0xd2, 0x44, 0xb4,
+  0x61, 0x63, 0x42, 0x6b, 0xa0, 0x9c, 0x62, 0xa9, 0x91, 0x80, 0x9d, 0x25,
+  0x9c, 0xfd, 0x83, 0x3c, 0x44, 0x17, 0x77, 0x28, 0xc4, 0xe8, 0x12, 0xa7,
+  0xa1, 0xa4, 0x16, 0xa5, 0x83, 0x1d, 0x97, 0x6c, 0x77, 0x5e, 0xd4, 0x0e,
+  0xc7, 0x59, 0xa2, 0xb0, 0xe2, 0x0d, 0x8b, 0x96, 0xc2, 0x35, 0xa5, 0xc9,
+  0xbb, 0xe3, 0x73, 0x9f, 0x33, 0x54, 0x6b, 0x8d, 0x2e, 0xa9, 0x63, 0xb1,
+  0xca, 0xf1, 0x11, 0x06, 0xca, 0x1d, 0x1f, 0x9d, 0x5f, 0x74, 0x9a, 0x04,
+  0xf6, 0x48, 0xad, 0x9e, 0x65, 0x01, 0x4e, 0x42, 0xa5, 0xb5, 0xdf, 0x10,
+  0x96, 0x29, 0x9e, 0x6c, 0xb3, 0x00, 0xb2, 0xe6, 0xe4, 0x32, 0xc6, 0xe2,
+  0x25, 0xe6, 0x21, 0xfe, 0x49, 0xec, 0xa8, 0x1a, 0x8a, 0x64, 0x21, 0x8e,
+  0xd5, 0x72, 0x34, 0x08, 0x92, 0xb9, 0x85, 0x21, 0x00, 0x11, 0x29, 0x1f,
+  0xb3, 0x72, 0x7f, 0x13, 0xc7, 0x70, 0x6c, 0x9c, 0x9e, 0x9c, 0x3e, 0x31,
+  0x72, 0xb2, 0xcc, 0xfb, 0x86, 0x9b, 0x73, 0x9c, 0xb0, 0x94, 0xa6, 0x20,
+  0x64, 0xfc, 0x74, 0x83, 0xb8, 0xba, 0x0a, 0xe8, 0xf2, 0x3a, 0xf2, 0x42,
+  0xb4, 0xd6, 0x51, 0x1d, 0x15, 0xcd, 0xc8, 0x42, 0x4e, 0x03, 0x0e, 0x72,
+  0x98, 0x3b, 0xf0, 0x53, 0x2c, 0xc6, 0xc0, 0x91, 0xa2, 0xa6, 0x31, 0x80,
+  0x0e, 0x85, 0x0c, 0xfd, 0xc9, 0x0d, 0x46, 0x4d, 0xa7, 0x2d, 0xca, 0xdf,
+  0x21, 0xa9, 0x9d, 0xa4, 0x4d, 0x49, 0xc5, 0xaf, 0x9a, 0xb9, 0xf8, 0x92,
+  0x51, 0x82, 0x0a, 0x74, 0xec, 0x4a, 0x06, 0x40, 0xf0, 0x8a, 0x9d, 0x14,
+  0x7b, 0x45, 0x23, 0x5c, 0x66, 0xf0, 0x83, 0x38, 0xcd, 0x24, 0xb6, 0xd4,
+  0x83, 0x3d, 0xf4, 0x9b, 0xa1, 0x48, 0x1d, 0xa5, 0x95, 0x82, 0xc2, 0xb8,
+  0x92, 0xb6, 0x46, 0x3a, 0x37, 0x09, 0x92, 0x6e, 0xed, 0x74, 0xad, 0xd4,
+  0x13, 0xa5, 0xd3, 0x66, 0x37, 0x14, 0xfd, 0xd2, 0x61, 0x9e, 0xc2, 0x5e,
+  0xf5, 0x88, 0xf5, 0xcc, 0x73, 0x1a, 0x8b, 0x02, 0xd5, 0x5e, 0x72, 0xe8,
+  0xa5, 0x7a, 0xa9, 0x04, 0xb5, 0x39, 0xaf, 0x7b, 0x00, 0x86, 0x03, 0x3c,
+  0x62, 0xc2, 0x6b, 0xd2, 0x75, 0x94, 0x6f, 0xb2, 0x30, 0x64, 0xb6, 0x29,
+  0x37, 0xee, 0xee, 0x34, 0xe0, 0x15, 0x1a, 0xf5, 0xe7, 0x3a, 0x23, 0x12,
+  0x50, 0xa1, 0x6c, 0x33, 0x71, 0xc6, 0x64, 0x5d, 0x76, 0x89, 0xfc, 0x08,
+  0xe0, 0x3a, 0xb5, 0x37, 0x24, 0x64, 0x5c, 0x71, 0x86, 0x44, 0x9b, 0x28,
+  0x24, 0x93, 0x04, 0x50, 0xc6, 0x06, 0xf0, 0x55, 0x27, 0xae, 0xf4, 0xdd,
+  0x86, 0x62, 0xf5, 0xfa, 0x88, 0xc6, 0x76, 0xf9, 0xb9, 0x2e, 0xe4, 0x11,
+  0xba, 0x5d, 0x9e, 0xfc, 0xf0, 0x43, 0xd2, 0x84, 0xb5, 0xdb, 0x5c, 0x15,
+  0x14, 0x0f, 0x05, 0x9d, 0x6e, 0xdc, 0x2e, 0x9e, 0x60, 0x34, 0xa0, 0xc4,
+  0xc5, 0xde, 0x61, 0x28, 0xef, 0x90, 0x4c, 0x74, 0xa7, 0xaf, 0x32, 0x6c,
+  0x85, 0x50, 0x4e, 0x18, 0x9d, 0x12, 0x5f, 0xc6, 0x3e, 0xcc, 0xa3, 0xef,
+  0x82, 0xba, 0xc4, 0x1b, 0x8e, 0xa8, 0x99, 0x70, 0xa9, 0x2a, 0x77, 0x9d,
+  0x90, 0x10, 0x70, 0x37, 0x1f, 0x76, 0x55, 0x0c, 0x8c, 0x21, 0xf7, 0x24,
+  0xf8, 0x1f, 0x33, 0x92, 0xc2, 0x89, 0xc0, 0x61, 0x65, 0x8b, 0xe0, 0x98,
+  0x66, 0x28, 0x52, 0x82, 0xaf, 0x7c, 0x1e, 0xc5, 0x35, 0x88, 0x07, 0x02,
+  0x01, 0x0c, 0x52, 0x64, 0x23, 0x75, 0x01, 0x63, 0x49, 0x0d, 0x2f, 0x9e,
+  0x39, 0x2a, 0xc3, 0xdd, 0x92, 0x88, 0xb5, 0xb8, 0xc4, 0x0f, 0xca, 0xfa,
+  0x05, 0x16, 0x53, 0xc4, 0x32, 0x68, 0x3a, 0x8f, 0x90, 0xfe, 0x1f, 0x0d,
+  0x23, 0x46, 0xd2, 0xf4, 0x14, 0xb2, 0x4a, 0x48, 0x2f, 0x86, 0x77, 0x2d,
+  0xe6, 0x83, 0xba, 0x5c, 0x62, 0x85, 0x78, 0x43, 0x18, 0x1f, 0x81, 0x1d,
+  0x00, 0x06, 0xe6, 0xc4, 0x02, 0xa5, 0xc5, 0x6d, 0xa0, 0x26, 0x95, 0x84,
+  0xa4, 0xcf, 0x80, 0x5a, 0x13, 0xf9, 0xa5, 0x7d, 0x30, 0xa0, 0x24, 0x1b,
+  0x72, 0x72, 0x61, 0xc3, 0xf3, 0x39, 0x18, 0xcc, 0xd2, 0x8f, 0x03, 0x3c,
+  0x56, 0x45, 0xe5, 0x51, 0x22, 0x5b, 0xa7, 0xb4, 0x50, 0x85, 0x0b, 0x66,
+  0x5a, 0xad, 0xcb, 0x79, 0xd0, 0x40, 0x55, 0xa6, 0x20, 0xbe, 0x1b, 0xbe,
+  0x3e, 0xbc, 0x68, 0x1f, 0x2d, 0x20, 0x50, 0xa8, 0x89, 0x00, 0x99, 0x06,
+  0xf4, 0xf7, 0xe9, 0xfb, 0x8b, 0x4d, 0x5f, 0x1a, 0x4f, 0xa8, 0xb4, 0x11,
+  0xd0, 0xa7, 0x11, 0xf0, 0x31, 0xbe, 0xa6, 0x44, 0xf7, 0x2b, 0x83, 0x05,
+  0x86, 0xa6, 0x3b, 0x10, 0x5c, 0xcc, 0xf3, 0xc9, 0xf6, 0x4e, 0x9f, 0xfe,
+  0xd9, 0x85, 0xb5, 0xed, 0xc9, 0xf6, 0x13, 0xe7, 0x41, 0xb0, 0xa7, 0x22,
+  0x27, 0x02, 0x87, 0x54, 0xa1, 0x32, 0x6c, 0xe0, 0x88, 0x48, 0x9e, 0x7c,
+  0xfc, 0x88, 0xaf, 0x9a, 0xd1, 0x70, 0x03, 0x17, 0xd7, 0xbc, 0xca, 0x63,
+  0x62, 0x03, 0xf7, 0x2b, 0x0e, 0xb3, 0xd9, 0x72, 0x2e, 0xe1, 0x3e, 0xc0,
+  0x7b, 0xe5, 0x0c, 0x82, 0xe1, 0x2a, 0x54, 0xaf, 0xba, 0x9d, 0xd4, 0x1d,
+  0xc2, 0x7a, 0x11, 0xad, 0xf0, 0xe4, 0x5d, 0x2f, 0x96, 0x8e, 0x10, 0x33,
+  0x46, 0x3c, 0x26, 0x01, 0xa2, 0x60, 0x1c, 0xdb, 0x1f, 0xc3, 0xfb, 0xba,
+  0x41, 0x12, 0xc4, 0x2e, 0x95, 0x19, 0xa9, 0xea, 0xbf, 0x02, 0xd6, 0x6f,
+  0x8f, 0x63, 0x70, 0xe9, 0x50, 0x60, 0x85, 0xed, 0xd7, 0x5d, 0x89, 0xef,
+  0x95, 0x3f, 0x9e, 0x84, 0xaa, 0x85, 0x95, 0x58, 0xed, 0x2c, 0x2f, 0xb4,
+  0x2f, 0x45, 0x3f, 0x43, 0xd6, 0xc5, 0xc7, 0x8f, 0x8b, 0x2e, 0x72, 0xa6,
+  0x10, 0x4b, 0xd0, 0x9a, 0x6a, 0xae, 0xa5, 0xe7, 0xd5, 0xdb, 0x89, 0xdf,
+  0x3b, 0xca, 0x78, 0x21, 0x9a, 0x06, 0x28, 0x88, 0x56, 0xda, 0x75, 0x20,
+  0x13, 0x3c, 0x48, 0xd4, 0x3d, 0x8e, 0x7d, 0x36, 0x77, 0xae, 0x46, 0xb5,
+  0x8a, 0xfa, 0xd7, 0x8d, 0x8c, 0x63, 0x4e, 0x53, 0xd2, 0x0b, 0xa6, 0x82,
+  0xe4, 0xe4, 0xe2, 0xf0, 0x4b, 0x1b, 0x96, 0xc4, 0x6f, 0xfb, 0xe0, 0x2b,
+  0x7e, 0xef, 0x5f, 0xfe, 0x9b, 0x22, 0xb7, 0x3a, 0x5a, 0xc5, 0x1f, 0xd0,
+  0x11, 0x17, 0xd3, 0x10, 0xc7, 0x1f, 0x4c, 0xe7, 0x05, 0xb7, 0x18, 0xc0,
+  0x3c, 0xf0, 0x92, 0x24, 0x8e, 0x6c, 0xb2, 0xd2, 0x59, 0x0f, 0x29, 0x93,
+  0xf8, 0x42, 0x3e, 0x5b, 0xce, 0x7c, 0x02, 0x27, 0x57, 0x63, 0xaa, 0x33,
+  0x5f, 0x6d, 0x3e, 0x2c, 0xa7, 0x31, 0xe8, 0xa0, 0x11, 0xe0, 0x0d, 0xfa,
+  0xc4, 0x70, 0xe8, 0x86, 0x00, 0x9c, 0x33, 0x48, 0x13, 0x0d, 0xde, 0xd3,
+  0x25, 0x50, 0x31, 0x89, 0x9b, 0x47, 0xec, 0x52, 0x1a, 0xc9, 0xc1, 0x5c,
+  0x80, 0x4f, 0xf1, 0x05, 0x53, 0x41, 0x87, 0xec, 0x4d, 0x44, 0x3c, 0xc6,
+  0x26, 0xb8, 0x71, 0xf2, 0x29, 0xd1, 0x71, 0x49, 0x16, 0x09, 0x5d, 0x08,
+  0x51, 0xbc, 0xca, 0x88, 0x9a, 0xb8, 0xcb, 0x27, 0xf5, 0x35, 0x90, 0x3d,
+  0x71, 0x45, 0x32, 0xf0, 0x0c, 0xc7, 0x4a, 0xab, 0xc0, 0x91, 0xc7, 0xf9,
+  0x59, 0xa3, 0xee, 0xaa, 0x35, 0xb2, 0x47, 0x58, 0xd3, 0x44, 0xd0, 0x70,
+  0x38, 0x39, 0x00, 0xdb, 0x80, 0xb8, 0xce, 0x2d, 0x31, 0x11, 0x39, 0xbc,
+  0x07, 0x92, 0xf8, 0x96, 0x97, 0x0c, 0x11, 0x1a, 0x4b, 0x8f, 0x96, 0x51,
+  0x35, 0x74, 0x87, 0x02, 0x26, 0x98, 0xde, 0x8d, 0xa4, 0x32, 0x7e, 0xab,
+  0x1a, 0xa9, 0x80, 0x94, 0x81, 0x07, 0x48, 0x3e, 0x0f, 0xf1, 0xab, 0x9b,
+  0x7c, 0x1a, 0xd9, 0x24, 0xd0, 0x3d, 0xe9, 0xcf, 0x33, 0xbc, 0xfe, 0xb6,
+  0xa7, 0x51, 0x2a, 0x0c, 0xa1, 0x97, 0x69, 0xd0, 0x69, 0x5f, 0x21, 0x3f,
+  0x7b, 0x57, 0xd2, 0xc5, 0xd7, 0x3d, 0x17, 0xcb, 0x12, 0x5d, 0x76, 0x3e,
+  0x52, 0xd5, 0x6c, 0xe9, 0xd5, 0x5e, 0xb2, 0xbb, 0xbd, 0xfd, 0x2d, 0xb1,
+  0xd8, 0x19, 0x36, 0x65, 0xe7, 0xeb, 0xee, 0xba, 0x3e, 0x4a, 0xc6, 0xa5,
+  0x94, 0x26, 0x90, 0xd3, 0x94, 0xde, 0xc2, 0xe8, 0xad, 0x0b, 0x87, 0x29,
+  0x71, 0x74, 0x98, 0x87, 0xeb, 0xee, 0xdc, 0x38, 0x97, 0x9e, 0xcc, 0xf6,
+  0xd0, 0x36, 0x1a, 0xc7, 0x0c, 0xb9, 0x2a, 0xbc, 0xf3, 0xd7, 0xf4, 0x5b,
+  0x16, 0x10, 0x05, 0x3a, 0xe9, 0xc0, 0xba, 0x20, 0xb9, 0x83, 0xf1, 0x0e,
+  0x97, 0x25, 0x97, 0x31, 0x47, 0x24, 0x28, 0xe0, 0xc2, 0x60, 0xa4, 0x35,
+  0xf7, 0xd2, 0xbc, 0x10, 0x00, 0x1a, 0x17, 0xc6, 0x2e, 0xb3, 0xe1, 0xc9,
+  0x74, 0x25, 0xd8, 0x31, 0x09, 0xcb, 0x25, 0x6f, 0xc1, 0xd2, 0x83, 0x3f,
+  0x33, 0x87, 0xc4, 0x10, 0xe4, 0x18, 0x3a, 0x07, 0xa8, 0xa4, 0x01, 0x7a,
+  0x61, 0xad, 0x3d, 0x59, 0xa6, 0x4b, 0xad, 0x37, 0xc1, 0x4a, 0x27, 0x6c,
+  0xaa, 0x98, 0x23, 0x63, 0x50, 0xc3, 0x54, 0xce, 0x57, 0x19, 0x03, 0x84,
+  0xa1, 0x5d, 0xd8, 0x7f, 0xa7, 0xfc, 0xc0, 0x94, 0x15, 0xea, 0x22, 0x4a,
+  0x99, 0x9a, 0x2e, 0x60, 0x58, 0x76, 0x97, 0x51, 0x30, 0x24, 0x4e, 0x04,
+  0x1f, 0xa3, 0x92, 0x0f, 0xa7, 0x14, 0xfd, 0x86, 0x46, 0x26, 0x20, 0x21,
+  0x0a, 0xe0, 0xca, 0x4b, 0x22, 0xdf, 0x2f, 0x7e, 0xe4, 0xc2, 0xde, 0x3f,
+  0x77, 0x94, 0x30, 0x4f, 0x35, 0xa7, 0x8e, 0xcf, 0x92, 0xe5, 0xad, 0x95,
+  0xbe, 0xc0, 0x1e, 0xda, 0x91, 0xc4, 0x6f, 0x2b, 0x24, 0xee, 0x4b, 0x13,
+  0x76, 0x86, 0x04, 0x9b, 0x39, 0x7f, 0xa3, 0xda, 0x1c, 0x86, 0xc0, 0x8a,
+  0x0a, 0x62, 0x6e, 0xad, 0xc0, 0x17, 0x3d, 0x17, 0xe6, 0x24, 0x59, 0x14,
+  0x6d, 0x66, 0xc4, 0xb1, 0x8f, 0xe3, 0xcc, 0x07, 0x5b, 0xa1, 0x15, 0x9b,
+  0xef, 0x68, 0x59, 0xdd, 0x33, 0x90, 0x94, 0x78, 0x31, 0x90, 0xe3, 0x60,
+  0x18, 0xd8, 0x8c, 0xc4, 0xcf, 0xc3, 0x8f, 0xc3, 0xd3, 0x18, 0xeb, 0x48,
+  0xa2, 0x91, 0xeb, 0x82, 0x2e, 0xfa, 0xb4, 0x2c, 0x49, 0x54, 0xd3, 0xad,
+  0xd6, 0x6c, 0x46, 0x1a, 0x3c, 0x2b, 0x3f, 0x30, 0x08, 0x39, 0xc7, 0x04,
+  0xb5, 0xbd, 0x5c, 0x74, 0xc4, 0x93, 0x71, 0x7e, 0x73, 0x04, 0x2e, 0xd7,
+  0x00, 0x0f, 0x30, 0xf5, 0xc3, 0xc4, 0xcd, 0x07, 0x35, 0xa0, 0x63, 0x58,
+  0x21, 0x5a, 0xc9, 0x21, 0x0a, 0xbb, 0x20, 0x15, 0x3b, 0x20, 0x5b, 0x9a,
+  0xf3, 0xa3, 0x3b, 0x5f, 0x3d, 0xf9, 0xa3, 0x87, 0x4b, 0x94, 0x82, 0x86,
+  0x3e, 0x3f, 0x44, 0x71, 0xbb, 0x38, 0x9e, 0x82, 0x35, 0x45, 0x2f, 0x90,
+  0x17, 0xc3, 0x2e, 0x90, 0x76, 0x7e, 0xa6, 0x10, 0xa5, 0x52, 0xac, 0x09,
+  0x75, 0x59, 0x4c, 0x96, 0x63, 0x98, 0x58, 0x38, 0x72, 0x2e, 0xaf, 0xef,
+  0x93, 0x91, 0xa0, 0xb7, 0x19, 0x84, 0x00, 0x37, 0xed, 0xe4, 0xe1, 0x56,
+  0x73, 0x6a, 0x70, 0x4f, 0xe5, 0x29, 0x87, 0x0a, 0x8c, 0x3b, 0x06, 0x28,
+  0xe1, 0x99, 0x0a, 0x1a, 0x65, 0xa4, 0x8f, 0xa0, 0xca, 0x62, 0x37, 0xaa,
+  0xba, 0x38, 0x41, 0x59, 0x21, 0xf8, 0x58, 0xbb, 0xd8, 0x09, 0x2e, 0x18,
+  0x4a, 0xc4, 0x0b, 0x49, 0xf5, 0x2b, 0x0e, 0xd7, 0x6d, 0x35, 0x18, 0x62,
+  0x85, 0xcf, 0xfa, 0x2a, 0xa0, 0x3f, 0xe8, 0xc7, 0x7a, 0xeb, 0x6e, 0x6a,
+  0xf8, 0xad, 0x72, 0x38, 0xb3, 0xf0, 0xa4, 0x2c, 0x2c, 0x52, 0xd2, 0xa6,
+  0x86, 0x2b, 0x72, 0x77, 0x5d, 0x4c, 0x43, 0x21, 0x25, 0x0e, 0x90, 0xe0,
+  0xa2, 0x01, 0xde, 0x0a, 0x19, 0x24, 0x46, 0x30, 0x60, 0x14, 0x0f, 0xd4,
+  0x4a, 0x96, 0x8d, 0x50, 0xef, 0xe5, 0x2f, 0xc5, 0x48, 0xf5, 0x3b, 0x2e,
+  0x3a, 0x70, 0xd5, 0x95, 0x6a, 0x28, 0xe1, 0x00, 0xd7, 0x5c, 0x16, 0x9e,
+  0xf8, 0xbb, 0x04, 0x96, 0xf0, 0x78, 0xe6, 0x59, 0xcd, 0xfc, 0x06, 0xf1,
+  0xe4, 0xb0, 0xf5, 0x24, 0x57, 0xc8, 0xd8, 0x45, 0x84, 0x30, 0x43, 0x25,
+  0x10, 0xcf, 0x6b, 0x35, 0xf7, 0xd9, 0xf0, 0xc9, 0x2e, 0x27, 0x82, 0x85,
+  0xcc, 0x28, 0x1d, 0xb3, 0xbe, 0x55, 0x25, 0x96, 0x27, 0x83, 0xfc, 0x41,
+  0xe5, 0xe6, 0xb5, 0x60, 0x73, 0x2c, 0x95, 0x47, 0x0d, 0x62, 0x77, 0xad,
+  0xaa, 0x1c, 0x19, 0x23, 0x0c, 0x56, 0xf0, 0x6e, 0x53, 0x7b, 0xcb, 0x32,
+  0x1d, 0xdf, 0x1b, 0xc8, 0xb2, 0x8f, 0x14, 0xe3, 0x26, 0xf8, 0x15, 0x1a,
+  0x18, 0x9e, 0x8e, 0x6a, 0x07, 0xcc, 0xdd, 0x20, 0x98, 0x6b, 0xe7, 0x00,
+  0x8b, 0x68, 0x67, 0xc4, 0x59, 0xa5, 0xaa, 0x81, 0xb5, 0xb6, 0x42, 0xef,
+  0xfa, 0x87, 0xb2, 0xdc, 0xab, 0x7c, 0x3e, 0x30, 0x79, 0xfe, 0xa5, 0xfe,
+  0xf2, 0xc5, 0x03, 0xa1, 0x47, 0x78, 0xc3, 0x69, 0x00, 0xca, 0x57, 0xf5,
+  0x6e, 0x36, 0xeb, 0x53, 0x83, 0x6e, 0x57, 0x6a, 0x30, 0x76, 0x09, 0x6a,
+  0x93, 0xae, 0x4d, 0xe8, 0xe7, 0x16, 0x23, 0x24, 0xb5, 0xde, 0xc7, 0xc5,
+  0xd4, 0x39, 0x3e, 0xc6, 0x9d, 0x91, 0xf2, 0x95, 0xc6, 0x29, 0x69, 0x25,
+  0x6b, 0x2c, 0x88, 0x8e, 0xaa, 0x35, 0x9c, 0x64, 0xbf, 0x06, 0xe2, 0x3d,
+  0x84, 0xf5, 0xd8, 0x24, 0x7d, 0xf4, 0x76, 0xff, 0xb4, 0x0f, 0xdb, 0xa0,
+  0x94, 0xb8, 0x78, 0xcb, 0x56, 0x4e, 0x05, 0xb8, 0x6e, 0xcc, 0x5d, 0xdc,
+  0x68, 0x02, 0x40, 0x17, 0x14, 0x54, 0x6d, 0xcb, 0x6d, 0x23, 0x17, 0xe2,
+  0xd8, 0x5a, 0x3a, 0xad, 0x11, 0xcc, 0xc6, 0x3e, 0xc6, 0x39, 0xdc, 0x7d,
+  0xf2, 0xf9, 0xd3, 0x3e, 0x7e, 0x7b, 0xb6, 0xfd, 0x42, 0xb4, 0xa5, 0xa3,
+  0xc3, 0x8b, 0x37, 0x6d, 0x8d, 0xa3, 0x24, 0x5d, 0x4d, 0xfe, 0x1d, 0x64,
+  0x69, 0x79, 0x9d, 0x96, 0x35, 0xc7, 0x4d, 0x0d, 0xaa, 0x59, 0xbd, 0x18,
+  0x6c, 0x6f, 0x0f, 0x6b, 0x62, 0x28, 0x21, 0x6f, 0x7f, 0xf2, 0x74, 0xb8,
+  0xbd, 0xf9, 0x5b, 0x12, 0x10, 0x9b, 0xe8, 0x06, 0xbc, 0xc2, 0xc9, 0x4b,
+  0xcd, 0x01, 0x89, 0xbd, 0x69, 0x6f, 0xd9, 0xc8, 0x7f, 0xee, 0x02, 0xc6,
+  0x14, 0x7d, 0x52, 0x1f, 0x0f, 0x72, 0x16, 0x7c, 0xc6, 0x5d, 0x48, 0x02,
+  0x1d, 0x17, 0x76, 0xc4, 0x6a, 0x1d, 0x28, 0xd8, 0x86, 0x55, 0xb3, 0x92,
+  0x52, 0xbf, 0xa9, 0xd6, 0x33, 0xa8, 0x7d, 0xfd, 0x94, 0xce, 0x54, 0xf6,
+  0x4a, 0x33, 0x16, 0xcb, 0x8c, 0x31, 0xa0, 0xe4, 0x12, 0xd2, 0x78, 0x0a,
+  0xcd, 0x99, 0x7f, 0x08, 0xff, 0x6f, 0xf7, 0x59, 0xb3, 0x34, 0x0d, 0xd6,
+  0x04, 0x8c, 0xef, 0x57, 0xae, 0x89, 0xbf, 0xf7, 0x44, 0xa0, 0x84, 0xcd,
+  0xda, 0x65, 0xf0, 0xc5, 0xc8, 0x17, 0x95, 0x81, 0xc3, 0x3f, 0x3c, 0xcc,
+  0xed, 0xf6, 0x30, 0x3f, 0xa2, 0xfa, 0x2d, 0x6c, 0xc4, 0x2f, 0x21, 0xbe,
+  0x7f, 0xa2, 0xe6, 0x87, 0x37, 0x36, 0x4c, 0x8b, 0xd9, 0xf4, 0x20, 0xf4,
+  0x82, 0x9e, 0x24, 0x9a, 0x1d, 0x1b, 0x54, 0x56, 0xc5, 0x1c, 0x7a, 0x63,
+  0x5f, 0xde, 0x4c, 0x7a, 0x03, 0x59, 0x82, 0x4d, 0xf7, 0x9b, 0x78, 0x3f,
+  0x5d, 0x42, 0x30, 0x5c, 0xd7, 0x28, 0xb5, 0x93, 0xce, 0x9b, 0xc8, 0x71,
+  0xa8, 0x24, 0x02, 0x93, 0x64, 0xf6, 0x11, 0xe1, 0x7f, 0xa4, 0xd3, 0x3f,
+  0x7f, 0x12, 0x9b, 0xc0, 0x4f, 0x2e, 0x0e, 0xf7, 0x54, 0x11, 0xf1, 0x99,
+  0x57, 0x66, 0xa9, 0x92, 0x80, 0x3d, 0x4e, 0xbe, 0x67, 0x98, 0x1a, 0xc6,
+  0xb2, 0x0d, 0x66, 0xd7, 0xef, 0x00, 0xf0, 0x43, 0x8e, 0x20, 0x17, 0x18,
+  0x14, 0x17, 0x48, 0x1d, 0x05, 0x37, 0x58, 0x38, 0x03, 0xb2, 0x72, 0xf3,
+  0xcb, 0xc0, 0xb6, 0xd0, 0x55, 0x40, 0x07, 0xd3, 0x96, 0x1a, 0x5e, 0x8c,
+  0xa7, 0x26, 0x14, 0x1a, 0x2d, 0x96, 0x50, 0x08, 0x24, 0x75, 0xcb, 0xc9,
+  0x2d, 0xe8, 0x76, 0x2c, 0xa3, 0xc8, 0x0c, 0xa8, 0xdd, 0xec, 0xb3, 0x41,
+  0xf6, 0xdb, 0x85, 0xa1, 0x88, 0x5d, 0xb6, 0xb2, 0x53, 0x41, 0xbc, 0xe5,
+  0x78, 0x51, 0xff, 0x5a, 0xe2, 0xed, 0x7b, 0x5c, 0x6c, 0x91, 0xc4, 0x24,
+  0x4c, 0x0f, 0x1e, 0x22, 0x29, 0x5f, 0xde, 0x61, 0x45, 0x6c, 0xd4, 0x29,
+  0x02, 0xb9, 0xdb, 0xe0, 0x2c, 0x24, 0x77, 0x9c, 0x2f, 0xf2, 0x00, 0x35,
+  0xd7, 0xdd, 0x0f, 0x69, 0x8c, 0x11, 0xc0, 0x5e, 0x11, 0xb4, 0xe1, 0x8e,
+  0x53, 0xe1, 0x81, 0x06, 0xa4, 0xf1, 0x62, 0xf8, 0xc0, 0xd1, 0x08, 0x07,
+  0x16, 0x8e, 0x0c, 0xf5, 0x73, 0x1c, 0xab, 0x69, 0x54, 0xc7, 0x4a, 0x36,
+  0xbe, 0x3b, 0x7b, 0xf3, 0x67, 0xb3, 0xf7, 0x6c, 0xf6, 0x3b, 0x8d, 0xe9,
+  0xad, 0x29, 0x34, 0x02, 0xfa, 0x55, 0xa2, 0x68, 0x2c, 0x9d, 0xff, 0xa3,
+  0x83, 0xd8, 0x26, 0x05, 0xe2, 0x8d, 0x36, 0xb8, 0x7e, 0x0b, 0xd7, 0x7c,
+  0x53, 0xb1, 0xff, 0xc9, 0xf0, 0x19, 0x5c, 0x51, 0x6f, 0x0e, 0x9e, 0x3d,
+  0xd9, 0xdd, 0xd9, 0x1c, 0xc6, 0xb7, 0xc1, 0xda, 0x27, 0xad, 0xbf, 0xdb,
+  0xb2, 0xec, 0xe3, 0x82, 0x09, 0x66, 0xe3, 0xf0, 0x87, 0xd3, 0x77, 0xcd,
+  0xf9, 0xc9, 0x8c, 0x22, 0xb1, 0x6e, 0xd5, 0x0c, 0xbd, 0x21, 0xb1, 0xd1,
+  0xbe, 0x25, 0x11, 0xe2, 0xe0, 0xc4, 0xd8, 0x20, 0xeb, 0x6f, 0xca, 0x9c,
+  0xcf, 0xc0, 0x3a, 0x2f, 0xc8, 0xfa, 0x31, 0x09, 0xaf, 0xa4, 0x98, 0x9c,
+  0x30, 0x3a, 0x58, 0xb6, 0xde, 0x82, 0xf3, 0x6a, 0xce, 0xae, 0x61, 0xc0,
+  0x86, 0x3a, 0xd9, 0xa1, 0x48, 0x7a, 0x96, 0xa6, 0x6a, 0x24, 0x5c, 0xff,
+  0xa6, 0x0c, 0xb0, 0x0e, 0xe4, 0xec, 0xb7, 0x8a, 0x10, 0xa2, 0x61, 0x19,
+  0xa4, 0xf0, 0x44, 0x70, 0x41, 0xce, 0x6d, 0xe3, 0x3c, 0x11, 0xab, 0xd0,
+  0x57, 0x11, 0xc2, 0x93, 0x35, 0x6b, 0x22, 0xc5, 0x75, 0x80, 0x2d, 0xcc,
+  0x26, 0x18, 0x4e, 0x85, 0xcc, 0x28, 0x12, 0x2a, 0xaa, 0x65, 0x39, 0x59,
+  0xce, 0x68, 0x05, 0xbe, 0xba, 0xb7, 0xb0, 0x23, 0xbd, 0xb0, 0xa1, 0xb2,
+  0xc7, 0x39, 0x0d, 0x19, 0x4c, 0x5f, 0xcf, 0xb6, 0x1b, 0xad, 0x0d, 0xb1,
+  0x08, 0x2d, 0xe3, 0xea, 0x60, 0xc7, 0x55, 0x4f, 0xe5, 0x84, 0x43, 0xb1,
+  0x0e, 0xb6, 0x6d, 0x6e, 0x7c, 0x71, 0xff, 0x96, 0x52, 0x45, 0x56, 0xa7,
+  0x2c, 0xf7, 0x3f, 0x9e, 0xa4, 0xdf, 0x30, 0x83, 0x8b, 0xa3, 0x9e, 0xc9,
+  0x55, 0x2b, 0xd1, 0xba, 0x3c, 0x4b, 0x46, 0x92, 0x8a, 0x68, 0xeb, 0xad,
+  0xf6, 0x22, 0x3c, 0x78, 0x03, 0x0c, 0xd2, 0x02, 0x28, 0x44, 0xfa, 0x7b,
+  0x9a, 0x6c, 0xb0, 0x44, 0x96, 0x3c, 0xfb, 0xfc, 0xd9, 0xd3, 0x4d, 0x55,
+  0xf9, 0x5d, 0x7c, 0xce, 0x66, 0x97, 0xf3, 0x0d, 0xeb, 0xb6, 0xac, 0x1c,
+  0x9e, 0xf7, 0x2c, 0x47, 0x45, 0x31, 0xd0, 0xba, 0xba, 0xf1, 0xa4, 0x30,
+  0x13, 0x94, 0x71, 0x98, 0x94, 0x2c, 0x06, 0xb7, 0xdd, 0x1c, 0x75, 0x26,
+  0xe5, 0xc8, 0x92, 0x0d, 0x1c, 0x8e, 0xa0, 0xb2, 0x4b, 0xe2, 0xb2, 0xd1,
+  0x71, 0x55, 0xc9, 0xd5, 0xe0, 0xf2, 0x2d, 0xd8, 0x86, 0x71, 0x54, 0x77,
+  0x9a, 0xbe, 0xc5, 0xc5, 0x14, 0x56, 0x2b, 0x46, 0x65, 0xde, 0x22, 0xb8,
+  0x8b, 0xc4, 0x19, 0x00, 0x83, 0xbf, 0xde, 0x75, 0x5d, 0xe0, 0x96, 0x24,
+  0xbd, 0xc2, 0xdc, 0xc7, 0x77, 0x67, 0x73, 0x1d, 0x05, 0x40, 0x8c, 0xb7,
+  0xdf, 0xde, 0xd7, 0x70, 0x1e, 0x5f, 0x1d, 0x38, 0xb6, 0xb6, 0xcd, 0xb2,
+  0x99, 0x81, 0x4a, 0xcb, 0xad, 0x5e, 0x94, 0xbe, 0x42, 0x91, 0xd8, 0x73,
+  0xe4, 0x82, 0x46, 0x0c, 0xe3, 0x2a, 0x64, 0x0e, 0x53, 0x47, 0x52, 0x83,
+  0x30, 0x68, 0x8c, 0x6c, 0x45, 0xa1, 0x0f, 0x47, 0x6c, 0x61, 0x72, 0xb1,
+  0xba, 0xa1, 0x10, 0xd2, 0x6a, 0xbf, 0x3b, 0xa2, 0x8c, 0xab, 0xf4, 0x48,
+  0xa7, 0xad, 0x75, 0x58, 0x31, 0x78, 0x29, 0xd4, 0x83, 0x9c, 0x70, 0xe8,
+  0x36, 0x83, 0x38, 0x5b, 0x25, 0xd9, 0xc0, 0x78, 0xb7, 0xb6, 0x36, 0x1f,
+  0x1d, 0xb3, 0x3e, 0xf8, 0xd8, 0x18, 0x4f, 0x45, 0xd9, 0x98, 0x87, 0x25,
+  0x43, 0xfc, 0x10, 0xb8, 0x4b, 0xde, 0x2f, 0x01, 0x1b, 0x96, 0xa0, 0x46,
+  0xb1, 0xbf, 0xb3, 0xd0, 0x92, 0x90, 0x1c, 0xd4, 0x81, 0x89, 0x04, 0x70,
+  0xde, 0x54, 0xe7, 0xd7, 0x9c, 0xba, 0x0a, 0xaf, 0x92, 0xac, 0xae, 0x5c,
+  0x41, 0xb3, 0x35, 0x38, 0x94, 0x31, 0x2a, 0x36, 0x37, 0x0f, 0xf2, 0x4c,
+  0x38, 0x36, 0x27, 0x98, 0x9f, 0x9c, 0x2a, 0xef, 0x54, 0x96, 0x33, 0x68,
+  0x4a, 0x82, 0x38, 0x9f, 0x63, 0x56, 0xec, 0x9e, 0x6e, 0x55, 0x50, 0x1e,
+  0x46, 0x58, 0x60, 0xf2, 0x24, 0x1f, 0x1f, 0xf3, 0x48, 0xe7, 0xf3, 0x0e,
+  0xa9, 0xd5, 0xbb, 0x0e, 0xd1, 0x20, 0xe9, 0xf8, 0x37, 0x7e, 0xce, 0x82,
+  0xe9, 0x67, 0xc9, 0x6a, 0x01, 0x5e, 0x40, 0x85, 0xe1, 0x76, 0xe3, 0x2a,
+  0x38, 0xea, 0xc6, 0x8a, 0x59, 0x71, 0x3d, 0x7c, 0xda, 0x58, 0xcc, 0xbe,
+  0x9c, 0x50, 0x84, 0xda, 0x77, 0x09, 0xc1, 0xa8, 0xa1, 0xf0, 0xa0, 0xd8,
+  0x0f, 0x7c, 0x1c, 0x1a, 0x58, 0xb3, 0xbe, 0xb7, 0x5c, 0x16, 0x23, 0xb7,
+  0xd0, 0x1a, 0x90, 0x36, 0x0c, 0x6e, 0xd0, 0x39, 0x5b, 0x99, 0xe6, 0x59,
+  0x5d, 0x8e, 0x23, 0xc3, 0x92, 0x73, 0x86, 0x57, 0x63, 0x35, 0x7d, 0x0f,
+  0xf1, 0x20, 0x75, 0xfd, 0x41, 0x7f, 0x61, 0x16, 0xad, 0x89, 0x10, 0x9b,
+  0xe6, 0xa7, 0xd2, 0xa0, 0xa0, 0x8e, 0x98, 0xf7, 0x5e, 0xe5, 0x82, 0xf4,
+  0x35, 0x48, 0x8a, 0x79, 0xa4, 0x68, 0xcc, 0x82, 0x1a, 0x36, 0x9f, 0x24,
+  0xde, 0x5f, 0xee, 0xa0, 0xef, 0xef, 0x17, 0x51, 0xf4, 0xab, 0xe4, 0xb9,
+  0x83, 0x44, 0xb8, 0x0d, 0x80, 0x30, 0x48, 0xf2, 0x87, 0x8f, 0x5b, 0x80,
+  0x6e, 0xc0, 0x42, 0x70, 0xe8, 0xb7, 0xd5, 0x1a, 0x73, 0x1d, 0xa3, 0x8b,
+  0x6c, 0x08, 0x6c, 0xb8, 0xc1, 0x3c, 0x37, 0x9e, 0x6d, 0x26, 0x97, 0xf5,
+  0x62, 0x63, 0x67, 0x53, 0x60, 0x91, 0xb5, 0x84, 0x4d, 0xe1, 0xf7, 0x36,
+  0x56, 0x12, 0x10, 0xd7, 0x75, 0xe0, 0xba, 0x85, 0xf3, 0x96, 0x61, 0xeb,
+  0x11, 0x3f, 0x7e, 0xa9, 0xe7, 0x40, 0x16, 0xcc, 0xd5, 0xde, 0x80, 0xeb,
+  0xab, 0x4b, 0xaa, 0x84, 0x25, 0x78, 0xc1, 0x89, 0x0e, 0x95, 0x54, 0x3c,
+  0xdc, 0xf0, 0x75, 0x12, 0xe4, 0x6e, 0x48, 0xb2, 0x5c, 0x42, 0x34, 0x8a,
+  0x72, 0x3a, 0x19, 0xf0, 0xd5, 0x71, 0x55, 0x16, 0xcb, 0xc5, 0xa0, 0xec,
+  0xc0, 0x42, 0xd2, 0xeb, 0xe3, 0x02, 0x4e, 0x96, 0x38, 0xed, 0x26, 0x59,
+  0xe7, 0x8c, 0x9c, 0x75, 0x77, 0xb7, 0x87, 0x79, 0x3f, 0x2b, 0x12, 0x67,
+  0x64, 0x37, 0xe3, 0x82, 0xcb, 0x9c, 0x58, 0x98, 0x8f, 0xed, 0x80, 0x4b,
+  0x89, 0x08, 0xe4, 0x78, 0x30, 0xd0, 0x9a, 0xb2, 0x73, 0xe2, 0x1d, 0x1a,
+  0xe6, 0x00, 0x6b, 0x36, 0x71, 0x1b, 0xa5, 0xb2, 0xc8, 0x36, 0x29, 0x66,
+  0x4c, 0x93, 0x03, 0x00, 0x91, 0x5c, 0xa8, 0xac, 0x89, 0x18, 0x3e, 0x09,
+  0xea, 0x10, 0x99, 0x99, 0x99, 0xba, 0x10, 0x80, 0x84, 0xff, 0x75, 0x38,
+  0x4f, 0x7b, 0xb3, 0x7b, 0xbe, 0xc4, 0x7a, 0x0d, 0xaa, 0x4b, 0x7a, 0x15,
+  0xdb, 0x02, 0xeb, 0x9e, 0x2d, 0x6f, 0x2b, 0x9f, 0x2c, 0xae, 0xc9, 0xb1,
+  0xa2, 0x6f, 0xa1, 0x6a, 0xe9, 0xc2, 0xb7, 0x2e, 0x8d, 0xfb, 0xd3, 0xf7,
+  0xae, 0x2f, 0x31, 0xef, 0xa3, 0x25, 0x47, 0x9a, 0xb4, 0x9a, 0x7e, 0x2d,
+  0xac, 0x5a, 0x24, 0x02, 0x79, 0x42, 0x4b, 0x22, 0x7a, 0x80, 0x17, 0x86,
+  0xfe, 0xc9, 0xd2, 0x59, 0x58, 0x58, 0x94, 0x8d, 0xaa, 0x6c, 0xca, 0x6e,
+  0x6f, 0xfb, 0x12, 0x64, 0x5d, 0x85, 0x87, 0xa1, 0x15, 0x96, 0x28, 0x7d,
+  0x20, 0xf6, 0x44, 0x1a, 0xd7, 0xd6, 0x3b, 0x21, 0x42, 0xd1, 0x80, 0x03,
+  0x9a, 0x50, 0xa5, 0x57, 0xae, 0x1d, 0xb5, 0xaa, 0x6a, 0x23, 0xae, 0xea,
+  0x01, 0xad, 0xc7, 0xf8, 0x7a, 0x39, 0xbf, 0xa1, 0x21, 0xc4, 0x11, 0xcf,
+  0xe6, 0xdf, 0xc8, 0x51, 0x79, 0x46, 0x4a, 0x8a, 0x1b, 0x9a, 0x84, 0xbc,
+  0xce, 0x70, 0x65, 0xb7, 0xc8, 0x5e, 0xd5, 0x6a, 0x32, 0x0f, 0x45, 0xaa,
+  0x89, 0x59, 0x57, 0x16, 0x50, 0x46, 0xe5, 0x16, 0xf0, 0xe1, 0x0c, 0x48,
+  0xab, 0x4d, 0x22, 0xb1, 0x50, 0x57, 0x41, 0x28, 0x84, 0xb0, 0x28, 0x03,
+  0x82, 0xe1, 0x7b, 0x46, 0x8d, 0x9c, 0x5d, 0xc5, 0x7a, 0xe1, 0x17, 0xd7,
+  0x6d, 0x65, 0x32, 0x0d, 0x21, 0x24, 0x3b, 0x46, 0xa2, 0x2c, 0x78, 0xd0,
+  0xc1, 0x4b, 0x2e, 0x9a, 0xe2, 0xb6, 0x27, 0x45, 0x7b, 0xa9, 0xdf, 0x40,
+  0x10, 0x86, 0xff, 0xd1, 0x72, 0x07, 0x3a, 0x78, 0x89, 0x54, 0x00, 0xda,
+  0x20, 0xed, 0xa2, 0x98, 0x2e, 0x6b, 0xc9, 0x79, 0x66, 0x8b, 0x18, 0xa7,
+  0x92, 0x6c, 0xda, 0x81, 0x92, 0x03, 0xe8, 0x22, 0x22, 0x84, 0x8f, 0x75,
+  0x22, 0x73, 0x21, 0xe0, 0xdb, 0x59, 0x7b, 0x25, 0x20, 0x4b, 0xb5, 0x76,
+  0x96, 0xfd, 0xf5, 0x9a, 0x10, 0x3e, 0xc7, 0x2a, 0x2c, 0xd2, 0x25, 0x8d,
+  0xc1, 0xc6, 0xc6, 0x23, 0xd3, 0x23, 0x1a, 0x0b, 0x12, 0x98, 0x7f, 0x21,
+  0x18, 0xf8, 0x1a, 0x5b, 0xae, 0xb4, 0x84, 0x29, 0x1b, 0x0f, 0xc6, 0x47,
+  0x3c, 0x10, 0x0e, 0xd8, 0xb1, 0xd6, 0x56, 0x2b, 0x43, 0xe0, 0x89, 0x55,
+  0xda, 0xd7, 0x61, 0xb1, 0x98, 0x2e, 0x01, 0xad, 0x32, 0xa2, 0xd9, 0x92,
+  0x7d, 0x0c, 0x91, 0x99, 0x99, 0xf6, 0x65, 0xba, 0x14, 0x88, 0x76, 0xf6,
+  0x57, 0xab, 0xab, 0x8c, 0x84, 0xf3, 0x74, 0xc4, 0xbb, 0x33, 0xba, 0x77,
+  0xd3, 0xb4, 0xfc, 0x7a, 0x24, 0xc2, 0x9b, 0x36, 0x1d, 0x93, 0x87, 0x3d,
+  0xd6, 0xea, 0xe7, 0x3b, 0x63, 0xac, 0x11, 0x65, 0x88, 0x13, 0x24, 0x84,
+  0x03, 0xb9, 0x51, 0x7e, 0xa2, 0x4c, 0x76, 0xd9, 0x61, 0x2e, 0x75, 0x83,
+  0x31, 0x49, 0x9d, 0xcd, 0x01, 0xa9, 0x14, 0x84, 0x51, 0xc8, 0x15, 0x5d,
+  0x06, 0xcb, 0x89, 0x29, 0x9a, 0x29, 0x58, 0x74, 0x6e, 0x0a, 0x60, 0xa0,
+  0xaf, 0x00, 0x3c, 0xd5, 0x2a, 0xaf, 0xef, 0xec, 0xb1, 0x64, 0xe3, 0xfc,
+  0xf4, 0xdd, 0xe1, 0xd7, 0x27, 0x9b, 0x8f, 0x79, 0x15, 0x14, 0x50, 0x12,
+  0x11, 0x28, 0x38, 0x54, 0x38, 0xde, 0x1d, 0xed, 0xc0, 0xe5, 0x04, 0x80,
+  0xbf, 0xd0, 0x8e, 0xdc, 0x15, 0x6f, 0xd7, 0x97, 0x44, 0x54, 0x39, 0xaf,
+  0x82, 0x2a, 0xe8, 0x86, 0xff, 0xa9, 0xb1, 0xfe, 0x69, 0x57, 0xa4, 0xff,
+  0xd7, 0xe7, 0xe7, 0x83, 0xfd, 0xd3, 0x23, 0x54, 0xe4, 0x3a, 0xa7, 0x9f,
+  0x2b, 0x60, 0xcb, 0xbb, 0x02, 0xfb, 0xc5, 0x32, 0xce, 0xd1, 0x82, 0xcd,
+  0xd8, 0xfe, 0x20, 0x9c, 0x1f, 0xcd, 0xb7, 0xaf, 0xdb, 0xd3, 0xa3, 0x2d,
+  0x74, 0x05, 0x9f, 0x06, 0x56, 0xa2, 0x3b, 0x9c, 0x2f, 0xae, 0x1b, 0x23,
+  0xd8, 0x8a, 0x48, 0xd7, 0x00, 0x81, 0x1a, 0x03, 0x49, 0x49, 0xf4, 0x24,
+  0x5d, 0x77, 0xb0, 0x34, 0x1c, 0xc7, 0x6e, 0x04, 0x23, 0x36, 0xa5, 0x73,
+  0x32, 0x9a, 0x41, 0xf3, 0xb7, 0x4c, 0xf7, 0x30, 0xcd, 0x0a, 0xd8, 0x25,
+  0x43, 0x93, 0x93, 0x60, 0xa5, 0x91, 0x2d, 0x6d, 0xbb, 0x5e, 0x6f, 0x40,
+  0xcc, 0x6b, 0xaf, 0x27, 0xa9, 0x1a, 0xd9, 0x9c, 0xab, 0x32, 0x27, 0x76,
+  0xd6, 0x92, 0xc0, 0x54, 0xd6, 0xb8, 0xb1, 0x1d, 0xd0, 0xce, 0x60, 0xd9,
+  0x3d, 0x3a, 0x3a, 0xa2, 0x2c, 0x5e, 0x89, 0x23, 0x50, 0xa5, 0xc6, 0x7f,
+  0x0a, 0x2a, 0x71, 0x78, 0x24, 0x82, 0xbc, 0xb6, 0x87, 0xae, 0x79, 0xe5,
+  0x33, 0x3e, 0x07, 0x4e, 0x3d, 0x1a, 0x4e, 0xda, 0xbc, 0x38, 0x38, 0x0d,
+  0x22, 0x00, 0xfa, 0xb1, 0xc1, 0x63, 0x74, 0xef, 0xd3, 0xc3, 0x91, 0x97,
+  0x3b, 0x77, 0xad, 0xcf, 0x86, 0xab, 0xcb, 0x4b, 0xd6, 0x41, 0x9d, 0xa9,
+  0xae, 0x7b, 0xaf, 0x71, 0xf1, 0xb9, 0x12, 0xac, 0xab, 0xaf, 0x3e, 0x3f,
+  0x83, 0xe0, 0xf6, 0x73, 0x1f, 0xb6, 0x96, 0x46, 0x61, 0xa4, 0xf2, 0x49,
+  0x67, 0x92, 0x96, 0xad, 0x90, 0x55, 0xa2, 0xd1, 0x35, 0x62, 0x08, 0x20,
+  0x83, 0xeb, 0x3a, 0x7a, 0x4d, 0xa3, 0x61, 0x41, 0x8c, 0x74, 0xcf, 0xc0,
+  0x5c, 0x16, 0x0b, 0x90, 0xde, 0x1e, 0x0e, 0xce, 0x8d, 0x1a, 0xef, 0xde,
+  0x68, 0xc9, 0x6d, 0x64, 0xc3, 0x60, 0x55, 0xb4, 0x20, 0xb2, 0x62, 0xc5,
+  0x75, 0xa3, 0xfc, 0xb2, 0xa5, 0xbf, 0x94, 0x80, 0xc3, 0xe4, 0x7a, 0x59,
+  0x0a, 0x9a, 0x81, 0x62, 0x11, 0x29, 0xce, 0x79, 0x99, 0xf1, 0x98, 0x9b,
+  0x03, 0x8e, 0x2a, 0x21, 0x8a, 0x3e, 0x4e, 0xc7, 0x7e, 0xa6, 0xf9, 0x07,
+  0xa3, 0xb2, 0xb8, 0xa1, 0xd3, 0xca, 0xaf, 0x41, 0x66, 0xe6, 0xd5, 0x17,
+  0x19, 0xce, 0xd4, 0x4a, 0xba, 0x51, 0x26, 0xce, 0x25, 0xda, 0x11, 0x7c,
+  0x8a, 0xca, 0x0f, 0x1a, 0xde, 0xe0, 0x85, 0x21, 0x01, 0xe5, 0x47, 0x22,
+  0x9f, 0xc1, 0xb8, 0x42, 0xfc, 0xe6, 0x62, 0xe9, 0x3e, 0x8e, 0x30, 0x76,
+  0x6e, 0x6b, 0x31, 0x85, 0x7f, 0x1e, 0x0d, 0x39, 0xb2, 0x08, 0x69, 0xa8,
+  0x63, 0xcb, 0x1b, 0xc4, 0x24, 0x5c, 0xff, 0x25, 0x51, 0x95, 0x70, 0x73,
+  0x36, 0xca, 0xb5, 0xcd, 0xc2, 0xa8, 0x49, 0x32, 0x08, 0xd0, 0x72, 0xc4,
+  0x4a, 0x0d, 0x55, 0x84, 0x43, 0x52, 0x24, 0x82, 0x63, 0xe2, 0x0b, 0x29,
+  0x29, 0x5a, 0x2c, 0x54, 0xec, 0x58, 0xcc, 0x60, 0xb1, 0xcc, 0x5d, 0xda,
+  0xe2, 0x6a, 0x02, 0x9f, 0xe0, 0xed, 0x01, 0x4e, 0x1a, 0xb2, 0xca, 0xd5,
+  0x83, 0xf2, 0x87, 0x10, 0x89, 0x44, 0x7a, 0x8a, 0x54, 0x0a, 0x29, 0x2e,
+  0xe0, 0x42, 0x64, 0x24, 0x77, 0xd0, 0x65, 0xfc, 0x32, 0xec, 0x74, 0xc8,
+  0x33, 0x04, 0xc8, 0x36, 0x39, 0xe4, 0x78, 0x97, 0x0e, 0x3d, 0xc7, 0xf2,
+  0x43, 0x31, 0xc7, 0x5c, 0x21, 0x38, 0xc5, 0x1b, 0xa1, 0x4a, 0x63, 0x6a,
+  0x8e, 0x06, 0x8b, 0x7c, 0x71, 0xa5, 0x77, 0x3b, 0x04, 0x48, 0x1e, 0x91,
+  0x9a, 0xf3, 0xad, 0x92, 0x88, 0x7d, 0xe4, 0xea, 0x0a, 0xbc, 0xf1, 0x41,
+  0xde, 0x7d, 0x31, 0x1e, 0x89, 0x3e, 0xd6, 0x21, 0x40, 0x62, 0x34, 0x89,
+  0x7f, 0xa8, 0x1f, 0xfc, 0xbe, 0xf7, 0xf9, 0xb6, 0x85, 0xf9, 0xb2, 0xbd,
+  0x2e, 0x7c, 0x06, 0xa8, 0x8d, 0x1d, 0x6a, 0x04, 0x40, 0x03, 0x8b, 0xda,
+  0x3d, 0xda, 0xae, 0x06, 0xf2, 0x62, 0xf8, 0x74, 0xb3, 0x41, 0x2f, 0xf5,
+  0x74, 0xe6, 0x40, 0x35, 0x4d, 0x30, 0x49, 0xde, 0x5d, 0x1c, 0xbf, 0x4d,
+  0x22, 0x7b, 0x80, 0xf8, 0x10, 0xf1, 0x5d, 0xf3, 0xab, 0xc8, 0xce, 0x89,
+  0x38, 0x6c, 0x0e, 0x23, 0x27, 0xf1, 0x31, 0xbf, 0x9a, 0x4b, 0xe5, 0x85,
+  0xb7, 0xf9, 0xb8, 0x2c, 0xaa, 0xe2, 0x52, 0x3c, 0x99, 0x76, 0xc1, 0xd0,
+  0x17, 0x47, 0x47, 0xe7, 0xc9, 0x5d, 0x36, 0xb2, 0x3c, 0xab, 0x28, 0xaa,
+  0x50, 0x52, 0x17, 0x41, 0x82, 0x8b, 0x32, 0xcf, 0x6a, 0x16, 0x34, 0xcc,
+  0xa4, 0xc7, 0xb9, 0xd7, 0xfc, 0x52, 0x36, 0xc8, 0xe6, 0xa4, 0x70, 0x66,
+  0x50, 0xdf, 0xb8, 0xcc, 0xc3, 0x14, 0x5c, 0x69, 0x91, 0x15, 0x1d, 0x46,
+  0x5d, 0x19, 0x80, 0xb1, 0x14, 0x59, 0x1b, 0xdc, 0x15, 0xa3, 0xb4, 0x72,
+  0xb8, 0x53, 0x79, 0xc9, 0x14, 0xc7, 0xc2, 0x86, 0x5a, 0x62, 0x6e, 0x72,
+  0x24, 0xf8, 0x47, 0x89, 0xef, 0x5a, 0x03, 0xd4, 0xb1, 0x43, 0x33, 0x48,
+  0xcc, 0x27, 0x45, 0x09, 0x0f, 0x49, 0x80, 0x65, 0xcd, 0xb5, 0x14, 0x96,
+  0x88, 0xfb, 0xe4, 0xe1, 0xdd, 0x77, 0x48, 0xec, 0xd7, 0x85, 0x84, 0x5d,
+  0x62, 0x99, 0x99, 0x2b, 0x49, 0x4a, 0x20, 0xe2, 0xb3, 0x14, 0x97, 0x56,
+  0x8b, 0x4e, 0x19, 0x2b, 0x79, 0x4c, 0xc2, 0xb3, 0xfd, 0xf0, 0x89, 0x49,
+  0x6a, 0x68, 0x7f, 0x9d, 0x5f, 0xad, 0xa8, 0x4f, 0x20, 0x5a, 0x54, 0x5b,
+  0xcc, 0xe4, 0x11, 0x29, 0xbf, 0x2c, 0x55, 0xb8, 0x6c, 0x17, 0xc2, 0xe9,
+  0x00, 0x02, 0x69, 0x48, 0x96, 0x44, 0x6d, 0x0f, 0xd6, 0x3a, 0x7e, 0x58,
+  0xa4, 0xc4, 0x05, 0xa2, 0x69, 0xa3, 0x5a, 0x6a, 0x89, 0x04, 0xc7, 0xc8,
+  0x30, 0x1a, 0xe7, 0x87, 0x4a, 0x9c, 0x3a, 0x94, 0x38, 0x13, 0x20, 0x79,
+  0x36, 0xc3, 0x7f, 0x46, 0x55, 0x3f, 0x7f, 0xd8, 0x0a, 0x16, 0x22, 0xd5,
+  0x28, 0xd0, 0x99, 0x08, 0xf0, 0xbd, 0x20, 0x2a, 0xa9, 0xd9, 0xa0, 0xd0,
+  0x87, 0xc2, 0xec, 0xbb, 0xaa, 0x9e, 0x14, 0x8c, 0x6a, 0xab, 0x8a, 0x00,
+  0x5f, 0xe1, 0x72, 0x7b, 0xff, 0xc7, 0xdf, 0xe3, 0x54, 0xa4, 0x1f, 0x7f,
+  0x16, 0x49, 0x5a, 0xb0, 0x33, 0x3c, 0x90, 0x84, 0x91, 0x4e, 0xe5, 0xeb,
+  0xae, 0xf0, 0x26, 0x31, 0x48, 0x94, 0x01, 0x66, 0xe3, 0x0a, 0x6f, 0x5b,
+  0x28, 0xc4, 0x7b, 0xa8, 0x57, 0xaf, 0x8e, 0xcd, 0xf8, 0x3e, 0x70, 0x86,
+  0xd3, 0xc0, 0x88, 0xe6, 0x21, 0xbc, 0x15, 0x43, 0x7a, 0xb2, 0x0a, 0x05,
+  0xde, 0x90, 0x66, 0x9a, 0x15, 0x7f, 0x80, 0xf1, 0x21, 0x3e, 0x1f, 0x8c,
+  0x9f, 0x6f, 0x96, 0x63, 0xa9, 0xa5, 0x19, 0x23, 0xa9, 0xca, 0xde, 0xaa,
+  0x6b, 0xe3, 0x3f, 0x68, 0x2f, 0xfa, 0xf5, 0x5d, 0xf1, 0xf7, 0x21, 0xc7,
+  0x33, 0x82, 0xf1, 0x0e, 0x0a, 0x29, 0x74, 0xfe, 0xe1, 0x77, 0x3b, 0x1c,
+  0x3d, 0xb4, 0x1e, 0x17, 0x30, 0xc7, 0x0a, 0xd8, 0x16, 0x3b, 0x00, 0x9e,
+  0x15, 0xc0, 0xad, 0xcd, 0xee, 0xb8, 0x97, 0x3e, 0x5f, 0x01, 0x7f, 0x1f,
+  0xf2, 0xbf, 0x3f, 0xee, 0x0c, 0x9e, 0xfd, 0xec, 0x7a, 0xfd, 0xdd, 0xce,
+  0x87, 0xdf, 0xed, 0xae, 0x77, 0x45, 0x87, 0x59, 0x4e, 0x60, 0x33, 0x98,
+  0xaf, 0x42, 0x09, 0x59, 0x8d, 0x9e, 0x55, 0x6d, 0xd3, 0x57, 0xad, 0x40,
+  0x59, 0x9c, 0x38, 0xe3, 0x83, 0xad, 0x50, 0x8f, 0x00, 0xd1, 0x87, 0x95,
+  0x94, 0x03, 0xad, 0x45, 0x0b, 0x0b, 0x6b, 0xe4, 0xd6, 0x58, 0x60, 0xb6,
+  0x61, 0xce, 0x8c, 0x30, 0x9d, 0x01, 0x8f, 0x30, 0xb9, 0xa7, 0x7b, 0x4e,
+  0x40, 0x56, 0x87, 0x2e, 0x72, 0xc6, 0xa4, 0x47, 0x25, 0x5c, 0x85, 0xe7,
+  0xda, 0x70, 0x37, 0x3e, 0x83, 0xc9, 0x6d, 0x76, 0x59, 0x26, 0xbc, 0x49,
+  0xc8, 0xd3, 0xbc, 0x96, 0xbd, 0xc5, 0xe1, 0x15, 0x62, 0xf7, 0x07, 0xa8,
+  0x0d, 0x74, 0xfa, 0xc8, 0xf1, 0x49, 0x43, 0xbf, 0x94, 0x94, 0x8c, 0x42,
+  0xc2, 0x44, 0x00, 0xff, 0x8d, 0xaf, 0xee, 0x32, 0x48, 0xaf, 0xed, 0x7b,
+  0x67, 0xe3, 0xc4, 0xe9, 0x3a, 0x78, 0x2c, 0x2c, 0x31, 0x10, 0xbe, 0x1e,
+  0x78, 0xc2, 0xb3, 0xc4, 0xea, 0xd2, 0x8f, 0x97, 0x75, 0x8c, 0x41, 0x32,
+  0xdc, 0xec, 0x4a, 0x0f, 0x08, 0xdb, 0x32, 0xbc, 0x33, 0x8d, 0xe3, 0x4e,
+  0x2a, 0x29, 0x67, 0x24, 0xfa, 0xa0, 0xc0, 0xac, 0x32, 0x2f, 0x92, 0x80,
+  0xd3, 0x58, 0x36, 0x71, 0xf5, 0x8a, 0xfb, 0x0e, 0xde, 0x39, 0x9b, 0x56,
+  0x31, 0x6d, 0x1c, 0xb0, 0x9b, 0x87, 0x61, 0xec, 0x6a, 0x24, 0x8d, 0xf7,
+  0xc3, 0xea, 0xb5, 0x2e, 0x27, 0x31, 0xbd, 0xf5, 0xfe, 0x1b, 0x3b, 0xa3,
+  0x1a, 0x20, 0xbf, 0xd2, 0x02, 0xde, 0xb4, 0x50, 0x38, 0xac, 0xe7, 0xd4,
+  0x95, 0x12, 0xf3, 0x29, 0x85, 0x41, 0xf2, 0x7b, 0x57, 0x1e, 0x2b, 0x2a,
+  0x4c, 0x80, 0x3d, 0x49, 0xca, 0x57, 0x6b, 0x04, 0x81, 0x0f, 0x45, 0xa1,
+  0x67, 0xf8, 0x59, 0xc1, 0x22, 0xeb, 0xf2, 0x26, 0x3a, 0x6e, 0x13, 0xa3,
+  0xe5, 0x5e, 0x4e, 0xd3, 0xab, 0x7f, 0xe9, 0x04, 0xa8, 0x55, 0xc0, 0x28,
+  0xe6, 0x44, 0x80, 0xa6, 0x95, 0xe8, 0xdc, 0x79, 0x16, 0x7a, 0x3e, 0x14,
+  0xbb, 0x84, 0xe6, 0x9d, 0x4b, 0x1d, 0x98, 0xdf, 0xef, 0x6e, 0xc7, 0xac,
+  0x58, 0x13, 0xe9, 0x80, 0xdf, 0x66, 0x95, 0xa0, 0x98, 0x9e, 0x2a, 0x23,
+  0x28, 0x91, 0x28, 0x7d, 0xc9, 0x89, 0x0c, 0x09, 0x43, 0x74, 0x96, 0x06,
+  0xc0, 0xbe, 0x58, 0x05, 0x50, 0xdb, 0x19, 0x77, 0xfa, 0x6b, 0x19, 0xcb,
+  0xa3, 0x9c, 0x85, 0x6e, 0x2f, 0xbe, 0xf0, 0x77, 0x07, 0xa3, 0x8c, 0x6e,
+  0x9e, 0xf6, 0x1c, 0x37, 0x7c, 0x54, 0x69, 0x3f, 0x69, 0x86, 0x4f, 0x71,
+  0x67, 0x5f, 0xe1, 0x9d, 0xe4, 0x02, 0x3a, 0x1d, 0xd3, 0xf6, 0x09, 0x57,
+  0x95, 0x4f, 0x76, 0x87, 0xdb, 0x2a, 0xf8, 0x3d, 0x98, 0xf9, 0x2a, 0xee,
+  0x9a, 0x46, 0x1b, 0xbe, 0x1e, 0x29, 0xcb, 0xeb, 0x7f, 0x59, 0xce, 0x9b,
+  0x80, 0xfc, 0x5d, 0x1e, 0x2e, 0x55, 0xc3, 0x4c, 0xca, 0xd7, 0x02, 0x08,
+  0x8d, 0x00, 0xa5, 0xf0, 0x94, 0x2b, 0x5c, 0x5f, 0xc9, 0xf6, 0x9f, 0x48,
+  0xca, 0x40, 0x83, 0xab, 0xaa, 0x77, 0x44, 0x83, 0x55, 0x70, 0x10, 0xb3,
+  0xdf, 0x94, 0x99, 0xfa, 0xc8, 0x44, 0x7e, 0x73, 0x35, 0xc1, 0x70, 0x5f,
+  0x9f, 0xbd, 0x39, 0x68, 0x35, 0xf7, 0xfc, 0xb3, 0x67, 0xdb, 0xbf, 0x65,
+  0x28, 0x4a, 0xa3, 0x9a, 0xc8, 0xc3, 0xd5, 0x9a, 0x7e, 0x55, 0xb9, 0xa6,
+  0xee, 0x6a, 0x4d, 0x56, 0x82, 0xe4, 0x97, 0x95, 0x6a, 0x52, 0xaf, 0x68,
+  0x57, 0xc4, 0x6c, 0x98, 0xa1, 0xe8, 0x43, 0x7d, 0xc2, 0x4a, 0x54, 0xac,
+  0x36, 0xe5, 0x95, 0xc6, 0xf3, 0xb3, 0x00, 0xcb, 0xc1, 0x5e, 0xcb, 0x79,
+  0x87, 0x7b, 0x55, 0x6c, 0xe0, 0x7c, 0x03, 0x58, 0x05, 0xef, 0x83, 0x93,
+  0x77, 0xef, 0x0e, 0x0f, 0x2e, 0x7c, 0xe5, 0x91, 0x3b, 0xab, 0x6e, 0x27,
+  0xec, 0x4e, 0x8a, 0x4f, 0x89, 0x4a, 0xdd, 0x5d, 0xad, 0x49, 0x62, 0x58,
+  0x2d, 0x35, 0x5b, 0x47, 0x80, 0x7c, 0x0b, 0x89, 0xcf, 0x0d, 0x80, 0x2b,
+  0x2c, 0x6c, 0x5f, 0x18, 0x55, 0x87, 0x0a, 0xda, 0x5d, 0xa4, 0xc7, 0xa7,
+  0xbc, 0x83, 0x7f, 0x46, 0x05, 0x7a, 0x34, 0x3d, 0x2b, 0x28, 0xd1, 0x23,
+  0x08, 0xe8, 0xff, 0x1f, 0x2b, 0xd2, 0xf3, 0x8d, 0xab, 0xb6, 0xd2, 0x86,
+  0xc1, 0xed, 0xaa, 0x43, 0xa3, 0x0a, 0x5d, 0x10, 0xd3, 0xb0, 0xaa, 0x16,
+  0x8d, 0xcf, 0xc5, 0xe3, 0x88, 0xda, 0xca, 0xbb, 0xbe, 0x03, 0x54, 0x92,
+  0x55, 0x85, 0x77, 0x56, 0xe1, 0xc2, 0x05, 0x00, 0x70, 0xc2, 0xbc, 0xa5,
+  0xd0, 0xd9, 0x2f, 0x2f, 0xce, 0xb2, 0x3a, 0x7a, 0x82, 0xab, 0x0b, 0x39,
+  0x01, 0x6d, 0xb0, 0xe8, 0x1b, 0x47, 0xa8, 0x39, 0xed, 0x6a, 0xda, 0x65,
+  0x41, 0xd7, 0xf2, 0x7f, 0x4a, 0xc2, 0xc6, 0x7a, 0x36, 0x06, 0x1f, 0xdd,
+  0xbb, 0x5d, 0x58, 0x0c, 0x88, 0x46, 0x89, 0xc2, 0x62, 0xe6, 0x03, 0x6b,
+  0x0a, 0x1a, 0xbd, 0x4d, 0x50, 0x61, 0xe1, 0xe5, 0xb4, 0x60, 0x20, 0xbc,
+  0x3b, 0xa5, 0xd8, 0xc4, 0x0d, 0x0c, 0xfe, 0xe3, 0x7d, 0x64, 0xec, 0x51,
+  0x98, 0x7a, 0x22, 0xb3, 0x19, 0x5d, 0xe1, 0x53, 0x4b, 0xee, 0xce, 0x6b,
+  0xad, 0x7a, 0x8b, 0x12, 0x1a, 0x38, 0xd3, 0x2e, 0x0d, 0x48, 0x43, 0xbc,
+  0xa8, 0x97, 0x41, 0xe4, 0x95, 0x9d, 0x72, 0x56, 0x6a, 0x59, 0xa4, 0x92,
+  0xd1, 0x04, 0x10, 0x75, 0x77, 0x34, 0x30, 0x6e, 0x73, 0xb3, 0x18, 0x7b,
+  0xf0, 0xf9, 0xe8, 0x71, 0x3c, 0xab, 0x53, 0x6f, 0x5d, 0xec, 0xbb, 0xaa,
+  0xd1, 0x82, 0x2c, 0xa0, 0x59, 0x5f, 0x6a, 0xde, 0x36, 0x4e, 0xa0, 0xf2,
+  0x21, 0xab, 0xad, 0xdd, 0x1a, 0x99, 0x9c, 0x7c, 0x03, 0x56, 0xd1, 0xb5,
+  0xb2, 0xa5, 0xaa, 0x8b, 0x80, 0xd1, 0x37, 0x0b, 0xbe, 0xaf, 0x8c, 0x7d,
+  0x06, 0x60, 0xd1, 0x99, 0xd8, 0x55, 0xb4, 0xb0, 0xb9, 0x5a, 0xd4, 0xb5,
+  0xb8, 0x6f, 0x51, 0x6e, 0x21, 0xd6, 0x6f, 0x8e, 0xc4, 0xe8, 0x02, 0x36,
+  0x23, 0x29, 0xad, 0xd4, 0x01, 0xd3, 0x0d, 0x53, 0x3d, 0xdf, 0x6d, 0x72,
+  0xc2, 0xa8, 0x71, 0x87, 0x1f, 0xa3, 0xc6, 0x8d, 0x99, 0x0f, 0xb5, 0x81,
+  0xb1, 0xd1, 0x57, 0x13, 0x66, 0xbf, 0x7e, 0xdb, 0x7e, 0x83, 0x5a, 0x03,
+  0x63, 0x03, 0x23, 0x10, 0x18, 0x55, 0x57, 0x0c, 0x41, 0x03, 0x06, 0x41,
+  0x35, 0xb6, 0x8e, 0x80, 0x5a, 0x5e, 0x85, 0x88, 0x31, 0x9e, 0x72, 0x30,
+  0x6f, 0xaf, 0x0a, 0xa5, 0x00, 0x8d, 0x7e, 0x86, 0x97, 0x85, 0x16, 0xca,
+  0x92, 0x84, 0x1b, 0x35, 0x99, 0xd3, 0xea, 0xa6, 0x5a, 0x8d, 0x30, 0xe4,
+  0xa3, 0x39, 0xe6, 0x61, 0xe5, 0x10, 0x6b, 0x51, 0xfc, 0x73, 0x79, 0xdd,
+  0x1a, 0x27, 0xef, 0x55, 0xb3, 0x39, 0xb7, 0x45, 0x11, 0x4e, 0x58, 0xa4,
+  0x95, 0xba, 0x32, 0x22, 0x91, 0xb6, 0x2a, 0x5f, 0x0f, 0xe9, 0xc4, 0xac,
+  0x73, 0x85, 0x91, 0xf5, 0x66, 0xf2, 0x91, 0x66, 0xeb, 0xd9, 0xdb, 0xb4,
+  0x12, 0xc1, 0x80, 0x63, 0x89, 0xd0, 0xae, 0x07, 0xb5, 0x0d, 0xf1, 0x7e,
+  0x6d, 0x70, 0xd8, 0x11, 0xf8, 0x6f, 0x8c, 0x4b, 0xe8, 0x9a, 0x5a, 0x3d,
+  0xaa, 0x75, 0xab, 0x1a, 0xb6, 0xb3, 0x3d, 0xdc, 0x59, 0x0f, 0xb1, 0x93,
+  0x11, 0x58, 0xc1, 0xb1, 0x10, 0x61, 0x3b, 0x1d, 0x77, 0x61, 0x97, 0xd5,
+  0x37, 0xec, 0x60, 0x76, 0x3f, 0x0c, 0xc2, 0x53, 0xa2, 0x2e, 0x34, 0x84,
+  0xa5, 0xdd, 0xf2, 0x20, 0xd0, 0x46, 0x40, 0x6a, 0x0b, 0x0e, 0xe5, 0x71,
+  0x28, 0x16, 0xc1, 0x2a, 0x59, 0x7e, 0x0d, 0x9d, 0x63, 0x8e, 0x37, 0xba,
+  0xef, 0x84, 0xb2, 0x0a, 0xf2, 0x27, 0x1a, 0xb5, 0xd5, 0x9d, 0x2f, 0xeb,
+  0x37, 0xc6, 0x74, 0x7c, 0xed, 0xfc, 0x1f, 0xce, 0xcb, 0x76, 0x7a, 0x72,
+  0x76, 0xa1, 0xa0, 0x36, 0xc2, 0x15, 0xd2, 0xea, 0x76, 0xd8, 0x78, 0x30,
+  0xe0, 0xc2, 0x1d, 0x66, 0x3d, 0x61, 0xc3, 0x87, 0xa7, 0xd4, 0x4a, 0x1b,
+  0xfe, 0xc8, 0x35, 0xef, 0xd0, 0x35, 0x06, 0x03, 0x35, 0xda, 0x0f, 0xb2,
+  0x45, 0x0c, 0xfb, 0x86, 0x46, 0x38, 0x41, 0x38, 0x83, 0x8b, 0x92, 0x5f,
+  0xfd, 0xe3, 0x1f, 0x1f, 0x29, 0x8a, 0xb7, 0xf3, 0x62, 0xf8, 0xcc, 0x9b,
+  0xb0, 0x04, 0x3c, 0x20, 0x59, 0xdf, 0xfb, 0x11, 0xe9, 0x32, 0x3f, 0x0f,
+  0x7e, 0xa4, 0x3f, 0x7f, 0x5e, 0x77, 0x5c, 0x94, 0x63, 0xc8, 0x3a, 0x6a,
+  0x1b, 0x49, 0xaa, 0x95, 0x65, 0x75, 0xe0, 0x69, 0x17, 0x6d, 0x0d, 0xb9,
+  0x8c, 0x1d, 0x8e, 0x38, 0xb3, 0x92, 0x7a, 0x2d, 0x34, 0x2f, 0xd6, 0xae,
+  0xc8, 0xee, 0xcd, 0xf9, 0xf8, 0x10, 0x8a, 0x5c, 0xda, 0x88, 0x7f, 0xb3,
+  0x6f, 0x45, 0x71, 0x14, 0x65, 0x81, 0x25, 0x01, 0xcd, 0xd3, 0x17, 0x3e,
+  0x1e, 0x95, 0x1c, 0x37, 0xfb, 0x89, 0xb2, 0x79, 0x49, 0x16, 0x25, 0x41,
+  0x8a, 0xeb, 0x60, 0x4a, 0x68, 0x83, 0x08, 0x4d, 0x99, 0x0b, 0x3b, 0x72,
+  0x99, 0x99, 0x9d, 0x41, 0x74, 0xd5, 0x0d, 0xcf, 0x58, 0xf3, 0xa3, 0x03,
+  0x20, 0x37, 0x8c, 0xd1, 0x92, 0x89, 0x47, 0x01, 0xa6, 0x7d, 0x43, 0x45,
+  0xe0, 0x32, 0x6d, 0x2f, 0x17, 0xd7, 0x25, 0x35, 0xff, 0x00, 0xb2, 0x27,
+  0x3d, 0x25, 0xcf, 0x38, 0x42, 0x5f, 0x78, 0x88, 0xc9, 0xdf, 0x52, 0x83,
+  0x49, 0xeb, 0xeb, 0x01, 0xb4, 0xe5, 0xb6, 0x58, 0xd5, 0x86, 0x90, 0xb9,
+  0x4e, 0x51, 0xde, 0xc4, 0xc3, 0xf8, 0xd3, 0x9a, 0x6c, 0x0d, 0x87, 0x5b,
+  0x2c, 0x6d, 0x6e, 0xd1, 0x0f, 0x5f, 0xd6, 0x01, 0xd6, 0x94, 0x36, 0x7c,
+  0x33, 0x6b, 0xf0, 0xdc, 0x19, 0x52, 0xe8, 0xb5, 0x08, 0xaa, 0x17, 0xbd,
+  0xab, 0xbf, 0x2e, 0x11, 0x6a, 0x5e, 0xb2, 0xf0, 0x21, 0x40, 0x35, 0xb3,
+  0x46, 0xc9, 0xe7, 0xa8, 0x70, 0x9d, 0x84, 0x9e, 0x55, 0x9a, 0x4b, 0x5e,
+  0x5f, 0x37, 0x56, 0x84, 0x33, 0x1a, 0xe0, 0x9d, 0xe4, 0x49, 0xe4, 0xb5,
+  0x81, 0x7b, 0x00, 0x21, 0x28, 0xad, 0x1f, 0x8c, 0x88, 0x7d, 0xba, 0xdb,
+  0x4c, 0x14, 0x51, 0xb0, 0x9a, 0x15, 0x85, 0x85, 0x70, 0x7f, 0xda, 0x2a,
+  0x95, 0x80, 0x13, 0xac, 0x91, 0xa7, 0x99, 0xec, 0x3e, 0xdf, 0x79, 0xbe,
+  0x45, 0x9c, 0xf9, 0xc9, 0x70, 0x37, 0x04, 0xac, 0x27, 0xb6, 0x45, 0x9b,
+  0xd4, 0x3e, 0x01, 0x00, 0x34, 0xf2, 0xe2, 0x30, 0xdf, 0x2a, 0x45, 0x58,
+  0x14, 0x5a, 0x75, 0x26, 0x9f, 0xf7, 0x91, 0x32, 0x44, 0x91, 0x4b, 0xd7,
+  0x88, 0xd2, 0x6c, 0x4c, 0xef, 0x67, 0x21, 0x91, 0x47, 0xa3, 0xce, 0x96,
+  0xa5, 0x54, 0x7c, 0x1f, 0xe5, 0x24, 0x4d, 0xd5, 0xc5, 0x52, 0x81, 0xf8,
+  0xd8, 0x85, 0xe4, 0x6a, 0x35, 0x71, 0xb2, 0x4d, 0xd1, 0x59, 0xc6, 0x14,
+  0x78, 0x36, 0xae, 0x6e, 0x87, 0x0b, 0x39, 0x09, 0xc2, 0x06, 0x90, 0x19,
+  0x92, 0x4b, 0xcd, 0x09, 0x54, 0xb0, 0x61, 0x49, 0x67, 0x7c, 0xdf, 0x3e,
+  0x9f, 0xdf, 0xd0, 0x39, 0xbe, 0x65, 0x35, 0x28, 0xb5, 0x5b, 0x5f, 0x72,
+  0xf7, 0xc5, 0xed, 0x9c, 0xca, 0x62, 0x78, 0xd0, 0x64, 0xfd, 0x40, 0x32,
+  0x0f, 0xba, 0x0a, 0xb5, 0x36, 0x92, 0x60, 0x86, 0xed, 0x60, 0x1b, 0x81,
+  0x56, 0x61, 0xd4, 0x61, 0x4e, 0x48, 0x17, 0xf7, 0xaa, 0x04, 0xee, 0x80,
+  0xb9, 0x3e, 0x94, 0xaa, 0xf3, 0x50, 0xb1, 0x41, 0x05, 0x2e, 0xfa, 0x1f,
+  0x48, 0x16, 0xbb, 0xff, 0x3f, 0x59, 0xfc, 0x13, 0xc9, 0xe2, 0x45, 0x17,
+  0x59, 0x3c, 0xf9, 0x1f, 0x48, 0x16, 0x4f, 0xfe, 0x7f, 0xb2, 0xf8, 0xe7,
+  0x91, 0xc5, 0xee, 0xf3, 0xd6, 0x25, 0xc2, 0x3a, 0x3a, 0x49, 0x01, 0xa6,
+  0xaa, 0x7f, 0xd1, 0x71, 0xd9, 0x56, 0xb6, 0x74, 0x2e, 0x7f, 0x46, 0xbc,
+  0x4b, 0x92, 0x1b, 0x16, 0xaa, 0xf9, 0xaa, 0x04, 0x55, 0x1e, 0x97, 0x30,
+  0xb6, 0xf2, 0x30, 0xba, 0x69, 0x3a, 0x1d, 0x26, 0xa7, 0xee, 0x35, 0xa4,
+  0x8c, 0x71, 0xf6, 0x34, 0x22, 0x57, 0xa6, 0xd9, 0x25, 0xb6, 0x00, 0xe2,
+  0x5d, 0x1f, 0x5f, 0x42, 0x12, 0x65, 0x4b, 0x5c, 0x14, 0xf7, 0x8f, 0x60,
+  0x17, 0x09, 0x26, 0x41, 0x2b, 0xac, 0xd4, 0xa7, 0x3e, 0x3b, 0xc8, 0x52,
+  0x52, 0x7b, 0x74, 0xa9, 0xf7, 0xfa, 0x49, 0x58, 0xf4, 0x89, 0x53, 0x19,
+  0xe3, 0xf2, 0x53, 0x1f, 0xc5, 0x51, 0xfa, 0xb7, 0xac, 0x2c, 0x12, 0x83,
+  0x49, 0x50, 0x68, 0x3b, 0xd4, 0x69, 0x33, 0x39, 0xca, 0x7f, 0xc8, 0xfd,
+  0x46, 0x9a, 0xdb, 0x1f, 0x51, 0xbe, 0x52, 0xd0, 0x0c, 0x19, 0x35, 0xc5,
+  0x65, 0x2b, 0xcd, 0x59, 0x30, 0xcd, 0xcd, 0x90, 0xe9, 0x57, 0xce, 0xd4,
+  0x0c, 0x64, 0x44, 0x44, 0xe7, 0x80, 0xad, 0xa1, 0x6c, 0x8c, 0x09, 0xa3,
+  0x91, 0x9c, 0xfe, 0x7e, 0x29, 0x78, 0x4e, 0x32, 0x1c, 0x57, 0x9d, 0x65,
+  0xd8, 0xa1, 0xfb, 0xbc, 0xce, 0xd8, 0x5d, 0x10, 0x0e, 0xa8, 0x0f, 0x53,
+  0xc4, 0xad, 0x5a, 0x53, 0x5c, 0xd8, 0xa1, 0x0f, 0x1e, 0xf2, 0x43, 0x8c,
+  0x87, 0xd4, 0x1c, 0x73, 0xdd, 0x11, 0x81, 0xf8, 0xca, 0x2d, 0x83, 0x39,
+  0xd7, 0xc3, 0xc5, 0xd8, 0x40, 0x76, 0x93, 0xb9, 0x1a, 0xd1, 0xe5, 0xa7,
+  0x2c, 0x03, 0xcc, 0x50, 0x30, 0x84, 0x54, 0xcb, 0xd1, 0x5f, 0x54, 0xcb,
+  0xa6, 0x21, 0xa7, 0x00, 0x03, 0x6c, 0x94, 0x1d, 0x95, 0x22, 0x3c, 0xcb,
+  0x91, 0x7a, 0xc6, 0xe2, 0xe6, 0xe8, 0x43, 0x78, 0x41, 0x5d, 0x21, 0x20,
+  0xa5, 0x33, 0x0d, 0xa2, 0xe2, 0x31, 0x45, 0x93, 0x0a, 0x22, 0x81, 0xa2,
+  0x7d, 0xb7, 0xf3, 0xc4, 0xba, 0x57, 0xa5, 0xa5, 0x6e, 0xc2, 0xcd, 0x72,
+  0xab, 0xa9, 0xc2, 0xbe, 0xc5, 0x3c, 0xf1, 0xe3, 0x2b, 0xdb, 0x22, 0x72,
+  0xed, 0xb3, 0x67, 0xba, 0xea, 0xff, 0x91, 0x7f, 0x74, 0x2b, 0xa1, 0x0d,
+  0x2c, 0x69, 0x0b, 0x90, 0xe4, 0xc7, 0x71, 0x36, 0xf0, 0xfa, 0xaa, 0x0e,
+  0x5e, 0xf1, 0xb7, 0xd2, 0xc3, 0xc3, 0x6d, 0xc3, 0xf7, 0xfc, 0x0b, 0x3a,
+  0x78, 0x3f, 0x17, 0x14, 0x82, 0x90, 0x43, 0x2c, 0x14, 0xd7, 0x88, 0xd9,
+  0xdd, 0x5d, 0x5a, 0xce, 0x25, 0xbe, 0x11, 0xac, 0x4e, 0x4d, 0x66, 0x9c,
+  0x51, 0xb6, 0x80, 0xe1, 0x2b, 0x82, 0x0e, 0xbe, 0x64, 0xe3, 0x1f, 0x2c,
+  0x80, 0xc5, 0xdc, 0xb2, 0x47, 0x15, 0xa6, 0xd4, 0x62, 0x01, 0x17, 0x45,
+  0x6d, 0x3e, 0xd0, 0x64, 0xc2, 0x4a, 0x5a, 0x89, 0xfb, 0xa1, 0x03, 0xdf,
+  0xde, 0x36, 0xc2, 0x17, 0x74, 0xe3, 0x96, 0x61, 0xd6, 0x5a, 0x2e, 0x50,
+  0x41, 0x43, 0xe1, 0x53, 0x44, 0xed, 0x49, 0xfd, 0xee, 0x49, 0xd7, 0xed,
+  0xa8, 0x21, 0x04, 0xb5, 0xe0, 0xc2, 0x73, 0x70, 0xab, 0xb7, 0x45, 0x0e,
+  0x34, 0x61, 0xe4, 0xc3, 0x0e, 0x7f, 0x5d, 0xd9, 0x90, 0x7e, 0x50, 0x0d,
+  0x30, 0xad, 0xc2, 0xd4, 0x94, 0x38, 0x64, 0xcf, 0x9b, 0x32, 0x52, 0xc1,
+  0x53, 0x20, 0x2a, 0x9e, 0xa7, 0xb5, 0x1d, 0x31, 0xbf, 0x0d, 0x18, 0xa6,
+  0xd4, 0xbe, 0x61, 0x7d, 0x65, 0x9c, 0xc5, 0x51, 0x50, 0xbe, 0x40, 0xc4,
+  0x63, 0xe8, 0x1c, 0xbb, 0xd1, 0x7d, 0x22, 0xf9, 0xeb, 0x8f, 0xde, 0x2a,
+  0x21, 0xe2, 0xa2, 0xb1, 0x80, 0x6c, 0x12, 0x52, 0x8b, 0x47, 0xf8, 0xb4,
+  0xab, 0x51, 0xd0, 0x87, 0x56, 0x50, 0xf2, 0x25, 0xea, 0xf8, 0xde, 0x85,
+  0x7c, 0xb5, 0x64, 0x6b, 0xab, 0xe2, 0xe6, 0x74, 0x70, 0xa8, 0x47, 0xa6,
+  0xf2, 0xf1, 0x7e, 0x90, 0xce, 0xef, 0xd9, 0x6f, 0xf9, 0xc0, 0xb5, 0xc8,
+  0x8c, 0x9c, 0xed, 0x48, 0x8c, 0xda, 0x92, 0x4b, 0xb9, 0xa0, 0x56, 0xb4,
+  0xb8, 0x85, 0xcf, 0x29, 0x68, 0xf5, 0x6c, 0x19, 0x19, 0x54, 0xf1, 0x24,
+  0x6d, 0x93, 0xb9, 0x2c, 0x3c, 0xc4, 0xa0, 0x3a, 0xd4, 0xac, 0x2a, 0x27,
+  0xf2, 0xe6, 0x14, 0x42, 0x0d, 0xc0, 0x0e, 0xf0, 0xa5, 0x75, 0x7b, 0x2f,
+  0xb6, 0x5c, 0xfa, 0x67, 0xc9, 0x85, 0xb6, 0x06, 0xc4, 0xeb, 0x16, 0x2d,
+  0x0c, 0xb5, 0x27, 0x5d, 0x53, 0x46, 0xd5, 0xdd, 0x47, 0xe4, 0x00, 0xee,
+  0x7f, 0x25, 0xe6, 0x57, 0x30, 0x53, 0x9b, 0xd9, 0x2a, 0x5f, 0x94, 0xcc,
+  0x52, 0x27, 0xf9, 0x5e, 0x52, 0x8c, 0xd0, 0x22, 0x50, 0x75, 0x99, 0xcd,
+  0x98, 0xb7, 0x51, 0x7b, 0x12, 0x44, 0xe9, 0x68, 0xc2, 0x30, 0xa8, 0x1b,
+  0x06, 0xb2, 0x3c, 0xe9, 0x4e, 0x84, 0x71, 0xdf, 0xee, 0x5d, 0xe9, 0x28,
+  0x31, 0x00, 0xbe, 0x8d, 0x8e, 0x78, 0x60, 0x79, 0x33, 0x15, 0x44, 0xd6,
+  0x68, 0x82, 0x48, 0xbb, 0x47, 0xc9, 0x1a, 0x03, 0x97, 0xa8, 0xbc, 0xce,
+  0x35, 0xfa, 0xd5, 0x8b, 0x24, 0xfd, 0x77, 0xac, 0x92, 0x76, 0xd6, 0x89,
+  0x2c, 0xac, 0xcb, 0xd4, 0x74, 0x36, 0x46, 0x39, 0x22, 0x9f, 0x36, 0x29,
+  0x9f, 0xa2, 0xe2, 0x73, 0x54, 0x22, 0x80, 0xa3, 0xbb, 0x8e, 0x2a, 0x62,
+  0xe1, 0x84, 0x1f, 0x9c, 0xa2, 0x1b, 0x50, 0x63, 0x96, 0x6d, 0x21, 0xbc,
+  0x39, 0x16, 0x37, 0x14, 0x05, 0x1e, 0x0f, 0x67, 0xfc, 0xb0, 0xd6, 0xec,
+  0xa2, 0x19, 0x3f, 0x71, 0xfa, 0x1d, 0xf1, 0xb4, 0xc9, 0x7f, 0x73, 0x4f,
+  0x11, 0xb9, 0xdb, 0xd8, 0x51, 0xf4, 0xd2, 0x98, 0xca, 0x83, 0x7e, 0x63,
+  0x9b, 0x06, 0xab, 0x23, 0xf9, 0x58, 0x83, 0x61, 0x5e, 0xea, 0x5f, 0x5d,
+  0x35, 0xd6, 0xc3, 0x2b, 0x28, 0x6d, 0xd4, 0xea, 0xd1, 0x18, 0x1d, 0x61,
+  0x45, 0xda, 0x82, 0x05, 0x5b, 0xf8, 0x54, 0xa4, 0xc8, 0x2f, 0x24, 0xfb,
+  0xd0, 0x75, 0x69, 0x78, 0x80, 0xd5, 0x0e, 0x92, 0x4b, 0xb4, 0x3d, 0x19,
+  0x71, 0xe7, 0x3c, 0xda, 0xc2, 0x40, 0x31, 0xbe, 0x99, 0x28, 0x8c, 0x2d,
+  0x02, 0xfd, 0xf8, 0xef, 0x2d, 0xdf, 0x48, 0x2b, 0x4a, 0xfa, 0xe9, 0x93,
+  0x06, 0xa0, 0x98, 0x76, 0xb0, 0x33, 0xdc, 0xc6, 0x25, 0xf5, 0xf1, 0x1e,
+  0x61, 0x7e, 0x7b, 0x7c, 0xdd, 0xff, 0xdc, 0x5e, 0xa3, 0xf7, 0x7a, 0x3b,
+  0x79, 0x6f, 0x12, 0x08, 0x80, 0xdf, 0xd5, 0xdd, 0x73, 0xb5, 0x59, 0x43,
+  0xd8, 0x4d, 0x57, 0x9c, 0x65, 0x75, 0x1d, 0x1c, 0x20, 0x9e, 0x58, 0x19,
+  0x1c, 0x46, 0x1f, 0xc0, 0xfb, 0x3b, 0xdb, 0x9f, 0x6f, 0x77, 0x83, 0xce,
+  0x42, 0xf4, 0xb2, 0x70, 0xab, 0x71, 0x16, 0x54, 0x64, 0xcd, 0x7d, 0x39,
+  0xae, 0xc0, 0x89, 0xab, 0x1b, 0xcb, 0x3e, 0xdc, 0xae, 0x0b, 0x13, 0x1e,
+  0xdd, 0x5c, 0x7d, 0x1d, 0xea, 0x16, 0x70, 0xd0, 0x78, 0xe6, 0xfb, 0x74,
+  0x4e, 0x47, 0xe7, 0xd9, 0xec, 0x48, 0xe6, 0xf7, 0x51, 0x1e, 0x8d, 0xb5,
+  0x31, 0x9d, 0xc7, 0xb9, 0x0f, 0x42, 0x66, 0xac, 0x0f, 0xee, 0x34, 0x36,
+  0x65, 0x39, 0x7a, 0xa0, 0xd4, 0xd4, 0x37, 0xc4, 0x60, 0x4e, 0x25, 0x5e,
+  0x5a, 0x8a, 0x11, 0x7d, 0x62, 0xa1, 0x29, 0xbc, 0x12, 0x55, 0x23, 0x5b,
+  0x55, 0x65, 0xea, 0x37, 0xf6, 0xd9, 0x6c, 0xec, 0xc3, 0x3c, 0xfd, 0xd9,
+  0xf0, 0xc9, 0x0b, 0xc6, 0x37, 0x90, 0x6a, 0xd1, 0xc1, 0xda, 0x13, 0x47,
+  0x29, 0x18, 0x91, 0x4f, 0xd0, 0x00, 0x34, 0x40, 0x50, 0x56, 0x7f, 0xd5,
+  0x3c, 0xbc, 0xde, 0xb6, 0x68, 0xd5, 0x7e, 0x42, 0xc5, 0x0a, 0xf8, 0x38,
+  0x9b, 0xb9, 0x71, 0x3c, 0x8b, 0x2b, 0x76, 0xf5, 0x0e, 0xe2, 0x74, 0x22,
+  0xf1, 0x19, 0xa8, 0x15, 0x63, 0x32, 0x6c, 0xe7, 0xc2, 0x68, 0xc0, 0x3a,
+  0xf7, 0x60, 0x45, 0xe2, 0x83, 0x20, 0xef, 0x08, 0xe3, 0x7a, 0xe4, 0x0d,
+  0x07, 0x23, 0x54, 0xa5, 0xe5, 0xf2, 0x9d, 0x86, 0xe5, 0xc0, 0x15, 0xe9,
+  0x16, 0xf7, 0x80, 0xbe, 0xcd, 0x47, 0x55, 0x75, 0xbd, 0x4b, 0xf4, 0xb0,
+  0x3b, 0xfc, 0x9c, 0x15, 0x6f, 0x71, 0xa3, 0xac, 0x00, 0xbd, 0x53, 0xa8,
+  0x96, 0x56, 0x6b, 0x27, 0x8b, 0x6c, 0x7e, 0x7e, 0x7e, 0x1c, 0x22, 0x41,
+  0xfc, 0xd5, 0x76, 0xd0, 0x2a, 0x2a, 0xfb, 0xe8, 0x6e, 0x5f, 0x69, 0xb8,
+  0x08, 0x74, 0x3f, 0x2d, 0x73, 0x6d, 0xd1, 0x93, 0x52, 0xa8, 0x31, 0xba,
+  0xc0, 0x82, 0x92, 0xa6, 0x61, 0x38, 0x08, 0xca, 0x7f, 0x6b, 0x54, 0x98,
+  0xd6, 0x46, 0x40, 0xc8, 0x59, 0x58, 0xe8, 0x36, 0x46, 0xf2, 0x6d, 0x41,
+  0x2f, 0x34, 0xeb, 0xa0, 0x6a, 0xb0, 0x65, 0x96, 0x96, 0x24, 0xfe, 0xc3,
+  0x47, 0xe1, 0x27, 0xf7, 0xbf, 0xb8, 0x59, 0x54, 0x39, 0xf6, 0xb5, 0x4e,
+  0x3a, 0xdc, 0xfe, 0x5b, 0xe7, 0xf0, 0xfd, 0x9f, 0x6b, 0x61, 0x93, 0xb4,
+  0x1c, 0xe5, 0x75, 0x99, 0x6a, 0x15, 0x26, 0xad, 0x0c, 0x13, 0xc4, 0x24,
+  0x30, 0x06, 0x01, 0xb2, 0x60, 0xf8, 0xb5, 0x4e, 0x4f, 0x38, 0x71, 0xd6,
+  0xff, 0x85, 0x5e, 0xb5, 0x01, 0x11, 0xb2, 0x11, 0x0b, 0xf3, 0xd5, 0xe1,
+  0x9b, 0x93, 0xb3, 0xc3, 0x26, 0x02, 0x9e, 0x54, 0xa0, 0x40, 0x58, 0x4b,
+  0x7b, 0x74, 0x7f, 0x41, 0x72, 0xa6, 0xc3, 0xed, 0xb1, 0x4a, 0x16, 0xa7,
+  0xdf, 0xbf, 0x0e, 0x7c, 0x8f, 0x56, 0xaf, 0x28, 0x40, 0x56, 0x53, 0x72,
+  0x8a, 0x52, 0x93, 0x89, 0x18, 0x37, 0x3d, 0xfc, 0xb9, 0x1b, 0x9e, 0x80,
+  0x4e, 0x23, 0x34, 0x4a, 0x3a, 0x4b, 0x25, 0x31, 0xac, 0xaa, 0xd8, 0x92,
+  0xe6, 0x9a, 0x8d, 0x82, 0x12, 0x32, 0x86, 0x34, 0x87, 0xbb, 0x47, 0x6f,
+  0x60, 0x8e, 0x7a, 0xe6, 0x40, 0xe8, 0x61, 0xe2, 0x3a, 0xf1, 0xbd, 0x20,
+  0x30, 0x5e, 0xa2, 0xc1, 0xd0, 0x4b, 0x97, 0xed, 0x91, 0x83, 0x49, 0xe5,
+  0x62, 0x15, 0x5e, 0x1d, 0x45, 0xbe, 0xf6, 0x93, 0xbf, 0x48, 0xdd, 0xeb,
+  0x4b, 0xc1, 0xe7, 0xf6, 0xeb, 0xd8, 0x21, 0x45, 0x51, 0xb7, 0x1b, 0x15,
+  0xb1, 0x70, 0x3f, 0x52, 0xb7, 0x6c, 0x3a, 0xe0, 0xde, 0x1f, 0x7b, 0x89,
+  0x5a, 0x8d, 0x70, 0x1b, 0x49, 0xaa, 0xe7, 0x8a, 0xb4, 0x5d, 0x44, 0x21,
+  0x0b, 0xf0, 0xc8, 0xe6, 0x63, 0x01, 0x7c, 0x36, 0x6b, 0xab, 0x3e, 0xd1,
+  0x1d, 0x32, 0x61, 0xf5, 0x69, 0xcd, 0x3f, 0x69, 0x05, 0x57, 0xf5, 0x26,
+  0xb0, 0x46, 0xfa, 0x01, 0x38, 0x3a, 0x22, 0x78, 0x22, 0xae, 0x14, 0x86,
+  0x6e, 0xa1, 0x34, 0x89, 0x16, 0x9a, 0xfb, 0xb3, 0x65, 0xf8, 0x02, 0x26,
+  0xaf, 0xba, 0x9f, 0xd7, 0x08, 0x24, 0x11, 0x0f, 0x5e, 0x51, 0x22, 0xf4,
+  0x26, 0x26, 0x63, 0x4f, 0xb7, 0x15, 0x4c, 0xdc, 0x2f, 0x9e, 0xbd, 0xe0,
+  0x63, 0x87, 0xf8, 0x34, 0x45, 0xe1, 0xd0, 0xbc, 0x25, 0x14, 0xd9, 0xd0,
+  0x11, 0x9b, 0xc5, 0x38, 0x82, 0x94, 0xd2, 0xed, 0x37, 0x6b, 0xe8, 0x28,
+  0x63, 0x48, 0x0f, 0x90, 0xe8, 0x79, 0xd0, 0xd4, 0x70, 0xa5, 0xbe, 0xbf,
+  0x2a, 0xca, 0x0b, 0x37, 0x8b, 0x16, 0xd2, 0xa2, 0x5d, 0x48, 0x6f, 0x34,
+  0xf3, 0x52, 0xcf, 0x83, 0xb4, 0xdb, 0xd8, 0xfd, 0x55, 0xa3, 0x53, 0x72,
+  0xe0, 0x90, 0x61, 0x22, 0x4c, 0x76, 0x1a, 0x6f, 0xfc, 0x61, 0xd3, 0xa1,
+  0xa5, 0x69, 0x21, 0x0a, 0xc6, 0x41, 0x5e, 0x66, 0x0d, 0x8c, 0xc7, 0x55,
+  0xcd, 0x5d, 0x82, 0x61, 0xd1, 0xea, 0xb5, 0x13, 0x73, 0xc5, 0x61, 0x5a,
+  0x17, 0x0b, 0x16, 0x66, 0x84, 0xcf, 0xea, 0xde, 0xc7, 0x7e, 0x7f, 0x9e,
+  0x03, 0x72, 0xc0, 0x46, 0x52, 0x0f, 0xc3, 0xe4, 0x05, 0x12, 0x86, 0xe7,
+  0x88, 0xe5, 0x52, 0x5a, 0xd4, 0x3b, 0x12, 0xd1, 0x2c, 0x34, 0x57, 0xb6,
+  0x2d, 0x77, 0xb0, 0x26, 0xe1, 0x83, 0xc1, 0x69, 0xd4, 0x3b, 0xa2, 0x55,
+  0xc4, 0x14, 0xa7, 0x59, 0x19, 0x9e, 0xe3, 0x66, 0x6f, 0x62, 0x84, 0x0a,
+  0x16, 0x2a, 0x2a, 0x03, 0xe5, 0x45, 0xdb, 0x5c, 0xd6, 0x8f, 0x34, 0x81,
+  0x41, 0x55, 0xdf, 0x8b, 0xc1, 0x29, 0x9b, 0x31, 0xec, 0x11, 0x6a, 0xd7,
+  0x23, 0xac, 0x51, 0xeb, 0xb5, 0x21, 0x15, 0x32, 0x22, 0x60, 0x4e, 0x8d,
+  0x04, 0xcc, 0xc7, 0x1b, 0xe7, 0xf9, 0x50, 0x33, 0xae, 0x54, 0x20, 0xbb,
+  0x44, 0x66, 0xa4, 0x83, 0x68, 0x93, 0xd5, 0xf9, 0xab, 0x71, 0xd9, 0x4e,
+  0x8a, 0x8b, 0x21, 0xb6, 0xae, 0xaf, 0xca, 0x85, 0x60, 0xe4, 0x74, 0x01,
+  0xf8, 0x04, 0x82, 0xa4, 0x3c, 0x69, 0xbc, 0x02, 0x85, 0x62, 0xa1, 0x91,
+  0xe0, 0xd5, 0xa3, 0xd7, 0x0d, 0x58, 0x35, 0x49, 0xb2, 0xa0, 0x9d, 0xee,
+  0x6e, 0xce, 0x27, 0x19, 0x48, 0xec, 0x9d, 0xbf, 0x4f, 0x5c, 0x6b, 0x5e,
+  0x6e, 0x1e, 0xdd, 0xfb, 0x6f, 0xba, 0x9b, 0xd3, 0x36, 0xc4, 0xe9, 0x23,
+  0x2d, 0x58, 0xb3, 0xa0, 0x15, 0x03, 0xa3, 0x66, 0x6a, 0x60, 0x3c, 0x51,
+  0xeb, 0x24, 0x0e, 0x9d, 0xbd, 0x9e, 0x15, 0x13, 0x09, 0xeb, 0x7a, 0x6c,
+  0x2d, 0xf8, 0x41, 0x5b, 0x0b, 0x35, 0xa3, 0x57, 0xe1, 0xbc, 0xd0, 0x08,
+  0x51, 0x29, 0x53, 0x9e, 0xf2, 0x81, 0xee, 0xe6, 0xfc, 0x44, 0xa5, 0x5c,
+  0x29, 0x37, 0x8f, 0x97, 0xc3, 0x29, 0xcc, 0x93, 0x62, 0x5c, 0x07, 0x33,
+  0xe0, 0x07, 0xba, 0x9b, 0xb3, 0x10, 0x92, 0x68, 0x66, 0x6c, 0x52, 0x45,
+  0xe0, 0xf9, 0x63, 0x33, 0xe3, 0x07, 0xa3, 0x5d, 0xa6, 0x0f, 0x85, 0x87,
+  0xb7, 0xb6, 0x58, 0x36, 0x67, 0x45, 0x84, 0x53, 0x63, 0x83, 0x6d, 0x87,
+  0x31, 0x86, 0xae, 0x0d, 0xd6, 0x38, 0xfa, 0x98, 0x91, 0x7b, 0xc4, 0x41,
+  0x59, 0x1d, 0xf7, 0xe0, 0xca, 0x0d, 0xd6, 0x3e, 0xa2, 0x55, 0x98, 0xce,
+  0xb5, 0xf0, 0xcd, 0x07, 0x81, 0x74, 0x61, 0x78, 0xd9, 0xfa, 0xc3, 0xc3,
+  0x0b, 0x32, 0x9d, 0x5b, 0x35, 0x3e, 0x20, 0x87, 0x39, 0x5e, 0xa1, 0x19,
+  0x53, 0x69, 0xb3, 0x4e, 0x9f, 0xa2, 0xc1, 0xad, 0x20, 0x7b, 0xdf, 0x5f,
+  0xe2, 0xeb, 0x9e, 0xd1, 0x35, 0x9a, 0x0b, 0x9c, 0xbc, 0xe3, 0x31, 0xc1,
+  0x18, 0xbb, 0xca, 0x63, 0x05, 0x39, 0x9d, 0xd1, 0x14, 0x67, 0x37, 0x6c,
+  0x43, 0x75, 0xa2, 0xc1, 0x87, 0xd5, 0x11, 0x71, 0x20, 0x34, 0x3c, 0x6d,
+  0xbb, 0x2d, 0x53, 0x32, 0x37, 0xa7, 0x4f, 0xac, 0xf1, 0xc7, 0xf9, 0x01,
+  0x3a, 0x6e, 0x76, 0xe9, 0xce, 0x64, 0x7b, 0x7c, 0x8b, 0xbb, 0x89, 0x75,
+  0xce, 0xbf, 0x5a, 0xd7, 0x61, 0x51, 0x7a, 0x07, 0xc9, 0xc3, 0xa2, 0xab,
+  0x34, 0x76, 0x69, 0xc9, 0x47, 0x2b, 0x96, 0xa2, 0x3b, 0x23, 0x28, 0xea,
+  0xbc, 0x84, 0x39, 0xc3, 0x8a, 0x1f, 0xc9, 0x76, 0xac, 0x5e, 0x1c, 0x7d,
+  0xda, 0x0f, 0x51, 0xf8, 0x7b, 0x08, 0x4b, 0xe9, 0xd7, 0xc8, 0x8e, 0xc3,
+  0x03, 0x0c, 0x4f, 0xbb, 0x6d, 0xb3, 0xbc, 0x49, 0xc6, 0xa5, 0x40, 0x85,
+  0x16, 0x90, 0x35, 0xf6, 0xf8, 0xc9, 0x92, 0x91, 0xaf, 0x5c, 0xe3, 0x72,
+  0xf6, 0xc8, 0x21, 0xa7, 0x07, 0xfc, 0xac, 0x38, 0x66, 0x3c, 0x98, 0x55,
+  0x74, 0x2e, 0x65, 0xae, 0x8b, 0x15, 0x2b, 0xbf, 0x6a, 0x04, 0x0d, 0x2a,
+  0x5c, 0x3d, 0x12, 0x7d, 0xb2, 0x73, 0x38, 0x7e, 0x71, 0xd9, 0xe1, 0x76,
+  0xef, 0x47, 0xd6, 0xdd, 0x9c, 0x0e, 0xd7, 0xbf, 0xa5, 0xcb, 0xd3, 0x77,
+  0x38, 0x49, 0x6a, 0x3a, 0x61, 0xad, 0x39, 0xa6, 0x0d, 0x3b, 0xe0, 0xbf,
+  0x88, 0x41, 0xb0, 0xb6, 0x36, 0x0d, 0x0e, 0xe1, 0xa0, 0x44, 0x52, 0x19,
+  0x8c, 0x60, 0x2f, 0xf1, 0xa3, 0x33, 0x7b, 0x66, 0xcb, 0x34, 0xac, 0x2d,
+  0x86, 0xa5, 0xe4, 0x10, 0x6b, 0xf8, 0xb7, 0x99, 0x9b, 0x30, 0xc8, 0xb8,
+  0x46, 0x18, 0x6e, 0x70, 0xcc, 0xaa, 0x24, 0x4b, 0xa0, 0x54, 0x1f, 0xa7,
+  0xeb, 0x46, 0x97, 0x3a, 0x2d, 0xcd, 0xa6, 0xe5, 0x01, 0xa6, 0x62, 0xd8,
+  0xdc, 0xda, 0x19, 0xee, 0xf4, 0x93, 0xa6, 0x4e, 0x66, 0xc2, 0x75, 0x51,
+  0xba, 0x6c, 0x48, 0xee, 0xba, 0x6d, 0x67, 0x38, 0xe3, 0x8e, 0x2b, 0x93,
+  0x33, 0x3d, 0x29, 0x20, 0x10, 0xc1, 0x0b, 0xf2, 0x8c, 0x15, 0x1e, 0x2d,
+  0xe0, 0xf6, 0xe0, 0xe9, 0x8b, 0x17, 0x8d, 0x2b, 0x2d, 0xd4, 0x9c, 0x9f,
+  0x6d, 0x6f, 0x0b, 0x80, 0x7a, 0xfb, 0x35, 0xfa, 0x62, 0xf0, 0x02, 0x2f,
+  0x36, 0x5f, 0x93, 0xe2, 0x1d, 0xab, 0xdf, 0x1b, 0xf0, 0x37, 0x1d, 0xdd,
+  0xc1, 0x9e, 0xb2, 0xf2, 0xad, 0x17, 0xdc, 0x5d, 0xc7, 0x5b, 0x78, 0x58,
+  0x96, 0xb1, 0xb8, 0xbc, 0xe4, 0x70, 0x3b, 0x7e, 0x12, 0x9c, 0x9f, 0x44,
+  0xc1, 0xbb, 0xb4, 0x9c, 0xc4, 0xd3, 0xdd, 0xee, 0x0f, 0x76, 0x56, 0x4d,
+  0x17, 0x36, 0x01, 0x1e, 0x09, 0xf6, 0x93, 0x35, 0x28, 0x12, 0x9e, 0x37,
+  0xbe, 0xd9, 0xec, 0x9a, 0xfd, 0x67, 0xdb, 0xdb, 0xfd, 0xe7, 0xfc, 0xf3,
+  0xc5, 0x8b, 0x95, 0x9e, 0x54, 0xdf, 0xc7, 0x13, 0x9b, 0x5a, 0x63, 0xb4,
+  0xd4, 0x4e, 0x47, 0xeb, 0x3b, 0xd4, 0xea, 0xce, 0x8b, 0x17, 0x7d, 0xee,
+  0xe5, 0xd9, 0x27, 0xb5, 0x5e, 0xdf, 0x15, 0xde, 0xb2, 0xc5, 0xaf, 0x7b,
+  0x7a, 0xac, 0xba, 0x67, 0xc0, 0x4a, 0xc1, 0x2b, 0x80, 0xcb, 0x07, 0xf6,
+  0x1e, 0x9f, 0xe5, 0x11, 0x06, 0xe3, 0x23, 0xaa, 0x65, 0x01, 0x3c, 0x10,
+  0x28, 0x9a, 0xac, 0xb5, 0xc4, 0x40, 0x05, 0x48, 0x0e, 0x32, 0x1f, 0x54,
+  0x94, 0x8f, 0x29, 0xb9, 0xb8, 0x93, 0xfc, 0x2a, 0xaf, 0x3d, 0x7e, 0x48,
+  0x95, 0x6c, 0x10, 0x11, 0x6d, 0xc2, 0xa4, 0x20, 0x90, 0xe8, 0xea, 0x9a,
+  0xef, 0x21, 0x04, 0x58, 0x90, 0x0d, 0x7b, 0xac, 0x62, 0xf4, 0xa2, 0xd8,
+  0x8d, 0x6c, 0x3a, 0x71, 0xc9, 0x97, 0xf2, 0xf8, 0x00, 0x0f, 0xea, 0x21,
+  0x84, 0x7a, 0x28, 0x58, 0x9a, 0x29, 0x02, 0x8a, 0xa4, 0x6b, 0xed, 0x3b,
+  0x1a, 0xbd, 0xc4, 0x52, 0x88, 0x95, 0xde, 0x12, 0xe1, 0x24, 0xe8, 0xd7,
+  0xaf, 0x43, 0xaf, 0x6a, 0x23, 0xac, 0x72, 0x5d, 0x23, 0xde, 0x83, 0x28,
+  0x92, 0x49, 0x2c, 0xbe, 0x93, 0xcc, 0x4a, 0xa0, 0x35, 0x0a, 0xdf, 0xf6,
+  0x2a, 0xb5, 0xf7, 0x2c, 0xcb, 0xd5, 0xb5, 0x47, 0x34, 0x5d, 0x00, 0x4e,
+  0x78, 0x56, 0x82, 0xef, 0x52, 0x4b, 0x07, 0x43, 0x1a, 0xa8, 0xf1, 0x0b,
+  0x57, 0xdb, 0x58, 0xd3, 0xaf, 0x90, 0xf0, 0x19, 0x19, 0xd2, 0xd8, 0x1a,
+  0x60, 0xf5, 0xea, 0xd4, 0x9b, 0x6f, 0xf5, 0x6d, 0xd3, 0xda, 0xa7, 0xc1,
+  0x59, 0xb0, 0x38, 0xed, 0xb7, 0x54, 0x1f, 0x94, 0x25, 0x88, 0xab, 0x0d,
+  0xf5, 0x82, 0xb2, 0xe2, 0x57, 0x59, 0x1d, 0x54, 0xe6, 0x31, 0x68, 0x82,
+  0x38, 0x8e, 0x42, 0x31, 0xfd, 0xc1, 0xd4, 0x64, 0x8b, 0x7c, 0x75, 0x3d,
+  0x67, 0xa9, 0x10, 0x93, 0xba, 0xdc, 0xba, 0x0a, 0xb3, 0xa9, 0x7b, 0x1b,
+  0xc5, 0xdd, 0xf2, 0x56, 0xeb, 0x2e, 0x13, 0x31, 0x07, 0xa1, 0x3e, 0x20,
+  0xd2, 0xc0, 0xf0, 0x60, 0x75, 0xb1, 0x0a, 0x09, 0x5b, 0xd9, 0x1c, 0x76,
+  0x18, 0x09, 0x50, 0x1e, 0x06, 0xbb, 0xe5, 0x4c, 0x73, 0xd9, 0xc7, 0x1a,
+  0xb5, 0xec, 0x30, 0x72, 0xbb, 0xe6, 0xce, 0x8f, 0xfe, 0xf7, 0xe1, 0x6f,
+  0x98, 0xc7, 0x79, 0x16, 0xa4, 0x36, 0xf3, 0x6b, 0x5d, 0x99, 0x5b, 0x01,
+  0x68, 0x7b, 0xab, 0x3e, 0x6e, 0xb0, 0x7d, 0x20, 0x2e, 0xa4, 0xd2, 0xeb,
+  0x6a, 0x76, 0x55, 0x0f, 0xa2, 0x85, 0x9d, 0x2d, 0x82, 0x20, 0x7a, 0x73,
+  0xab, 0x8a, 0x2d, 0xd9, 0x23, 0x05, 0x8b, 0x19, 0x36, 0xf5, 0xc1, 0x50,
+  0x5a, 0xa6, 0xb8, 0x2d, 0xa4, 0xfb, 0x5c, 0x7d, 0xa1, 0x09, 0xae, 0xec,
+  0x8c, 0x74, 0x78, 0x5e, 0x00, 0xee, 0x2b, 0x34, 0xfe, 0xf3, 0x0d, 0x4f,
+  0xba, 0x2e, 0x1e, 0xef, 0xc4, 0xd2, 0x10, 0xe8, 0xac, 0x30, 0x01, 0xd9,
+  0x09, 0x59, 0x32, 0xc3, 0x69, 0x66, 0x30, 0x3f, 0x70, 0x2d, 0x86, 0x35,
+  0xcc, 0x3a, 0x92, 0x98, 0x2a, 0x12, 0x24, 0x80, 0x0c, 0xca, 0x68, 0x6c,
+  0xd2, 0x79, 0x02, 0x58, 0x4e, 0x83, 0xc5, 0x11, 0x84, 0xcf, 0x2a, 0xa8,
+  0x0d, 0xad, 0x66, 0x3b, 0x79, 0xb8, 0x6d, 0x7e, 0x04, 0x58, 0x0d, 0xac,
+  0x16, 0x0c, 0x6a, 0xe2, 0x93, 0x40, 0xaa, 0xb8, 0x60, 0x52, 0x76, 0x35,
+  0x19, 0xa8, 0x30, 0xd6, 0x3c, 0xee, 0xbc, 0x0a, 0x77, 0x2e, 0x2a, 0x33,
+  0xd8, 0xdd, 0x3c, 0x08, 0x16, 0x4a, 0xa7, 0x6a, 0x0e, 0x61, 0x40, 0x43,
+  0xb8, 0x51, 0x5c, 0x2a, 0x3b, 0x4c, 0x73, 0xf3, 0x98, 0x97, 0xb1, 0x55,
+  0x12, 0xd0, 0x46, 0xae, 0x2e, 0x09, 0x52, 0xd6, 0x91, 0x54, 0x29, 0x41,
+  0x9d, 0x76, 0x78, 0x1d, 0x9c, 0xe2, 0x0c, 0x8e, 0x03, 0x60, 0xe7, 0xb4,
+  0x8f, 0x06, 0xf5, 0x5b, 0xf3, 0xd2, 0xf5, 0x69, 0x25, 0xee, 0xa2, 0x22,
+  0x9d, 0x8d, 0x80, 0x82, 0x20, 0x2b, 0x9f, 0xe3, 0x98, 0x1e, 0x8a, 0x80,
+  0xb9, 0x16, 0x89, 0xa5, 0xe1, 0xb0, 0x17, 0xef, 0x02, 0xaf, 0x29, 0x4f,
+  0xda, 0x61, 0x21, 0x54, 0xdd, 0x16, 0xe0, 0x49, 0x96, 0x1a, 0xae, 0x0c,
+  0xed, 0x29, 0x51, 0x6a, 0x8c, 0x0c, 0x70, 0x97, 0x95, 0x99, 0xc7, 0x58,
+  0x46, 0xb8, 0x20, 0x9d, 0xbe, 0x61, 0x72, 0x5e, 0xd0, 0xf3, 0x1d, 0x45,
+  0xd4, 0x2c, 0x29, 0xaa, 0x81, 0xbb, 0x8a, 0xf1, 0xf8, 0x2a, 0xe7, 0x9c,
+  0x40, 0x20, 0x86, 0xe5, 0xe6, 0x7c, 0x3b, 0xa0, 0xda, 0x60, 0x01, 0xa6,
+  0x81, 0x0b, 0x62, 0x21, 0xaf, 0xa0, 0xa4, 0xef, 0xc2, 0x88, 0xc9, 0x2c,
+  0x67, 0x7d, 0x50, 0x24, 0x03, 0x14, 0x8d, 0x00, 0x8a, 0x5c, 0xd0, 0xdc,
+  0x43, 0xd9, 0x9e, 0x3b, 0x2f, 0x9a, 0x41, 0x9d, 0x5c, 0xc7, 0x6f, 0x4a,
+  0x42, 0xe8, 0x4b, 0x76, 0x6b, 0xc2, 0xab, 0xb9, 0xb7, 0x22, 0x31, 0xf0,
+  0xd4, 0xa1, 0x22, 0x8e, 0x69, 0x08, 0x9c, 0xcc, 0xa2, 0x09, 0x50, 0x32,
+  0x47, 0x3f, 0x49, 0xc9, 0xca, 0x12, 0x5a, 0x11, 0x9e, 0xbc, 0x48, 0xf3,
+  0x28, 0xc1, 0x25, 0x40, 0xb1, 0xb5, 0xa9, 0xb1, 0x04, 0xea, 0xca, 0x98,
+  0x6b, 0xd5, 0x6e, 0x89, 0x05, 0xde, 0xa8, 0x36, 0x0d, 0xae, 0x77, 0x85,
+  0x3e, 0xd0, 0x48, 0xb2, 0xd3, 0xca, 0x13, 0xb0, 0x61, 0xb8, 0x3a, 0xa6,
+  0x73, 0x4b, 0xd8, 0xd0, 0x29, 0x4f, 0x82, 0x4a, 0x27, 0x51, 0x00, 0x99,
+  0xd5, 0x69, 0x1a, 0x0a, 0x5c, 0x06, 0x9f, 0x7f, 0x3e, 0x58, 0xd4, 0x7f,
+  0x21, 0x59, 0xcc, 0x5b, 0x59, 0x3d, 0xde, 0x12, 0xbc, 0x34, 0x90, 0xf8,
+  0x1c, 0x18, 0xb2, 0x4e, 0xeb, 0x68, 0xe7, 0x1a, 0xc5, 0x8e, 0x23, 0x31,
+  0x6b, 0x04, 0x25, 0x1c, 0x83, 0x24, 0x3f, 0x70, 0x54, 0xf3, 0x0d, 0x77,
+  0x18, 0x7e, 0x2f, 0x0d, 0x7b, 0x2c, 0x58, 0x74, 0xe7, 0x44, 0x35, 0x4c,
+  0xb2, 0xc6, 0x3d, 0xc1, 0xaf, 0xf8, 0xb2, 0xa1, 0x1d, 0xd4, 0x3b, 0xcf,
+  0x82, 0x5b, 0xc7, 0xc5, 0x3a, 0x36, 0x11, 0x47, 0x1d, 0x2e, 0x66, 0xb0,
+  0xf1, 0x5d, 0x26, 0x7d, 0x3e, 0x3d, 0x18, 0x81, 0x04, 0x2e, 0x1a, 0xe6,
+  0x07, 0xa0, 0x97, 0x1e, 0x41, 0x15, 0x35, 0x54, 0x06, 0x0d, 0x6f, 0xf3,
+  0xa0, 0x15, 0x6c, 0xcd, 0x9e, 0xe8, 0x27, 0x2e, 0xeb, 0xaf, 0x23, 0xf2,
+  0x4f, 0x37, 0xf7, 0xe1, 0xe8, 0xad, 0x9d, 0xe1, 0x93, 0xe6, 0x19, 0x60,
+  0x4d, 0xb3, 0xab, 0x82, 0x0a, 0x04, 0x40, 0x70, 0x42, 0x14, 0x7d, 0x41,
+  0x70, 0x9e, 0x24, 0xaa, 0xb1, 0xe5, 0x22, 0xb3, 0x38, 0x2d, 0x44, 0x7c,
+  0x08, 0x46, 0x0e, 0x73, 0x1b, 0x2d, 0x35, 0x13, 0x23, 0x7c, 0x06, 0x7e,
+  0x29, 0x16, 0x27, 0xad, 0x94, 0x53, 0xa9, 0xe1, 0xae, 0x5e, 0xd7, 0x92,
+  0x39, 0xab, 0x45, 0x9a, 0x78, 0x19, 0x1f, 0x95, 0xe5, 0x62, 0x18, 0xd7,
+  0x77, 0x71, 0x01, 0x7b, 0xfa, 0x2e, 0x75, 0xbf, 0x1d, 0x66, 0xd4, 0x42,
+  0xb2, 0xd3, 0x50, 0xea, 0xca, 0x8a, 0x33, 0x5a, 0xb4, 0x53, 0xc4, 0x13,
+  0xc1, 0x4a, 0xb9, 0xb6, 0xc6, 0x85, 0x9b, 0xb2, 0xce, 0x59, 0xd3, 0xdb,
+  0x04, 0x32, 0x6f, 0x8f, 0x17, 0x45, 0x0a, 0xf8, 0xf5, 0xcd, 0xc7, 0xf0,
+  0xf4, 0xe3, 0xc7, 0x78, 0x27, 0x44, 0xdc, 0x05, 0x00, 0x2a, 0xf3, 0x08,
+  0x75, 0xf9, 0x3f, 0xfb, 0xf8, 0xb1, 0xf9, 0xe5, 0x03, 0x65, 0xd7, 0x59,
+  0x76, 0x40, 0x7d, 0xb9, 0xba, 0xd0, 0x95, 0x4a, 0x83, 0x55, 0x34, 0xac,
+  0x6d, 0x05, 0x23, 0xbd, 0x4b, 0x25, 0x7c, 0x38, 0xf6, 0x31, 0x41, 0xab,
+  0x14, 0x8e, 0x54, 0x5f, 0x67, 0xfe, 0x9a, 0x60, 0x84, 0xb7, 0x6b, 0x3a,
+  0x95, 0x52, 0x19, 0x4d, 0x89, 0xde, 0x55, 0x62, 0x5f, 0x6a, 0x22, 0x64,
+  0x3b, 0x2e, 0x27, 0x95, 0x6a, 0xb3, 0x28, 0xfe, 0xb0, 0x9c, 0xd7, 0x39,
+  0xb2, 0xb3, 0x50, 0x71, 0x93, 0x5e, 0xdf, 0xa1, 0xf5, 0xcf, 0xe7, 0x4b,
+  0xd6, 0xd5, 0x64, 0xb5, 0xd1, 0xa1, 0x2b, 0xfe, 0xd6, 0xb5, 0xec, 0xd3,
+  0xf4, 0x3e, 0x71, 0x11, 0x1a, 0x56, 0x8c, 0x21, 0x40, 0x1b, 0xc2, 0xb8,
+  0x04, 0xda, 0xd3, 0xb2, 0x29, 0xb1, 0x16, 0x03, 0xbc, 0xda, 0x71, 0x98,
+  0xdd, 0x1d, 0xa4, 0xe2, 0x7b, 0xf6, 0x91, 0x16, 0x5b, 0x62, 0x5d, 0x25,
+  0x1f, 0x9a, 0x14, 0x48, 0xbe, 0x65, 0xae, 0x8a, 0x92, 0x36, 0x74, 0xa6,
+  0x52, 0x87, 0x44, 0xed, 0x46, 0xe1, 0x1f, 0xd2, 0x95, 0x2b, 0xc5, 0x29,
+  0x11, 0xd4, 0xa8, 0xc1, 0x23, 0x5e, 0xc7, 0xa2, 0x56, 0x39, 0xd5, 0xca,
+  0x07, 0x61, 0x75, 0x6d, 0xd4, 0x0f, 0x5d, 0x45, 0xbb, 0xe1, 0x31, 0xfc,
+  0xc7, 0x67, 0x05, 0x06, 0x6b, 0xf4, 0x40, 0x01, 0x51, 0x13, 0x80, 0xab,
+  0x69, 0x96, 0x2d, 0x34, 0x3e, 0x66, 0x86, 0x1a, 0xd3, 0x7a, 0x0e, 0xed,
+  0x18, 0x8a, 0x08, 0xa0, 0x54, 0xa8, 0xe1, 0x5b, 0xab, 0x0e, 0xb8, 0xde,
+  0xde, 0xec, 0xd1, 0xf2, 0xe8, 0x12, 0x69, 0x12, 0xb0, 0x12, 0x3d, 0x57,
+  0x1b, 0x79, 0x1d, 0x8a, 0x33, 0xdd, 0x27, 0xd2, 0x6d, 0x99, 0xae, 0xb2,
+  0x6e, 0x9b, 0x23, 0x19, 0x5d, 0xeb, 0xcd, 0x61, 0x43, 0x4a, 0x8a, 0x61,
+  0x52, 0x44, 0x53, 0x82, 0x3c, 0x08, 0xf3, 0xe3, 0x15, 0x04, 0x1f, 0x65,
+  0x7f, 0x88, 0xaa, 0x96, 0xc2, 0xcd, 0x88, 0x48, 0x08, 0xea, 0xf6, 0xca,
+  0x12, 0x46, 0xac, 0x16, 0x99, 0x0f, 0x2d, 0x35, 0xc2, 0x94, 0x7f, 0x1b,
+  0xb9, 0xa7, 0x36, 0x1e, 0xfb, 0xd0, 0x53, 0x40, 0x8c, 0xa3, 0xf1, 0xcf,
+  0x22, 0x88, 0x47, 0x8b, 0xca, 0x8a, 0x89, 0x52, 0xb6, 0x99, 0x1f, 0xd4,
+  0xf8, 0x2c, 0x0e, 0x0c, 0xe6, 0x09, 0x79, 0x87, 0xbb, 0xb0, 0x1d, 0xb7,
+  0xe7, 0xaa, 0x42, 0x45, 0xe6, 0x35, 0xe5, 0x2b, 0x36, 0x2a, 0x60, 0x48,
+  0xa5, 0x3c, 0x0d, 0x86, 0x78, 0xd9, 0x60, 0x90, 0x42, 0x1d, 0xda, 0x26,
+  0x7f, 0x3c, 0x2d, 0x38, 0x54, 0xbd, 0x72, 0xe5, 0x65, 0xca, 0x08, 0x94,
+  0x09, 0xe5, 0x32, 0x84, 0xdd, 0x4c, 0x3a, 0x2a, 0xe4, 0xbd, 0x2b, 0x18,
+  0x20, 0xc1, 0xd5, 0xc0, 0x71, 0xed, 0xe8, 0x9b, 0x11, 0x97, 0xb6, 0x76,
+  0xb4, 0xb2, 0x56, 0xbf, 0x09, 0xe4, 0xa3, 0x83, 0x06, 0xf4, 0x85, 0x60,
+  0x91, 0x5e, 0x1b, 0x9c, 0x3d, 0xdf, 0x71, 0x1d, 0x25, 0x6f, 0xe5, 0x72,
+  0x63, 0x87, 0x28, 0xa2, 0x29, 0x78, 0x3e, 0x1d, 0xe5, 0xfc, 0xb0, 0x03,
+  0xd4, 0x48, 0x5e, 0x4c, 0x10, 0x87, 0x21, 0x1c, 0x25, 0x2a, 0x36, 0x2d,
+  0x39, 0xd0, 0x3a, 0x9a, 0x5e, 0xe5, 0xaa, 0x99, 0xf1, 0xeb, 0x52, 0x66,
+  0x08, 0xa5, 0x82, 0x83, 0x5a, 0xc1, 0xc3, 0x44, 0x0b, 0x9f, 0xd5, 0x71,
+  0xe9, 0x64, 0x8f, 0x0b, 0x04, 0xda, 0xd5, 0x9c, 0x60, 0xab, 0x45, 0xeb,
+  0x18, 0xed, 0x3f, 0x91, 0x49, 0x55, 0xa8, 0x8e, 0x9e, 0x4f, 0xe3, 0x94,
+  0x93, 0x73, 0x7c, 0x28, 0xba, 0xd8, 0x5f, 0x97, 0x39, 0x4a, 0xb9, 0x01,
+  0x13, 0xe3, 0x75, 0xc1, 0xfb, 0x5f, 0x69, 0xf0, 0xfa, 0x15, 0x24, 0x31,
+  0x0d, 0x4f, 0x2a, 0x95, 0xab, 0x50, 0xf7, 0x91, 0x0a, 0xcb, 0x30, 0xda,
+  0x43, 0x2b, 0x6c, 0x83, 0x92, 0x06, 0x33, 0xba, 0xa4, 0x86, 0x0e, 0x9a,
+  0x9f, 0x18, 0x42, 0x47, 0xd5, 0x0a, 0x85, 0x0c, 0xaa, 0x6e, 0x62, 0x09,
+  0xb4, 0xdf, 0x48, 0xa0, 0x40, 0x30, 0x80, 0x3a, 0x37, 0x6a, 0x4e, 0xc9,
+  0x21, 0xcd, 0x6f, 0x4b, 0x30, 0xfc, 0xe8, 0x8e, 0x9c, 0x2a, 0x9c, 0x84,
+  0x8b, 0xcd, 0x6f, 0x93, 0x4d, 0x23, 0x32, 0xb5, 0x4a, 0xab, 0xe9, 0x20,
+  0x6f, 0x13, 0xbe, 0xe0, 0xd3, 0xba, 0xd0, 0x1f, 0x2f, 0x42, 0x20, 0xa3,
+  0xef, 0x7c, 0x9f, 0x34, 0xe9, 0x18, 0xb4, 0xf6, 0x21, 0x76, 0xf3, 0x64,
+  0xa7, 0xa9, 0x0a, 0xfd, 0xe3, 0x42, 0x61, 0xcd, 0x5c, 0xc7, 0xe7, 0x50,
+  0x50, 0xe6, 0x58, 0xd5, 0xef, 0xc6, 0xa4, 0x0f, 0x83, 0x5d, 0x1b, 0x91,
+  0xcc, 0xf1, 0x98, 0x2c, 0x94, 0x35, 0xd1, 0x60, 0x56, 0x48, 0xc9, 0x5d,
+  0xc1, 0xae, 0x5b, 0x62, 0xd8, 0xfb, 0x94, 0xe8, 0xd6, 0x73, 0x10, 0x20,
+  0x11, 0xd3, 0x00, 0xa4, 0xb3, 0xca, 0x68, 0xa4, 0x40, 0x11, 0x95, 0x1c,
+  0x6d, 0x5f, 0x1b, 0x89, 0xa9, 0x50, 0x72, 0x0b, 0x4c, 0x4c, 0x04, 0x60,
+  0xbb, 0x60, 0xf7, 0xe7, 0x75, 0x47, 0x25, 0xa7, 0x46, 0x80, 0x7c, 0x55,
+  0x4d, 0x25, 0xf4, 0xac, 0x9f, 0x28, 0x74, 0x9c, 0x56, 0x27, 0x16, 0x04,
+  0xb9, 0x8b, 0xf2, 0xde, 0x82, 0x4c, 0x19, 0x64, 0xe0, 0xe2, 0xf8, 0x3c,
+  0x44, 0xd0, 0x50, 0xa3, 0x49, 0xcc, 0x6f, 0x39, 0xdb, 0x54, 0x34, 0x06,
+  0x18, 0x6f, 0x51, 0x15, 0x3d, 0x7c, 0xc3, 0xd5, 0x45, 0x17, 0x0b, 0xb5,
+  0x55, 0x20, 0x52, 0x13, 0x62, 0xfb, 0x1c, 0x4a, 0xc7, 0xc3, 0x10, 0x54,
+  0x53, 0x00, 0x33, 0x68, 0xf0, 0x03, 0x03, 0xf2, 0x60, 0xd6, 0x88, 0xe9,
+  0x10, 0x27, 0xff, 0xab, 0x48, 0x40, 0xa2, 0xf8, 0x0c, 0x22, 0xdb, 0x4f,
+  0x9d, 0x30, 0x3a, 0xf1, 0x14, 0xf6, 0xe7, 0x6c, 0x3e, 0x2e, 0xef, 0x1b,
+  0xe0, 0xb7, 0x93, 0x4f, 0x28, 0xdb, 0x19, 0xd2, 0x1f, 0xe3, 0x2c, 0x33,
+  0x23, 0xe6, 0xe2, 0x02, 0x5a, 0xc9, 0x95, 0x3e, 0x71, 0x03, 0x0c, 0xe8,
+  0x1f, 0x37, 0xec, 0x0e, 0x76, 0xbf, 0xdd, 0x1c, 0xd7, 0x7e, 0x31, 0xa9,
+  0x41, 0x28, 0x0d, 0x7a, 0x98, 0xb0, 0x04, 0xa7, 0x42, 0xba, 0x82, 0xf7,
+  0xa3, 0x4c, 0x5d, 0x76, 0xe2, 0x23, 0x6a, 0x6f, 0xf2, 0x12, 0xa6, 0x62,
+  0xcd, 0x96, 0x6d, 0xed, 0x36, 0x96, 0xa7, 0x23, 0xf4, 0xd0, 0x90, 0x03,
+  0xc3, 0xdd, 0xa7, 0x9d, 0x54, 0x10, 0x77, 0xdb, 0xfc, 0x40, 0xf1, 0x5d,
+  0xbd, 0xff, 0x17, 0xc2, 0x7d, 0x6a, 0x35, 0x10, 0x7d, 0xea, 0xb6, 0xbb,
+  0x8d, 0xfe, 0xe4, 0xfa, 0xc2, 0x2b, 0x76, 0xc3, 0x6f, 0x87, 0xee, 0x07,
+  0xac, 0x86, 0x9e, 0x64, 0x40, 0x20, 0xc9, 0x46, 0xba, 0x5a, 0x0c, 0x7a,
+  0x36, 0x7c, 0x06, 0x25, 0x8c, 0xf7, 0x25, 0x44, 0x90, 0xe7, 0x4d, 0x91,
+  0x3d, 0x79, 0x60, 0x4b, 0x62, 0xfc, 0xf3, 0xf4, 0x91, 0x2d, 0x01, 0x0b,
+  0x63, 0x54, 0xc7, 0x28, 0x49, 0x45, 0xcc, 0xa8, 0xe1, 0x04, 0xeb, 0x46,
+  0x8a, 0x03, 0xdf, 0x9e, 0x28, 0xb8, 0x94, 0x22, 0x6b, 0x08, 0xd9, 0xcd,
+  0xf4, 0x5d, 0x5e, 0x73, 0xa4, 0xf1, 0x34, 0xbd, 0xeb, 0xc2, 0x62, 0xc7,
+  0x51, 0x96, 0xda, 0x93, 0xb4, 0xda, 0x61, 0xf8, 0x77, 0xe5, 0xe9, 0xf7,
+  0xab, 0xc3, 0xfd, 0xf3, 0x8b, 0x61, 0xfb, 0xa2, 0x8d, 0xb2, 0xd8, 0x78,
+  0xfb, 0x3c, 0xfa, 0x2a, 0xdb, 0x52, 0xb9, 0xb8, 0x75, 0xe9, 0x30, 0x30,
+  0x31, 0x38, 0x19, 0x5b, 0xe5, 0x76, 0x03, 0xa0, 0x4b, 0x1d, 0x58, 0x64,
+  0x90, 0x8b, 0xe1, 0x3e, 0x1e, 0xe5, 0x53, 0x4c, 0x81, 0x06, 0x46, 0x37,
+  0xce, 0xac, 0x52, 0x01, 0xbe, 0xe2, 0xea, 0x6d, 0xc5, 0x94, 0x4d, 0x41,
+  0x1d, 0x55, 0x09, 0xa2, 0xa2, 0xbf, 0xfb, 0x67, 0xef, 0x8e, 0xde, 0x7d,
+  0xbd, 0xd7, 0x90, 0x14, 0xa6, 0x45, 0x51, 0x65, 0x1a, 0xf1, 0x20, 0x05,
+  0x11, 0x64, 0xb9, 0x24, 0x2d, 0xd9, 0xa1, 0xe5, 0x74, 0x88, 0x2e, 0x8c,
+  0x53, 0x2a, 0x7e, 0x96, 0xea, 0x46, 0x0c, 0x92, 0x5a, 0x26, 0x0a, 0x58,
+  0x20, 0x0f, 0x57, 0xeb, 0xe6, 0x4d, 0x86, 0x85, 0xb0, 0x03, 0x1f, 0x75,
+  0xe3, 0xfb, 0x7c, 0x2e, 0x75, 0x26, 0x1a, 0x86, 0x98, 0xe6, 0x3e, 0x9b,
+  0x3a, 0x39, 0x26, 0xc6, 0x2a, 0x29, 0xb3, 0x4c, 0x6e, 0xb7, 0xc5, 0x0a,
+  0xc8, 0x71, 0x54, 0xf2, 0x63, 0x61, 0xe3, 0x97, 0xaf, 0x41, 0x5c, 0xce,
+  0x23, 0xa8, 0xd6, 0xf2, 0x4b, 0xd6, 0xe0, 0x69, 0xab, 0x54, 0x2e, 0xdf,
+  0x8b, 0xd5, 0x53, 0x31, 0x73, 0x7e, 0x72, 0xf6, 0xc6, 0xf9, 0xc9, 0xc1,
+  0xb7, 0xe7, 0x4f, 0x83, 0xdc, 0x8d, 0xba, 0x65, 0xb2, 0xd3, 0x42, 0xda,
+  0x78, 0x23, 0xce, 0x10, 0x7f, 0x24, 0x71, 0xa3, 0x29, 0x67, 0x3e, 0x0b,
+  0xad, 0xe1, 0x1d, 0xac, 0xa5, 0x59, 0x91, 0x89, 0x4d, 0x9c, 0x79, 0xb1,
+  0x74, 0xe5, 0x40, 0x02, 0xec, 0xbd, 0xbe, 0x2b, 0x1a, 0x73, 0xdf, 0x51,
+  0x6f, 0xd5, 0x8a, 0x35, 0x05, 0xe5, 0x99, 0xa2, 0x78, 0x4b, 0x60, 0x03,
+  0xc1, 0x4c, 0xf6, 0x59, 0xbf, 0x2d, 0xe8, 0x12, 0xb7, 0x24, 0xc9, 0x7f,
+  0xba, 0xe4, 0xbe, 0x05, 0x44, 0xc8, 0x20, 0x98, 0x5c, 0xf8, 0x6f, 0x87,
+  0x44, 0x52, 0x3d, 0x75, 0x19, 0x21, 0x2c, 0x46, 0xf8, 0xc1, 0xea, 0xf6,
+  0xa6, 0xfa, 0xd4, 0xde, 0xd6, 0x96, 0x37, 0x64, 0x4a, 0xb8, 0xea, 0xf0,
+  0xb7, 0xd3, 0x07, 0xa5, 0xcf, 0xf4, 0x57, 0x11, 0x45, 0xfa, 0x69, 0x54,
+  0xb1, 0xc2, 0xb9, 0xfb, 0xc9, 0x54, 0xf1, 0xf9, 0xaa, 0x0b, 0xc7, 0xdd,
+  0xd7, 0xbf, 0x80, 0x2e, 0x44, 0xab, 0xfc, 0x9f, 0x44, 0x15, 0x69, 0xf2,
+  0x69, 0x74, 0x91, 0xb6, 0x09, 0xa3, 0x03, 0x8e, 0xe1, 0xb7, 0x84, 0xc8,
+  0xc5, 0x28, 0x9e, 0x0d, 0x5c, 0xa9, 0x8f, 0x5f, 0x41, 0x31, 0xcf, 0x74,
+  0xa6, 0x1b, 0x70, 0x00, 0xa8, 0xdf, 0xdb, 0xe0, 0x23, 0xcd, 0x0b, 0xb3,
+  0xa2, 0xe2, 0x88, 0x48, 0x65, 0x9b, 0x76, 0x21, 0xae, 0xe6, 0x41, 0x1d,
+  0xd4, 0x15, 0x05, 0xc8, 0xff, 0x72, 0x5a, 0xfb, 0x7f, 0x05, 0x07, 0x7a,
+  0xe6, 0x0b, 0xb5, 0x7c, 0x0a, 0xc9, 0x3d, 0xbb, 0x76, 0x24, 0xd7, 0x55,
+  0xbe, 0xd8, 0x78, 0xd3, 0x6f, 0x9c, 0x01, 0x16, 0xc9, 0x96, 0xb6, 0xea,
+  0x2c, 0x5d, 0xde, 0x95, 0xc5, 0xfc, 0x0a, 0x81, 0x31, 0x61, 0x35, 0x10,
+  0xb6, 0xd1, 0x08, 0x74, 0x6c, 0x04, 0x1c, 0xae, 0x74, 0xec, 0x50, 0x0c,
+  0x02, 0xbf, 0x81, 0xe0, 0xe7, 0xd1, 0x08, 0xa2, 0x3b, 0xf3, 0xd9, 0xa3,
+  0xc4, 0xde, 0xf0, 0x44, 0x71, 0xc7, 0x4a, 0xef, 0x46, 0xdc, 0x03, 0x29,
+  0x58, 0x63, 0x34, 0xee, 0xfc, 0x53, 0x1d, 0x51, 0xaa, 0x08, 0x03, 0x98,
+  0x3e, 0x7e, 0xd7, 0x86, 0x74, 0xee, 0xd8, 0x68, 0x12, 0x61, 0xf2, 0x3d,
+  0x94, 0x24, 0xf9, 0xff, 0x16, 0x1e, 0xfa, 0xec, 0xd3, 0xc8, 0xf9, 0x9f,
+  0x71, 0xb3, 0xfe, 0x0f, 0x22, 0xde, 0xae, 0x6d, 0xde, 0x50, 0xf4, 0x44,
+  0x51, 0x90, 0xe5, 0x62, 0xd9, 0x14, 0x8c, 0x27, 0xa7, 0xc8, 0x60, 0x15,
+  0x8f, 0x4e, 0xbf, 0x7b, 0xde, 0x67, 0xaf, 0xd6, 0x79, 0x5c, 0x29, 0xe4,
+  0xf8, 0xf5, 0xfe, 0x69, 0xc7, 0xcd, 0x70, 0x55, 0x55, 0xe9, 0x22, 0x37,
+  0x73, 0xcd, 0x23, 0xd6, 0x23, 0x6f, 0x1e, 0x8f, 0x8c, 0x44, 0xba, 0x5d,
+  0xa6, 0xa3, 0xb2, 0xab, 0x71, 0x3c, 0x73, 0xf6, 0x9c, 0xcb, 0xbf, 0x4e,
+  0x62, 0x75, 0xf7, 0x31, 0x63, 0x54, 0x5e, 0x3f, 0x92, 0x60, 0xad, 0x64,
+  0xd4, 0x4a, 0xab, 0xee, 0x9e, 0x98, 0xd8, 0x97, 0xda, 0x0e, 0xb1, 0x95,
+  0xa9, 0xd5, 0xbe, 0xf5, 0x87, 0x1a, 0xef, 0x48, 0x09, 0xf3, 0x7d, 0x6d,
+  0x31, 0x28, 0xa8, 0xbe, 0xa8, 0x66, 0x2f, 0xa8, 0x76, 0xd1, 0x97, 0x97,
+  0x00, 0x0c, 0xaf, 0xa2, 0xcc, 0xd2, 0x3b, 0x14, 0x73, 0x70, 0x49, 0xc9,
+  0x03, 0x2d, 0x64, 0xab, 0xbb, 0x2e, 0x15, 0xb8, 0x34, 0x23, 0x76, 0x3e,
+  0xce, 0x17, 0xe9, 0x54, 0xf3, 0x84, 0x93, 0x87, 0x4a, 0xc1, 0xb5, 0x2b,
+  0x69, 0x35, 0x27, 0x34, 0xcf, 0xda, 0x99, 0xa0, 0xfb, 0x4c, 0xfe, 0x01,
+  0x00, 0xba, 0xd5, 0xc7, 0x0c, 0xd2, 0xe0, 0x15, 0x8c, 0x4a, 0x6d, 0x15,
+  0xc8, 0x06, 0x61, 0x96, 0x87, 0x07, 0xe2, 0x34, 0x37, 0x36, 0x14, 0x71,
+  0x46, 0xda, 0xce, 0x8b, 0xe7, 0x3b, 0x49, 0x95, 0xde, 0x03, 0x98, 0xa8,
+  0xd2, 0x97, 0x9f, 0x0e, 0x9f, 0x6c, 0x3d, 0x1d, 0x3e, 0x4d, 0x7c, 0x9d,
+  0x6c, 0xf8, 0x1e, 0xb5, 0x79, 0x62, 0x9d, 0x11, 0x20, 0x8d, 0x85, 0x7a,
+  0xbd, 0x3b, 0x3c, 0x60, 0x69, 0xc4, 0xd2, 0xc6, 0x5b, 0x4a, 0xae, 0x21,
+  0xa2, 0xd1, 0xc2, 0x59, 0xa5, 0xb7, 0x2e, 0xc5, 0xbc, 0x63, 0x39, 0x8c,
+  0x34, 0x91, 0xf3, 0x31, 0x77, 0x03, 0x61, 0x5e, 0x29, 0x54, 0xaa, 0xeb,
+  0xd2, 0x89, 0xbe, 0x13, 0x2e, 0x49, 0x88, 0x1b, 0xf0, 0x70, 0x71, 0xb3,
+  0xaa, 0x26, 0x4d, 0xbd, 0xec, 0x8e, 0x0f, 0x3b, 0x53, 0x33, 0xb4, 0x84,
+  0xda, 0xdc, 0x71, 0xe9, 0x98, 0x4a, 0x8b, 0xce, 0xf0, 0x3b, 0x96, 0x92,
+  0xd1, 0xc8, 0xd2, 0xb1, 0xb8, 0xa7, 0x61, 0x5c, 0xb8, 0xb7, 0x91, 0x1f,
+  0xa3, 0xe5, 0xca, 0x50, 0xeb, 0xbc, 0x37, 0xe8, 0xd9, 0x35, 0x65, 0x51,
+  0x53, 0xdc, 0x59, 0x2d, 0xb6, 0xf2, 0x76, 0x89, 0x9b, 0x7f, 0xb8, 0xdc,
+  0x5a, 0xf3, 0x6d, 0x40, 0xaa, 0xfc, 0x3c, 0xab, 0xb5, 0x7a, 0x6e, 0xf2,
+  0xf2, 0xe4, 0xf4, 0xe2, 0xd5, 0x6d, 0x3a, 0x8d, 0xa2, 0x7b, 0x18, 0xe1,
+  0xd5, 0x2a, 0x0d, 0x3b, 0x3b, 0x3e, 0xbf, 0x19, 0xa4, 0xdb, 0x9d, 0xbb,
+  0xac, 0x33, 0x7b, 0xb2, 0x0b, 0xd1, 0xec, 0xe2, 0xe2, 0xcf, 0xa7, 0x87,
+  0xaf, 0x5e, 0xb2, 0x17, 0xe0, 0x0b, 0x76, 0xc5, 0x54, 0x0d, 0xa7, 0x00,
+  0x17, 0xb4, 0x8f, 0x6f, 0xc6, 0x1f, 0x5e, 0x1f, 0x9d, 0x9f, 0x1e, 0x9f,
+  0x1c, 0xbc, 0x7a, 0xf9, 0x03, 0x5b, 0x1b, 0x68, 0xf5, 0xee, 0x83, 0x77,
+  0xdd, 0x67, 0x2e, 0x81, 0x26, 0xae, 0xe5, 0x79, 0xf8, 0xfd, 0x87, 0xc3,
+  0x77, 0xdf, 0xbd, 0x7a, 0x79, 0x9b, 0x96, 0x7d, 0x9e, 0x9f, 0xbc, 0xcd,
+  0x88, 0x4a, 0x1d, 0x55, 0xde, 0x83, 0x35, 0xba, 0x40, 0x71, 0xd7, 0x05,
+  0xc7, 0x92, 0x3e, 0x10, 0x50, 0x08, 0x2e, 0xeb, 0xab, 0x67, 0x36, 0xa9,
+  0x23, 0x08, 0x5e, 0xd4, 0x95, 0x73, 0xe1, 0x90, 0xef, 0xcf, 0x8e, 0xbb,
+  0x2a, 0x3d, 0xd7, 0x41, 0x81, 0x19, 0x5f, 0x5e, 0x48, 0xed, 0x63, 0xbe,
+  0x61, 0xd4, 0xf2, 0x39, 0x70, 0xe9, 0x92, 0x0a, 0x72, 0xfc, 0x60, 0xf4,
+  0xa4, 0xf0, 0x2e, 0x1f, 0x99, 0xed, 0x2a, 0xdb, 0x4a, 0xf8, 0x14, 0x4d,
+  0x21, 0x07, 0x5c, 0xc8, 0x96, 0xc5, 0x24, 0x4d, 0x63, 0xb3, 0x5f, 0x90,
+  0x04, 0x84, 0xb0, 0x0b, 0x48, 0x35, 0x1c, 0xfc, 0x83, 0xf9, 0x1d, 0x08,
+  0xf0, 0xba, 0xe4, 0x3c, 0x35, 0x67, 0xa1, 0x18, 0x7a, 0x2b, 0x6b, 0x53,
+  0x70, 0x6d, 0x86, 0x1b, 0x37, 0xae, 0x52, 0xe8, 0xb7, 0x99, 0x4e, 0x63,
+  0xc9, 0x8e, 0x41, 0x5d, 0xa4, 0x8e, 0x84, 0xcb, 0x06, 0x10, 0xb3, 0xfa,
+  0xa0, 0x59, 0xa4, 0xe4, 0x6c, 0x50, 0x4e, 0xe8, 0x75, 0x41, 0xe8, 0xb2,
+  0xb1, 0x1e, 0xec, 0x3f, 0xf6, 0x62, 0xb3, 0x4f, 0x62, 0xe8, 0xce, 0x9c,
+  0x1d, 0xb6, 0xc2, 0x55, 0x39, 0xd8, 0x38, 0xdf, 0x74, 0x09, 0xb4, 0xdc,
+  0xe2, 0xe9, 0xfb, 0x8b, 0x20, 0x77, 0x3a, 0x8a, 0x53, 0x8c, 0x0e, 0x61,
+  0x5b, 0x50, 0xf6, 0x0b, 0xb5, 0x3e, 0x58, 0x6f, 0xd7, 0xc9, 0x32, 0x6f,
+  0x07, 0x71, 0x86, 0x7c, 0x1e, 0xc2, 0x61, 0xa4, 0x9d, 0xb5, 0x9e, 0x24,
+  0x79, 0x30, 0xd9, 0xd7, 0x00, 0xb4, 0x8c, 0x8b, 0x39, 0xb5, 0xfa, 0x18,
+  0xae, 0xb3, 0xad, 0xd9, 0x79, 0x52, 0xd5, 0xe5, 0xba, 0x19, 0xa5, 0x89,
+  0xde, 0x6b, 0x56, 0xba, 0x97, 0xe2, 0xc3, 0x62, 0x0a, 0x3c, 0xd4, 0xd6,
+  0xd0, 0xe0, 0x5a, 0x19, 0x11, 0xe5, 0x75, 0x94, 0x84, 0x02, 0xa7, 0x46,
+  0x1d, 0x87, 0x29, 0x32, 0x9c, 0x19, 0xee, 0x00, 0xd1, 0x7e, 0x06, 0xd0,
+  0xaf, 0x6e, 0x46, 0x73, 0x26, 0x4b, 0x9b, 0x10, 0xe6, 0xbb, 0xf0, 0xd2,
+  0x64, 0x13, 0x3b, 0x16, 0xf5, 0xcf, 0x2d, 0x01, 0x99, 0x59, 0xe1, 0xe0,
+  0xc2, 0xc7, 0x6b, 0x72, 0xb8, 0x65, 0x67, 0xe8, 0x1d, 0xaa, 0x85, 0x0e,
+  0x2e, 0x22, 0x28, 0x46, 0x7e, 0x81, 0x83, 0x15, 0x83, 0xe4, 0x08, 0xc4,
+  0x06, 0xf3, 0xdc, 0x85, 0x92, 0x34, 0x87, 0x0b, 0x42, 0xc5, 0x50, 0x43,
+  0xa7, 0xd9, 0x25, 0xb4, 0x22, 0x53, 0xbe, 0x4a, 0xd6, 0xaf, 0xa6, 0xc5,
+  0x68, 0x44, 0x93, 0x5a, 0x77, 0x85, 0x85, 0x2e, 0x88, 0x6d, 0x5e, 0x41,
+  0xe8, 0xed, 0x1b, 0x50, 0xa7, 0x3f, 0xac, 0x28, 0xc8, 0x87, 0xbe, 0x56,
+  0x65, 0x7b, 0xf3, 0xee, 0xaa, 0x7b, 0x4b, 0x77, 0x15, 0xd5, 0xf2, 0xee,
+  0x83, 0x52, 0xbe, 0x12, 0x83, 0x27, 0x78, 0xd5, 0xd6, 0x7f, 0x14, 0xc0,
+  0xcd, 0xd9, 0xc9, 0x3e, 0x8f, 0x58, 0x99, 0x0f, 0x58, 0x8e, 0x16, 0x4a,
+  0xcb, 0x3b, 0x32, 0x87, 0x79, 0xc2, 0x34, 0x81, 0xf5, 0xff, 0xe0, 0x51,
+  0xec, 0xf4, 0xf9, 0xdf, 0xdd, 0xbf, 0xaf, 0x5b, 0x39, 0x3c, 0x2e, 0x40,
+  0x2a, 0x83, 0xaf, 0xb9, 0x02, 0x59, 0x65, 0x35, 0xf8, 0x3a, 0x4a, 0xee,
+  0xb1, 0xc3, 0x78, 0x65, 0xeb, 0xf9, 0xec, 0xea, 0xc7, 0x9d, 0xc1, 0xce,
+  0xf6, 0xf6, 0xf6, 0xcf, 0xc3, 0x05, 0x2f, 0xdd, 0x25, 0x9a, 0xa7, 0x7f,
+  0x87, 0x8b, 0x7c, 0xcc, 0xce, 0x0c, 0xda, 0xcc, 0x3c, 0xe5, 0xa6, 0xb7,
+  0xa4, 0xbf, 0xad, 0xe0, 0xe6, 0xaf, 0xc7, 0x8b, 0xc1, 0xbc, 0xe8, 0x0a,
+  0x8e, 0xba, 0x58, 0x96, 0xf3, 0x24, 0x28, 0x26, 0xfd, 0xe1, 0xdd, 0xc9,
+  0xeb, 0xc3, 0xe3, 0xfd, 0x3f, 0x5b, 0x74, 0xb5, 0x43, 0xe2, 0xe0, 0x91,
+  0x7c, 0xc8, 0xd2, 0xea, 0xfe, 0x43, 0x95, 0xd5, 0xf4, 0xe5, 0xc6, 0x93,
+  0x4d, 0x8e, 0x3d, 0x6c, 0xef, 0x30, 0xbb, 0x3a, 0xe1, 0xeb, 0x53, 0x64,
+  0x0e, 0x8d, 0x55, 0xf3, 0xb7, 0x77, 0x4b, 0x46, 0xd9, 0x69, 0x86, 0x3c,
+  0xd7, 0xec, 0x13, 0x1a, 0x4d, 0x6f, 0xaa, 0xfc, 0x6f, 0x74, 0xef, 0x30,
+  0xac, 0x69, 0x1c, 0xc9, 0x7e, 0xa1, 0x98, 0x1c, 0x75, 0xc2, 0xbf, 0x25,
+  0x5f, 0x1d, 0x7f, 0xcb, 0x79, 0x04, 0x4e, 0xa7, 0x99, 0x09, 0x08, 0x44,
+  0xf2, 0xc5, 0xb3, 0x9d, 0xdd, 0x4d, 0x57, 0x1f, 0x49, 0xd2, 0x9b, 0xf8,
+  0x70, 0x46, 0x01, 0x15, 0x7f, 0xcb, 0x82, 0x42, 0x35, 0xc2, 0x95, 0xbd,
+  0x97, 0x15, 0x51, 0x4d, 0x76, 0xcd, 0x01, 0x6f, 0x13, 0x51, 0x00, 0x35,
+  0x10, 0x4e, 0x39, 0xf5, 0x28, 0xc2, 0x09, 0xbb, 0xf0, 0x79, 0x66, 0xc3,
+  0xa0, 0xf6, 0x74, 0x42, 0xc3, 0xd1, 0x8c, 0xa5, 0x6e, 0xd9, 0xe4, 0x1f,
+  0x2d, 0xeb, 0x3c, 0xea, 0xad, 0xa3, 0xd5, 0x9e, 0x56, 0x1c, 0x1f, 0xc0,
+  0xf2, 0x47, 0xf2, 0xd2, 0x7e, 0xfb, 0x22, 0x8e, 0xa9, 0x4c, 0xe0, 0x6a,
+  0x6c, 0xe3, 0x75, 0x41, 0x6c, 0x49, 0xf8, 0xf6, 0xe3, 0x60, 0x56, 0x5f,
+  0x36, 0xaf, 0x91, 0x7e, 0x12, 0x07, 0xfe, 0x06, 0x95, 0x44, 0xd7, 0xcf,
+  0xcf, 0x4e, 0xd7, 0xfb, 0xea, 0xc4, 0xa4, 0x3e, 0x06, 0xf4, 0x37, 0x8d,
+  0x18, 0xd0, 0xc9, 0xcf, 0xb6, 0x9f, 0x3d, 0x55, 0xfb, 0x1e, 0x06, 0x8a,
+  0x64, 0xe6, 0xd8, 0x1f, 0x82, 0xef, 0x5c, 0xed, 0x77, 0x80, 0xa9, 0xf8,
+  0xcc, 0x4d, 0xa2, 0xbc, 0xe6, 0x24, 0xc5, 0x62, 0x22, 0x75, 0x59, 0x1f,
+  0x8a, 0x87, 0xd1, 0x3d, 0x03, 0x4f, 0xc1, 0x20, 0x87, 0x51, 0xbc, 0xec,
+  0xd3, 0xd6, 0x42, 0xba, 0x31, 0xbc, 0xb4, 0xdf, 0xba, 0x16, 0xd2, 0x97,
+  0xa9, 0xc7, 0xa4, 0x41, 0x61, 0x06, 0x6a, 0xc6, 0x8b, 0xdc, 0x8d, 0xb2,
+  0xb7, 0xd2, 0x9b, 0x62, 0xd5, 0x2a, 0x82, 0x39, 0x0e, 0xcd, 0x49, 0xac,
+  0xd8, 0x54, 0x7e, 0xf1, 0x84, 0x2d, 0x2b, 0xd4, 0x4a, 0x3d, 0x7c, 0x38,
+  0x1c, 0xb8, 0x3d, 0x3d, 0xb4, 0xf0, 0x92, 0xff, 0xed, 0x9c, 0x16, 0x7f,
+  0xe1, 0x95, 0xce, 0xdf, 0x76, 0x5a, 0x32, 0xaf, 0xd6, 0xaa, 0xbb, 0xc9,
+  0x45, 0xaa, 0x73, 0xfd, 0xf8, 0xde, 0xdd, 0xee, 0x0c, 0xb7, 0x3b, 0x1d,
+  0xbd, 0x6f, 0xb8, 0x22, 0x67, 0x13, 0xc0, 0x8e, 0xa7, 0x63, 0xb8, 0xd7,
+  0xec, 0xab, 0x05, 0x83, 0x70, 0x3a, 0x98, 0xa1, 0xf2, 0xad, 0xc0, 0x58,
+  0xe4, 0x97, 0x1d, 0x74, 0x46, 0xa3, 0xe4, 0xd4, 0xd3, 0xe8, 0x64, 0xd2,
+  0xa0, 0x76, 0x7e, 0xdd, 0xa0, 0x76, 0x7e, 0xd3, 0x41, 0xed, 0xfe, 0xba,
+  0x41, 0xed, 0xfe, 0x56, 0x83, 0x2a, 0x07, 0x96, 0x8e, 0xd3, 0x0d, 0xcf,
+  0x7e, 0xa6, 0x81, 0x7b, 0x0c, 0x98, 0x35, 0x63, 0x30, 0x53, 0x66, 0xa7,
+  0x17, 0xca, 0xd1, 0x07, 0x87, 0xfa, 0xae, 0x0f, 0x9e, 0x12, 0x99, 0x21,
+  0x8e, 0x99, 0xf6, 0xd5, 0x51, 0x2c, 0xdc, 0xb4, 0x6a, 0xd6, 0x50, 0x16,
+  0x97, 0xf5, 0x72, 0x6e, 0xdd, 0xf8, 0x98, 0x31, 0x08, 0x75, 0xd1, 0x3c,
+  0xc7, 0x59, 0xae, 0xe0, 0xd1, 0x8f, 0xc5, 0xe6, 0x3f, 0x6f, 0x4e, 0x98,
+  0xc1, 0x98, 0x3a, 0x75, 0x32, 0x2b, 0x58, 0xce, 0xf1, 0x0d, 0xb8, 0xc6,
+  0xf8, 0xc9, 0xc9, 0x72, 0xb6, 0x30, 0x90, 0x14, 0xae, 0x88, 0x22, 0xb1,
+  0xdd, 0x62, 0x59, 0xa4, 0xbb, 0xf9, 0xaa, 0xc0, 0x9f, 0x3c, 0xce, 0x7e,
+  0x64, 0xd8, 0xe1, 0x0a, 0x6f, 0xb8, 0xf3, 0x32, 0x01, 0x16, 0xe6, 0x84,
+  0x8e, 0x7c, 0x2e, 0xa5, 0x1a, 0xa5, 0xc0, 0x75, 0x11, 0xe0, 0x31, 0xaa,
+  0x0c, 0x2b, 0x32, 0xf8, 0xfb, 0x28, 0x9c, 0x80, 0x45, 0x66, 0x8e, 0xcd,
+  0xe1, 0x30, 0x3e, 0xd5, 0x58, 0x38, 0xbd, 0x32, 0x2c, 0x78, 0x6b, 0x45,
+  0xe1, 0x56, 0xd8, 0x01, 0xba, 0x7d, 0x2f, 0xa1, 0x75, 0x1a, 0x31, 0x44,
+  0x83, 0xdb, 0xbe, 0x94, 0xbd, 0x1e, 0x15, 0x55, 0x26, 0xe9, 0x40, 0x58,
+  0x8a, 0xc8, 0x66, 0x54, 0x8d, 0xf3, 0xfc, 0xb7, 0x74, 0x92, 0x49, 0xaf,
+  0xe8, 0xe6, 0xe1, 0x0d, 0xe3, 0x48, 0x68, 0x6c, 0x99, 0xee, 0x59, 0x63,
+  0xd3, 0xdc, 0x9e, 0xf1, 0x96, 0xb9, 0x1d, 0xfb, 0x3f, 0x67, 0xc3, 0xe8,
+  0xff, 0xb9, 0xb8, 0x3b, 0xa7, 0xa0, 0xe6, 0xd3, 0x14, 0xb6, 0x24, 0x5d,
+  0x1a, 0x01, 0xf2, 0x9e, 0x66, 0x29, 0x63, 0x1d, 0x98, 0x09, 0xfb, 0x3a,
+  0xfb, 0x28, 0xca, 0x7f, 0x7c, 0xd9, 0x43, 0xb2, 0xe0, 0x08, 0x3b, 0x39,
+  0x5b, 0xfb, 0xe7, 0x07, 0x47, 0x47, 0x0d, 0x23, 0x22, 0x2f, 0x9b, 0x24,
+  0xf5, 0x20, 0x22, 0x2f, 0xa9, 0x38, 0xbf, 0xc9, 0xab, 0x57, 0x5d, 0x90,
+  0x78, 0x02, 0x0a, 0xcc, 0x05, 0xea, 0xd3, 0x2a, 0xb7, 0xec, 0xec, 0x54,
+  0x02, 0xd6, 0x96, 0x73, 0xb6, 0x0e, 0x70, 0x56, 0xcb, 0xf5, 0x92, 0x64,
+  0xdd, 0xea, 0x1f, 0x4d, 0x90, 0xc3, 0xdf, 0x9a, 0xf4, 0x3a, 0xb2, 0x5e,
+  0x4f, 0x4b, 0x4d, 0xcc, 0x45, 0xf4, 0x3d, 0xf2, 0x17, 0x24, 0x73, 0x95,
+  0x61, 0x99, 0x58, 0x09, 0x14, 0x0a, 0xa4, 0x41, 0xda, 0x78, 0x51, 0xe3,
+  0xd2, 0x49, 0xc8, 0x91, 0x65, 0x04, 0x66, 0xa8, 0xaa, 0xc5, 0xa5, 0x77,
+  0x5a, 0x5c, 0x7a, 0x39, 0xcf, 0x3f, 0xc2, 0x06, 0x4a, 0xc2, 0xc2, 0x4b,
+  0xce, 0x3c, 0x5d, 0x51, 0x4e, 0xf5, 0xc0, 0x6a, 0xfd, 0x39, 0xe4, 0x4c,
+  0x5a, 0x04, 0xd4, 0x53, 0x93, 0x62, 0x65, 0x89, 0xb4, 0xd1, 0x0f, 0x2d,
+  0x01, 0x60, 0xd8, 0x1d, 0xf6, 0xc7, 0x79, 0x56, 0xb3, 0x07, 0xa3, 0xa9,
+  0x70, 0x3c, 0x6d, 0x8a, 0xc0, 0xcb, 0xbe, 0x95, 0xae, 0x85, 0x6c, 0xb3,
+  0xb7, 0x52, 0x76, 0x0b, 0x12, 0x67, 0x83, 0xba, 0xb5, 0x9c, 0x5a, 0x67,
+  0x12, 0x48, 0x58, 0xa6, 0x5a, 0x94, 0x7a, 0x2f, 0xf5, 0x74, 0x05, 0x05,
+  0x0d, 0x93, 0x13, 0x47, 0x31, 0x83, 0x79, 0x1f, 0x91, 0xae, 0x75, 0x39,
+  0xd6, 0xc0, 0x49, 0xfc, 0x3e, 0xb0, 0x3c, 0xec, 0x2e, 0x26, 0x85, 0xc2,
+  0x5a, 0x6c, 0x8d, 0xbe, 0x6f, 0x54, 0x6f, 0x73, 0xa3, 0xeb, 0x1b, 0xe0,
+  0xb4, 0x40, 0xbf, 0x2d, 0x48, 0x57, 0xe1, 0xca, 0x65, 0x90, 0xb5, 0xd3,
+  0x48, 0x6d, 0x93, 0x49, 0x74, 0x43, 0xa7, 0x86, 0xb5, 0x82, 0x25, 0x87,
+  0x51, 0x1f, 0x57, 0xf4, 0xc2, 0xc5, 0x34, 0xaf, 0xb9, 0xbc, 0xa8, 0x2b,
+  0x03, 0xcd, 0x49, 0x00, 0xe3, 0x62, 0x4a, 0xfc, 0x26, 0xf2, 0x3c, 0xe4,
+  0xae, 0xbe, 0x21, 0x1b, 0x81, 0x67, 0x8b, 0x82, 0x34, 0x62, 0x45, 0xa1,
+  0x17, 0x7b, 0x1c, 0xde, 0x33, 0xdd, 0xbb, 0x51, 0xa5, 0x38, 0x06, 0x65,
+  0x6e, 0xa8, 0x95, 0x48, 0x1e, 0xb4, 0xcd, 0x18, 0xa7, 0xb4, 0xa2, 0x88,
+  0x0c, 0xec, 0x4e, 0xa5, 0xd2, 0x5b, 0x3e, 0xf9, 0x96, 0x68, 0x3c, 0x2b,
+  0x0b, 0x3a, 0x0d, 0xdf, 0x3d, 0x33, 0x3c, 0x86, 0xef, 0xf3, 0xf9, 0x84,
+  0x59, 0xcc, 0x28, 0x95, 0xc3, 0x87, 0xbd, 0xf4, 0xb5, 0x5d, 0x3b, 0x79,
+  0xae, 0x30, 0x45, 0x7b, 0x53, 0x69, 0x55, 0xac, 0x77, 0xf3, 0xf6, 0xb6,
+  0xb0, 0x61, 0x87, 0xc6, 0xc8, 0x33, 0x8b, 0x11, 0x2d, 0x1d, 0x64, 0xb0,
+  0x55, 0x6d, 0xf4, 0x68, 0x8b, 0xac, 0x55, 0x15, 0x23, 0x14, 0x56, 0xa1,
+  0x51, 0xba, 0x91, 0x5f, 0xe4, 0x7c, 0x22, 0xac, 0xd4, 0x78, 0xfb, 0x78,
+  0x22, 0x34, 0x5e, 0x8a, 0x42, 0x06, 0x28, 0x91, 0x2d, 0x79, 0x9c, 0x6b,
+  0x80, 0x55, 0xd7, 0x9c, 0x9b, 0xc0, 0x66, 0x2f, 0xd8, 0xff, 0xd6, 0xba,
+  0xe3, 0x9e, 0x0d, 0x57, 0xb9, 0xdf, 0x3a, 0x09, 0x11, 0x54, 0x8a, 0x91,
+  0xa6, 0xc5, 0x3d, 0xac, 0x2c, 0x3f, 0x1d, 0xd4, 0x10, 0x00, 0x07, 0xc7,
+  0xd2, 0xf5, 0x35, 0x32, 0xb5, 0x54, 0xdf, 0x81, 0x59, 0x04, 0x65, 0x5d,
+  0xe3, 0x8b, 0x81, 0x13, 0x50, 0x2a, 0x98, 0x8b, 0x61, 0x45, 0x95, 0x5a,
+  0x93, 0x97, 0xbe, 0xd6, 0x44, 0x4c, 0xd7, 0xcd, 0x92, 0x87, 0xe1, 0x86,
+  0x31, 0x19, 0x4a, 0x56, 0x5f, 0xf2, 0xba, 0xb8, 0x9b, 0x0f, 0x8e, 0x39,
+  0x36, 0x39, 0x39, 0x2e, 0xae, 0x58, 0x6b, 0x7d, 0x07, 0x52, 0x8c, 0x76,
+  0xed, 0xfd, 0xe9, 0xbb, 0x64, 0xe3, 0x3d, 0xcf, 0xe9, 0xd4, 0xf9, 0xcc,
+  0xf8, 0xd1, 0x4d, 0x2d, 0x6b, 0x4d, 0xec, 0x31, 0xa8, 0x7c, 0xd1, 0x4f,
+  0x0e, 0x7f, 0xd8, 0x7f, 0x7b, 0x7a, 0x7c, 0xf8, 0xd3, 0x0a, 0xa5, 0x96,
+  0x3f, 0xfe, 0xd2, 0x86, 0x4e, 0x97, 0xbf, 0x15, 0x15, 0xa2, 0x4b, 0x7b,
+  0x7a, 0xbf, 0x8a, 0x17, 0xc8, 0xf1, 0x31, 0x12, 0x3c, 0x3f, 0x3f, 0x3d,
+  0x1a, 0x28, 0x36, 0x85, 0xf0, 0x01, 0x85, 0x0a, 0x94, 0x03, 0x6c, 0xf9,
+  0x98, 0xdf, 0xc6, 0xf1, 0xd8, 0xee, 0x3c, 0xf4, 0x3d, 0x34, 0x78, 0x5f,
+  0xc0, 0xb4, 0x69, 0x0a, 0xdd, 0x70, 0xec, 0xb5, 0x61, 0x5e, 0x8c, 0x23,
+  0x8b, 0x50, 0x1d, 0x16, 0x9c, 0xab, 0xb2, 0x69, 0xa6, 0x88, 0xbc, 0x2b,
+  0xb8, 0xa8, 0x40, 0xf8, 0x60, 0x17, 0xe1, 0xa7, 0x68, 0x8f, 0xce, 0xfc,
+  0x16, 0x23, 0xc7, 0xf5, 0xd4, 0xa7, 0x2f, 0x14, 0x22, 0xdc, 0xa3, 0x5d,
+  0x38, 0x6e, 0x8f, 0x44, 0x99, 0x65, 0xb2, 0xb7, 0xfe, 0x1b, 0xca, 0x7a,
+  0xef, 0x5d, 0x98, 0xc1, 0x2f, 0xb9, 0x4e, 0x3e, 0xf1, 0x3e, 0xd1, 0xaa,
+  0xb8, 0x0f, 0x5f, 0x27, 0xbf, 0x9c, 0x2c, 0xf4, 0x7e, 0x50, 0xc2, 0x10,
+  0xca, 0x98, 0x10, 0xcb, 0x11, 0xea, 0x6f, 0xbb, 0x93, 0x7c, 0x1a, 0x06,
+  0xdf, 0x20, 0xdd, 0x10, 0xee, 0x62, 0x57, 0x71, 0xa9, 0xeb, 0xe1, 0xde,
+  0x47, 0x7a, 0xf9, 0x27, 0x51, 0x02, 0x08, 0x21, 0xf4, 0x57, 0xe9, 0xbe,
+  0xc7, 0x51, 0x84, 0x9f, 0x4a, 0x07, 0xef, 0x7f, 0x5b, 0x3a, 0x18, 0xf0,
+  0x6c, 0x5f, 0xbe, 0x3f, 0x3b, 0x5e, 0xb9, 0xe5, 0xa9, 0x5a, 0xa1, 0x99,
+  0xb9, 0x5f, 0x66, 0xf5, 0xf8, 0xba, 0x99, 0xa4, 0xc8, 0xa5, 0xaa, 0x8a,
+  0x8a, 0x63, 0x78, 0x99, 0x2b, 0xdf, 0x3b, 0x38, 0x99, 0x28, 0xe5, 0x56,
+  0x05, 0x6f, 0x6d, 0x96, 0x9a, 0x64, 0x48, 0x00, 0x04, 0xb7, 0x07, 0xf0,
+  0xc7, 0x0f, 0x4a, 0xac, 0x0a, 0xd1, 0x29, 0xf8, 0xce, 0x0d, 0x88, 0x5a,
+  0x85, 0x4f, 0x65, 0x36, 0xe9, 0x2a, 0xb3, 0x8a, 0x85, 0xbf, 0x13, 0x0c,
+  0x07, 0xf3, 0x61, 0x04, 0x15, 0xf1, 0xe4, 0xf6, 0x5d, 0xd2, 0xe3, 0xa0,
+  0xe0, 0x63, 0xa1, 0xba, 0x82, 0xe6, 0xa9, 0x34, 0x70, 0x25, 0xba, 0x3c,
+  0x59, 0xea, 0x49, 0x75, 0xc2, 0x71, 0x43, 0x7a, 0x6e, 0xbd, 0xf0, 0x55,
+  0x26, 0x65, 0xa6, 0x4c, 0x58, 0xdd, 0xaa, 0xd3, 0xe9, 0x8d, 0x00, 0x0f,
+  0x90, 0x32, 0x50, 0x2a, 0xa0, 0x82, 0xa1, 0xcd, 0x69, 0x0a, 0x14, 0x31,
+  0x6a, 0x06, 0x2f, 0xee, 0xc4, 0x93, 0x1e, 0x2d, 0xaf, 0xae, 0xbc, 0x7e,
+  0x5c, 0x65, 0x99, 0x94, 0x6a, 0x26, 0xe9, 0xb7, 0x57, 0x25, 0xa2, 0x79,
+  0xd1, 0xca, 0xad, 0x2f, 0xe7, 0x13, 0x05, 0x5e, 0xbe, 0x2e, 0x8a, 0xc9,
+  0xfa, 0x30, 0xd9, 0x87, 0x98, 0x1c, 0x43, 0xc2, 0x94, 0xde, 0xd2, 0xd1,
+  0xfb, 0xa2, 0xa7, 0x49, 0xe3, 0xeb, 0x5a, 0xed, 0x9d, 0x75, 0xb8, 0x75,
+  0xd1, 0xa1, 0x18, 0x54, 0x90, 0x4f, 0x0a, 0x5d, 0x87, 0xbd, 0x97, 0xbd,
+  0xa4, 0x13, 0x95, 0xc0, 0x5e, 0xd3, 0xf7, 0xd4, 0x84, 0x20, 0x10, 0x75,
+  0x63, 0xe7, 0x83, 0xa4, 0x7d, 0xb8, 0xce, 0x49, 0xe0, 0x55, 0x97, 0x14,
+  0x43, 0x3c, 0x48, 0x14, 0x48, 0x5b, 0x18, 0x43, 0xdd, 0x2f, 0x91, 0xee,
+  0x5b, 0x03, 0xfd, 0x83, 0x0d, 0xd4, 0xea, 0x6d, 0x01, 0x54, 0xf2, 0xb2,
+  0x48, 0x3c, 0x86, 0x5c, 0x8c, 0xf1, 0xc7, 0x23, 0x88, 0x9d, 0xd0, 0xf0,
+  0xf9, 0x8a, 0xc1, 0x8e, 0x13, 0xa0, 0xc0, 0x1a, 0xc4, 0x40, 0x0c, 0x0a,
+  0x96, 0xfc, 0x77, 0xad, 0xc9, 0x6e, 0xb2, 0x92, 0xd0, 0x0b, 0x6d, 0x7a,
+  0x1e, 0x43, 0xef, 0x9b, 0xb8, 0xe5, 0xd4, 0x36, 0x5f, 0x6a, 0x07, 0x50,
+  0x4a, 0x25, 0xe7, 0x57, 0x16, 0x00, 0x40, 0xbc, 0xec, 0x28, 0x1b, 0xa4,
+  0x4c, 0xd1, 0xdc, 0xae, 0x41, 0x69, 0xd1, 0x5a, 0x32, 0xdc, 0x25, 0x03,
+  0x86, 0xd5, 0x63, 0x3c, 0x98, 0xcd, 0xa5, 0xc0, 0xba, 0xba, 0x33, 0xfa,
+  0x31, 0x9c, 0xb9, 0x20, 0x61, 0x58, 0x16, 0xba, 0x53, 0x9e, 0x9a, 0xca,
+  0xbf, 0x05, 0x4a, 0xfc, 0x5a, 0xfd, 0xb1, 0xd1, 0x58, 0xa8, 0x3f, 0x76,
+  0xf8, 0x54, 0xc3, 0x0c, 0xca, 0x26, 0x4e, 0x31, 0x92, 0x26, 0x03, 0x5e,
+  0x75, 0xc7, 0x0f, 0x22, 0xd4, 0x83, 0x8f, 0x68, 0xf2, 0x52, 0x64, 0x95,
+  0xd5, 0x09, 0xe1, 0x16, 0x72, 0x10, 0x18, 0x14, 0x12, 0x2c, 0x1d, 0x72,
+  0x1a, 0x0d, 0x1e, 0x9c, 0xcd, 0x5f, 0xd3, 0x8c, 0x1d, 0x68, 0x70, 0x9b,
+  0x44, 0xf6, 0x5d, 0xb6, 0xe8, 0xb1, 0xac, 0x2e, 0x6d, 0xa8, 0x7c, 0x57,
+  0x97, 0xce, 0xe5, 0xc7, 0x5c, 0x49, 0x91, 0x88, 0x12, 0x0d, 0x1a, 0xa1,
+  0x8b, 0xe4, 0x23, 0x67, 0x7b, 0x72, 0x85, 0xb9, 0xae, 0x92, 0x20, 0xe0,
+  0x5e, 0x01, 0xfb, 0xb2, 0xa0, 0x86, 0xaa, 0xd1, 0x53, 0x24, 0xa3, 0x92,
+  0x68, 0x9a, 0x46, 0xa0, 0xfb, 0x35, 0x38, 0xfe, 0xba, 0x8c, 0x68, 0x1d,
+  0x20, 0xd6, 0xe6, 0x84, 0x84, 0xf1, 0x43, 0x51, 0x58, 0xd2, 0x89, 0xc2,
+  0xdc, 0x4a, 0xdb, 0x06, 0x3d, 0xb8, 0xd6, 0x85, 0xfd, 0x2a, 0x63, 0x5c,
+  0xff, 0xd2, 0x0c, 0x29, 0xeb, 0xe6, 0x33, 0x6d, 0xc8, 0x46, 0xae, 0x4d,
+  0x6d, 0xb2, 0xc3, 0xb9, 0x24, 0x5e, 0x61, 0x00, 0x90, 0xf0, 0xae, 0x51,
+  0x93, 0x83, 0xf5, 0x4e, 0x95, 0xcd, 0x2d, 0x40, 0xa2, 0xd5, 0x9b, 0x9a,
+  0x47, 0xcb, 0xba, 0x70, 0xa0, 0xe0, 0xa8, 0xf3, 0x56, 0xe7, 0xf5, 0x32,
+  0xf6, 0xd7, 0x28, 0xda, 0x69, 0x92, 0xc0, 0x19, 0x07, 0x26, 0xce, 0x9b,
+  0xe1, 0x3d, 0x66, 0x38, 0x4b, 0x6c, 0x25, 0xaa, 0x11, 0x0b, 0x2a, 0x96,
+  0x27, 0x86, 0x77, 0x06, 0x98, 0x77, 0x54, 0xc5, 0x99, 0x7a, 0xf4, 0xa3,
+  0x6b, 0xfa, 0x6b, 0xe8, 0xed, 0xdf, 0xff, 0x87, 0x7d, 0x09, 0xfc, 0xd4,
+  0xbf, 0xdb, 0x4a, 0x99, 0x7b, 0xbc, 0xbd, 0xc0, 0xca, 0xdf, 0x92, 0xdf,
+  0x63, 0x55, 0x80, 0xff, 0x2e, 0x4b, 0x23, 0x95, 0x86, 0xa9, 0xc1, 0xdf,
+  0x0f, 0x9d, 0x53, 0x5c, 0x1b, 0x49, 0x93, 0x79, 0x76, 0x07, 0xb6, 0x17,
+  0xf1, 0x30, 0x39, 0xc6, 0x3f, 0xcd, 0xb9, 0x2c, 0xe5, 0x38, 0xa5, 0xe3,
+  0xc8, 0xee, 0x4c, 0x81, 0x36, 0x91, 0x5d, 0xfc, 0xa9, 0x54, 0xb6, 0x59,
+  0xa7, 0x23, 0xc1, 0xaf, 0xd6, 0xcf, 0x63, 0xdb, 0x17, 0x47, 0x9c, 0xec,
+  0x61, 0x37, 0x7e, 0x3f, 0x10, 0x70, 0x5c, 0xa5, 0x75, 0xc5, 0xba, 0xb6,
+  0xcf, 0x64, 0x63, 0xee, 0xf2, 0xf9, 0x93, 0xdd, 0x41, 0x20, 0xe9, 0xf4,
+  0x3b, 0x83, 0xf6, 0xc4, 0x8a, 0x5b, 0x8c, 0xc7, 0x70, 0xba, 0xb1, 0xc5,
+  0x1d, 0x76, 0xe9, 0xdf, 0x2b, 0x0a, 0x92, 0x64, 0xd3, 0x2f, 0x21, 0xdd,
+  0x05, 0x05, 0x2e, 0x57, 0x3a, 0xba, 0x1e, 0x21, 0x1e, 0x0f, 0x52, 0xd6,
+  0x15, 0xd5, 0xc4, 0x87, 0x94, 0x06, 0xfa, 0x01, 0x9e, 0x35, 0x79, 0xf5,
+  0x40, 0x3e, 0x1a, 0x5c, 0xf0, 0x47, 0x16, 0xc0, 0xa6, 0xb9, 0xea, 0xd9,
+  0xc4, 0x87, 0xb6, 0x72, 0x46, 0xfc, 0xe5, 0xc3, 0xf5, 0xf2, 0x44, 0xfb,
+  0xe3, 0x28, 0x59, 0x3a, 0xdc, 0xd1, 0x38, 0xed, 0x28, 0x7d, 0x90, 0x6a,
+  0x6e, 0xf9, 0x6d, 0xf6, 0x70, 0x6b, 0x62, 0xc7, 0x98, 0x92, 0x5c, 0x93,
+  0x1a, 0x26, 0x9b, 0x58, 0x15, 0x02, 0xcf, 0xaf, 0xc4, 0xbc, 0x09, 0xb4,
+  0xca, 0xf0, 0xb1, 0xe6, 0xc4, 0xae, 0x89, 0x9b, 0x2c, 0xa8, 0x2c, 0x4a,
+  0x57, 0x9c, 0x81, 0xb4, 0xd4, 0xc5, 0x14, 0x94, 0x2b, 0xed, 0x3e, 0x32,
+  0xd7, 0x42, 0x2c, 0xc0, 0x01, 0xb7, 0xc0, 0xca, 0x35, 0xe1, 0xb7, 0xc0,
+  0xf7, 0x3b, 0x0d, 0x99, 0x49, 0xe7, 0xde, 0x26, 0x47, 0xc0, 0x07, 0x28,
+  0x24, 0xd4, 0x09, 0xc3, 0x03, 0xa4, 0xf5, 0xc8, 0x60, 0x76, 0x5d, 0x4f,
+  0x0f, 0x37, 0xe7, 0x46, 0x21, 0xd7, 0xf4, 0x20, 0x10, 0xd2, 0x86, 0xed,
+  0x2c, 0xbb, 0x9d, 0x28, 0xe0, 0xf8, 0xb2, 0x5e, 0x7c, 0x00, 0x70, 0xed,
+  0x07, 0x00, 0xce, 0x5d, 0x04, 0x56, 0x08, 0x7c, 0x80, 0xf5, 0x12, 0x68,
+  0x40, 0xd2, 0xd9, 0x73, 0x2d, 0xed, 0x35, 0x2d, 0x44, 0x0c, 0x8b, 0x22,
+  0x29, 0xe3, 0x95, 0x6b, 0xd5, 0xdf, 0x30, 0xa7, 0x51, 0x2b, 0x95, 0xec,
+  0x69, 0x34, 0x30, 0x0e, 0xd0, 0xf8, 0x00, 0x24, 0x1e, 0x47, 0x21, 0x74,
+  0x83, 0x64, 0x25, 0x97, 0x40, 0x68, 0x41, 0xf5, 0x08, 0xae, 0x23, 0xf2,
+  0x8a, 0x97, 0x73, 0x0b, 0x0c, 0x79, 0x78, 0x60, 0xd0, 0x13, 0xac, 0x62,
+  0x2b, 0x93, 0xbe, 0x45, 0x4e, 0x41, 0x7b, 0xa2, 0x81, 0xb2, 0xb4, 0x6e,
+  0x71, 0x05, 0xb4, 0x55, 0x8f, 0xcc, 0x13, 0xc9, 0x28, 0xbb, 0x82, 0x0b,
+  0x3d, 0xcd, 0x53, 0x0f, 0x9d, 0x29, 0x33, 0xc0, 0x31, 0xc1, 0x7c, 0x61,
+  0x32, 0xba, 0x2e, 0xee, 0x1e, 0x3d, 0x5c, 0x12, 0x10, 0xc3, 0x57, 0xf9,
+  0x70, 0xc5, 0xca, 0x88, 0x25, 0x56, 0xcf, 0x8e, 0x5f, 0x1a, 0x59, 0x12,
+  0x95, 0xe9, 0xda, 0x8b, 0xd2, 0x15, 0x3c, 0x97, 0xac, 0x40, 0x41, 0x4a,
+  0x36, 0x1c, 0x5e, 0xaf, 0x14, 0x54, 0x72, 0x07, 0x41, 0xf4, 0x52, 0x2b,
+  0xa3, 0xf4, 0x58, 0x73, 0xe0, 0x2e, 0x11, 0x46, 0x45, 0xbc, 0xe1, 0x88,
+  0x09, 0xfc, 0x90, 0x2f, 0x42, 0x96, 0x70, 0x74, 0x1a, 0x60, 0x9e, 0x39,
+  0x0f, 0x9f, 0x44, 0x0f, 0x32, 0x55, 0x1a, 0x13, 0xe3, 0x53, 0xf4, 0xd8,
+  0x38, 0xc6, 0x88, 0x82, 0x10, 0x34, 0x93, 0x20, 0xc7, 0x7a, 0x60, 0x82,
+  0x87, 0x1a, 0x95, 0x8e, 0x4e, 0x6f, 0x9f, 0x76, 0x98, 0x90, 0x5a, 0xff,
+  0xd1, 0x53, 0xcf, 0x9b, 0x87, 0xeb, 0x45, 0x47, 0x32, 0x92, 0x4c, 0x49,
+  0x20, 0xe5, 0x6c, 0x4a, 0x3a, 0xf8, 0x30, 0x51, 0x24, 0x98, 0x44, 0x73,
+  0x9c, 0x0f, 0x8f, 0x21, 0x98, 0xc4, 0xa3, 0x23, 0xa1, 0x9e, 0x8c, 0x64,
+  0xb8, 0x80, 0xf1, 0x3b, 0xd7, 0x31, 0xdd, 0xb5, 0x89, 0xfb, 0x02, 0xa0,
+  0x29, 0x06, 0x08, 0x8b, 0x81, 0x24, 0xdd, 0x52, 0x62, 0xd2, 0x21, 0x34,
+  0x3e, 0x0a, 0x42, 0xc2, 0x63, 0x30, 0x38, 0x8d, 0xca, 0x8d, 0x01, 0xdb,
+  0x1a, 0x7c, 0xac, 0x84, 0x9b, 0xa1, 0xa6, 0x8a, 0xe2, 0x33, 0x7d, 0xca,
+  0x89, 0x5e, 0x45, 0x68, 0xf1, 0x38, 0xac, 0xb3, 0x0f, 0x42, 0xc6, 0x30,
+  0x9d, 0x1a, 0xd4, 0x97, 0x83, 0x91, 0x49, 0x75, 0x35, 0xcc, 0xf8, 0x39,
+  0x38, 0x16, 0x8b, 0x40, 0x31, 0x7d, 0x64, 0x2d, 0x38, 0x7e, 0xd0, 0x4d,
+  0x47, 0x73, 0x66, 0xec, 0xca, 0x56, 0xe0, 0x12, 0xc6, 0xa0, 0x00, 0xab,
+  0x18, 0x73, 0x02, 0xce, 0xc3, 0xcd, 0x01, 0x80, 0xd1, 0x35, 0xe8, 0x32,
+  0x0a, 0x80, 0x54, 0x23, 0xea, 0x1a, 0xdd, 0x86, 0x0f, 0xa0, 0x86, 0x74,
+  0x32, 0xaa, 0x8e, 0x25, 0x61, 0x06, 0xed, 0x0e, 0xdf, 0x45, 0x18, 0x11,
+  0x4c, 0x67, 0xd0, 0x8e, 0xe0, 0x7f, 0x9f, 0x50, 0x3b, 0x4f, 0x5b, 0x51,
+  0xb6, 0xce, 0xd3, 0x63, 0x73, 0xe8, 0x24, 0x71, 0x9d, 0x83, 0x9d, 0xb6,
+  0x70, 0x0e, 0xff, 0xe4, 0xc3, 0xc6, 0x31, 0x6b, 0x1f, 0x0c, 0xef, 0x57,
+  0x46, 0x22, 0xa0, 0x63, 0x1e, 0xa7, 0x4b, 0x22, 0xcd, 0xe4, 0xe2, 0x62,
+  0x52, 0xb7, 0xa7, 0x3b, 0x22, 0xc4, 0xd0, 0x9a, 0x99, 0x16, 0x1e, 0x6a,
+  0xcd, 0x9c, 0xac, 0xae, 0x29, 0x28, 0xee, 0x8f, 0x90, 0x2b, 0xd7, 0x6e,
+  0xe9, 0xec, 0xd1, 0x4e, 0x82, 0xae, 0xa4, 0x74, 0xf9, 0xc0, 0x0c, 0x02,
+  0x35, 0xe6, 0xe1, 0x1e, 0xc3, 0x73, 0xd6, 0xdd, 0xb5, 0x46, 0xae, 0x26,
+  0x9f, 0xb6, 0x74, 0x2b, 0x83, 0x6d, 0x49, 0x92, 0xcf, 0x26, 0x7e, 0x1f,
+  0xb8, 0xad, 0x94, 0x0d, 0x86, 0x01, 0x18, 0xb3, 0x3c, 0x13, 0x48, 0x99,
+  0x24, 0x2c, 0x56, 0xcb, 0x52, 0x20, 0xe1, 0x1e, 0xbf, 0xa3, 0x4d, 0x97,
+  0x76, 0xed, 0x71, 0x44, 0x21, 0x8f, 0x6e, 0xc1, 0xe8, 0x98, 0x00, 0xeb,
+  0x5a, 0x31, 0x2a, 0x37, 0x45, 0x2c, 0xae, 0x0d, 0xcb, 0x62, 0x76, 0xff,
+  0x41, 0xa3, 0x92, 0xd6, 0x3e, 0x65, 0x4c, 0xd5, 0xf4, 0x03, 0x0d, 0x21,
+  0xbf, 0xbc, 0xa7, 0x6d, 0xaf, 0x48, 0x0e, 0x7f, 0x5c, 0x5a, 0x97, 0xe7,
+  0x8c, 0xe6, 0x18, 0x16, 0x81, 0xc6, 0x5c, 0x36, 0x00, 0x17, 0x12, 0x34,
+  0x99, 0xaf, 0xac, 0x0c, 0xd2, 0x80, 0x60, 0x70, 0x32, 0x9c, 0x53, 0x47,
+  0x86, 0x0c, 0x0c, 0x09, 0x33, 0x17, 0xf7, 0x60, 0x6d, 0x75, 0x64, 0xef,
+  0x24, 0x6d, 0xd3, 0x6b, 0x15, 0x78, 0xe5, 0x86, 0x0f, 0x80, 0xc9, 0xba,
+  0xfe, 0x49, 0x51, 0x49, 0x17, 0x0b, 0x3d, 0xe2, 0x8f, 0xcf, 0x5d, 0xb0,
+  0xbc, 0x24, 0x7d, 0xa9, 0x40, 0x91, 0x2f, 0xa0, 0x63, 0xd6, 0x45, 0x71,
+  0x63, 0x96, 0x06, 0xf1, 0x13, 0xb2, 0xd9, 0xee, 0xe1, 0xe6, 0x04, 0x8d,
+  0x51, 0x1e, 0x67, 0x3c, 0x97, 0xf3, 0xf3, 0x6f, 0x18, 0xa8, 0xd5, 0xf1,
+  0x9b, 0x2d, 0xef, 0xfb, 0x13, 0x59, 0xfa, 0xb1, 0x4b, 0xd0, 0x95, 0x84,
+  0xc5, 0x3a, 0x38, 0x63, 0xcf, 0xa7, 0x2e, 0x43, 0x53, 0xac, 0xfc, 0x8d,
+  0x26, 0x7a, 0x71, 0x70, 0xea, 0x26, 0x28, 0x42, 0x65, 0xa0, 0x24, 0x60,
+  0xec, 0x1b, 0x8f, 0xd1, 0xb9, 0x4a, 0xa4, 0xcd, 0x39, 0x76, 0xce, 0x88,
+  0xd5, 0x21, 0x36, 0x39, 0x2e, 0x17, 0xff, 0x0f, 0x6c, 0x2c, 0xe2, 0x1c,
+  0x58, 0x90, 0x97, 0x5c, 0x62, 0x98, 0x70, 0x1f, 0x1f, 0x32, 0x97, 0x02,
+  0xeb, 0x2e, 0x8d, 0xd7, 0xa5, 0x36, 0xcb, 0xa0, 0xe1, 0xb6, 0xee, 0x18,
+  0xb6, 0xab, 0x9f, 0xf9, 0x8b, 0xc6, 0x2c, 0xa9, 0x41, 0x86, 0x13, 0xc8,
+  0x43, 0x96, 0x7a, 0x86, 0x86, 0x6c, 0x4a, 0x37, 0x38, 0xe9, 0x7f, 0x9f,
+  0xa4, 0x85, 0x8b, 0x41, 0x58, 0x90, 0xbd, 0x19, 0x07, 0xc1, 0xb5, 0xea,
+  0x4b, 0xd5, 0x91, 0x1c, 0xcf, 0x71, 0x87, 0x8f, 0xb2, 0x89, 0x54, 0x93,
+  0xbd, 0x50, 0xd3, 0xd5, 0x9b, 0xa6, 0xc6, 0xa6, 0x66, 0xa2, 0x06, 0xc9,
+  0x78, 0xc9, 0x41, 0x4c, 0x1d, 0x59, 0x79, 0x91, 0x6a, 0x3a, 0x2e, 0xa6,
+  0xe2, 0x93, 0xb9, 0x05, 0xba, 0x72, 0xf7, 0x5e, 0x78, 0xc9, 0xab, 0x9b,
+  0x40, 0xf2, 0x5a, 0xd7, 0x59, 0x01, 0x5a, 0xed, 0xf9, 0x47, 0xd9, 0x14,
+  0xb1, 0xb8, 0x85, 0x5b, 0x1e, 0x21, 0x12, 0x21, 0xd3, 0xbe, 0x3b, 0x1b,
+  0x7d, 0x64, 0x20, 0x7f, 0x1a, 0x29, 0x08, 0x54, 0xac, 0x43, 0xf3, 0x34,
+  0x08, 0x50, 0xad, 0xf5, 0x85, 0x34, 0x36, 0xfe, 0x52, 0x51, 0xc7, 0xef,
+  0xa2, 0x6c, 0xe5, 0xa4, 0xc3, 0x35, 0xc2, 0x6c, 0xa3, 0xb9, 0x08, 0x3e,
+  0xb8, 0xcb, 0x5d, 0x32, 0x49, 0xf6, 0x31, 0x8b, 0x2b, 0xbe, 0x74, 0xb1,
+  0x78, 0x0d, 0x67, 0x42, 0x84, 0x8b, 0xcb, 0x0d, 0x09, 0xd6, 0x2b, 0x04,
+  0x32, 0x7c, 0x54, 0x8a, 0xed, 0x12, 0xec, 0x31, 0x56, 0x8c, 0xfc, 0xd3,
+  0x8f, 0xcf, 0x6f, 0xc3, 0xe2, 0x24, 0xc6, 0x06, 0x55, 0x49, 0xe2, 0xc3,
+  0x33, 0xca, 0x3e, 0x55, 0xa9, 0x02, 0xba, 0x5a, 0xf3, 0x18, 0xb5, 0x19,
+  0x84, 0xee, 0x7c, 0x07, 0x10, 0x6e, 0x87, 0x64, 0xa0, 0x3b, 0xd0, 0x08,
+  0x62, 0x61, 0x1c, 0xed, 0x6c, 0x62, 0x28, 0x53, 0x53, 0x3e, 0x3e, 0x75,
+  0xf6, 0x29, 0x37, 0x0d, 0xdf, 0xff, 0xdd, 0x67, 0x46, 0x65, 0xc5, 0x86,
+  0xfc, 0x16, 0xaf, 0xb3, 0x65, 0xe4, 0x69, 0x64, 0x25, 0x3c, 0x80, 0x9f,
+  0x42, 0x46, 0x6c, 0xc2, 0xc8, 0xb4, 0xc8, 0x1a, 0xe6, 0xe3, 0x70, 0x4a,
+  0xc5, 0xff, 0x61, 0xf1, 0xe9, 0xb3, 0xfc, 0x51, 0x55, 0x2d, 0x57, 0xa0,
+  0x65, 0x70, 0xe7, 0x65, 0xa7, 0xc5, 0x15, 0x69, 0x35, 0x66, 0xc4, 0x94,
+  0x09, 0xb1, 0x4a, 0xe6, 0x4d, 0x4e, 0xec, 0x22, 0xce, 0xa4, 0x8c, 0x8e,
+  0xcf, 0x66, 0x81, 0x76, 0xc1, 0xc2, 0xcb, 0x23, 0x23, 0x50, 0xbb, 0xa4,
+  0xf9, 0xde, 0x7a, 0x40, 0x54, 0x61, 0xcb, 0xa4, 0x79, 0x1d, 0x44, 0x05,
+  0x76, 0x59, 0xa4, 0x7b, 0x0f, 0x37, 0xa7, 0x8e, 0xba, 0xdf, 0xd0, 0x7f,
+  0x1e, 0xc0, 0x35, 0xbc, 0xfc, 0xd1, 0xf2, 0x6c, 0xf7, 0xb6, 0xb6, 0x7e,
+  0xfe, 0xb1, 0x11, 0x50, 0xf1, 0xe5, 0xcf, 0xbf, 0xbc, 0xf2, 0xb8, 0xc0,
+  0x13, 0x75, 0x59, 0xbc, 0xa5, 0x3f, 0x75, 0x42, 0x45, 0x6e, 0x22, 0x0d,
+  0x0b, 0x0b, 0x06, 0xe3, 0x0a, 0xdc, 0x76, 0xc4, 0x35, 0x38, 0x37, 0x7f,
+  0x13, 0x03, 0xff, 0xa3, 0x2f, 0xd2, 0x59, 0x49, 0xc9, 0x7a, 0x87, 0xef,
+  0xd4, 0x0f, 0x20, 0x7d, 0xfa, 0x9d, 0x80, 0x16, 0xdc, 0x25, 0x87, 0x15,
+  0x7a, 0x18, 0x16, 0xf8, 0x8b, 0x44, 0x7f, 0x0a, 0x26, 0x39, 0x16, 0xa0,
+  0x11, 0x17, 0x75, 0xff, 0x10, 0x88, 0xff, 0xbb, 0xc2, 0xa3, 0x5f, 0x04,
+  0x08, 0x22, 0x9a, 0xb6, 0x26, 0x5e, 0x0e, 0x86, 0x3f, 0x65, 0x2d, 0xda,
+  0xa5, 0x2c, 0x45, 0xe0, 0xce, 0x5c, 0x29, 0x0f, 0x8e, 0x1b, 0x57, 0x39,
+  0x5d, 0xf0, 0x62, 0x75, 0x55, 0xb5, 0x79, 0xc5, 0x13, 0xf4, 0x56, 0xca,
+  0x7c, 0xde, 0x15, 0x4b, 0x2a, 0x30, 0x20, 0x5d, 0xd8, 0xb2, 0x41, 0x85,
+  0xf8, 0x15, 0xd8, 0x27, 0x66, 0x55, 0x0a, 0xb7, 0x52, 0x13, 0xcd, 0xa3,
+  0xa8, 0x6f, 0x01, 0x47, 0x11, 0x46, 0xb9, 0x1a, 0x0b, 0x25, 0x72, 0xcb,
+  0x66, 0x1f, 0x73, 0xc1, 0x88, 0x0e, 0xe3, 0x51, 0x02, 0x6f, 0x89, 0x5a,
+  0x96, 0xaa, 0xac, 0xee, 0x8a, 0xe9, 0x53, 0xe8, 0x17, 0x4b, 0xd3, 0x3d,
+  0xd2, 0xf8, 0xb6, 0xde, 0xca, 0x8c, 0x6c, 0x6e, 0x08, 0xdd, 0x45, 0xc1,
+  0x9a, 0x82, 0xbb, 0xe2, 0xb0, 0x50, 0x24, 0x21, 0xfd, 0x23, 0x52, 0xd6,
+  0xd6, 0x91, 0x95, 0x6a, 0x63, 0xee, 0x4a, 0x2d, 0x60, 0x07, 0x9c, 0x0b,
+  0x86, 0x08, 0x64, 0x1d, 0x0d, 0x09, 0xe3, 0x4c, 0x5f, 0xc4, 0xae, 0xce,
+  0xfd, 0x96, 0xde, 0x5b, 0x56, 0x5c, 0xc7, 0x9d, 0x42, 0x22, 0x91, 0x58,
+  0x38, 0x40, 0x5b, 0xc4, 0xec, 0x18, 0x6a, 0x54, 0xd9, 0x3d, 0x37, 0xe0,
+  0x4b, 0x2c, 0xa8, 0xba, 0x49, 0x5f, 0xb3, 0x4b, 0xd7, 0x88, 0xa3, 0xf3,
+  0xf8, 0x10, 0x21, 0x07, 0x43, 0x14, 0x57, 0xbf, 0xd6, 0x09, 0x77, 0x2e,
+  0x29, 0xcf, 0x0b, 0x81, 0x58, 0xcc, 0x12, 0x43, 0x1a, 0x23, 0x18, 0x5e,
+  0xba, 0x65, 0xaa, 0x97, 0x24, 0xf2, 0x4c, 0x83, 0xc0, 0xe2, 0x2c, 0xf1,
+  0x00, 0x36, 0xc2, 0x90, 0x34, 0x61, 0x69, 0xb0, 0x30, 0x1e, 0xd4, 0x9e,
+  0xec, 0xbd, 0x36, 0xb2, 0xc2, 0x79, 0xf6, 0x5e, 0xa3, 0xf9, 0x82, 0x18,
+  0xae, 0x46, 0x84, 0xb9, 0x2f, 0xc0, 0x17, 0xd3, 0x2a, 0xef, 0xc1, 0x5a,
+  0x6c, 0x99, 0x93, 0xea, 0x34, 0x3e, 0xc4, 0x43, 0x67, 0xdd, 0x84, 0x35,
+  0xe1, 0xee, 0x70, 0xf3, 0x05, 0x55, 0x74, 0x3b, 0x8b, 0x72, 0x41, 0x6f,
+  0x45, 0x7d, 0x97, 0x2f, 0x7d, 0x76, 0xec, 0xef, 0x9f, 0x6e, 0x33, 0x73,
+  0xb1, 0x46, 0xd2, 0x30, 0x76, 0xea, 0xf7, 0x4f, 0xd2, 0x07, 0x18, 0x26,
+  0x34, 0xa9, 0x88, 0x5d, 0x4a, 0xb5, 0xa7, 0x74, 0xac, 0xe5, 0x8a, 0xee,
+  0xd2, 0x7b, 0x03, 0xef, 0x96, 0xd7, 0x22, 0xf8, 0xd7, 0xae, 0xc3, 0xd4,
+  0x0f, 0x93, 0x19, 0xea, 0x90, 0x99, 0x28, 0xe7, 0xdd, 0x50, 0x46, 0xb5,
+  0xd9, 0x11, 0xd4, 0x82, 0x11, 0x70, 0x85, 0x61, 0x38, 0x95, 0x78, 0x53,
+  0xfe, 0xb8, 0x3a, 0xc2, 0xf9, 0x1f, 0x77, 0x75, 0xfd, 0x20, 0x71, 0x4d,
+  0xc2, 0x95, 0x57, 0x56, 0x95, 0x97, 0x38, 0xf7, 0x73, 0x97, 0x4d, 0xed,
+  0x8a, 0xc7, 0xd8, 0x9b, 0x9a, 0x1c, 0x17, 0xe6, 0x9f, 0x72, 0x5b, 0xcb,
+  0x39, 0x1b, 0x27, 0x3a, 0xd0, 0xc5, 0x13, 0x4f, 0xb9, 0x38, 0xb1, 0x2e,
+  0x6b, 0xea, 0xa2, 0x71, 0xfb, 0xb5, 0x9a, 0xef, 0x66, 0xe8, 0x98, 0x7a,
+  0x10, 0x5a, 0x0f, 0x43, 0xa6, 0xbc, 0xe0, 0xcb, 0xc6, 0x28, 0x1e, 0x91,
+  0x95, 0xce, 0x70, 0xb9, 0x92, 0xf1, 0x75, 0xf3, 0xf5, 0xe1, 0x05, 0xa7,
+  0x70, 0x9e, 0x21, 0x69, 0xde, 0x0d, 0x10, 0x75, 0xd6, 0xf4, 0x9c, 0xa7,
+  0xae, 0x46, 0x91, 0x4b, 0x18, 0x9e, 0x33, 0x06, 0x0a, 0xc9, 0x59, 0xf3,
+  0xce, 0x30, 0x47, 0xba, 0x5c, 0x0e, 0x68, 0x35, 0x18, 0x8d, 0xc0, 0xc7,
+  0x26, 0x85, 0x16, 0x3f, 0xaf, 0xf2, 0x30, 0x2e, 0x81, 0x08, 0xaf, 0xaf,
+  0x0f, 0x8f, 0x0f, 0x2f, 0x0e, 0xbb, 0x30, 0x5e, 0xca, 0x6c, 0x8a, 0x1b,
+  0xac, 0xce, 0xc6, 0xd7, 0x73, 0xa2, 0xfb, 0x2b, 0xde, 0x12, 0x24, 0x7b,
+  0x7f, 0x9f, 0x8d, 0x5e, 0xef, 0x7f, 0xc7, 0x85, 0x05, 0xf9, 0xdc, 0x9c,
+  0x9e, 0x9d, 0x9c, 0xbe, 0x39, 0x7a, 0xf7, 0xba, 0x9f, 0x1c, 0x9c, 0x9c,
+  0xfe, 0xb9, 0x9f, 0xbc, 0x3d, 0xf9, 0xee, 0xb0, 0x83, 0xf2, 0x38, 0x16,
+  0xad, 0x23, 0x06, 0x4a, 0xcb, 0xec, 0xf0, 0x71, 0x95, 0x80, 0xec, 0x79,
+  0x66, 0x40, 0xf5, 0xe6, 0x47, 0x65, 0xb6, 0x8c, 0x52, 0x3a, 0xea, 0x87,
+  0xa2, 0xa5, 0xa3, 0x33, 0xf0, 0xcd, 0xe1, 0xfe, 0xeb, 0xf6, 0xb0, 0x4f,
+  0x4f, 0xce, 0x2f, 0xd0, 0x19, 0xcf, 0xcf, 0x4d, 0x9a, 0x59, 0x38, 0x31,
+  0x4c, 0x36, 0x79, 0xb3, 0xbe, 0x79, 0x93, 0x05, 0xe0, 0xa9, 0x74, 0x0c,
+  0x60, 0x30, 0x9b, 0xac, 0x2c, 0x4a, 0x8e, 0x68, 0x08, 0x17, 0x77, 0xf7,
+  0xd0, 0x6d, 0xc8, 0x0e, 0x6f, 0x2b, 0xcf, 0xa0, 0xe9, 0x70, 0x70, 0x32,
+  0x00, 0x59, 0xd6, 0x61, 0x55, 0xe5, 0x5a, 0xb5, 0x03, 0x3b, 0xb3, 0xd6,
+  0xe9, 0x47, 0x11, 0x3d, 0xc8, 0xa1, 0x0e, 0x41, 0x5c, 0x92, 0x48, 0x88,
+  0x54, 0xa3, 0xd9, 0x46, 0x19, 0x07, 0xdc, 0x54, 0xa8, 0x2f, 0x15, 0xc4,
+  0x72, 0x77, 0xb3, 0x78, 0x8b, 0x87, 0x44, 0xb4, 0x13, 0x84, 0x35, 0x36,
+  0x47, 0xf2, 0xfa, 0xf9, 0x0e, 0x35, 0xe6, 0x7f, 0xf0, 0x83, 0x2c, 0x6c,
+  0xd2, 0x85, 0x56, 0x01, 0xa1, 0x62, 0x79, 0x49, 0xa4, 0x99, 0x49, 0xe0,
+  0x88, 0x6c, 0x55, 0xe1, 0x43, 0x1a, 0x8f, 0xf8, 0x98, 0x5f, 0xe3, 0x80,
+  0xac, 0x8e, 0xa1, 0xb0, 0x0c, 0x57, 0xe1, 0xed, 0x48, 0x1e, 0xc8, 0xb4,
+  0xba, 0x16, 0x75, 0xdf, 0xae, 0x43, 0xa4, 0x8a, 0xbd, 0x6c, 0x65, 0x77,
+  0xce, 0x84, 0x4e, 0x33, 0x58, 0x07, 0x8c, 0x68, 0x70, 0xcc, 0xa3, 0x71,
+  0x45, 0x94, 0x11, 0x3b, 0x05, 0xa8, 0x0f, 0x62, 0x17, 0x73, 0xa9, 0xb8,
+  0xd7, 0x51, 0xb9, 0x6d, 0x20, 0x0a, 0x47, 0x65, 0x45, 0x3b, 0xb4, 0x30,
+  0x8e, 0xc4, 0xbe, 0x29, 0xfc, 0x50, 0x8b, 0x5f, 0xa4, 0xe3, 0x31, 0xed,
+  0x6f, 0x47, 0xa2, 0x4d, 0xe1, 0x0f, 0xf6, 0x93, 0xed, 0x56, 0x19, 0x9b,
+  0x2a, 0x19, 0x48, 0xd5, 0x68, 0xc9, 0xfc, 0x8a, 0xd3, 0x1c, 0xdf, 0xac,
+  0xe0, 0x85, 0x61, 0x91, 0x40, 0x5d, 0xfb, 0x80, 0x2b, 0x1d, 0x1f, 0xd1,
+  0x09, 0xe0, 0x91, 0x47, 0xc9, 0x0e, 0x08, 0xfb, 0x43, 0xbd, 0xe8, 0x9c,
+  0x0f, 0x05, 0xd6, 0x9b, 0xda, 0x8a, 0x3b, 0x66, 0x6c, 0xed, 0xce, 0x9e,
+  0xf9, 0x8b, 0xc7, 0xba, 0x8e, 0x6c, 0x87, 0x67, 0x87, 0x17, 0x67, 0xad,
+  0x50, 0x88, 0xe7, 0x1d, 0x06, 0xd0, 0x0d, 0xc6, 0xf2, 0xee, 0xec, 0x95,
+  0xbf, 0x58, 0xd5, 0x2b, 0xd8, 0x01, 0xf7, 0xfb, 0x50, 0xc6, 0xf6, 0x93,
+  0x2e, 0x1c, 0xee, 0x0d, 0x41, 0x0d, 0xef, 0xe8, 0x8f, 0xbf, 0x78, 0x60,
+  0x96, 0xdf, 0x1c, 0x1e, 0x9f, 0xc6, 0xb3, 0xfc, 0xee, 0xec, 0xcd, 0x9f,
+  0x87, 0x0f, 0xe4, 0xe2, 0xfe, 0xe3, 0x63, 0xa9, 0x3f, 0xa6, 0x75, 0xdd,
+  0x09, 0xc0, 0x5f, 0xa5, 0x30, 0x75, 0x5a, 0x6d, 0x06, 0x06, 0xfe, 0x90,
+  0x32, 0x8b, 0x75, 0x84, 0xcc, 0xad, 0xc1, 0x04, 0x88, 0x8b, 0xa8, 0x8b,
+  0x48, 0xc8, 0x32, 0x79, 0xd4, 0xea, 0xd5, 0xd3, 0x2d, 0x24, 0x65, 0x1e,
+  0xe8, 0x33, 0x57, 0xb3, 0x12, 0xdf, 0xf1, 0x58, 0xf2, 0x11, 0x97, 0x31,
+  0x1a, 0x06, 0x98, 0x07, 0x1d, 0xa2, 0x3e, 0xcb, 0x6d, 0x8c, 0x5e, 0xc8,
+  0xbd, 0x39, 0x59, 0xef, 0xe3, 0xe4, 0x6a, 0x58, 0x94, 0x39, 0x1b, 0x35,
+  0xb5, 0xb8, 0xa4, 0x34, 0x96, 0xa0, 0x34, 0x33, 0x1f, 0x6b, 0x3e, 0x42,
+  0x5d, 0xcd, 0x59, 0x9c, 0x95, 0x00, 0x2e, 0x24, 0x71, 0xd3, 0x33, 0x98,
+  0x44, 0xf8, 0x3b, 0xd7, 0xaa, 0xe9, 0x17, 0x5d, 0xe1, 0x88, 0xd5, 0x3d,
+  0xed, 0xf3, 0xcc, 0x73, 0x5e, 0xd3, 0xce, 0xdc, 0x6c, 0xfd, 0x44, 0x39,
+  0x0c, 0x8e, 0x38, 0x6b, 0x09, 0x3c, 0x96, 0x58, 0x93, 0xca, 0x49, 0x93,
+  0x6a, 0x6c, 0xd8, 0x3d, 0x22, 0x4f, 0xd9, 0xb7, 0xa4, 0xf5, 0x64, 0xf8,
+  0xdf, 0xce, 0x0a, 0x62, 0xce, 0x3f, 0xc6, 0xb3, 0x61, 0x1f, 0xbc, 0xd6,
+  0x43, 0x91, 0x97, 0xa5, 0xf4, 0xc9, 0xa8, 0xe5, 0x55, 0xd2, 0x80, 0xee,
+  0x08, 0x70, 0x23, 0xe8, 0x50, 0xb0, 0x7c, 0xfa, 0x0d, 0x37, 0x25, 0x97,
+  0xcf, 0x04, 0x0e, 0x89, 0xd8, 0x1b, 0xa9, 0xfb, 0xe0, 0x85, 0x68, 0x4e,
+  0x1e, 0x3c, 0xdd, 0x21, 0x12, 0x06, 0x43, 0x32, 0x42, 0xdd, 0xb1, 0x0a,
+  0x1e, 0x9e, 0xab, 0xff, 0xf9, 0xb1, 0x3a, 0x6e, 0x12, 0x46, 0x5f, 0x25,
+  0x01, 0x68, 0x96, 0x4a, 0xab, 0x4b, 0xd5, 0xaf, 0x71, 0x0f, 0x82, 0x33,
+  0x63, 0x4d, 0xd6, 0x3a, 0x1d, 0xc4, 0xa4, 0x87, 0xd6, 0xe3, 0x06, 0x3c,
+  0x13, 0x02, 0xfe, 0x89, 0x8e, 0x45, 0x8e, 0xa2, 0x5b, 0xa2, 0x9f, 0x48,
+  0xa5, 0x1e, 0x09, 0x21, 0xd3, 0xf7, 0x06, 0x1d, 0x86, 0x34, 0xb6, 0x17,
+  0xae, 0xb8, 0xc4, 0xfe, 0x71, 0xa7, 0xf8, 0xcf, 0x9e, 0x28, 0x64, 0x11,
+  0x5f, 0xe2, 0x8f, 0x5f, 0x44, 0x16, 0x41, 0x99, 0x1c, 0x71, 0x5d, 0x6e,
+  0x10, 0xed, 0x37, 0xe8, 0x63, 0x10, 0xa5, 0x0a, 0x4f, 0x36, 0x25, 0x17,
+  0xd3, 0x6f, 0xb6, 0x5a, 0x06, 0x59, 0xee, 0x68, 0xd2, 0x44, 0xf0, 0x0c,
+  0x70, 0x49, 0x62, 0x15, 0x5e, 0xf6, 0x58, 0xb2, 0xa7, 0x72, 0xae, 0x3e,
+  0xcd, 0x17, 0x32, 0x4e, 0x4f, 0xf6, 0x5b, 0xc2, 0xd5, 0xfd, 0x0d, 0x70,
+  0x75, 0x5c, 0x6c, 0x16, 0x07, 0xe0, 0xe5, 0x84, 0x4d, 0xa7, 0x24, 0x1d,
+  0x73, 0xb0, 0x04, 0x35, 0xfd, 0xc5, 0x7f, 0x76, 0xd7, 0x7a, 0xb5, 0xe2,
+  0xea, 0x5a, 0x31, 0x42, 0xd0, 0x0f, 0xc4, 0xe5, 0xc2, 0x0a, 0x29, 0x57,
+  0xe2, 0x42, 0x19, 0xcd, 0x59, 0x31, 0x51, 0xbc, 0xb6, 0xb4, 0xf6, 0x4b,
+  0x9d, 0x75, 0x22, 0x6b, 0x49, 0xa5, 0x2d, 0x3e, 0x85, 0xc8, 0x07, 0xa3,
+  0x95, 0x2d, 0xe6, 0x2b, 0xdb, 0x0b, 0xdc, 0x03, 0x11, 0x04, 0xad, 0x96,
+  0x24, 0x62, 0x29, 0x29, 0x9a, 0x8f, 0x69, 0x93, 0x2c, 0x0f, 0x89, 0x30,
+  0x4c, 0xb7, 0x11, 0x1e, 0x12, 0x49, 0xaa, 0x8a, 0x6f, 0x25, 0xda, 0x07,
+  0x95, 0x23, 0x59, 0x78, 0x11, 0xf0, 0x4a, 0x0e, 0x07, 0x77, 0x45, 0x5e,
+  0x69, 0x98, 0x95, 0x41, 0x0e, 0x72, 0x54, 0x0b, 0xca, 0x29, 0xa4, 0x2e,
+  0x04, 0x74, 0xad, 0xd3, 0xcd, 0xe1, 0x2a, 0x17, 0x5e, 0x65, 0x06, 0x04,
+  0x29, 0x93, 0xb3, 0x4c, 0x27, 0x0c, 0x6a, 0x63, 0xc6, 0x93, 0xd9, 0x14,
+  0x33, 0x7e, 0xe7, 0x56, 0x38, 0x84, 0xc4, 0x06, 0x8c, 0x12, 0x35, 0xca,
+  0xef, 0x2b, 0x84, 0x12, 0x40, 0x93, 0xb4, 0x76, 0x24, 0x9a, 0x0d, 0x56,
+  0x24, 0xca, 0x4f, 0xa9, 0x9b, 0x05, 0x63, 0x2c, 0xb9, 0x88, 0x9d, 0x07,
+  0x86, 0x37, 0x11, 0xae, 0xa8, 0x19, 0x2f, 0x19, 0x4b, 0x2d, 0xd9, 0x18,
+  0x6c, 0x3a, 0x11, 0x19, 0xf5, 0xf9, 0x84, 0x34, 0x62, 0x9f, 0x7f, 0xea,
+  0x02, 0x75, 0x5d, 0x4a, 0x89, 0x54, 0x79, 0x30, 0x0a, 0x51, 0x9a, 0xe0,
+  0xce, 0xb6, 0xc4, 0xf0, 0x6e, 0xdc, 0x12, 0xf0, 0xc3, 0x91, 0x5c, 0xd6,
+  0x6a, 0x6c, 0x9e, 0xdd, 0x85, 0x8d, 0x79, 0x25, 0xd5, 0x35, 0xf8, 0x1b,
+  0x9e, 0xa9, 0x6b, 0x91, 0xdf, 0xa7, 0x8b, 0xc8, 0x7a, 0x83, 0x08, 0x09,
+  0xfe, 0x66, 0xa8, 0xcc, 0x5b, 0xa4, 0xc8, 0x54, 0x82, 0xf4, 0x51, 0xb1,
+  0x33, 0x04, 0x4d, 0x73, 0x90, 0x8f, 0x9d, 0x38, 0x26, 0xd5, 0x35, 0x5f,
+  0xaa, 0x0e, 0x87, 0xa1, 0x51, 0x64, 0xe4, 0x6d, 0x1f, 0xe5, 0xb9, 0xe6,
+  0x71, 0x70, 0xd6, 0x5b, 0x7c, 0x38, 0x4c, 0x5e, 0x6b, 0xaa, 0x05, 0x32,
+  0x8c, 0x96, 0x57, 0x19, 0x86, 0x85, 0xc8, 0xfb, 0xa0, 0x99, 0xef, 0x34,
+  0x2f, 0xaa, 0x83, 0x50, 0xf4, 0xfd, 0xaa, 0x91, 0xab, 0x21, 0x0e, 0x22,
+  0x41, 0x68, 0x9b, 0x5b, 0x81, 0xb3, 0x11, 0xfe, 0x36, 0x8b, 0x71, 0x8e,
+  0x58, 0xe1, 0x6a, 0xd8, 0xa1, 0xd2, 0x88, 0xcb, 0x09, 0x13, 0xf7, 0xce,
+  0x22, 0xf3, 0xae, 0xd8, 0xfb, 0x2c, 0xab, 0x6a, 0x1a, 0x93, 0x35, 0xdd,
+  0x85, 0xe3, 0x00, 0x3d, 0xf5, 0x49, 0x39, 0x81, 0x47, 0xf5, 0x9e, 0x1f,
+  0x2d, 0xd3, 0x52, 0x54, 0xef, 0xf9, 0x8d, 0x99, 0xdc, 0xc5, 0x90, 0x94,
+  0x8d, 0x97, 0x75, 0x13, 0xa0, 0x32, 0xf4, 0x4d, 0x5b, 0x21, 0x4b, 0x0c,
+  0x6b, 0x03, 0x3e, 0x34, 0xdd, 0x8f, 0xf5, 0x53, 0x33, 0xb7, 0xef, 0xad,
+  0x6f, 0xaa, 0x5f, 0x51, 0x5c, 0xc4, 0xfa, 0x71, 0x17, 0x18, 0x84, 0x8d,
+  0xb9, 0xcc, 0x04, 0xaa, 0xae, 0x2e, 0x4c, 0x3c, 0xea, 0xec, 0x9e, 0x28,
+  0xb2, 0x9c, 0x74, 0xf5, 0xfd, 0x46, 0xaa, 0xc3, 0x07, 0x5d, 0x3b, 0xc3,
+  0xa6, 0x16, 0x8e, 0xaf, 0xa2, 0xc4, 0x93, 0xa8, 0x67, 0x98, 0x1e, 0x86,
+  0xc9, 0xbe, 0x0b, 0xc2, 0xb7, 0x57, 0x6d, 0xfd, 0xa3, 0x88, 0x7c, 0x04,
+  0xb9, 0x79, 0x10, 0x40, 0x96, 0xea, 0xf1, 0x91, 0xcb, 0x83, 0x8c, 0x66,
+  0x71, 0x53, 0x8e, 0x9e, 0xd2, 0x8f, 0x6f, 0xf9, 0x07, 0x33, 0x20, 0x56,
+  0xbc, 0x04, 0x79, 0x5b, 0xc0, 0xbb, 0x62, 0x4e, 0xc3, 0x45, 0xc5, 0xf4,
+  0x87, 0x6e, 0x7a, 0x65, 0x29, 0x37, 0x9c, 0xb2, 0xe4, 0x4b, 0xd7, 0xc0,
+  0x81, 0x6e, 0xed, 0xf4, 0xcd, 0xf2, 0xb8, 0xb6, 0x32, 0x64, 0xeb, 0x5c,
+  0x00, 0xa6, 0xa5, 0xee, 0xd1, 0xb9, 0xe8, 0x8d, 0xb4, 0x08, 0xb1, 0x68,
+  0x42, 0x4b, 0xf5, 0x37, 0x36, 0x64, 0x2f, 0x49, 0x93, 0x21, 0xc2, 0x1e,
+  0xc3, 0x46, 0x3a, 0x73, 0x1c, 0x0f, 0x65, 0xbc, 0x1d, 0xd0, 0x8f, 0x40,
+  0x03, 0xc2, 0xa4, 0x0d, 0x1d, 0x35, 0x96, 0xf8, 0xec, 0xbc, 0xae, 0x9c,
+  0xb2, 0xa4, 0xba, 0xca, 0x8f, 0x56, 0xc2, 0xeb, 0x83, 0x4b, 0xf5, 0x9a,
+  0x93, 0x09, 0x4d, 0x0c, 0x94, 0xa3, 0x80, 0x84, 0xae, 0xd4, 0x6d, 0xf6,
+  0x68, 0x99, 0x5b, 0xcd, 0x6d, 0x3c, 0xac, 0xd6, 0x5d, 0xc9, 0xcf, 0x5d,
+  0x31, 0x4e, 0xa4, 0x3b, 0xa2, 0xb6, 0x18, 0x72, 0xc0, 0x6e, 0x0c, 0x18,
+  0x66, 0x96, 0xcd, 0x18, 0x31, 0xd4, 0x67, 0x30, 0x42, 0x4c, 0x44, 0xda,
+  0x39, 0x3a, 0x5f, 0xe1, 0x28, 0x9c, 0x70, 0x76, 0x3b, 0xdb, 0x4a, 0x24,
+  0x99, 0xe1, 0x5f, 0x22, 0x77, 0x41, 0x75, 0x3f, 0x1f, 0x5f, 0xbf, 0x7e,
+  0x77, 0xbe, 0xb6, 0x3a, 0x04, 0xa3, 0x31, 0x39, 0x3c, 0x5f, 0x16, 0x73,
+  0x26, 0x86, 0x20, 0x32, 0x85, 0xb5, 0xa6, 0xfd, 0xe0, 0xbb, 0xee, 0xe6,
+  0x1a, 0x2f, 0x98, 0x30, 0x80, 0x80, 0x6a, 0xb1, 0xdd, 0x68, 0x50, 0x27,
+  0x2e, 0xd2, 0x41, 0xca, 0x47, 0xa1, 0xbb, 0xe0, 0xb2, 0x3b, 0xd3, 0x9c,
+  0x54, 0x95, 0x4d, 0xac, 0xc9, 0x12, 0xc5, 0x37, 0x19, 0xfd, 0x24, 0xa6,
+  0x6b, 0xd4, 0xa2, 0xb3, 0x1f, 0xbf, 0x64, 0x9b, 0x8f, 0xd3, 0xf2, 0x2a,
+  0xeb, 0x40, 0x65, 0x0d, 0x57, 0xa8, 0x81, 0x13, 0x15, 0x28, 0x00, 0x44,
+  0xab, 0x53, 0x7e, 0x5d, 0xc8, 0xb4, 0xaf, 0xd4, 0x8a, 0x8f, 0xca, 0x55,
+  0x53, 0xa2, 0x45, 0xd9, 0xfd, 0xfa, 0xab, 0xf8, 0x82, 0x7c, 0xfd, 0x6e,
+  0x45, 0x77, 0xfc, 0xcd, 0xc0, 0xe4, 0x21, 0xb5, 0x98, 0x06, 0x80, 0x07,
+  0xf1, 0x5a, 0x28, 0x14, 0x77, 0xf7, 0x00, 0x0c, 0xa7, 0xfb, 0x11, 0x2e,
+  0x41, 0x4f, 0xe8, 0x8f, 0x07, 0x1f, 0x54, 0xd0, 0xbf, 0xee, 0xae, 0x18,
+  0x0d, 0x70, 0xe3, 0x5c, 0x6a, 0xd5, 0x9d, 0x49, 0xf0, 0xd6, 0xa9, 0x9a,
+  0xf1, 0x37, 0x3b, 0xb6, 0x68, 0x25, 0xe4, 0xa0, 0x07, 0x89, 0x48, 0x50,
+  0xce, 0x6c, 0x2d, 0x66, 0x3e, 0xbb, 0xf2, 0x63, 0x6b, 0xd7, 0xa9, 0xc3,
+  0x4e, 0xa8, 0xc5, 0x21, 0x1d, 0xe4, 0x31, 0x1f, 0x7a, 0x4b, 0xc2, 0x18,
+  0xdf, 0x57, 0x8f, 0x9f, 0x0c, 0xb7, 0x15, 0xee, 0x9d, 0x64, 0x63, 0x44,
+  0x97, 0xa0, 0xbb, 0x36, 0xa5, 0xfa, 0xd7, 0x53, 0x40, 0x1f, 0x76, 0x37,
+  0xf7, 0xec, 0xf3, 0x67, 0x4f, 0x37, 0x37, 0xfb, 0x6a, 0x0d, 0xb4, 0x24,
+  0x3b, 0x76, 0x8e, 0x31, 0x2b, 0x10, 0xb3, 0x39, 0x8f, 0xf9, 0x1a, 0x79,
+  0xdb, 0x01, 0xf2, 0x4b, 0x77, 0x73, 0x7c, 0x35, 0xd8, 0xab, 0xbc, 0x2e,
+  0x8c, 0xf9, 0x01, 0x26, 0xe9, 0x70, 0x37, 0x52, 0x63, 0x33, 0x15, 0xdd,
+  0x6d, 0xea, 0x35, 0x5a, 0x79, 0xd0, 0xa0, 0x5b, 0x78, 0xe0, 0x1b, 0xf1,
+  0xd5, 0x81, 0x33, 0xd9, 0xe5, 0xc5, 0x40, 0xe4, 0x6f, 0x8e, 0x8e, 0x0f,
+  0x1d, 0x1f, 0xf9, 0xaf, 0xad, 0x21, 0x0f, 0xb2, 0x1c, 0x47, 0x5c, 0x53,
+  0x04, 0xc9, 0x20, 0x89, 0xbd, 0x9f, 0xa0, 0x24, 0xec, 0xb7, 0x7d, 0xd1,
+  0x66, 0xf1, 0xb1, 0xf7, 0x18, 0x50, 0xc3, 0x87, 0xef, 0xbe, 0x3b, 0x3a,
+  0x3b, 0x79, 0xf7, 0xf6, 0xf0, 0x9d, 0x4b, 0x16, 0xe1, 0xeb, 0xb9, 0xcb,
+  0xab, 0x5a, 0xc5, 0x0e, 0xab, 0x9c, 0xd3, 0x8d, 0x58, 0x20, 0x65, 0x07,
+  0x22, 0xcf, 0x82, 0x76, 0x4b, 0xff, 0x1a, 0x86, 0xcd, 0x05, 0x0f, 0xd9,
+  0xbe, 0x31, 0x91, 0x2c, 0x38, 0xc8, 0x7b, 0xc2, 0xc9, 0x78, 0x43, 0xc9,
+  0x9c, 0x11, 0xe7, 0x58, 0x2e, 0x8e, 0xdd, 0x8f, 0xe3, 0x4c, 0x2b, 0x11,
+  0x54, 0x41, 0xf5, 0x47, 0x4b, 0x1d, 0xf3, 0x09, 0x76, 0x8d, 0x41, 0x78,
+  0x52, 0x7b, 0x2f, 0x25, 0x2b, 0x56, 0x78, 0x88, 0x81, 0xa8, 0x51, 0x07,
+  0xbe, 0xc4, 0x6b, 0xf5, 0xb4, 0x09, 0xd8, 0xad, 0x58, 0x79, 0xc3, 0xca,
+  0x11, 0x1e, 0x0f, 0xd7, 0x82, 0x2c, 0xda, 0xea, 0x7f, 0x30, 0x83, 0x46,
+  0xf8, 0x05, 0x4a, 0x9e, 0x7c, 0xa1, 0xb1, 0x16, 0x31, 0x02, 0x64, 0x15,
+  0x3a, 0x34, 0x85, 0x08, 0x02, 0xfc, 0x0a, 0x38, 0x82, 0xd7, 0xc2, 0xbb,
+  0xfe, 0xc3, 0xe9, 0xd9, 0xc9, 0x0f, 0x7f, 0xfe, 0x07, 0x77, 0x11, 0x1c,
+  0xed, 0x1f, 0xf9, 0xc6, 0xb3, 0xc6, 0x7f, 0xfe, 0x55, 0xbd, 0x3d, 0xd8,
+  0x5d, 0xb3, 0xfd, 0x7e, 0xb3, 0xa4, 0x42, 0x64, 0x6a, 0x81, 0xe3, 0x52,
+  0x40, 0xf0, 0xcd, 0x8d, 0xe9, 0x63, 0xaf, 0x1d, 0x73, 0x90, 0x38, 0xab,
+  0xaa, 0x05, 0x39, 0x1d, 0xab, 0x53, 0x40, 0x50, 0x47, 0x85, 0x48, 0x2f,
+  0x2f, 0x85, 0x75, 0x22, 0xfb, 0x28, 0xc9, 0x81, 0xfb, 0xdf, 0xad, 0xc7,
+  0xfe, 0xf1, 0xf1, 0xaf, 0x5f, 0x04, 0x8b, 0x5d, 0x68, 0x2e, 0x03, 0x0c,
+  0x20, 0x6e, 0x42, 0x03, 0x27, 0xe0, 0x1a, 0xf9, 0x77, 0x00, 0x71, 0xba,
+  0xe1, 0xbc, 0x3b, 0xd1, 0xd1, 0x88, 0x9b, 0x74, 0x50, 0x65, 0xa4, 0x08,
+  0xc0, 0x43, 0xc5, 0x2a, 0x17, 0x5f, 0x8b, 0x3c, 0xb0, 0xa8, 0x0e, 0x75,
+  0xf8, 0xa5, 0xdc, 0x5d, 0xb2, 0x8e, 0x02, 0xcc, 0x84, 0xc4, 0xfd, 0xc2,
+  0x79, 0xf8, 0xa5, 0x70, 0x0d, 0x2a, 0x92, 0x21, 0x84, 0xa4, 0x23, 0x2e,
+  0x83, 0xed, 0xc6, 0x1c, 0xec, 0x55, 0xe6, 0xd5, 0x0d, 0x50, 0x0f, 0xf8,
+  0x50, 0xf6, 0xa5, 0xa2, 0x6b, 0x8d, 0xda, 0xf5, 0xac, 0x31, 0x60, 0x28,
+  0x34, 0x76, 0x19, 0x31, 0xfd, 0x7b, 0x71, 0x72, 0x70, 0x72, 0x4c, 0xbf,
+  0x1c, 0xbe, 0x39, 0xfa, 0xc1, 0x33, 0x34, 0x29, 0x65, 0xa3, 0x9c, 0xd7,
+  0x18, 0x84, 0x2b, 0x6d, 0x13, 0x3b, 0xfc, 0x15, 0x7d, 0xa3, 0x1d, 0x67,
+  0xb4, 0xe6, 0xa3, 0x3c, 0x5c, 0xb8, 0x91, 0xfa, 0xbc, 0x03, 0xb8, 0x8f,
+  0x87, 0xa2, 0x8b, 0xdc, 0x2a, 0x1f, 0x35, 0x76, 0x08, 0x17, 0x71, 0xc8,
+  0xf4, 0x9a, 0x7b, 0x2b, 0x83, 0x82, 0x3c, 0x95, 0x5f, 0xba, 0x98, 0xc4,
+  0xd0, 0xe0, 0x6a, 0x36, 0x16, 0x35, 0xb2, 0xb0, 0x6d, 0xd8, 0x83, 0x65,
+  0xb3, 0xc6, 0xdd, 0x0f, 0x26, 0x69, 0xca, 0x77, 0x10, 0x22, 0xa4, 0x21,
+  0x25, 0x6b, 0x61, 0x18, 0x8b, 0x1f, 0x2c, 0xbc, 0xd5, 0xae, 0xb9, 0xe6,
+  0x9c, 0x74, 0x01, 0x34, 0x61, 0x1c, 0x29, 0x87, 0x08, 0x80, 0xf0, 0x0a,
+  0x90, 0x0b, 0xa6, 0xea, 0x00, 0x2f, 0x80, 0xc1, 0x0f, 0xca, 0xe4, 0x5f,
+  0x97, 0xf9, 0x6d, 0x0a, 0x5c, 0x04, 0x80, 0x2a, 0xc8, 0x4b, 0xad, 0x36,
+  0xd2, 0x5f, 0xd5, 0x48, 0xda, 0x6c, 0xe5, 0xd9, 0xaf, 0x69, 0xe4, 0x59,
+  0xab, 0x8d, 0xeb, 0x5f, 0xd5, 0x88, 0x2b, 0xc9, 0x46, 0xd7, 0xe2, 0x0f,
+  0x47, 0x17, 0xc9, 0xc1, 0xc9, 0x6b, 0x4f, 0xa3, 0x17, 0xee, 0x6a, 0x4f,
+  0x49, 0xae, 0x21, 0x61, 0x1c, 0xf6, 0x35, 0x94, 0xe5, 0x85, 0x87, 0x41,
+  0x6b, 0x16, 0x8b, 0xef, 0x4e, 0x6d, 0x61, 0xd7, 0x59, 0x8e, 0x8f, 0x4a,
+  0x71, 0xed, 0x85, 0x3e, 0xc0, 0x66, 0x89, 0x63, 0x17, 0x01, 0xc5, 0x94,
+  0xcd, 0x95, 0x19, 0xd2, 0xd2, 0x30, 0x58, 0x46, 0x29, 0xfb, 0x9e, 0xe7,
+  0xe2, 0xb0, 0x67, 0x4d, 0xa0, 0x76, 0x55, 0xd8, 0x69, 0x04, 0x6b, 0x4e,
+  0xb6, 0x55, 0x0c, 0x19, 0xc4, 0x6e, 0x89, 0xfa, 0x9f, 0xd7, 0x3a, 0x9a,
+  0x46, 0x06, 0xfa, 0x8e, 0x72, 0xc2, 0x79, 0x83, 0x62, 0xb4, 0x26, 0x07,
+  0x24, 0x2f, 0x96, 0xda, 0xe0, 0xcb, 0xc2, 0x79, 0xe4, 0x7b, 0x71, 0xee,
+  0x74, 0x79, 0x2d, 0x99, 0x1c, 0xb1, 0x28, 0xd7, 0x84, 0xeb, 0x67, 0x57,
+  0x7e, 0xbc, 0xa1, 0x5b, 0x5a, 0xbc, 0xc0, 0x9a, 0xba, 0x9c, 0xff, 0x2d,
+  0xb8, 0xa3, 0x9f, 0xf8, 0x70, 0x9d, 0x59, 0x3a, 0x95, 0x20, 0x2a, 0x89,
+  0x1e, 0x25, 0x7d, 0xa7, 0x4e, 0x3f, 0x22, 0xee, 0x8d, 0x45, 0x22, 0xac,
+  0xe1, 0x38, 0x60, 0x83, 0x4f, 0x95, 0x39, 0x27, 0xa6, 0xda, 0xcb, 0xf9,
+  0x33, 0x97, 0x81, 0x4f, 0xb1, 0xb5, 0x20, 0x5a, 0x0e, 0xf6, 0x51, 0xe8,
+  0x2e, 0x71, 0x51, 0x54, 0x5c, 0x20, 0xb9, 0xdb, 0xc1, 0xee, 0xba, 0x35,
+  0xb8, 0xa7, 0x42, 0x02, 0xed, 0x11, 0x5d, 0x91, 0x8f, 0x73, 0x04, 0x6d,
+  0x69, 0x1d, 0x53, 0x94, 0x0a, 0x4b, 0x64, 0xd1, 0x06, 0x2b, 0xec, 0xb5,
+  0x45, 0x22, 0x96, 0x43, 0x35, 0x20, 0xa9, 0xfc, 0x31, 0x29, 0xb0, 0x92,
+  0x12, 0x8e, 0xc6, 0xe5, 0x61, 0xe9, 0x8b, 0x7b, 0x71, 0x9a, 0xa7, 0xf3,
+  0xa2, 0x03, 0x47, 0xca, 0x6d, 0x8c, 0x2a, 0xc1, 0x5e, 0xe3, 0x7c, 0x26,
+  0x3f, 0x0e, 0x8c, 0x97, 0x5b, 0x79, 0x34, 0x63, 0xe2, 0x30, 0xf8, 0x88,
+  0xe1, 0xd1, 0xb8, 0x96, 0x94, 0x02, 0x1c, 0x4b, 0xca, 0x22, 0xcf, 0x35,
+  0x0e, 0x69, 0xd1, 0x56, 0x02, 0xd5, 0xe3, 0xf9, 0x8a, 0x7e, 0xb8, 0x31,
+  0xd9, 0x37, 0xe9, 0xa4, 0x9d, 0xeb, 0xc2, 0xed, 0xc7, 0xad, 0x7d, 0xd6,
+  0x26, 0x11, 0xcb, 0x3b, 0x61, 0xb4, 0xd4, 0x22, 0xcc, 0x40, 0xfb, 0x5c,
+  0x9f, 0x64, 0x2b, 0xc4, 0x5d, 0xc6, 0x96, 0x23, 0x17, 0x23, 0x5d, 0x66,
+  0x8b, 0xa9, 0x9b, 0xa2, 0x7d, 0x88, 0x84, 0x37, 0x38, 0x23, 0xb1, 0xe2,
+  0x63, 0x1d, 0x6f, 0x1c, 0x80, 0x17, 0x0a, 0x8c, 0x2f, 0x7c, 0x27, 0x29,
+  0x52, 0x94, 0x88, 0x48, 0xe6, 0xb9, 0x23, 0x48, 0x2d, 0xf4, 0x8c, 0x8f,
+  0x38, 0xc9, 0x9e, 0xae, 0x81, 0xc2, 0xfd, 0x6d, 0x6f, 0xc4, 0x81, 0x3c,
+  0x72, 0x53, 0xf8, 0xec, 0x07, 0xac, 0xc3, 0xb2, 0x14, 0xa8, 0x1b, 0x5f,
+  0xae, 0xc4, 0x02, 0x31, 0x64, 0x21, 0x4a, 0x86, 0x13, 0x1d, 0x26, 0x6f,
+  0xe3, 0xd4, 0xe9, 0xe2, 0xb2, 0x56, 0xbc, 0x38, 0xb6, 0xb4, 0x4f, 0xc2,
+  0x3a, 0xf1, 0x7c, 0x25, 0xfb, 0x06, 0x71, 0x02, 0xdc, 0xbd, 0x83, 0x00,
+  0xcc, 0x24, 0xc6, 0x04, 0xf0, 0x25, 0xac, 0xfd, 0x3a, 0xec, 0xec, 0xb4,
+  0x17, 0xfb, 0x74, 0xff, 0xfc, 0xdc, 0x16, 0xfa, 0x20, 0x5c, 0x50, 0x59,
+  0x42, 0x4d, 0x11, 0x02, 0x9c, 0xa6, 0x22, 0xe7, 0xc4, 0xea, 0x8e, 0xb6,
+  0xd1, 0x4a, 0x2d, 0xdc, 0x79, 0xe2, 0xfa, 0x72, 0x5d, 0x7d, 0x27, 0x6d,
+  0xf5, 0x3f, 0xb1, 0xab, 0xee, 0xbe, 0xbe, 0xeb, 0xe8, 0xeb, 0x69, 0x44,
+  0x44, 0xbb, 0xbb, 0x9f, 0x19, 0x0e, 0x8d, 0xc0, 0xf1, 0x4f, 0x13, 0xdf,
+  0x61, 0xd0, 0x23, 0x3d, 0x37, 0x50, 0x2c, 0xd7, 0xac, 0xa3, 0xc0, 0x18,
+  0xfc, 0x68, 0xf3, 0xb0, 0xab, 0x67, 0xae, 0x2b, 0xd2, 0x99, 0x7a, 0x70,
+  0x9a, 0xe9, 0x21, 0x89, 0xce, 0x8e, 0x2b, 0x61, 0x78, 0xc4, 0x6b, 0x40,
+  0x62, 0x58, 0xed, 0x82, 0x80, 0x5a, 0x5d, 0xd9, 0x28, 0x82, 0x7e, 0x3e,
+  0xf3, 0x53, 0xf2, 0xe3, 0x66, 0xc5, 0x46, 0xa1, 0xe9, 0x86, 0xc1, 0x61,
+  0x75, 0x84, 0x62, 0xe9, 0x09, 0x2e, 0x5c, 0xae, 0xcd, 0x67, 0xe4, 0x55,
+  0xdf, 0x8b, 0x1c, 0xbf, 0x53, 0x26, 0x62, 0x2d, 0x0d, 0x34, 0x4c, 0x4e,
+  0xa0, 0x84, 0x35, 0x20, 0x84, 0xa1, 0xca, 0xf2, 0x71, 0x77, 0x45, 0x1f,
+  0xc2, 0xd3, 0xbe, 0xf3, 0xc2, 0xaf, 0x89, 0x0d, 0xc9, 0x9c, 0x96, 0x5b,
+  0x7a, 0x7c, 0xbc, 0x7f, 0xc4, 0x62, 0x12, 0x32, 0x44, 0x88, 0x70, 0xd2,
+  0x19, 0x70, 0x31, 0x23, 0x50, 0x43, 0x3a, 0x52, 0x9b, 0xce, 0xb5, 0x70,
+  0x09, 0x4e, 0x12, 0xdc, 0x41, 0x9e, 0x92, 0xff, 0xba, 0x64, 0x86, 0x84,
+  0x5b, 0x97, 0x11, 0xc7, 0xe4, 0x4f, 0x7b, 0x4f, 0x60, 0x6a, 0xb8, 0x82,
+  0x18, 0x6e, 0x65, 0x9f, 0x97, 0xa5, 0x27, 0xc3, 0xad, 0xbf, 0x4f, 0x92,
+  0x95, 0x72, 0x1d, 0xc2, 0x38, 0x1d, 0x54, 0xc5, 0xd0, 0xa5, 0x36, 0x1b,
+  0x6c, 0x0b, 0xd0, 0x51, 0x94, 0x01, 0x0a, 0xd8, 0x43, 0xe4, 0x31, 0x72,
+  0x9d, 0x2b, 0xd3, 0xd7, 0x41, 0x34, 0x23, 0x13, 0x03, 0xe9, 0x42, 0xcb,
+  0xda, 0xd0, 0x15, 0xb8, 0xbd, 0xdd, 0x01, 0x86, 0x90, 0x8e, 0x8a, 0x5b,
+  0x8b, 0xf0, 0x55, 0xf8, 0x1d, 0xbc, 0x25, 0x4a, 0x33, 0x44, 0x8b, 0x8a,
+  0xc5, 0xd4, 0xc1, 0x25, 0xdb, 0x04, 0x78, 0xc5, 0xcc, 0x23, 0x14, 0xac,
+  0x9b, 0x9c, 0xca, 0xef, 0x01, 0x07, 0x64, 0x8b, 0xd6, 0x3a, 0x8e, 0x82,
+  0x15, 0x64, 0x15, 0x3d, 0xd2, 0xa0, 0x6c, 0x94, 0x46, 0x49, 0x44, 0x23,
+  0x8b, 0x42, 0x99, 0x76, 0x9f, 0xc5, 0x14, 0x71, 0x7e, 0x71, 0x72, 0xa6,
+  0x14, 0x16, 0x73, 0x5d, 0xcd, 0xc5, 0xe4, 0x47, 0x7c, 0x94, 0x73, 0xbf,
+  0x2b, 0x10, 0xd3, 0x0c, 0xf2, 0x92, 0x66, 0x4b, 0xcb, 0x15, 0xf4, 0x2a,
+  0x97, 0x18, 0x22, 0x2b, 0x75, 0x6a, 0xdf, 0xa9, 0x05, 0xde, 0x4a, 0x0b,
+  0x59, 0xad, 0xf6, 0xe0, 0x25, 0x39, 0x68, 0x27, 0x4b, 0x10, 0xbb, 0x18,
+  0x8c, 0x99, 0x8e, 0xd4, 0x74, 0xcc, 0x41, 0xc5, 0x6a, 0x4d, 0x73, 0xae,
+  0xc1, 0x36, 0x2d, 0xca, 0x21, 0x3a, 0x71, 0xc5, 0xa3, 0x2c, 0x8c, 0xc0,
+  0xdd, 0x5d, 0x5e, 0x75, 0x85, 0xdb, 0x9a, 0x1d, 0x4e, 0x12, 0x94, 0xa1,
+  0xb9, 0xb7, 0x29, 0x27, 0xb3, 0xb4, 0x77, 0xdb, 0x62, 0xcb, 0x2c, 0x9a,
+  0x2c, 0x10, 0x15, 0xbd, 0x94, 0xb5, 0xed, 0xd6, 0xf9, 0xf4, 0xe4, 0xec,
+  0xc2, 0x86, 0x86, 0x6e, 0xf1, 0x41, 0xeb, 0xfc, 0x30, 0xf4, 0x9c, 0xc2,
+  0x25, 0x81, 0xb3, 0xc8, 0x26, 0x44, 0x5a, 0xa9, 0x4a, 0x84, 0xb2, 0x29,
+  0x68, 0xc7, 0x1a, 0x62, 0x9d, 0xad, 0xbc, 0xb7, 0xa8, 0x32, 0xa0, 0x65,
+  0x1b, 0xcf, 0x11, 0x33, 0x0a, 0x33, 0xe8, 0x6e, 0x77, 0xaf, 0x97, 0x69,
+  0x9e, 0xec, 0xc4, 0xd4, 0xc1, 0xca, 0xf3, 0xd9, 0xe1, 0xf9, 0x85, 0x8c,
+  0x9d, 0x7f, 0x8b, 0xc6, 0x2e, 0x56, 0x5c, 0xfd, 0xb0, 0x3b, 0x48, 0x05,
+  0xd4, 0xc1, 0x49, 0x52, 0x1c, 0xb2, 0xcf, 0xed, 0x3b, 0xab, 0x72, 0xb0,
+  0x66, 0x4f, 0x82, 0x84, 0x78, 0xb0, 0x4d, 0xa5, 0x15, 0x24, 0x58, 0xe3,
+  0x83, 0x75, 0xed, 0x65, 0x9d, 0x6e, 0x5d, 0x39, 0x12, 0x0c, 0x99, 0xed,
+  0x5b, 0x78, 0xea, 0x5b, 0x58, 0x30, 0x7f, 0xd7, 0x06, 0x8e, 0xcc, 0xbb,
+  0xce, 0x1f, 0xba, 0xa0, 0xe7, 0xab, 0x6c, 0x6e, 0x84, 0x21, 0xcf, 0xf9,
+  0x76, 0x9e, 0x39, 0xef, 0x91, 0xc9, 0x47, 0xc1, 0x50, 0xf8, 0x63, 0xcb,
+  0x43, 0x46, 0x08, 0x5f, 0x8b, 0xec, 0x9e, 0x3c, 0xf7, 0x37, 0x04, 0xab,
+  0x12, 0x3e, 0x4e, 0x44, 0x57, 0x20, 0xb8, 0x91, 0x38, 0xce, 0x26, 0x9f,
+  0x2f, 0x33, 0x18, 0xcd, 0xd2, 0x72, 0xca, 0x98, 0xee, 0x1a, 0xe8, 0x11,
+  0xb9, 0xa5, 0x35, 0xa7, 0xde, 0xf7, 0xa3, 0x37, 0xd1, 0xd1, 0xf1, 0xa1,
+  0xdf, 0x2e, 0x41, 0x83, 0xc7, 0x61, 0xf6, 0x42, 0x1e, 0x1d, 0xdc, 0xb9,
+  0xbb, 0x2e, 0x86, 0xc9, 0x29, 0x97, 0xf2, 0x83, 0xfb, 0xa9, 0xfa, 0x37,
+  0xdf, 0x9a, 0x1c, 0x16, 0x18, 0x63, 0xe8, 0x02, 0x85, 0x51, 0x34, 0x9f,
+  0xd3, 0xee, 0xe2, 0x13, 0xfe, 0x35, 0xa8, 0xc2, 0x16, 0x4d, 0xf9, 0x85,
+  0x7f, 0xb9, 0xa2, 0x79, 0x90, 0xaa, 0xd6, 0x7e, 0xe4, 0xa9, 0xd2, 0x16,
+  0xe9, 0x71, 0x68, 0xc2, 0xb1, 0x67, 0x3e, 0xd3, 0xa5, 0x54, 0x4b, 0x99,
+  0x48, 0x0b, 0x97, 0xf6, 0x4c, 0x83, 0x8d, 0x07, 0x4d, 0xc9, 0xa5, 0xb0,
+  0x2f, 0xeb, 0x84, 0x64, 0x03, 0x3a, 0x39, 0xec, 0x2c, 0xa1, 0xb6, 0xe6,
+  0xcc, 0x71, 0xa7, 0x0e, 0xea, 0x37, 0xcc, 0x1e, 0xc3, 0xc2, 0x2a, 0x04,
+  0x63, 0x8c, 0x24, 0xdc, 0xaa, 0x4b, 0xf8, 0x54, 0xa8, 0xd1, 0x91, 0x8e,
+  0xbb, 0xc7, 0x1a, 0xa3, 0xe3, 0x8e, 0x7d, 0xd2, 0x15, 0xef, 0x36, 0x9b,
+  0x86, 0xe8, 0x96, 0x0f, 0xa5, 0xbb, 0xa7, 0xcf, 0x7c, 0x53, 0x97, 0x28,
+  0x98, 0x60, 0xfc, 0x7d, 0xbf, 0xc1, 0x83, 0x5c, 0xb5, 0x84, 0xdc, 0x3d,
+  0x29, 0xca, 0x82, 0x58, 0xa8, 0x3b, 0x8e, 0x55, 0xd0, 0x87, 0x10, 0xc3,
+  0x45, 0xc1, 0x11, 0x13, 0xf3, 0x7b, 0x8f, 0xb9, 0x32, 0x94, 0x18, 0x44,
+  0xb1, 0x41, 0x48, 0xe9, 0x10, 0x87, 0xc6, 0x22, 0xda, 0xa6, 0x2a, 0xe8,
+  0xb3, 0xf4, 0x63, 0x74, 0xd5, 0xcf, 0x96, 0x33, 0x85, 0x9a, 0x08, 0x7a,
+  0xfa, 0x5c, 0xb5, 0xd9, 0x9b, 0x39, 0x91, 0xa4, 0xd7, 0xff, 0x42, 0x66,
+  0x5a, 0x38, 0x17, 0xb1, 0x4b, 0xd8, 0x94, 0xa0, 0xee, 0xca, 0x15, 0x4a,
+  0xeb, 0xc0, 0x74, 0xe7, 0x0b, 0x59, 0xc5, 0x44, 0x0b, 0x8a, 0x2c, 0x02,
+  0xa8, 0x50, 0x5e, 0x6f, 0x7d, 0x4c, 0xbe, 0x7a, 0xc0, 0x67, 0x5f, 0x66,
+  0x7f, 0x41, 0x81, 0xd2, 0xa1, 0x5c, 0x3a, 0x82, 0xd5, 0x25, 0xb3, 0xe4,
+  0x90, 0x05, 0xcf, 0xf2, 0x9e, 0xbe, 0x50, 0x53, 0x85, 0xaa, 0xc2, 0x56,
+  0x34, 0xb3, 0x6d, 0x69, 0x7e, 0xb6, 0xe3, 0xd3, 0x49, 0xb2, 0xac, 0xec,
+  0x55, 0xc2, 0x1d, 0x02, 0x7c, 0x07, 0x62, 0x70, 0xe7, 0xe7, 0xdf, 0x24,
+  0x6f, 0x5f, 0x3f, 0xe3, 0x0c, 0xe3, 0xab, 0xac, 0xe4, 0x82, 0xb4, 0x5e,
+  0x17, 0x3b, 0xf9, 0x36, 0x68, 0x6c, 0x37, 0x8c, 0x09, 0x10, 0xfd, 0x49,
+  0x19, 0x9a, 0x4a, 0xda, 0xb4, 0x85, 0x8c, 0x54, 0x78, 0x65, 0x2e, 0x14,
+  0x03, 0x17, 0x37, 0x08, 0x4f, 0xc8, 0x2e, 0xed, 0xdc, 0x94, 0x26, 0x13,
+  0x7b, 0xf6, 0xc4, 0x33, 0xb1, 0xf2, 0x7e, 0xc1, 0x05, 0x13, 0xe6, 0x57,
+  0x2c, 0x50, 0x77, 0x9c, 0xa8, 0x67, 0xc2, 0x38, 0x0f, 0xe4, 0xdc, 0xb3,
+  0x30, 0x1b, 0xbf, 0x06, 0xb4, 0x44, 0x78, 0x3b, 0x82, 0xf7, 0x9e, 0x85,
+  0xea, 0x24, 0x09, 0xe4, 0xb8, 0x17, 0xb5, 0x94, 0x01, 0x24, 0x95, 0xe0,
+  0xd9, 0xe7, 0xee, 0x59, 0xb6, 0x1d, 0xe4, 0xf3, 0xa0, 0xa8, 0xcc, 0x8a,
+  0x37, 0x54, 0x08, 0x16, 0xd1, 0xc0, 0x8b, 0x67, 0x22, 0xf7, 0x04, 0x6b,
+  0x1f, 0xbc, 0xf2, 0xa2, 0xa9, 0x2d, 0xa3, 0xe2, 0xa1, 0x23, 0x4c, 0x4c,
+  0x2a, 0x5f, 0x5c, 0x87, 0x87, 0xf3, 0xb9, 0xdc, 0xd4, 0xa7, 0x6d, 0xb8,
+  0x0e, 0xe3, 0x81, 0x59, 0xe8, 0xbb, 0xb3, 0xa3, 0x2e, 0xa4, 0x7f, 0xb0,
+  0x9f, 0xd8, 0x2b, 0x51, 0x8d, 0x79, 0xa6, 0xf5, 0xa0, 0x93, 0x1d, 0x3d,
+  0x33, 0x34, 0xe5, 0xe2, 0x6a, 0x9e, 0xff, 0xcd, 0xf0, 0x46, 0xf9, 0x7e,
+  0xb6, 0x82, 0x40, 0xc1, 0xe3, 0xbb, 0xca, 0x30, 0x6e, 0xd3, 0x69, 0xae,
+  0x4c, 0x91, 0xed, 0xe8, 0xfe, 0x81, 0x27, 0x4a, 0xb5, 0x1f, 0x73, 0x3e,
+  0xa2, 0x12, 0x29, 0xcb, 0xa5, 0xe1, 0xd8, 0x83, 0x93, 0x35, 0xd0, 0x5f,
+  0x9e, 0x3f, 0x55, 0xd9, 0xcb, 0xe4, 0x63, 0xbe, 0x97, 0x78, 0x21, 0xa6,
+  0x40, 0x8a, 0x6f, 0xb3, 0xe9, 0xe7, 0x7a, 0xf5, 0xe9, 0x56, 0xba, 0xa2,
+  0x40, 0xa5, 0xd5, 0xb3, 0xe2, 0x5f, 0xef, 0xf2, 0xb9, 0x66, 0x8b, 0x45,
+  0xaf, 0x3f, 0x5f, 0x61, 0x82, 0xaa, 0xe4, 0xde, 0x3c, 0x04, 0x2d, 0x05,
+  0xcf, 0x7f, 0xe6, 0x4f, 0x42, 0x03, 0x65, 0xdf, 0x32, 0xa0, 0x10, 0xbb,
+  0x67, 0xb5, 0x58, 0xec, 0x2c, 0xb1, 0xea, 0xb2, 0x80, 0x9d, 0x76, 0x3e,
+  0xe9, 0x4a, 0xcd, 0xbc, 0x74, 0xdd, 0x4f, 0x0b, 0xe6, 0xa6, 0x41, 0x7f,
+  0x42, 0x52, 0x6f, 0x50, 0x60, 0xd3, 0x2b, 0x08, 0xf3, 0x46, 0x1d, 0x3c,
+  0xff, 0xf4, 0x0b, 0xa5, 0x0d, 0xbb, 0x2f, 0x4d, 0x4c, 0x5d, 0xf9, 0xc6,
+  0x67, 0xdb, 0xa1, 0xd0, 0x3a, 0x61, 0x4b, 0xbd, 0xe0, 0x6e, 0xae, 0x7c,
+  0x41, 0x28, 0xe3, 0x88, 0xae, 0x91, 0x2b, 0x22, 0x6a, 0x3c, 0xe3, 0xd1,
+  0x9f, 0xfd, 0x63, 0xbb, 0x0d, 0xa6, 0x7b, 0x11, 0x8a, 0x50, 0xc9, 0xd1,
+  0xeb, 0xe0, 0xc1, 0x27, 0x7e, 0x82, 0xe9, 0x94, 0xa5, 0x81, 0x7b, 0xb1,
+  0x44, 0x54, 0x5a, 0x8a, 0x30, 0x78, 0xf4, 0xa9, 0x26, 0xfc, 0x48, 0xb4,
+  0x0b, 0x96, 0x3f, 0x7a, 0x46, 0xc8, 0xe1, 0x00, 0x39, 0x7a, 0x35, 0x60,
+  0x2a, 0xe6, 0xe6, 0x2d, 0x68, 0xef, 0xfd, 0x67, 0xcf, 0x1f, 0x78, 0x56,
+  0x2f, 0xcd, 0xca, 0x5d, 0xf5, 0xc1, 0x7b, 0x9f, 0xc5, 0xc7, 0xdc, 0xd4,
+  0x02, 0x43, 0xd3, 0xa1, 0xa3, 0xc6, 0x27, 0x2d, 0xd9, 0x60, 0x14, 0xc6,
+  0x7f, 0x33, 0xd3, 0x4f, 0xc9, 0xb9, 0x8a, 0xd5, 0xbf, 0x85, 0xe3, 0xfd,
+  0x3c, 0x84, 0xe4, 0x11, 0xa3, 0x8f, 0x2b, 0x87, 0x1d, 0x16, 0xc9, 0xf4,
+  0x11, 0xe5, 0x58, 0x9d, 0xa0, 0x05, 0xd9, 0x73, 0x92, 0x23, 0x96, 0x73,
+  0xcf, 0x39, 0x44, 0x19, 0x54, 0x24, 0x53, 0x8b, 0xed, 0xd6, 0xd1, 0x7d,
+  0x43, 0x9b, 0x0a, 0xea, 0x08, 0x8c, 0x67, 0xdb, 0xad, 0x63, 0x50, 0x5d,
+  0x2f, 0x45, 0xf5, 0x76, 0x33, 0xf2, 0x08, 0x5a, 0xc1, 0x6b, 0xbb, 0x9e,
+  0x7b, 0x61, 0x6c, 0x90, 0x1a, 0x0f, 0x68, 0xb4, 0xa2, 0x9b, 0x27, 0x20,
+  0x43, 0x73, 0x7c, 0xdc, 0x95, 0x05, 0xff, 0x6a, 0x98, 0xbe, 0x1b, 0xe9,
+  0x0a, 0xcc, 0x33, 0x05, 0xb8, 0x09, 0xba, 0x51, 0xd1, 0x86, 0x03, 0xe2,
+  0x69, 0x97, 0xae, 0xb3, 0xf1, 0x8d, 0x1d, 0x99, 0x8d, 0xb4, 0x05, 0x8b,
+  0x13, 0xbc, 0xf5, 0xd4, 0x2d, 0x2d, 0xd4, 0x9a, 0xb3, 0xc3, 0xb6, 0x26,
+  0xe0, 0x1f, 0x15, 0xaa, 0x39, 0xbb, 0x38, 0x3f, 0xdd, 0xe3, 0x31, 0x8b,
+  0x0b, 0x86, 0x0e, 0xc4, 0xc1, 0x79, 0xf6, 0x57, 0xcd, 0x89, 0xae, 0xfc,
+  0xd3, 0xcf, 0x57, 0x3c, 0x7d, 0xae, 0x31, 0x52, 0x47, 0x13, 0x66, 0xbf,
+  0xb4, 0x0f, 0xe1, 0x4b, 0x9f, 0x29, 0xc8, 0x84, 0x99, 0x76, 0xc5, 0x72,
+  0xc4, 0x23, 0x73, 0x29, 0x35, 0xfe, 0xe1, 0xcf, 0xbd, 0x5e, 0x73, 0xbd,
+  0x9c, 0xdf, 0x38, 0x79, 0x51, 0x03, 0xd8, 0x6c, 0x83, 0xfd, 0x0b, 0x2f,
+  0xec, 0x68, 0x04, 0x40, 0x67, 0xce, 0xfd, 0xdd, 0x57, 0x4b, 0x85, 0xc5,
+  0xac, 0x8a, 0xef, 0x88, 0xf8, 0xeb, 0x32, 0x58, 0x83, 0x17, 0xdb, 0xee,
+  0xfa, 0x5d, 0x2c, 0x47, 0x24, 0x90, 0x26, 0x37, 0xd9, 0x7d, 0xab, 0x6e,
+  0x3d, 0x3b, 0x02, 0xf2, 0x39, 0x1b, 0x22, 0xfc, 0x23, 0xae, 0x81, 0x1f,
+  0x7e, 0x10, 0x1e, 0xef, 0x22, 0xa8, 0xd4, 0xb5, 0xe0, 0x4a, 0x49, 0x13,
+  0x43, 0x14, 0xb1, 0x80, 0x8f, 0x17, 0xec, 0xf1, 0x65, 0x36, 0xcd, 0x18,
+  0x3b, 0x5d, 0xf4, 0x14, 0x10, 0x76, 0x57, 0x0a, 0x26, 0xc7, 0x18, 0xc3,
+  0xad, 0xc2, 0x99, 0xce, 0x30, 0xe8, 0xcd, 0x39, 0x30, 0x55, 0x8d, 0x55,
+  0xb4, 0xe3, 0xfb, 0xef, 0x2f, 0xbe, 0x39, 0x39, 0x3b, 0x4f, 0xb6, 0x18,
+  0xd4, 0xf2, 0xe2, 0xec, 0xe8, 0xab, 0xf7, 0xa4, 0xff, 0x3b, 0xb7, 0xcc,
+  0xeb, 0x74, 0x9e, 0xd3, 0xcd, 0x71, 0x5e, 0x67, 0x73, 0xda, 0xc7, 0x2b,
+  0x2b, 0x57, 0x2a, 0xc5, 0x4e, 0xe8, 0xae, 0x2c, 0x4a, 0xa9, 0x94, 0x85,
+  0xf4, 0xb8, 0xeb, 0x42, 0x37, 0x43, 0x82, 0x2d, 0x39, 0xad, 0x80, 0xb3,
+  0x35, 0x0a, 0xaf, 0xdb, 0xe6, 0x2d, 0x4c, 0x4e, 0xf3, 0xae, 0x26, 0x17,
+  0xdf, 0xec, 0xbf, 0xfb, 0xf6, 0xdc, 0x0a, 0x03, 0x7c, 0xff, 0xfd, 0xf7,
+  0xa1, 0xd7, 0x7f, 0x6f, 0x6b, 0x0b, 0xe2, 0xe5, 0x75, 0xfa, 0xf1, 0xe3,
+  0xb0, 0xca, 0xd6, 0xd6, 0xde, 0x78, 0x5f, 0x9d, 0x2f, 0x36, 0x5b, 0x2d,
+  0x49, 0xb2, 0xa0, 0xaf, 0xb7, 0x68, 0x7d, 0xb9, 0xb8, 0xed, 0xd6, 0xb2,
+  0xce, 0xa7, 0x74, 0x21, 0x65, 0x15, 0xde, 0xde, 0x5a, 0x5b, 0x3b, 0x3f,
+  0x3c, 0x4c, 0xf6, 0x8f, 0xcf, 0x4f, 0x82, 0x77, 0x37, 0x76, 0x38, 0x72,
+  0xe5, 0x2a, 0xab, 0x37, 0x18, 0x1f, 0xf6, 0x78, 0xff, 0x82, 0x75, 0xde,
+  0xef, 0x0e, 0xcf, 0xce, 0x8f, 0x4e, 0xde, 0xf1, 0xee, 0x70, 0xc0, 0x62,
+  0x3a, 0xbd, 0xe3, 0x78, 0xd5, 0xcb, 0x1c, 0x60, 0x3d, 0x77, 0x56, 0x39,
+  0xb6, 0x8d, 0xbc, 0x4f, 0xf7, 0xd5, 0x1d, 0xa3, 0x66, 0x6b, 0xa0, 0x03,
+  0x07, 0xae, 0xd3, 0x4a, 0x58, 0x24, 0xe2, 0x5a, 0xe2, 0xed, 0x5e, 0x02,
+  0xea, 0x9b, 0x8d, 0x24, 0xbc, 0xba, 0x2f, 0x10, 0x17, 0x48, 0x6f, 0x09,
+  0xe2, 0x26, 0x3b, 0x27, 0x7e, 0x7e, 0xc4, 0xc5, 0x59, 0x92, 0xf7, 0xe7,
+  0xfb, 0x5f, 0x1f, 0xf2, 0xa3, 0x5f, 0x67, 0xb5, 0xdf, 0x0f, 0xa9, 0x70,
+  0xcb, 0x9d, 0xbc, 0xcb, 0xea, 0x6a, 0x9c, 0x2e, 0x38, 0x85, 0x9f, 0xba,
+  0x19, 0xc8, 0x3d, 0x14, 0xb4, 0x2d, 0xba, 0x80, 0x2f, 0x03, 0x3c, 0xd7,
+  0xe7, 0x51, 0xa3, 0x37, 0x6c, 0xf7, 0xec, 0x70, 0xff, 0xf5, 0xdb, 0x43,
+  0x0b, 0xd0, 0x97, 0x82, 0x18, 0xd4, 0xe8, 0x75, 0x31, 0xcb, 0x02, 0x5b,
+  0x38, 0xcb, 0x06, 0xbc, 0xf8, 0xf4, 0x0d, 0x17, 0xc9, 0xed, 0xee, 0xce,
+  0x6f, 0x14, 0x9e, 0x1d, 0x5e, 0xe6, 0x5b, 0xd2, 0xba, 0xf5, 0x97, 0xba,
+  0x25, 0x91, 0x49, 0xa4, 0x26, 0x2e, 0x8b, 0x4d, 0x03, 0xc6, 0x90, 0xcf,
+  0xb7, 0xb7, 0xb7, 0x1f, 0x98, 0x07, 0xf4, 0x09, 0xbd, 0x75, 0x69, 0x2a,
+  0x7b, 0xfc, 0xf8, 0x96, 0x6f, 0xdf, 0x8f, 0x78, 0xaa, 0x78, 0x09, 0x5c,
+  0xc7, 0x6e, 0x2e, 0xe0, 0xbc, 0x79, 0x9d, 0x75, 0x0f, 0x79, 0x5c, 0x14,
+  0x6e, 0x07, 0x1a, 0x8b, 0x43, 0x12, 0x32, 0x24, 0x1e, 0x8d, 0xec, 0xc4,
+  0x1b, 0x32, 0x70, 0xd2, 0x7f, 0x10, 0xcd, 0x56, 0xde, 0xb7, 0x9b, 0xe4,
+  0x6f, 0xa8, 0x4d, 0xfe, 0x31, 0x2c, 0xca, 0xab, 0xad, 0xd9, 0x1e, 0x44,
+  0x1a, 0x7a, 0xe8, 0x0d, 0xa3, 0xa9, 0x24, 0x24, 0x1a, 0xbb, 0xa0, 0xf4,
+  0x8a, 0x17, 0x96, 0xf3, 0x67, 0x3e, 0x61, 0x5c, 0xbf, 0x60, 0x15, 0x24,
+  0x22, 0xea, 0xd2, 0x66, 0x6e, 0xc5, 0x2c, 0x3b, 0x3a, 0xa9, 0x78, 0xc3,
+  0xd8, 0xe2, 0x38, 0x24, 0x06, 0x42, 0xbd, 0x70, 0xb8, 0x1b, 0x48, 0x84,
+  0x7e, 0x2d, 0x89, 0x64, 0x86, 0xf5, 0x47, 0xf0, 0x5d, 0xad, 0xab, 0x2a,
+  0xd8, 0x92, 0xec, 0xc1, 0x5d, 0x70, 0x92, 0x6b, 0x89, 0x92, 0x2c, 0xe8,
+  0x81, 0x13, 0x67, 0x89, 0xf3, 0x5c, 0xe9, 0xc2, 0x21, 0x06, 0x88, 0x1b,
+  0x6e, 0xf7, 0x39, 0x18, 0x80, 0x7e, 0x2a, 0x47, 0x2d, 0x9f, 0xd0, 0x79,
+  0x30, 0x29, 0x59, 0xfd, 0xb9, 0x5e, 0xd3, 0x01, 0xed, 0x9c, 0xd3, 0x28,
+  0xa2, 0xbe, 0x96, 0xbe, 0x34, 0x6c, 0x25, 0xdd, 0x05, 0x75, 0x8d, 0x18,
+  0x89, 0x6e, 0x0b, 0x59, 0x64, 0x9f, 0xdc, 0xc7, 0xc1, 0xa9, 0xfe, 0xc6,
+  0xb1, 0x34, 0xf9, 0x2d, 0x4f, 0x9e, 0x59, 0x3c, 0x5d, 0xd6, 0x7c, 0x07,
+  0x98, 0x8c, 0x8b, 0xd0, 0x1c, 0xa8, 0xab, 0xc8, 0x78, 0x08, 0xf5, 0x8d,
+  0x07, 0x46, 0xb8, 0x47, 0x4b, 0xc3, 0x57, 0xca, 0x7f, 0x6d, 0x0d, 0xab,
+  0xea, 0x7a, 0x2b, 0x9f, 0x7c, 0x28, 0xab, 0x34, 0xf9, 0xa9, 0xc9, 0xef,
+  0xab, 0x71, 0x7b, 0x12, 0xff, 0x85, 0x15, 0xfc, 0x45, 0x2b, 0xb5, 0x7a,
+  0x16, 0xbf, 0xc5, 0x0c, 0x06, 0x03, 0x80, 0x3b, 0x68, 0x4f, 0x1f, 0xe8,
+  0x81, 0x0f, 0x0e, 0xa1, 0xe2, 0x57, 0xcc, 0xae, 0x83, 0x15, 0xd2, 0x24,
+  0x25, 0xd0, 0x9c, 0x78, 0x4b, 0x37, 0xa1, 0xaf, 0xeb, 0xd1, 0xf9, 0x71,
+  0x77, 0x7b, 0x7b, 0x67, 0x6f, 0xe7, 0xf3, 0x17, 0xdb, 0x7b, 0x3b, 0x3b,
+  0x3b, 0xbb, 0x7b, 0x3b, 0x7b, 0x7b, 0xbb, 0xdb, 0x3f, 0x6f, 0xad, 0xaf,
+  0x5a, 0xba, 0xb7, 0x5f, 0xad, 0x68, 0x90, 0x66, 0xbd, 0x2e, 0x51, 0xac,
+  0x3f, 0xb9, 0xd9, 0x63, 0x56, 0x93, 0xf5, 0xa4, 0x9a, 0x8d, 0xa8, 0x2b,
+  0x3d, 0x9c, 0xe1, 0x64, 0x2a, 0x92, 0xa4, 0xb3, 0x60, 0x42, 0xaf, 0x4f,
+  0xbe, 0x7f, 0x77, 0x7c, 0xb2, 0xff, 0x3a, 0xb9, 0x38, 0x49, 0xf6, 0x61,
+  0xf7, 0xeb, 0xe0, 0x93, 0x88, 0x44, 0xe7, 0x8c, 0x4b, 0x81, 0xc7, 0xf0,
+  0x3e, 0x02, 0x33, 0x52, 0xb9, 0xd0, 0x27, 0x0c, 0xa2, 0x3d, 0xce, 0x02,
+  0x7a, 0x1d, 0xb7, 0x34, 0xbc, 0xae, 0x67, 0x8f, 0xdf, 0x08, 0x9f, 0xd2,
+  0x73, 0x5f, 0x5c, 0xf1, 0x5e, 0x75, 0xc7, 0x70, 0xec, 0xe4, 0x6b, 0x5a,
+  0x93, 0x3a, 0xb4, 0xd4, 0x8d, 0xed, 0x92, 0x70, 0x36, 0x24, 0x70, 0x0b,
+  0x6f, 0xe0, 0x5c, 0xc2, 0xfb, 0xd5, 0x0e, 0x0e, 0x52, 0xa1, 0xbe, 0x6f,
+  0x71, 0x12, 0x90, 0x91, 0x58, 0x28, 0xdd, 0x8c, 0x26, 0x78, 0xb2, 0x72,
+  0x4a, 0x74, 0x97, 0x67, 0x1f, 0x31, 0xeb, 0x26, 0xef, 0x95, 0x30, 0x67,
+  0x3f, 0x3b, 0x14, 0x6b, 0x30, 0x63, 0x44, 0x5e, 0xda, 0x90, 0x11, 0xe1,
+  0xd5, 0xd1, 0x1d, 0xf7, 0x63, 0x2c, 0xd9, 0x77, 0xc1, 0xdf, 0x84, 0xf7,
+  0xf8, 0x96, 0xb3, 0xef, 0xca, 0x00, 0xde, 0x9f, 0x1f, 0xbd, 0xfb, 0x1a,
+  0x1e, 0xdc, 0xef, 0x4f, 0xce, 0x5e, 0x9f, 0x53, 0xb3, 0x2c, 0xe0, 0xac,
+  0xc1, 0xc4, 0xc7, 0x9c, 0x50, 0x47, 0x25, 0xe7, 0x92, 0xbb, 0xfe, 0xa3,
+  0x90, 0x53, 0x3f, 0x2c, 0xf1, 0x37, 0x0b, 0x15, 0x1e, 0xc6, 0x89, 0xe8,
+  0xbe, 0x35, 0x02, 0x6a, 0xfc, 0x72, 0x96, 0x8e, 0xaf, 0x59, 0x43, 0x17,
+  0x62, 0x45, 0xa8, 0xdd, 0x16, 0xe7, 0xcc, 0x6c, 0xb1, 0xe2, 0xb5, 0x55,
+  0x17, 0x20, 0x47, 0xb4, 0x22, 0xd9, 0x8a, 0x56, 0x94, 0x2e, 0x30, 0xcf,
+  0x10, 0xad, 0x5f, 0x4e, 0xd3, 0x2b, 0x74, 0x18, 0x1f, 0x83, 0xa0, 0x33,
+  0xed, 0xfe, 0x53, 0xbb, 0xe4, 0x6b, 0x03, 0xed, 0x1d, 0x81, 0x00, 0x80,
+  0x22, 0x07, 0xf0, 0x0b, 0xf5, 0x3c, 0x89, 0xd4, 0xc9, 0x7e, 0x7a, 0x84,
+  0xf4, 0x70, 0x85, 0xed, 0x76, 0xdd, 0x29, 0x94, 0x3c, 0x16, 0xdc, 0x1d,
+  0x12, 0xcc, 0x07, 0x01, 0x7e, 0x8f, 0x28, 0xa7, 0xdc, 0x52, 0x60, 0x04,
+  0xaa, 0x7c, 0x58, 0x22, 0x4a, 0x03, 0xc1, 0xe4, 0x21, 0x4b, 0xce, 0x83,
+  0x01, 0xf2, 0x54, 0x65, 0xf1, 0x6e, 0x2a, 0x06, 0xaf, 0x73, 0x25, 0x41,
+  0x0e, 0x58, 0x59, 0x37, 0x30, 0x19, 0x5f, 0x63, 0xc4, 0xe3, 0x01, 0x57,
+  0x35, 0x0d, 0x25, 0xe5, 0x9a, 0x94, 0xa8, 0xb6, 0x6c, 0x10, 0xe3, 0xa4,
+  0x4e, 0x49, 0x56, 0xf3, 0xba, 0x85, 0xbd, 0x48, 0x2b, 0x79, 0x25, 0x79,
+  0x05, 0x0e, 0x24, 0x83, 0x2f, 0x2f, 0xc1, 0xbd, 0x5a, 0xd3, 0x90, 0x02,
+  0x7f, 0x4f, 0x7a, 0xd3, 0x25, 0xdf, 0x71, 0x24, 0xc4, 0x13, 0x03, 0x17,
+  0xca, 0xd1, 0x14, 0xdc, 0xa0, 0xb4, 0x6d, 0x63, 0xd9, 0x2c, 0x0b, 0x47,
+  0x9a, 0x63, 0xce, 0xec, 0xcd, 0xb0, 0x6e, 0x05, 0xd7, 0x10, 0x7a, 0xe4,
+  0x6e, 0x81, 0x8e, 0x7c, 0xfc, 0xd4, 0xc3, 0xd7, 0x04, 0xcb, 0x26, 0xc1,
+  0x76, 0xfe, 0x3d, 0xda, 0x23, 0x6e, 0x2a, 0xaf, 0xab, 0x6c, 0x7a, 0xa9,
+  0x78, 0x43, 0x72, 0x85, 0xf0, 0x2c, 0xd3, 0x16, 0x2a, 0x11, 0xfb, 0x4b,
+  0xe7, 0x0e, 0xfe, 0xa4, 0x50, 0x5e, 0x72, 0x05, 0xb6, 0x2e, 0xcf, 0x81,
+  0x24, 0x1b, 0x3c, 0x44, 0x9c, 0xa2, 0x7f, 0x92, 0x40, 0x2d, 0xd7, 0x5c,
+  0x83, 0x75, 0x34, 0x22, 0x8c, 0xf9, 0xd6, 0xb1, 0xb5, 0xe3, 0xd5, 0xba,
+  0x5f, 0x70, 0x05, 0x01, 0x8e, 0x8a, 0x10, 0xe1, 0x1c, 0x7a, 0x97, 0xa5,
+  0xf1, 0x00, 0x22, 0x25, 0xfb, 0xc8, 0x49, 0x2d, 0x3a, 0x37, 0xaf, 0xe4,
+  0x39, 0xa1, 0x5e, 0xe7, 0xcb, 0xad, 0xe1, 0x73, 0xf0, 0x42, 0x5e, 0x6d,
+  0x46, 0x14, 0x63, 0x45, 0x4d, 0x23, 0x71, 0x1d, 0xa2, 0x05, 0x54, 0x43,
+  0x57, 0xb5, 0x58, 0x61, 0x41, 0x24, 0xdf, 0xec, 0xde, 0xbc, 0x7f, 0x70,
+  0xbe, 0xa6, 0xa2, 0x40, 0x42, 0x08, 0x0e, 0x3a, 0x66, 0x52, 0x42, 0x69,
+  0x95, 0x46, 0xa8, 0x66, 0x63, 0x96, 0xcb, 0x91, 0xdf, 0x58, 0xa6, 0x11,
+  0x04, 0x39, 0x72, 0x93, 0xf0, 0x35, 0xe3, 0xd4, 0xb8, 0x18, 0xdf, 0x65,
+  0x04, 0x11, 0x95, 0x2b, 0xd0, 0x16, 0x31, 0x14, 0x24, 0x30, 0x2e, 0x2b,
+  0x47, 0x39, 0xb4, 0x5a, 0x37, 0x7a, 0x21, 0xae, 0x21, 0xfa, 0x35, 0x66,
+  0x37, 0xca, 0x79, 0x57, 0xf3, 0x9b, 0xc7, 0x59, 0x4d, 0x3c, 0x24, 0xd3,
+  0x17, 0xa7, 0xf7, 0xc2, 0x0d, 0xf2, 0xf9, 0xc3, 0x4c, 0x47, 0x07, 0xf1,
+  0x49, 0x1d, 0x63, 0xae, 0x0a, 0xaa, 0x03, 0xb7, 0x8a, 0x8f, 0x3e, 0x94,
+  0x48, 0x0e, 0x24, 0xc5, 0xb4, 0x92, 0x3b, 0xcc, 0x28, 0xe9, 0xd6, 0x11,
+  0x07, 0x5e, 0x52, 0x3f, 0xf7, 0x92, 0xaf, 0xd2, 0x2a, 0x1f, 0xf7, 0xb5,
+  0x32, 0xa5, 0x56, 0xaa, 0xe4, 0x37, 0x7c, 0xc5, 0xc2, 0x0d, 0x49, 0xeb,
+  0xd9, 0x1c, 0x26, 0xdf, 0x5b, 0xa9, 0x51, 0xd2, 0x21, 0x01, 0x96, 0xcb,
+  0xbe, 0x00, 0x6e, 0xad, 0x81, 0xba, 0xa4, 0xf4, 0xe9, 0x90, 0x8d, 0xe8,
+  0x53, 0x74, 0xe2, 0x4b, 0x09, 0x61, 0x57, 0xd3, 0xea, 0xc6, 0x79, 0xc2,
+  0xb0, 0x57, 0xca, 0x8a, 0x00, 0xce, 0x28, 0xb2, 0xb4, 0x58, 0x06, 0x8a,
+  0xa5, 0x0b, 0x2f, 0xc1, 0xdf, 0xee, 0xf8, 0x5a, 0xa1, 0x60, 0x58, 0x5f,
+  0x2b, 0x8d, 0x4b, 0xb4, 0xe8, 0x11, 0xbe, 0x7e, 0xb9, 0x39, 0xc7, 0xa2,
+  0x06, 0x03, 0x5a, 0x30, 0x5e, 0x1a, 0x65, 0xa0, 0x27, 0x17, 0x87, 0xff,
+  0x92, 0xec, 0xb7, 0x9d, 0xe7, 0x7c, 0x33, 0x35, 0xe0, 0x95, 0xfa, 0x9e,
+  0xc0, 0x30, 0x76, 0x09, 0x45, 0x94, 0x02, 0x5b, 0x29, 0xb6, 0x7f, 0x4d,
+  0x13, 0x9f, 0xbd, 0x89, 0xb8, 0x2a, 0x34, 0xb2, 0xba, 0xbe, 0xb7, 0xaa,
+  0x02, 0xfc, 0x1a, 0x5c, 0x0a, 0x41, 0x61, 0x21, 0xc9, 0x1d, 0xcd, 0x53,
+  0x89, 0x6c, 0x67, 0x30, 0x35, 0xda, 0x94, 0xb9, 0x30, 0x50, 0x04, 0x61,
+  0x4b, 0xac, 0xa0, 0xa0, 0x95, 0xe5, 0x35, 0x54, 0x2d, 0xc9, 0xe0, 0x92,
+  0x02, 0x83, 0x41, 0x55, 0xd9, 0x34, 0xc4, 0xb5, 0xfb, 0xc0, 0x47, 0xee,
+  0x83, 0x5d, 0x2c, 0x7a, 0x05, 0xca, 0x58, 0x2e, 0x45, 0x0f, 0x6a, 0x92,
+  0xac, 0x1d, 0x3b, 0xb9, 0xcd, 0x4e, 0x2d, 0x0c, 0x11, 0x1b, 0x31, 0x06,
+  0x5c, 0xd4, 0xf4, 0x5e, 0xbc, 0xe6, 0xb8, 0x53, 0x8d, 0x6b, 0x86, 0x17,
+  0x13, 0x70, 0xe0, 0x00, 0x3c, 0x85, 0x82, 0xdf, 0x5a, 0xbc, 0x4a, 0x82,
+  0xbe, 0xa9, 0xd5, 0x66, 0xa8, 0x3e, 0x92, 0x77, 0xb0, 0xaa, 0x3c, 0x0a,
+  0x01, 0x5d, 0x0c, 0x53, 0x05, 0xa8, 0x35, 0x74, 0x64, 0xf5, 0x9b, 0x5b,
+  0x04, 0x4d, 0xdc, 0xf0, 0xa8, 0x6e, 0xb1, 0x27, 0x57, 0x16, 0x2a, 0x88,
+  0x51, 0x7d, 0xe3, 0x00, 0xf8, 0xb4, 0x59, 0x2e, 0x6f, 0x39, 0xce, 0x82,
+  0x0c, 0x9d, 0x79, 0xb1, 0x16, 0xdc, 0x7c, 0x42, 0x3f, 0x45, 0x65, 0x3c,
+  0x51, 0xd0, 0xd9, 0xa4, 0xb4, 0xdd, 0x28, 0x93, 0x7a, 0x13, 0x44, 0x25,
+  0xb2, 0x8b, 0x80, 0x30, 0xe5, 0x13, 0x28, 0x94, 0x39, 0x03, 0x71, 0xaf,
+  0x79, 0xea, 0xe6, 0x3b, 0x68, 0xd5, 0x3c, 0x39, 0x55, 0x97, 0xc9, 0xcd,
+  0xec, 0xe5, 0x22, 0x3a, 0xb1, 0x9e, 0x32, 0xd7, 0xc2, 0x9d, 0x30, 0x1e,
+  0xe9, 0xa8, 0x79, 0x77, 0x20, 0xd9, 0xce, 0x9d, 0x9c, 0x65, 0x9b, 0xde,
+  0x40, 0x19, 0x64, 0x9e, 0x32, 0x49, 0x66, 0xf7, 0x9a, 0x9a, 0xa2, 0xb2,
+  0x01, 0x63, 0x3c, 0xc0, 0x2a, 0xf1, 0xf9, 0xe7, 0x91, 0x2c, 0xf8, 0xd1,
+  0x3d, 0xbd, 0x47, 0x5f, 0x07, 0xd6, 0x8f, 0x29, 0x07, 0x9a, 0xb0, 0xb5,
+  0x01, 0x72, 0xa8, 0x33, 0x81, 0x74, 0x68, 0x18, 0x01, 0x66, 0x9a, 0xf4,
+  0xe8, 0xfc, 0x32, 0x11, 0x95, 0xf5, 0x3d, 0xdf, 0x5f, 0x13, 0xf5, 0x5a,
+  0x0b, 0xb3, 0x56, 0x12, 0xb0, 0xb4, 0x42, 0x31, 0x33, 0x36, 0xd9, 0x1e,
+  0x6d, 0x20, 0x35, 0x93, 0xe4, 0x3e, 0xe4, 0x4b, 0x95, 0x95, 0x80, 0xf3,
+  0x42, 0x1b, 0xe6, 0x45, 0xd6, 0xc1, 0x38, 0xea, 0x68, 0xd1, 0x91, 0xab,
+  0x2a, 0xea, 0x79, 0xc4, 0xfb, 0xd5, 0xc3, 0x79, 0xff, 0x6b, 0x86, 0xb3,
+  0x9f, 0x3c, 0x98, 0xa2, 0x21, 0x90, 0x10, 0xe0, 0xf8, 0x95, 0x25, 0xa7,
+  0x15, 0xa0, 0x6a, 0x93, 0x7b, 0x64, 0x8d, 0x50, 0x18, 0xb8, 0x55, 0x7d,
+  0x2f, 0x36, 0x4c, 0xcc, 0x0b, 0x79, 0x1a, 0x4a, 0x0d, 0xb7, 0xdf, 0xb7,
+  0xa1, 0x7c, 0xea, 0x70, 0x05, 0xf7, 0xc6, 0x25, 0xa1, 0xb4, 0xd3, 0x2b,
+  0x34, 0xed, 0x69, 0x67, 0xb8, 0x1d, 0xca, 0x57, 0x2e, 0x19, 0xaa, 0x04,
+  0x00, 0x6d, 0x0d, 0x68, 0x29, 0x2f, 0xa2, 0xf0, 0x4c, 0x90, 0x1d, 0xd8,
+  0x7a, 0x4d, 0x3f, 0xdb, 0x11, 0x08, 0x2f, 0x3a, 0x49, 0x5a, 0xb0, 0x88,
+  0x11, 0x74, 0xb2, 0xd9, 0x02, 0x49, 0x23, 0xc6, 0x01, 0x43, 0x21, 0x00,
+  0xe7, 0xe8, 0xa9, 0x3f, 0x52, 0xcf, 0xdc, 0x76, 0xeb, 0x18, 0x25, 0xa7,
+  0x40, 0x2b, 0xc1, 0x4b, 0x58, 0x3f, 0x84, 0xcf, 0x2c, 0x93, 0x96, 0xea,
+  0x95, 0xc9, 0x6d, 0x07, 0xcd, 0x44, 0x53, 0xa6, 0x67, 0x5c, 0xb6, 0xc9,
+  0xe5, 0xb2, 0x04, 0xe3, 0x55, 0x08, 0x46, 0x45, 0xa3, 0xe1, 0x56, 0x39,
+  0x3e, 0xb7, 0x83, 0xd3, 0x20, 0x7d, 0x3b, 0x43, 0x5d, 0x77, 0x3e, 0xd7,
+  0x62, 0x1d, 0x07, 0x72, 0x86, 0xd6, 0xdc, 0xf3, 0xbe, 0x37, 0x27, 0x9e,
+  0x51, 0xbb, 0xd3, 0x9c, 0x06, 0xd4, 0x03, 0x2c, 0x8b, 0x95, 0xac, 0x56,
+  0x5e, 0xe8, 0xd0, 0x29, 0x0d, 0x96, 0xbd, 0x59, 0x0f, 0x3a, 0x2e, 0xe1,
+  0xd5, 0x66, 0xba, 0x72, 0x0d, 0xf4, 0x93, 0xc1, 0xff, 0xd2, 0x95, 0x61,
+  0xf1, 0x9c, 0x63, 0xc7, 0x50, 0xb7, 0x63, 0x11, 0xe0, 0x99, 0x6a, 0x8a,
+  0x1f, 0x18, 0x3e, 0x07, 0x86, 0xda, 0x3c, 0x5c, 0xde, 0xad, 0xe5, 0x08,
+  0x81, 0xff, 0xbd, 0x09, 0x91, 0x6b, 0x1b, 0x65, 0xba, 0x95, 0x55, 0x48,
+  0x73, 0x6b, 0xae, 0x10, 0x88, 0xc4, 0x0a, 0x46, 0x03, 0x76, 0x17, 0xd9,
+  0x57, 0x5c, 0x28, 0xf1, 0xa0, 0x48, 0xc3, 0x65, 0x35, 0x5d, 0x6e, 0xcd,
+  0x46, 0x2a, 0xc4, 0xef, 0x4c, 0x19, 0x92, 0xdf, 0x3a, 0xa0, 0x17, 0x06,
+  0xef, 0xd5, 0x9c, 0xf1, 0xa5, 0xf4, 0x30, 0x84, 0xd9, 0x5d, 0x7a, 0x38,
+  0x45, 0x81, 0x69, 0x7b, 0x60, 0x4f, 0x5f, 0xe2, 0xa4, 0xd8, 0x75, 0xb5,
+  0xe4, 0x34, 0x57, 0x45, 0x9e, 0xb7, 0xa4, 0x59, 0xae, 0x4e, 0x8c, 0x29,
+  0x0c, 0xc4, 0xa1, 0xc3, 0x87, 0x4c, 0x7e, 0x95, 0x77, 0x55, 0x79, 0xbc,
+  0xe7, 0x26, 0x86, 0x12, 0x75, 0xaf, 0xb6, 0x97, 0xdd, 0x9d, 0x2d, 0x19,
+  0xcc, 0x96, 0x34, 0x20, 0x72, 0x9d, 0x92, 0xa4, 0x0f, 0x02, 0x31, 0x00,
+  0xa2, 0xf0, 0xe6, 0xe2, 0x1c, 0x01, 0x0e, 0xde, 0x99, 0x69, 0xe4, 0x31,
+  0xbc, 0x6b, 0x7c, 0x35, 0xd1, 0x5d, 0x0b, 0x38, 0x23, 0x4d, 0x62, 0xe4,
+  0xf2, 0x09, 0x6e, 0x83, 0xfa, 0x4e, 0xe4, 0x23, 0x52, 0x1a, 0xdc, 0x86,
+  0x5a, 0x53, 0xa6, 0xe8, 0xa2, 0xd3, 0x7b, 0xf8, 0x06, 0x5c, 0xbd, 0x3d,
+  0x0d, 0x95, 0x20, 0x8a, 0x3e, 0xdb, 0x7f, 0xf7, 0xf5, 0x21, 0x24, 0x01,
+  0x07, 0x37, 0x99, 0x33, 0xb5, 0x4f, 0x96, 0x63, 0xa8, 0x42, 0xb4, 0x62,
+  0x88, 0x7d, 0x03, 0x0e, 0xb3, 0x95, 0x47, 0x44, 0xc5, 0x47, 0x10, 0x2f,
+  0xb6, 0x5b, 0x23, 0xda, 0xd6, 0x12, 0xb3, 0xa8, 0x42, 0x82, 0x60, 0x85,
+  0x91, 0x66, 0x08, 0xf3, 0x6b, 0xb5, 0x1c, 0x2d, 0x52, 0x45, 0xa8, 0x49,
+  0x43, 0x08, 0x13, 0xb5, 0xb3, 0x0c, 0x9b, 0x67, 0x71, 0xcd, 0xd2, 0x5b,
+  0x9c, 0x4e, 0x5f, 0x42, 0xa7, 0x1f, 0x86, 0x56, 0x35, 0x81, 0xd8, 0xd8,
+  0xd9, 0xde, 0xf6, 0x05, 0x77, 0x3c, 0x14, 0x4b, 0xc4, 0x2d, 0xcb, 0x64,
+  0x7b, 0xf0, 0xe2, 0xc5, 0x2a, 0x46, 0xe8, 0x1a, 0x05, 0x1e, 0xca, 0xb3,
+  0x4f, 0x6e, 0x73, 0xc0, 0x8f, 0xae, 0x6a, 0xb3, 0x43, 0xa3, 0xa9, 0x72,
+  0x80, 0x11, 0xca, 0x8a, 0x3a, 0xa9, 0x45, 0x2d, 0x3c, 0xe2, 0xac, 0x81,
+  0xf3, 0xcc, 0xd5, 0x87, 0xc7, 0x52, 0xae, 0x79, 0xa4, 0x6c, 0x00, 0x67,
+  0x98, 0x31, 0x68, 0xc1, 0x01, 0x85, 0xb9, 0xf3, 0xe1, 0x7e, 0xd2, 0xc2,
+  0x04, 0x0a, 0xfc, 0x8a, 0x25, 0xba, 0x8c, 0x67, 0x63, 0x22, 0xc1, 0xfb,
+  0x53, 0xb6, 0xff, 0x1d, 0xbd, 0xfb, 0x5a, 0xcc, 0x21, 0xa4, 0xdb, 0xc3,
+  0x96, 0xbe, 0xd5, 0xd2, 0xf4, 0xdf, 0x4b, 0xdd, 0x1c, 0x0e, 0x27, 0x45,
+  0xf0, 0x86, 0x94, 0xbd, 0xcd, 0xe7, 0xc2, 0x0a, 0xfc, 0xee, 0xaf, 0xb0,
+  0x55, 0x5e, 0x24, 0x83, 0x40, 0x38, 0xd1, 0xb2, 0x39, 0x2c, 0x99, 0xcc,
+  0xee, 0x4d, 0x33, 0xd2, 0x1e, 0xd0, 0xba, 0x79, 0x66, 0x5c, 0xb3, 0xa2,
+  0xe7, 0x8a, 0x7a, 0x0e, 0x0a, 0x8a, 0x64, 0x93, 0x8e, 0x2e, 0xa5, 0x1b,
+  0x9c, 0xef, 0x96, 0x24, 0xf2, 0x69, 0x43, 0x69, 0x98, 0x3a, 0x9b, 0x85,
+  0x16, 0x59, 0xb2, 0xea, 0x9b, 0xed, 0xa7, 0x6d, 0x86, 0x94, 0x52, 0xee,
+  0x21, 0x57, 0xe7, 0xdd, 0x46, 0x51, 0xd6, 0xa2, 0xf8, 0xef, 0x8f, 0xf3,
+  0x81, 0x11, 0xf2, 0x41, 0xe5, 0x9b, 0x6a, 0x3e, 0xf1, 0x36, 0x0d, 0x1d,
+  0x71, 0xa7, 0x23, 0xe4, 0x42, 0xde, 0x97, 0xae, 0xd3, 0xee, 0xee, 0xe4,
+  0x7d, 0x5b, 0x9a, 0x8e, 0x03, 0xc0, 0x22, 0xad, 0x96, 0x55, 0x72, 0xa9,
+  0xa7, 0xa6, 0xcb, 0xb0, 0x14, 0x0e, 0xce, 0x91, 0x37, 0xc5, 0x92, 0xb5,
+  0x44, 0xf3, 0xdb, 0x51, 0x74, 0x89, 0x69, 0x08, 0x28, 0xfc, 0xb8, 0xbc,
+  0x6e, 0x72, 0x2d, 0x3b, 0x08, 0xac, 0x69, 0x66, 0x69, 0x2c, 0xd4, 0x28,
+  0xc6, 0x95, 0x87, 0xfd, 0x2e, 0x97, 0x73, 0xe5, 0x7d, 0xac, 0x6f, 0xd1,
+  0xe0, 0xd3, 0xea, 0x1a, 0x85, 0xac, 0x9d, 0x29, 0x2a, 0x16, 0xaf, 0xd0,
+  0xbd, 0x62, 0x58, 0x93, 0x3c, 0x25, 0xc2, 0x14, 0x84, 0xeb, 0xc6, 0x52,
+  0x34, 0x57, 0x60, 0x6d, 0x8d, 0x8d, 0xf0, 0x5b, 0x6c, 0x8a, 0x3f, 0x8f,
+  0x17, 0xd0, 0x6c, 0xe9, 0x0f, 0xda, 0xe3, 0xbd, 0x8f, 0xe1, 0x11, 0xcb,
+  0x7c, 0x60, 0x3d, 0xf9, 0xd4, 0x13, 0x27, 0xf2, 0x7b, 0x87, 0x5f, 0x11,
+  0x87, 0x2e, 0x60, 0x64, 0x9d, 0xa4, 0xde, 0xb4, 0xa6, 0x85, 0xba, 0x00,
+  0x8c, 0x3e, 0xd0, 0xcc, 0x80, 0x02, 0xd1, 0xda, 0x2e, 0x28, 0xec, 0x40,
+  0xe0, 0x15, 0xa4, 0x33, 0x63, 0xef, 0x21, 0x64, 0x89, 0xaf, 0x11, 0x35,
+  0x95, 0x3c, 0x14, 0x96, 0x2d, 0x44, 0xfd, 0x85, 0xab, 0x5b, 0xb2, 0xe7,
+  0xd0, 0x27, 0x66, 0x28, 0x03, 0x14, 0xb0, 0x83, 0x1a, 0x51, 0xed, 0xe7,
+  0x17, 0x6c, 0x46, 0xc0, 0xd5, 0x67, 0xfa, 0xe8, 0x77, 0x87, 0x67, 0x5f,
+  0x9d, 0x9c, 0x1f, 0xd2, 0x7e, 0xbc, 0x3e, 0xfc, 0xea, 0x3d, 0x73, 0x2d,
+  0xa6, 0x0e, 0x31, 0x3d, 0x03, 0x3f, 0x59, 0xec, 0x5f, 0x80, 0x3b, 0xe3,
+  0x70, 0x3d, 0x90, 0xa9, 0xc8, 0x41, 0x7d, 0xa3, 0x42, 0x13, 0xf1, 0x04,
+  0x8b, 0x78, 0x9a, 0x89, 0xad, 0x32, 0x47, 0x12, 0x82, 0x47, 0x4c, 0xe7,
+  0x58, 0x3f, 0xae, 0x72, 0x0f, 0xf5, 0x52, 0x8f, 0x92, 0x60, 0xbb, 0x56,
+  0x7b, 0xde, 0xa8, 0x79, 0x2b, 0x96, 0x69, 0x3d, 0x7c, 0xd4, 0xec, 0xa8,
+  0x80, 0xd2, 0x8e, 0xb2, 0x15, 0x20, 0xde, 0x03, 0x27, 0x47, 0x2b, 0x5c,
+  0xe7, 0xb4, 0x90, 0x5b, 0x13, 0x15, 0xe5, 0xb9, 0x6d, 0xdc, 0xe3, 0x79,
+  0x8d, 0x2b, 0x5c, 0x14, 0x0a, 0xad, 0x6c, 0x5f, 0x09, 0x71, 0x13, 0x7b,
+  0x93, 0xb4, 0xf3, 0xa9, 0x5e, 0x07, 0xe0, 0x7e, 0x55, 0x26, 0x38, 0x71,
+  0x72, 0x6b, 0xab, 0x3f, 0x5c, 0x02, 0x7d, 0xb5, 0x08, 0xcd, 0x86, 0x2a,
+  0xc1, 0x77, 0x98, 0xa7, 0x56, 0x45, 0x95, 0xf2, 0xef, 0x56, 0x1b, 0x11,
+  0x2b, 0x1f, 0x84, 0xe4, 0x28, 0xe9, 0xdc, 0xae, 0x66, 0x3d, 0x17, 0x32,
+  0x53, 0xb6, 0x73, 0x88, 0x20, 0x10, 0x02, 0x57, 0xb7, 0x2a, 0xa3, 0x7b,
+  0x01, 0x45, 0xce, 0x2e, 0xe7, 0x13, 0x04, 0x2a, 0xe4, 0xea, 0x7a, 0xf1,
+  0x4d, 0x64, 0xb1, 0x20, 0x9b, 0x48, 0x98, 0xab, 0x86, 0xe1, 0xf1, 0x96,
+  0xc2, 0x25, 0x20, 0xc4, 0x17, 0x9f, 0x77, 0x69, 0x5d, 0x4a, 0xc5, 0xf3,
+  0x19, 0x0d, 0x1c, 0x27, 0x6b, 0x6b, 0x6b, 0xaf, 0x0f, 0x2f, 0xf6, 0x8f,
+  0x8e, 0x0f, 0x5f, 0x27, 0x47, 0xef, 0xde, 0x9c, 0x9c, 0xbd, 0xdd, 0xbf,
+  0xd0, 0x68, 0x8c, 0xd7, 0xce, 0x22, 0xe7, 0xc1, 0x9c, 0x14, 0xba, 0x3e,
+  0xb0, 0xd6, 0x81, 0x84, 0x69, 0x17, 0xaf, 0xb4, 0x4a, 0x81, 0x2c, 0x43,
+  0xd6, 0x58, 0x83, 0xb5, 0x44, 0xa3, 0x38, 0x3c, 0xfa, 0x15, 0xcb, 0x05,
+  0x5b, 0xce, 0xf7, 0x3e, 0xb4, 0xe5, 0x34, 0x33, 0x1a, 0x4a, 0x57, 0x3e,
+  0xd8, 0x54, 0xca, 0x36, 0x90, 0xab, 0x69, 0xa6, 0x77, 0x22, 0xa0, 0x95,
+  0x91, 0xfe, 0x2f, 0x78, 0xc8, 0x47, 0x5b, 0x4d, 0x70, 0x66, 0x18, 0x5a,
+  0x0c, 0x0c, 0x2d, 0x05, 0x1c, 0x4a, 0x08, 0xba, 0x71, 0x59, 0x20, 0xa8,
+  0x24, 0x6c, 0xd3, 0xc1, 0x49, 0x60, 0x47, 0x19, 0x3d, 0x18, 0xb1, 0x3f,
+  0xf8, 0x24, 0xdc, 0xdf, 0x5c, 0xaa, 0xc7, 0x4f, 0x39, 0xf4, 0x08, 0x11,
+  0x45, 0x8c, 0x9f, 0x5a, 0xd1, 0x4e, 0xb9, 0xb3, 0x0e, 0x44, 0x57, 0xc7,
+  0xb0, 0xcd, 0x3b, 0xa7, 0x95, 0x16, 0xc3, 0xa6, 0x36, 0x9c, 0xbf, 0x9e,
+  0x24, 0xa6, 0xc1, 0x91, 0xd6, 0xe0, 0xe4, 0xb5, 0x60, 0x78, 0x7b, 0xfe,
+  0x39, 0x37, 0x44, 0x45, 0x17, 0x3e, 0xea, 0x35, 0xfe, 0x9c, 0xa6, 0xac,
+  0x2e, 0x2a, 0x3d, 0x6d, 0xfe, 0xdc, 0x1a, 0x66, 0xcb, 0xe0, 0x35, 0x3d,
+  0x34, 0x59, 0xce, 0x16, 0x5a, 0xc4, 0xd9, 0x24, 0x6a, 0xd8, 0xf2, 0x6c,
   0x0b, 0x45, 0x68, 0x83, 0xf0, 0x01, 0xc3, 0xcf, 0x1b, 0x5d, 0x03, 0x99,
-  0x07, 0xe8, 0xbb, 0x32, 0x57, 0x60, 0x05, 0x18, 0x5e, 0xf3, 0xde, 0x59,
-  0x8d, 0x13, 0x17, 0x71, 0x54, 0x93, 0x5c, 0xb0, 0x20, 0x63, 0xf7, 0x2c,
-  0x56, 0x32, 0x78, 0x21, 0xf6, 0x01, 0x4a, 0x58, 0xff, 0x4d, 0x2b, 0x98,
-  0xc2, 0x24, 0xab, 0x0d, 0xea, 0x55, 0xd1, 0x76, 0x3e, 0xd6, 0x26, 0x15,
-  0xbe, 0x58, 0x0f, 0xe9, 0x09, 0x39, 0xbd, 0x75, 0xed, 0x51, 0x74, 0x9b,
-  0x23, 0x50, 0x2e, 0x4e, 0xfc, 0xe4, 0xde, 0x8a, 0x40, 0x73, 0xdd, 0x07,
-  0x81, 0xc9, 0xdc, 0x90, 0xd4, 0x26, 0xe3, 0x94, 0x70, 0x88, 0x19, 0xf9,
-  0xae, 0x50, 0xfc, 0x38, 0xbf, 0x61, 0x5d, 0x1e, 0xa9, 0x9d, 0x5a, 0x08,
-  0xde, 0x60, 0xe6, 0x11, 0x7a, 0xa6, 0x35, 0x87, 0xc0, 0xf4, 0xb2, 0x0d,
-  0xab, 0x0e, 0x68, 0x2f, 0x59, 0x00, 0x23, 0xb8, 0xbf, 0xe0, 0xdf, 0x83,
-  0xc9, 0xb3, 0x52, 0x9d, 0xc4, 0x25, 0x14, 0x2a, 0x64, 0xe2, 0xc8, 0x9d,
-  0xe1, 0xcc, 0xb0, 0xbe, 0xc2, 0x43, 0x80, 0x97, 0x05, 0x16, 0x2d, 0xb8,
-  0xa1, 0x31, 0x83, 0x69, 0xb8, 0x22, 0xd7, 0x88, 0xba, 0x77, 0xad, 0x98,
-  0x83, 0x83, 0x9a, 0x41, 0xe8, 0xb4, 0xc6, 0x92, 0x9e, 0xe5, 0xa5, 0x9c,
-  0x37, 0x48, 0xf8, 0x3d, 0x66, 0x3d, 0x3d, 0x90, 0x41, 0x6f, 0x79, 0x4d,
-  0x7d, 0xf4, 0xa2, 0x2b, 0xd6, 0x91, 0x26, 0x34, 0xf4, 0x16, 0x03, 0x9d,
-  0xc9, 0xe3, 0xaf, 0xce, 0xe3, 0xcb, 0x38, 0x99, 0xff, 0x7e, 0x6f, 0x67,
-  0x1c, 0x5f, 0xad, 0xe6, 0xf1, 0xbf, 0xe2, 0xc5, 0x57, 0x4f, 0x9e, 0xec,
-  0xed, 0x7c, 0xf6, 0xf9, 0x4e, 0xaf, 0x19, 0x7d, 0xe0, 0x03, 0xb2, 0x10,
-  0x61, 0xc3, 0x37, 0x19, 0xf8, 0x2e, 0xfa, 0x19, 0x4d, 0xaf, 0x52, 0x28,
-  0x75, 0x2c, 0x28, 0xe9, 0x1a, 0xc4, 0xa2, 0x4d, 0x82, 0x4d, 0x0a, 0xec,
-  0x20, 0xa3, 0xf2, 0x12, 0x5d, 0xff, 0x6e, 0x77, 0x5f, 0x58, 0x19, 0x40,
-  0xa2, 0x71, 0x4f, 0xf0, 0x5a, 0xbc, 0x4c, 0x33, 0xba, 0x81, 0xbe, 0x88,
-  0xaa, 0xf8, 0xca, 0xd1, 0xaa, 0x66, 0xd3, 0x4b, 0x0e, 0x85, 0xf3, 0x6f,
-  0x5e, 0x32, 0x91, 0xa7, 0x99, 0x14, 0x67, 0xe1, 0xd2, 0x23, 0x10, 0xb2,
-  0x96, 0x49, 0x01, 0x04, 0xc1, 0xab, 0x22, 0x5e, 0x58, 0xa6, 0x0a, 0xbf,
-  0xcf, 0x51, 0x6b, 0xa3, 0xe5, 0x1c, 0x59, 0x14, 0x16, 0x7a, 0x26, 0x12,
-  0xaf, 0x10, 0xdc, 0x7c, 0x59, 0x7a, 0x10, 0x3e, 0xb9, 0x6e, 0xc2, 0xa2,
-  0x26, 0xb4, 0x58, 0xb0, 0xa9, 0xf4, 0x30, 0x2b, 0x61, 0x19, 0xe0, 0x66,
-  0x33, 0x9b, 0xe9, 0x08, 0xbf, 0x03, 0xfd, 0x21, 0x16, 0xc4, 0xc5, 0xde,
-  0x52, 0xf2, 0xaa, 0x05, 0xa3, 0xa3, 0x67, 0x69, 0x0d, 0x69, 0x6d, 0x5e,
-  0xb1, 0x8f, 0xd8, 0x8c, 0x5e, 0x9a, 0x95, 0x68, 0xf7, 0x8b, 0x57, 0x20,
-  0x88, 0xdd, 0x2f, 0xfe, 0xd5, 0x7d, 0xb6, 0xa7, 0x9f, 0xed, 0x7d, 0xf1,
-  0xaf, 0xa3, 0x11, 0xc6, 0xc7, 0x14, 0xd2, 0xb7, 0xaf, 0xfb, 0x8a, 0xb6,
-  0x12, 0xeb, 0x11, 0x96, 0xbf, 0x1c, 0xf8, 0xb1, 0xec, 0x75, 0xcf, 0x7a,
-  0x0e, 0x57, 0x79, 0xa0, 0x1e, 0x55, 0xc7, 0xb7, 0x52, 0x2b, 0x54, 0x06,
-  0x50, 0xeb, 0xb2, 0x6b, 0xd1, 0x9d, 0x1f, 0x04, 0xed, 0x68, 0xec, 0x25,
-  0x5e, 0xfe, 0x03, 0x53, 0xea, 0x1f, 0x36, 0x22, 0xf5, 0x6e, 0xf2, 0x76,
-  0xdc, 0xc3, 0xe1, 0x61, 0x64, 0x4b, 0x8f, 0xc6, 0x56, 0x44, 0x85, 0x5b,
-  0xe6, 0xdc, 0x0f, 0xbe, 0x03, 0x25, 0x64, 0x1c, 0x83, 0xfd, 0xa3, 0x82,
-  0x5f, 0xba, 0xa4, 0x19, 0x7b, 0x46, 0xf2, 0x64, 0x48, 0xc6, 0x40, 0xed,
-  0x0f, 0xa9, 0xe8, 0xf1, 0xc3, 0x0f, 0x2a, 0x50, 0xd1, 0x2f, 0x3a, 0xf2,
-  0x6b, 0xe2, 0x45, 0x33, 0x62, 0x6f, 0x0b, 0x54, 0x3c, 0x67, 0x9c, 0x41,
-  0x9a, 0x87, 0x5e, 0xf9, 0x97, 0x3a, 0x53, 0x69, 0x84, 0xb6, 0xf6, 0x60,
-  0x7c, 0x78, 0x7c, 0x8c, 0x30, 0x53, 0x2c, 0xea, 0x91, 0xb0, 0x31, 0xd0,
-  0xe6, 0x26, 0x42, 0x3c, 0x7c, 0x54, 0x62, 0x48, 0xfa, 0xbc, 0x77, 0xd8,
-  0x76, 0x50, 0x3f, 0x35, 0x66, 0x0a, 0xb8, 0x6e, 0x25, 0x68, 0x56, 0xa4,
-  0x9c, 0x57, 0x3d, 0x79, 0xf0, 0x2a, 0xed, 0xa9, 0x13, 0x4b, 0x3e, 0xe9,
-  0x79, 0xf0, 0x1c, 0xd9, 0x0f, 0x6c, 0xda, 0x2b, 0x11, 0x9d, 0xd2, 0xbf,
-  0x25, 0xaf, 0x76, 0x77, 0xba, 0x9f, 0x80, 0xd7, 0x96, 0xe1, 0xc4, 0x5f,
-  0x79, 0x87, 0xe0, 0x43, 0xcf, 0xa7, 0x33, 0x79, 0xfa, 0x3a, 0x9d, 0xcd,
-  0xe8, 0x4e, 0xb8, 0x8d, 0xe7, 0x2b, 0xa2, 0x85, 0x09, 0xdf, 0xb0, 0xfc,
-  0xff, 0x6b, 0xc6, 0x01, 0x8f, 0x95, 0x3e, 0x5b, 0xae, 0x26, 0x8b, 0xb4,
-  0x36, 0xe0, 0x6d, 0x9e, 0xe0, 0x17, 0x3c, 0xe1, 0xef, 0x13, 0x47, 0x1d,
-  0x09, 0x8b, 0x76, 0x22, 0xfb, 0xf5, 0x2f, 0xf3, 0x7c, 0x12, 0x17, 0x7d,
-  0x75, 0xe7, 0xd8, 0x38, 0xfb, 0xbb, 0x7b, 0x4f, 0x9e, 0x3e, 0xeb, 0x8f,
-  0x54, 0x4e, 0x03, 0x8b, 0xa8, 0x42, 0x80, 0x0a, 0x69, 0xc2, 0x01, 0x2a,
-  0x04, 0x58, 0xae, 0x5d, 0xce, 0x55, 0xe6, 0x62, 0xdc, 0xdd, 0x2b, 0xe9,
-  0xed, 0x5f, 0xb9, 0x9f, 0x57, 0xe8, 0xe2, 0x5f, 0xd3, 0xd9, 0x2b, 0x37,
-  0xc3, 0x7f, 0xe5, 0xb9, 0xbc, 0xd2, 0x49, 0xd0, 0xbe, 0x5a, 0x06, 0x62,
-  0x19, 0x56, 0x5b, 0x79, 0x6c, 0x73, 0x6d, 0x13, 0x37, 0x30, 0x69, 0x44,
-  0x30, 0x0c, 0x67, 0xe2, 0xfd, 0x80, 0xb4, 0xea, 0x33, 0xf0, 0xb6, 0x3f,
-  0x0e, 0xa9, 0x95, 0x21, 0xb7, 0x32, 0xf4, 0x0c, 0x1b, 0x28, 0xf0, 0x43,
-  0xde, 0x88, 0x81, 0xa6, 0x61, 0xce, 0x61, 0x65, 0x51, 0x51, 0x20, 0xcf,
-  0x11, 0x04, 0x70, 0xf8, 0xf5, 0x71, 0x5f, 0x03, 0x6f, 0x44, 0x4d, 0x1c,
-  0x74, 0xd9, 0xa7, 0x5d, 0x88, 0xe1, 0x34, 0x5e, 0xf2, 0xe9, 0xdf, 0x88,
-  0xb4, 0x38, 0x60, 0xcc, 0x71, 0x24, 0xdc, 0xaf, 0x64, 0x4c, 0x53, 0x67,
-  0x7a, 0xeb, 0xcc, 0xd9, 0xe2, 0x5d, 0x08, 0x40, 0x7d, 0xd0, 0x0c, 0x10,
-  0x9b, 0x25, 0xa0, 0x04, 0x3e, 0x9f, 0xa5, 0x4b, 0xb7, 0x1c, 0xbe, 0x71,
-  0x4e, 0x4f, 0x97, 0xde, 0xa7, 0x8f, 0xd2, 0x57, 0xc2, 0x4f, 0x8c, 0x45,
-  0xf4, 0xa0, 0x00, 0x7b, 0x3e, 0x11, 0x72, 0x0f, 0xa4, 0xfd, 0x4f, 0x12,
-  0x4d, 0xd2, 0x14, 0xb3, 0x89, 0x08, 0x86, 0xcc, 0x3f, 0x5f, 0x7e, 0x69,
-  0x28, 0xcf, 0x5f, 0x44, 0x28, 0xf0, 0x29, 0x6f, 0xa9, 0xdf, 0x51, 0x0d,
-  0x50, 0x62, 0xb3, 0xc5, 0x4b, 0xaa, 0x1e, 0x38, 0x17, 0x58, 0x10, 0x8d,
-  0xa3, 0x82, 0x81, 0x42, 0xf1, 0x63, 0xa2, 0x93, 0x7b, 0x35, 0x36, 0x70,
-  0x0b, 0xfd, 0x3f, 0xe1, 0x10, 0xbc, 0xe4, 0x6d, 0xc0, 0xd7, 0x5f, 0xf4,
-  0xc5, 0x78, 0xe8, 0xde, 0xe5, 0x61, 0x34, 0x1c, 0xc8, 0x42, 0xa0, 0xe1,
-  0x7c, 0x48, 0xa0, 0x36, 0x48, 0x63, 0x91, 0xc6, 0x18, 0xa0, 0x03, 0x55,
-  0xb0, 0x49, 0x9a, 0x9a, 0xcf, 0x14, 0xd0, 0xd3, 0x19, 0xa8, 0xa5, 0xf1,
-  0x84, 0x73, 0x1b, 0x58, 0x7a, 0xec, 0x73, 0xb4, 0x2a, 0xde, 0xeb, 0x3b,
-  0x84, 0x64, 0xd8, 0x4c, 0xc1, 0xf0, 0x8a, 0xc4, 0x70, 0x26, 0x37, 0x14,
-  0xd0, 0xdc, 0x4b, 0xf3, 0xe1, 0xc4, 0xca, 0x40, 0x78, 0xf0, 0x49, 0x8e,
-  0x82, 0x65, 0xd3, 0x3a, 0x22, 0x6f, 0x38, 0x83, 0x58, 0x3b, 0x7d, 0xc5,
-  0xcb, 0xbd, 0x3b, 0xba, 0x4a, 0x2f, 0x65, 0x31, 0x88, 0x45, 0x5e, 0x25,
-  0xdb, 0xf4, 0xe7, 0x80, 0x3e, 0xdf, 0x63, 0xa9, 0x8c, 0x7f, 0x79, 0x82,
-  0x78, 0xac, 0xf0, 0xee, 0x0f, 0xce, 0x86, 0x3b, 0x17, 0xfc, 0x4b, 0xea,
-  0xee, 0x7c, 0xf5, 0xea, 0xe8, 0x28, 0x41, 0xe6, 0xad, 0xaa, 0x66, 0x61,
-  0x50, 0x09, 0x2b, 0x5a, 0xac, 0x92, 0xae, 0x38, 0xa7, 0xc5, 0x05, 0x8f,
-  0x68, 0x20, 0x85, 0x0a, 0xea, 0x2c, 0x77, 0xa7, 0x6a, 0x9e, 0xe1, 0x1c,
-  0x20, 0xdc, 0xac, 0xc9, 0xdd, 0xd6, 0x20, 0x8c, 0xb4, 0x25, 0xf6, 0x7e,
-  0xcb, 0x59, 0xf5, 0x0c, 0xd5, 0xe1, 0x4b, 0x36, 0x71, 0xf7, 0x9b, 0xdc,
-  0xec, 0x46, 0x14, 0xa6, 0x19, 0x63, 0x9b, 0xd3, 0xe6, 0x0e, 0x06, 0x35,
-  0x51, 0x4d, 0xda, 0x64, 0x0f, 0xda, 0x16, 0x77, 0x93, 0xcc, 0x4b, 0xe8,
-  0xea, 0x0a, 0xd4, 0x68, 0xbd, 0x1a, 0x98, 0x36, 0x3a, 0xea, 0x87, 0x67,
-  0x3f, 0x9f, 0x56, 0x09, 0xe9, 0xba, 0x8c, 0xaa, 0xb5, 0x10, 0x3e, 0x77,
-  0xb4, 0x90, 0xe2, 0x90, 0x20, 0xe1, 0xf9, 0x50, 0x6e, 0x4f, 0x15, 0x89,
-  0x86, 0x6f, 0x46, 0xd1, 0x09, 0x22, 0xc6, 0xcb, 0x58, 0xd0, 0x59, 0xec,
-  0x86, 0x35, 0x6a, 0x20, 0xd2, 0x11, 0x19, 0x7c, 0x43, 0xd2, 0x5e, 0x18,
-  0x12, 0xc3, 0x48, 0x2a, 0x35, 0x98, 0x74, 0x21, 0x2e, 0x91, 0x2f, 0x54,
-  0x1e, 0x19, 0xc0, 0x16, 0xee, 0x9e, 0x83, 0xcd, 0x5f, 0xec, 0x7e, 0x48,
-  0xfe, 0x72, 0x04, 0x1b, 0x34, 0x12, 0x42, 0x61, 0x87, 0x6c, 0xdd, 0x1d,
-  0x02, 0x09, 0xa9, 0x4c, 0xc4, 0xe8, 0xc2, 0xc8, 0x0c, 0x0c, 0x12, 0x03,
-  0x9f, 0x30, 0xb5, 0x06, 0x2a, 0x03, 0xfe, 0x35, 0x91, 0x51, 0x0f, 0x7a,
-  0xe3, 0x3c, 0x71, 0xca, 0xb5, 0x96, 0xbc, 0x73, 0xe1, 0xe6, 0xb0, 0xc5,
-  0x88, 0xb8, 0xe1, 0xdd, 0x75, 0x3c, 0x48, 0x1e, 0x57, 0x7c, 0x4b, 0xbf,
-  0xb0, 0x70, 0x36, 0x29, 0x68, 0xd7, 0x93, 0x42, 0xae, 0x06, 0x89, 0x11,
-  0xca, 0x85, 0x93, 0x88, 0x9a, 0xf2, 0xf6, 0x24, 0x32, 0x94, 0x9b, 0x4b,
-  0x2f, 0x2a, 0x5a, 0x64, 0x26, 0xa6, 0xa8, 0x96, 0x11, 0x91, 0x87, 0xf4,
-  0x29, 0xb9, 0xe5, 0x64, 0x6d, 0x39, 0x53, 0x3e, 0xe2, 0xc5, 0xa9, 0x1d,
-  0xd9, 0xe0, 0x09, 0x79, 0x95, 0xe9, 0x88, 0xc8, 0xa4, 0xcf, 0x4b, 0xd0,
-  0x1f, 0x44, 0x7d, 0x1e, 0x2a, 0x7f, 0xd1, 0xc7, 0x7a, 0xe2, 0xe3, 0x60,
-  0xf9, 0xfa, 0xa3, 0x8e, 0x53, 0xc8, 0xcf, 0xbc, 0xfa, 0xb2, 0xb6, 0x4a,
-  0xf8, 0xdc, 0x9a, 0x7a, 0x25, 0x49, 0x26, 0x2d, 0x99, 0xdb, 0xde, 0x0d,
-  0xda, 0x7f, 0x75, 0x98, 0x33, 0x42, 0x21, 0x35, 0x13, 0x84, 0xb9, 0x4e,
-  0xdd, 0x67, 0x29, 0x12, 0x66, 0x5b, 0x0d, 0x3d, 0x7e, 0x8a, 0x2f, 0x8c,
-  0x15, 0xb9, 0x10, 0x50, 0xe1, 0x6e, 0x42, 0x02, 0xc6, 0x79, 0x69, 0x37,
-  0x53, 0xd1, 0xfb, 0xee, 0x72, 0x58, 0x19, 0xc0, 0x73, 0x76, 0x47, 0xc8,
-  0xa0, 0xf4, 0x55, 0x6a, 0x5d, 0x03, 0x4e, 0x79, 0xef, 0x61, 0x41, 0x7b,
-  0x2e, 0x2a, 0xd7, 0x54, 0x7a, 0x5b, 0xe5, 0x2e, 0xde, 0xb5, 0x4c, 0xa7,
-  0x80, 0xd4, 0x7e, 0xf5, 0xe5, 0x2c, 0xbf, 0x62, 0xce, 0x35, 0xa0, 0x83,
-  0xc6, 0x3f, 0x11, 0x90, 0xbc, 0xa7, 0x9d, 0xca, 0x80, 0x71, 0x56, 0x44,
-  0x8a, 0xb7, 0xbf, 0xd7, 0x84, 0xa8, 0xbe, 0x61, 0x53, 0xe8, 0x54, 0xdb,
-  0x76, 0x4d, 0xcb, 0x7e, 0x50, 0xfb, 0xee, 0x8b, 0xb0, 0x2f, 0x5b, 0x9c,
-  0x58, 0x5b, 0x86, 0x6c, 0x44, 0x9c, 0xa2, 0x92, 0xab, 0x1c, 0x1d, 0xe7,
-  0x08, 0x74, 0xab, 0x38, 0x11, 0x3a, 0xa9, 0xe4, 0xde, 0x9a, 0x6b, 0x5a,
-  0x5f, 0xff, 0xcb, 0xbe, 0xe4, 0x08, 0xf4, 0x5f, 0xf6, 0xc1, 0xc1, 0x98,
-  0x2f, 0x59, 0x55, 0x37, 0xbd, 0x9c, 0xfa, 0x72, 0x2b, 0x0e, 0x45, 0x76,
+  0x07, 0xe8, 0xbb, 0x36, 0x57, 0x60, 0x0d, 0x18, 0x5e, 0xf3, 0xde, 0x59,
+  0x61, 0x18, 0x17, 0x71, 0xd4, 0x90, 0x5c, 0xb0, 0x20, 0xe7, 0xee, 0x59,
+  0xac, 0x64, 0xf0, 0x42, 0xea, 0x03, 0x94, 0xb0, 0xfe, 0x1b, 0x56, 0x65,
+  0x86, 0x49, 0x56, 0x1b, 0xd4, 0xab, 0x22, 0x76, 0x3e, 0x36, 0x26, 0x15,
+  0xbe, 0xd8, 0x0c, 0xe9, 0x09, 0x39, 0xbd, 0x75, 0xed, 0x51, 0x74, 0xdb,
+  0x23, 0x50, 0x2e, 0x4e, 0xfc, 0xe4, 0xde, 0x4a, 0x67, 0x73, 0x95, 0x0c,
+  0x81, 0xc9, 0x5c, 0xd3, 0x2a, 0x47, 0x21, 0xf0, 0xb8, 0x91, 0xef, 0x12,
+  0xc0, 0xd7, 0xc5, 0x0d, 0xeb, 0xf2, 0x48, 0xed, 0x1c, 0xdd, 0x87, 0x39,
+  0x78, 0x12, 0x7a, 0xa6, 0x75, 0x9a, 0xc0, 0xf4, 0xe6, 0x6b, 0x56, 0x52,
+  0xd1, 0x5e, 0xb2, 0x00, 0x46, 0x70, 0x7f, 0xa9, 0x16, 0x00, 0x26, 0xcf,
+  0x4a, 0x75, 0x96, 0x56, 0x50, 0xa8, 0x90, 0x89, 0x23, 0x77, 0x86, 0x33,
+  0xc3, 0xfa, 0x7a, 0x18, 0x01, 0x5e, 0x16, 0x58, 0xb4, 0xe0, 0x86, 0xa6,
+  0x0c, 0xa6, 0x61, 0x87, 0x42, 0xa2, 0xee, 0x5d, 0x2b, 0xe6, 0xe0, 0xa0,
+  0x66, 0x10, 0x3a, 0xad, 0xb1, 0xa4, 0xa7, 0x45, 0x25, 0xe7, 0x0d, 0x12,
+  0xfe, 0x3a, 0xb3, 0x9e, 0x75, 0x90, 0xc1, 0xfa, 0xe2, 0x9a, 0xfa, 0x58,
+  0x4f, 0xae, 0x58, 0x47, 0x1a, 0xd1, 0xd0, 0x23, 0x06, 0x3a, 0x91, 0xc7,
+  0x5f, 0x9d, 0xa5, 0x97, 0x69, 0x36, 0xfd, 0xfd, 0xee, 0xf6, 0x79, 0x7a,
+  0xb5, 0x9c, 0xa6, 0xff, 0x8a, 0x17, 0x5f, 0x3d, 0x79, 0xb2, 0xbb, 0xfd,
+  0xd9, 0xe7, 0xdb, 0xeb, 0xed, 0xe8, 0x03, 0x1f, 0x90, 0x85, 0x08, 0x1b,
+  0xbe, 0xc9, 0xc0, 0x77, 0xd1, 0xcf, 0x70, 0x7c, 0x95, 0x43, 0xa9, 0x63,
+  0x41, 0x49, 0xd7, 0x20, 0x15, 0x6d, 0x12, 0x6c, 0x52, 0x60, 0x07, 0x19,
+  0x95, 0x97, 0xe8, 0xfa, 0x77, 0x3b, 0x7b, 0xc2, 0xca, 0x00, 0x12, 0x8d,
+  0x7b, 0x82, 0xd7, 0xe2, 0x65, 0x3e, 0xa7, 0x1b, 0xe8, 0x8b, 0xa4, 0x4e,
+  0xaf, 0x1c, 0xad, 0x6a, 0x36, 0xbd, 0xe4, 0x50, 0x38, 0xff, 0xe6, 0x25,
+  0x13, 0x79, 0x3e, 0x97, 0x52, 0x36, 0x5c, 0xa6, 0x05, 0x42, 0xd6, 0x22,
+  0x2b, 0x81, 0x20, 0x78, 0x55, 0xa6, 0x33, 0xcb, 0x54, 0xe1, 0xf7, 0x39,
+  0x6a, 0x6d, 0xb8, 0x98, 0x22, 0x8b, 0xc2, 0x42, 0xcf, 0x44, 0xe2, 0x15,
+  0x82, 0x9b, 0x2e, 0x2a, 0x0f, 0xc2, 0x27, 0xd7, 0x4d, 0x58, 0x00, 0x86,
+  0x16, 0x0b, 0x36, 0x95, 0x75, 0xcc, 0x4a, 0x58, 0x06, 0xb8, 0xd9, 0xc4,
+  0x66, 0x3a, 0xc4, 0xef, 0x40, 0x7f, 0x48, 0x05, 0x71, 0x71, 0x7d, 0x21,
+  0x79, 0xd5, 0x82, 0xd1, 0xb1, 0x6e, 0x69, 0x0d, 0x79, 0x63, 0x5e, 0xa9,
+  0x8f, 0xd8, 0x4c, 0x5e, 0x9a, 0x95, 0x68, 0xe7, 0x8b, 0x57, 0x20, 0x88,
+  0x9d, 0x2f, 0xfe, 0xd5, 0x7d, 0xb6, 0xab, 0x9f, 0xed, 0x7e, 0xf1, 0xaf,
+  0xc3, 0x21, 0xc6, 0xc7, 0x14, 0xd2, 0xb3, 0xaf, 0x7b, 0x8a, 0xb6, 0x92,
+  0xea, 0x11, 0x96, 0xbf, 0x1c, 0xf8, 0xb1, 0xec, 0xf5, 0xba, 0xf5, 0x1c,
+  0xae, 0x72, 0x5f, 0x3d, 0xaa, 0x8e, 0x6f, 0xe5, 0x56, 0xde, 0x0d, 0xa0,
+  0xd6, 0x55, 0xd7, 0xa2, 0x3b, 0x3f, 0x08, 0xda, 0xd1, 0xd8, 0x4b, 0xbc,
+  0xfc, 0x07, 0xa6, 0xd4, 0x3f, 0xac, 0x25, 0xea, 0xdd, 0xe4, 0xed, 0xb8,
+  0x87, 0xc3, 0xc3, 0xc8, 0x96, 0x1e, 0x4d, 0xad, 0xde, 0x0c, 0xb7, 0xcc,
+  0xb9, 0x1f, 0x7c, 0x07, 0x4a, 0xc8, 0x38, 0x06, 0xfb, 0x47, 0x05, 0xbf,
+  0x74, 0x49, 0x33, 0xf6, 0x8c, 0xe4, 0xc9, 0x90, 0x8c, 0x51, 0x4b, 0xc5,
+  0x23, 0xae, 0x7f, 0xf2, 0xc3, 0x0f, 0x2a, 0x50, 0xd1, 0x2f, 0x3a, 0xf2,
+  0x6b, 0xe2, 0x45, 0x13, 0x62, 0x6f, 0x33, 0x94, 0x89, 0x67, 0x9c, 0x41,
+  0x9a, 0x87, 0x5e, 0xf9, 0x97, 0x3a, 0x53, 0x69, 0x84, 0xb6, 0x76, 0xff,
+  0xfc, 0xe0, 0xe8, 0x08, 0x61, 0xa6, 0x58, 0xd4, 0x43, 0x61, 0x63, 0xa0,
+  0xcd, 0x0d, 0x84, 0x78, 0xf8, 0xa8, 0xc4, 0x90, 0xf4, 0x79, 0xef, 0xb0,
+  0xed, 0xa0, 0x7e, 0x6a, 0xcc, 0x14, 0x70, 0xdd, 0x4a, 0xd0, 0xac, 0x48,
+  0x39, 0xaf, 0xd6, 0xe5, 0xc1, 0xab, 0x7c, 0x5d, 0x9d, 0x58, 0xf2, 0xc9,
+  0xba, 0x07, 0xcf, 0x91, 0xfd, 0xc0, 0xa6, 0xbd, 0x12, 0xd1, 0x29, 0xff,
+  0x5b, 0xf6, 0x6a, 0x67, 0xbb, 0xfb, 0x09, 0x78, 0x6d, 0x19, 0x4e, 0xfc,
+  0x95, 0x77, 0x08, 0x3e, 0xf4, 0x7c, 0x3e, 0x91, 0xa7, 0xaf, 0xf3, 0xc9,
+  0x84, 0xee, 0x84, 0xdb, 0x74, 0xba, 0x24, 0x5a, 0x18, 0xf1, 0x0d, 0xcb,
+  0xff, 0xbf, 0x62, 0x1c, 0xf0, 0x58, 0xe9, 0xb3, 0xd5, 0x72, 0x34, 0xcb,
+  0x1b, 0x03, 0xde, 0xe2, 0x09, 0x7e, 0xc1, 0x13, 0xfe, 0x3e, 0x73, 0xd4,
+  0x91, 0xb1, 0x68, 0x27, 0xb2, 0x5f, 0xef, 0xb2, 0x28, 0x46, 0x69, 0xd9,
+  0x53, 0x77, 0x8e, 0x8d, 0xb3, 0xb7, 0xb3, 0xfb, 0xe4, 0xe9, 0xb3, 0xde,
+  0x50, 0xe5, 0x34, 0xb0, 0x88, 0x3a, 0x04, 0xa8, 0x90, 0x26, 0x1c, 0xa0,
+  0x42, 0x80, 0xe5, 0xda, 0xe5, 0x5c, 0x65, 0x2e, 0xc6, 0xdd, 0xbd, 0x92,
+  0xde, 0xfe, 0x95, 0xfb, 0x79, 0x85, 0x2e, 0xfe, 0x35, 0x9f, 0xbc, 0x72,
+  0x33, 0xfc, 0x57, 0x9e, 0xcb, 0x2b, 0x9d, 0x04, 0xed, 0xab, 0x65, 0x20,
+  0x56, 0x61, 0x6d, 0x9a, 0xc7, 0x36, 0xd7, 0x36, 0x71, 0x0d, 0x93, 0x46,
+  0x04, 0xc3, 0x60, 0x22, 0xde, 0x0f, 0x48, 0xab, 0x3e, 0x03, 0x6f, 0xeb,
+  0xe3, 0x80, 0x5a, 0x19, 0x70, 0x2b, 0x03, 0xcf, 0xb0, 0x81, 0x02, 0x3f,
+  0xe0, 0x8d, 0xe8, 0x6b, 0x1a, 0xe6, 0x14, 0x56, 0x16, 0x15, 0x05, 0x8a,
+  0x02, 0x41, 0x00, 0x07, 0x5f, 0x1f, 0xf5, 0xaa, 0xb0, 0x24, 0x43, 0xbf,
+  0xcb, 0x3e, 0xed, 0x42, 0x0c, 0xc7, 0xe9, 0x82, 0x4f, 0xff, 0x9a, 0x95,
+  0x53, 0x4c, 0x39, 0x8e, 0x84, 0xfb, 0x95, 0x8c, 0x69, 0xea, 0x4c, 0x6f,
+  0x9d, 0x29, 0x5b, 0xbc, 0x4b, 0x01, 0xa8, 0x0f, 0x9a, 0x01, 0x62, 0xb3,
+  0x04, 0x94, 0xc0, 0xe7, 0xb3, 0x70, 0xe9, 0x96, 0x83, 0x37, 0xce, 0xe9,
+  0xe9, 0xd2, 0xfb, 0xf4, 0x51, 0xfa, 0x4a, 0xf8, 0x89, 0xb1, 0x88, 0x75,
+  0x28, 0xc0, 0x9e, 0x4f, 0x84, 0xdc, 0x03, 0x69, 0xff, 0xa3, 0x4c, 0x93,
+  0x34, 0xc5, 0x6c, 0x22, 0x82, 0x21, 0xf3, 0xcf, 0x97, 0x5f, 0x1a, 0xca,
+  0xf3, 0x17, 0x09, 0xaa, 0xa2, 0xca, 0x5b, 0xea, 0x77, 0x54, 0x03, 0x94,
+  0xd8, 0x6c, 0xf1, 0x92, 0xaa, 0x07, 0xce, 0x05, 0x16, 0x44, 0xe3, 0xa8,
+  0x60, 0xa0, 0x50, 0xfc, 0x98, 0xe8, 0xe8, 0x5e, 0x8d, 0x0d, 0xdc, 0x42,
+  0xef, 0x4f, 0x38, 0x04, 0x2f, 0x79, 0x1b, 0xf0, 0xf5, 0x17, 0xbd, 0x35,
+  0x57, 0x1d, 0xc3, 0x49, 0xee, 0x2d, 0x07, 0xb2, 0x10, 0x68, 0x38, 0x1f,
+  0x12, 0xa8, 0x0d, 0xd2, 0x58, 0xa4, 0x31, 0x06, 0xe8, 0x40, 0xe9, 0x70,
+  0x92, 0xa6, 0xa6, 0x13, 0x05, 0xf4, 0x74, 0x06, 0x6a, 0x69, 0x3c, 0xe3,
+  0xdc, 0x06, 0x96, 0x1e, 0x7b, 0x1c, 0xad, 0x8a, 0xf7, 0x7a, 0x0e, 0x21,
+  0x19, 0x36, 0x53, 0x30, 0xbc, 0x32, 0x33, 0x9c, 0xc9, 0x35, 0x05, 0x34,
+  0xf7, 0xd2, 0x7c, 0x38, 0xb1, 0x2a, 0x10, 0x1e, 0x7c, 0x92, 0xa3, 0x60,
+  0xd9, 0x44, 0x47, 0xe4, 0x0d, 0x67, 0x10, 0x6b, 0xa7, 0xaf, 0x78, 0xb9,
+  0x77, 0x86, 0x57, 0xf9, 0xa5, 0x2c, 0x06, 0xb1, 0xc8, 0xab, 0x6c, 0x8b,
+  0xfe, 0xec, 0xd3, 0xe7, 0xbb, 0x2c, 0x95, 0xf1, 0x2f, 0x4f, 0x10, 0x8f,
+  0x15, 0xde, 0xfd, 0xc1, 0xd9, 0x70, 0xe7, 0x82, 0x7f, 0xc9, 0xdd, 0x9d,
+  0xaf, 0x5e, 0x1d, 0x1d, 0x25, 0xc8, 0x3c, 0xaa, 0x00, 0x17, 0x06, 0x95,
+  0xb0, 0xa2, 0xc5, 0x2a, 0xe9, 0x92, 0x73, 0x5a, 0x5c, 0xf0, 0x88, 0x06,
+  0x52, 0xa8, 0xa0, 0xce, 0x72, 0x77, 0xae, 0xe6, 0x19, 0xce, 0x01, 0xc2,
+  0xcd, 0x9a, 0xdd, 0x6d, 0xf6, 0xc3, 0x48, 0x5b, 0x62, 0xef, 0xb7, 0x9c,
+  0x55, 0xcf, 0x50, 0x1d, 0xbe, 0xc2, 0x15, 0x77, 0xbf, 0xc1, 0xcd, 0xb2,
+  0x50, 0xe0, 0xd3, 0x8c, 0xb1, 0xcd, 0x79, 0x7b, 0x07, 0x83, 0x42, 0xb2,
+  0x26, 0x6d, 0xb2, 0x07, 0x6d, 0x93, 0xbb, 0xc9, 0xa6, 0x15, 0x74, 0x75,
+  0x05, 0x6a, 0xb4, 0x5e, 0x0d, 0x4c, 0x1b, 0x1d, 0xf5, 0xc2, 0xb3, 0x5f,
+  0x8c, 0xeb, 0x8c, 0x74, 0x5d, 0x46, 0xd5, 0x9a, 0x09, 0x9f, 0x3b, 0x9c,
+  0x49, 0x41, 0x4d, 0x90, 0xf0, 0x74, 0x20, 0xb7, 0xa7, 0x8a, 0x44, 0x83,
+  0x37, 0xc3, 0xe4, 0x18, 0x11, 0xe3, 0x55, 0x2a, 0xe8, 0x2c, 0x76, 0xc3,
+  0x1a, 0x35, 0x10, 0xe9, 0x88, 0x0c, 0xbe, 0x26, 0x69, 0x2f, 0x0c, 0x89,
+  0x61, 0x24, 0x95, 0x1b, 0x4c, 0xba, 0x10, 0x97, 0xc8, 0x17, 0x2a, 0x8f,
+  0xf4, 0x61, 0x0b, 0x77, 0xcf, 0xc1, 0xe6, 0x2f, 0x76, 0x3f, 0x24, 0x7f,
+  0x39, 0x82, 0x0d, 0x1a, 0x09, 0xa1, 0xb0, 0x43, 0xb6, 0xee, 0x0e, 0x81,
+  0x84, 0x54, 0x66, 0x62, 0x74, 0x61, 0x64, 0x06, 0x06, 0x89, 0x81, 0x4f,
+  0x98, 0x5a, 0x03, 0x95, 0x01, 0xff, 0x9a, 0xc8, 0x68, 0x1d, 0x7a, 0xe3,
+  0x34, 0x73, 0xca, 0xb5, 0xec, 0x55, 0xe1, 0xc2, 0xcd, 0x61, 0x8b, 0x11,
+  0x71, 0xc3, 0xbb, 0xeb, 0x78, 0x90, 0x3c, 0xae, 0xf4, 0x96, 0x7e, 0x61,
+  0xe1, 0x6c, 0x54, 0xd2, 0xae, 0x67, 0xa5, 0x5c, 0x0d, 0x12, 0x23, 0x54,
+  0x08, 0x27, 0x11, 0x35, 0xe5, 0xed, 0x71, 0x62, 0x28, 0x37, 0x97, 0x5e,
+  0x54, 0xb4, 0xc8, 0x4c, 0x4c, 0x51, 0x2d, 0x23, 0x22, 0x0f, 0xe9, 0x53,
+  0x72, 0xcb, 0xc9, 0xda, 0x72, 0xa6, 0x7c, 0xc2, 0x8b, 0xd3, 0x38, 0xb2,
+  0xc1, 0x13, 0xf2, 0x2a, 0xd3, 0x11, 0x91, 0x49, 0x8f, 0x97, 0xa0, 0xd7,
+  0x4f, 0x7a, 0x3c, 0x54, 0xfe, 0xa2, 0x87, 0xf5, 0xc4, 0xc7, 0xc1, 0xf2,
+  0xf5, 0x86, 0x1d, 0xa7, 0x90, 0x9f, 0x79, 0xf5, 0x65, 0x63, 0x95, 0xf0,
+  0xb9, 0x35, 0xf5, 0x4a, 0x92, 0x4c, 0x22, 0x99, 0xdb, 0xde, 0x0d, 0xda,
+  0x7f, 0x75, 0x50, 0x30, 0x42, 0x21, 0x35, 0x13, 0x84, 0xb9, 0x8e, 0xdd,
+  0x67, 0x39, 0x12, 0x66, 0xa3, 0x86, 0x1e, 0x3f, 0xc5, 0x17, 0xc6, 0x8a,
+  0x5c, 0x08, 0xa8, 0x70, 0x37, 0x21, 0x01, 0xe3, 0xbc, 0xb4, 0x9b, 0xb9,
+  0xe8, 0x7d, 0x77, 0x05, 0xac, 0x0c, 0xe0, 0x39, 0x3b, 0x43, 0x64, 0x50,
+  0xfa, 0xba, 0xbe, 0xae, 0x01, 0xa7, 0xbc, 0xaf, 0x63, 0x41, 0xd7, 0x5d,
+  0x54, 0xae, 0xa9, 0xf4, 0xb6, 0xca, 0x5d, 0xbc, 0x6b, 0x91, 0x8f, 0x01,
+  0xa9, 0xfd, 0xea, 0xcb, 0x49, 0x71, 0xc5, 0x9c, 0xab, 0x4f, 0x07, 0x8d,
+  0x7f, 0x22, 0x20, 0x79, 0x57, 0x3b, 0x95, 0x01, 0xe3, 0xac, 0x88, 0x14,
+  0x6f, 0x7f, 0xaf, 0x08, 0x51, 0x7d, 0xc3, 0xa6, 0xd0, 0xb1, 0xb6, 0xed,
+  0x9a, 0x96, 0xfd, 0xa0, 0xf6, 0xdd, 0x17, 0x61, 0x5f, 0xb6, 0x38, 0xa9,
+  0xb6, 0x0c, 0xd9, 0x88, 0x38, 0x45, 0x2d, 0x57, 0x39, 0x3a, 0x2e, 0x10,
+  0xe8, 0x56, 0x73, 0x22, 0x74, 0x26, 0xa5, 0x21, 0xe9, 0x10, 0x48, 0x5a,
+  0x5f, 0xef, 0xcb, 0x9e, 0xe4, 0x08, 0xf4, 0x5e, 0xf6, 0xc0, 0xc1, 0x98,
+  0x2f, 0x59, 0x0d, 0x3c, 0xbd, 0x9c, 0x7a, 0x72, 0x2b, 0x0e, 0x44, 0x76,
   0x50, 0xc4, 0x3f, 0x7f, 0x40, 0x70, 0x2d, 0x7b, 0x35, 0x32, 0x0c, 0x9e,
-  0x84, 0x99, 0x00, 0x05, 0xdf, 0x31, 0x2a, 0x86, 0x2f, 0x9d, 0x54, 0x12,
-  0x28, 0xa3, 0x97, 0x2e, 0xc4, 0x32, 0xa0, 0xa5, 0x94, 0x1c, 0xbf, 0x20,
-  0x66, 0xce, 0x55, 0xb6, 0xe4, 0xdc, 0xf8, 0x29, 0x00, 0xdc, 0xf5, 0x2c,
-  0x8d, 0xa2, 0xf7, 0x99, 0x94, 0x12, 0x48, 0x58, 0x59, 0x4e, 0x8b, 0xe9,
-  0x6a, 0xc1, 0xa6, 0x8a, 0x29, 0x1b, 0xc8, 0x70, 0xf1, 0x88, 0x78, 0x50,
-  0x73, 0xcf, 0x87, 0x03, 0x16, 0xe3, 0x88, 0x18, 0xcc, 0xb5, 0x5f, 0x84,
-  0xa2, 0x70, 0x00, 0x96, 0x1a, 0xc4, 0x21, 0x15, 0x38, 0xd4, 0x14, 0x65,
-  0x40, 0xec, 0x19, 0x3c, 0x7a, 0x73, 0x74, 0x7e, 0x7e, 0x74, 0xce, 0xeb,
-  0x7d, 0xa0, 0xa1, 0x1f, 0x86, 0x5d, 0x61, 0xd0, 0xa9, 0xde, 0xd5, 0x68,
-  0x61, 0xbf, 0x6d, 0x08, 0x7d, 0x61, 0x85, 0xf1, 0x6c, 0xc6, 0x20, 0xe3,
-  0xd0, 0x20, 0x04, 0x27, 0x48, 0xea, 0x4e, 0x87, 0xe6, 0x45, 0x84, 0x7d,
-  0x3b, 0xb7, 0x41, 0x58, 0x87, 0x30, 0x90, 0x2d, 0x7c, 0x0b, 0x85, 0xd6,
-  0xd9, 0x5c, 0x59, 0x4a, 0xfe, 0x75, 0x52, 0x13, 0x53, 0x47, 0x1a, 0xa9,
-  0x9b, 0xa8, 0x33, 0x7d, 0xee, 0xec, 0x13, 0x98, 0xf2, 0x25, 0x9f, 0x51,
-  0xd6, 0x9d, 0xb0, 0x18, 0x65, 0xb5, 0x5a, 0xa6, 0x33, 0x67, 0xed, 0xa5,
-  0xcf, 0x49, 0xfc, 0x8b, 0xe4, 0x94, 0x97, 0x16, 0xeb, 0x02, 0xaf, 0xa6,
-  0x19, 0x23, 0x42, 0x6b, 0x5b, 0x03, 0xbf, 0x37, 0x42, 0xb6, 0x9c, 0x04,
-  0x8d, 0x59, 0xcd, 0xa4, 0x7a, 0x6e, 0xb9, 0xd2, 0x7e, 0x02, 0x2b, 0x23,
-  0x73, 0x0b, 0x0b, 0xbf, 0x09, 0x39, 0x03, 0xdb, 0xb2, 0x16, 0x3e, 0xde,
-  0x9d, 0x43, 0xd8, 0xf6, 0x05, 0x06, 0x05, 0x29, 0xa5, 0xc5, 0x7e, 0xf4,
-  0x63, 0x99, 0x4e, 0x7f, 0xf6, 0x97, 0x07, 0xd2, 0x7f, 0xea, 0x55, 0xd2,
-  0xb0, 0x74, 0xba, 0x50, 0xaa, 0x0c, 0x4b, 0x2a, 0xf7, 0xfb, 0xf1, 0xd1,
-  0x79, 0x74, 0xf0, 0x35, 0xa3, 0x00, 0xff, 0x37, 0x37, 0x98, 0x9f, 0xd3,
-  0xdb, 0x61, 0x43, 0x71, 0xf8, 0x14, 0xdb, 0x24, 0x31, 0x53, 0xb8, 0xe0,
-  0x72, 0xd5, 0x76, 0x36, 0xb5, 0x4a, 0xd2, 0xfe, 0xba, 0xaf, 0xef, 0xe1,
-  0x46, 0xf4, 0xe8, 0x2e, 0x7e, 0xca, 0x1e, 0xf2, 0x21, 0x0b, 0x77, 0x51,
-  0x50, 0x91, 0xc4, 0x25, 0x61, 0x7b, 0xa3, 0xa3, 0x2f, 0x5b, 0x6a, 0xa7,
-  0xec, 0xd2, 0x41, 0xd4, 0x7f, 0x9b, 0xff, 0x8d, 0x84, 0x81, 0x78, 0xfb,
-  0xc9, 0x68, 0x27, 0xda, 0xfc, 0x3e, 0xcd, 0x5e, 0x3c, 0xfb, 0x53, 0x74,
-  0xbc, 0xd5, 0xaf, 0x05, 0xf3, 0x4b, 0x65, 0xc1, 0x49, 0x9c, 0xdd, 0xb8,
-  0x2d, 0x3b, 0xc5, 0xc9, 0x96, 0xa0, 0x3a, 0xab, 0xca, 0x22, 0x05, 0x90,
-  0xd7, 0xb6, 0x88, 0xc4, 0x4f, 0xcd, 0x0b, 0x88, 0xbe, 0x73, 0x90, 0xd7,
-  0xac, 0xe5, 0xd3, 0x53, 0x33, 0x5e, 0xba, 0x17, 0xcf, 0x5a, 0x4d, 0x3c,
-  0x75, 0x6d, 0xbc, 0x97, 0x36, 0x7e, 0x61, 0x13, 0x7b, 0xa3, 0x9d, 0xbd,
-  0x68, 0xf3, 0x74, 0xbc, 0xbd, 0xe7, 0x5a, 0x68, 0x37, 0xb1, 0x87, 0x26,
-  0xf8, 0xa1, 0xfa, 0xcb, 0x4f, 0xb9, 0xff, 0x1f, 0x93, 0xec, 0xe7, 0x68,
-  0xf3, 0x87, 0xdd, 0x5d, 0x6a, 0xe0, 0x4f, 0xd1, 0xc1, 0xf1, 0x0f, 0xd1,
-  0xd3, 0x11, 0x35, 0xf6, 0x2e, 0xbe, 0xd5, 0xe6, 0x14, 0xcc, 0x76, 0x8c,
-  0x46, 0xe8, 0xfb, 0x56, 0x1b, 0xcf, 0x1a, 0x6d, 0x9c, 0x90, 0x5e, 0xf8,
-  0x91, 0xae, 0x95, 0x9d, 0xd1, 0x93, 0xbd, 0x28, 0x7d, 0xf6, 0xf9, 0x73,
-  0x6b, 0x48, 0xdb, 0xc0, 0xf7, 0x75, 0x6b, 0xa5, 0xc0, 0xa5, 0x90, 0xa8,
-  0x73, 0xf4, 0x91, 0x18, 0x1a, 0x58, 0x04, 0x2a, 0x65, 0x5c, 0xc7, 0x85,
-  0x55, 0xe5, 0xe5, 0x72, 0x07, 0xb4, 0x53, 0x0a, 0x23, 0x9d, 0xc0, 0x6c,
-  0x49, 0x17, 0xe7, 0x7e, 0x6b, 0x38, 0xac, 0x9b, 0xda, 0xa3, 0x7f, 0x8a,
-  0xde, 0x8e, 0x8f, 0x8f, 0x68, 0x46, 0x3b, 0x34, 0x34, 0xbf, 0x86, 0x32,
-  0x20, 0x7c, 0x85, 0xc5, 0x7d, 0x01, 0x54, 0x52, 0x6d, 0x23, 0xac, 0x1f,
-  0x0b, 0xa2, 0xa3, 0x8b, 0xbb, 0x44, 0xbf, 0x1c, 0x92, 0x32, 0x3c, 0xb8,
-  0x62, 0x15, 0x42, 0xae, 0x5a, 0x74, 0xfd, 0x6d, 0x9e, 0xd1, 0x31, 0x29,
-  0xf2, 0x82, 0x23, 0xa7, 0xfa, 0x35, 0x69, 0xe1, 0xdb, 0xd7, 0x47, 0x92,
-  0x52, 0xff, 0x36, 0xce, 0x88, 0x47, 0x32, 0x3a, 0x56, 0x79, 0xc3, 0xfe,
-  0x7f, 0x71, 0xe7, 0xc8, 0xfb, 0x27, 0xf7, 0xd9, 0x47, 0xda, 0xc7, 0xcf,
-  0x46, 0xbb, 0x1c, 0xb2, 0xcd, 0x5a, 0xef, 0x9b, 0xb7, 0xf4, 0xf7, 0xee,
-  0xd3, 0x7e, 0xc4, 0x5f, 0xd5, 0x35, 0x78, 0x3b, 0xaf, 0x1b, 0x87, 0xa7,
-  0xa7, 0xdf, 0x1e, 0x4b, 0x00, 0xc8, 0xa1, 0x9a, 0x55, 0x59, 0xb8, 0x72,
-  0x5a, 0xb1, 0x70, 0x57, 0xd2, 0xde, 0x7c, 0xb6, 0x12, 0x9c, 0x71, 0x37,
-  0x49, 0xb2, 0xe4, 0x68, 0x84, 0xaa, 0xc1, 0x11, 0x2a, 0xe5, 0xd1, 0x2e,
-  0xb6, 0x89, 0xc5, 0x9f, 0x1a, 0xb2, 0x57, 0xc9, 0x50, 0xc9, 0x66, 0xc2,
-  0x9d, 0xdc, 0x3b, 0xd8, 0x8e, 0xd8, 0xb9, 0xcc, 0xac, 0x6e, 0x8a, 0x36,
-  0x65, 0x26, 0x68, 0x29, 0x3a, 0x42, 0x2f, 0xaa, 0xee, 0xdb, 0x1f, 0x93,
-  0x74, 0x2f, 0x83, 0xde, 0x57, 0xab, 0x6d, 0x3f, 0xc0, 0x96, 0x86, 0x44,
-  0xbb, 0xd4, 0x52, 0x3f, 0x30, 0x1d, 0x5b, 0x44, 0xbd, 0xf1, 0xe6, 0x12,
-  0xb6, 0x6c, 0x84, 0xe7, 0xbd, 0x3b, 0x78, 0x7b, 0xf4, 0xea, 0xbb, 0x83,
-  0x93, 0xf7, 0x47, 0xf4, 0x4a, 0x0a, 0x18, 0x77, 0x17, 0xc2, 0x87, 0x31,
-  0x2e, 0x52, 0xd4, 0xae, 0x2d, 0x49, 0x3c, 0xe8, 0x6f, 0x48, 0x78, 0x79,
-  0xd4, 0xe3, 0xb7, 0x76, 0xe5, 0x35, 0xa2, 0x0b, 0xfe, 0x6b, 0x4f, 0xfe,
-  0xda, 0xfb, 0x53, 0x6f, 0xab, 0x36, 0xe9, 0x96, 0x96, 0xcc, 0xf4, 0x72,
-  0x27, 0xf5, 0x9e, 0x38, 0x3c, 0x48, 0x72, 0x37, 0x64, 0x55, 0x7a, 0xe6,
-  0xa3, 0xb1, 0xbb, 0x8d, 0x9f, 0xdd, 0x9c, 0xdc, 0x87, 0x3a, 0x78, 0x8f,
-  0x5f, 0x7a, 0x05, 0x01, 0xa3, 0x07, 0xa0, 0xfb, 0xc4, 0x56, 0x4b, 0xda,
-  0xb0, 0x26, 0x92, 0x8f, 0x4b, 0x8e, 0x88, 0xdc, 0xec, 0xc9, 0x2f, 0xaf,
-  0x5e, 0x1f, 0x5c, 0x1c, 0xf1, 0x0b, 0xd6, 0xbd, 0xd5, 0x36, 0xb0, 0x34,
-  0x0a, 0x1e, 0xcf, 0xa6, 0xba, 0xa6, 0x5f, 0xf1, 0x84, 0x7a, 0x5b, 0xe2,
-  0xcb, 0x80, 0x53, 0xbd, 0x31, 0x2e, 0xe6, 0x69, 0x12, 0xb8, 0xed, 0xd3,
-  0xd4, 0x4b, 0x8b, 0x58, 0xd9, 0xec, 0xc9, 0x77, 0x3d, 0x67, 0xc1, 0xd5,
-  0xfa, 0xf0, 0xea, 0xae, 0x9c, 0x21, 0xc9, 0xa2, 0x95, 0x59, 0x2b, 0x21,
-  0x69, 0x7e, 0x7f, 0xd4, 0x59, 0x21, 0x16, 0xa7, 0x00, 0x6d, 0xdb, 0x6d,
-  0xbc, 0xe6, 0xc1, 0xb3, 0x8d, 0x29, 0xcf, 0x77, 0xf7, 0x9e, 0xfc, 0x09,
-  0xeb, 0xf9, 0xaa, 0xb7, 0x4d, 0x77, 0x43, 0xef, 0x4f, 0xdc, 0x75, 0x6a,
-  0x36, 0xce, 0x20, 0x88, 0x9c, 0xf5, 0x29, 0xa5, 0x28, 0x09, 0x97, 0xe1,
-  0x5d, 0x0f, 0xe0, 0x7d, 0xb0, 0xa0, 0x77, 0x92, 0x25, 0x66, 0x60, 0x38,
-  0x16, 0x3c, 0x80, 0xfd, 0x9a, 0x24, 0x57, 0x69, 0x96, 0xb9, 0x1a, 0xb9,
-  0xd2, 0x5d, 0x78, 0x7f, 0x0c, 0xe4, 0x5d, 0x99, 0xa3, 0x02, 0x08, 0x71,
-  0x9f, 0x8b, 0x7b, 0x4b, 0x24, 0x2b, 0x4b, 0x53, 0x71, 0x65, 0xcf, 0x5a,
-  0x92, 0xf1, 0x44, 0x6d, 0x3b, 0xa6, 0x8c, 0x40, 0x26, 0x20, 0xd6, 0x72,
-  0x0f, 0x41, 0x09, 0xd1, 0x06, 0x61, 0x90, 0x85, 0xdd, 0xd9, 0xf1, 0x84,
-  0x93, 0xcc, 0x5d, 0x6a, 0x4c, 0xa0, 0x95, 0xbb, 0xa5, 0xb7, 0xe3, 0x97,
-  0x06, 0xc8, 0x4c, 0x7c, 0x51, 0xca, 0x5a, 0x96, 0xce, 0x86, 0x04, 0x6f,
-  0xa3, 0x3e, 0x5b, 0xdf, 0xa7, 0x46, 0x3e, 0x1a, 0xa6, 0x21, 0x2a, 0xbd,
-  0xe8, 0xc7, 0xc4, 0x6a, 0xb2, 0xa4, 0x78, 0x30, 0xc0, 0xa2, 0xc3, 0x19,
-  0x85, 0x29, 0x06, 0x91, 0x0e, 0xfc, 0xce, 0x68, 0x34, 0xf2, 0x95, 0xb6,
-  0x79, 0x5b, 0xd4, 0x07, 0x85, 0x5a, 0x46, 0x01, 0x7e, 0x2c, 0xd6, 0x78,
-  0x13, 0xc2, 0x3c, 0x04, 0xea, 0x2d, 0x0d, 0xbc, 0x51, 0x3b, 0x81, 0x3b,
-  0x1a, 0x81, 0x8d, 0xa3, 0xaf, 0xdd, 0xf6, 0x0d, 0xb4, 0xe1, 0xa6, 0x6b,
-  0x13, 0x1e, 0x18, 0x9b, 0xd8, 0x1e, 0xb5, 0xc0, 0xa6, 0xe3, 0x53, 0xb9,
-  0x5b, 0x0b, 0xa6, 0x60, 0x0e, 0x20, 0x07, 0x9d, 0x48, 0xc6, 0xb1, 0x2c,
-  0x9a, 0x0e, 0x45, 0x4b, 0xad, 0x31, 0x93, 0xcb, 0xef, 0x00, 0x82, 0x20,
-  0xc5, 0x6a, 0x96, 0x05, 0x6b, 0x7a, 0xbc, 0xc6, 0x76, 0x83, 0x2c, 0x9d,
-  0xd8, 0xac, 0xed, 0x28, 0x96, 0x30, 0xeb, 0xcc, 0x90, 0xfd, 0x35, 0xcb,
-  0x51, 0xe1, 0x68, 0x4a, 0x4b, 0xe2, 0x21, 0xb1, 0x2d, 0x5f, 0xc0, 0xed,
-  0xa5, 0x93, 0xf7, 0xe6, 0x2a, 0x8e, 0x36, 0x1b, 0x0a, 0xa0, 0x8b, 0x25,
-  0x22, 0x1a, 0xf7, 0x50, 0x50, 0x8f, 0x87, 0xfc, 0xe5, 0x53, 0x6b, 0xd1,
-  0x39, 0xcb, 0x1b, 0x6b, 0xe3, 0x6f, 0xe5, 0x3a, 0xeb, 0xa2, 0x15, 0x15,
-  0xeb, 0xb2, 0x40, 0x67, 0x78, 0xbe, 0x17, 0xc5, 0x77, 0x5c, 0xf1, 0x3d,
-  0xe1, 0xf8, 0x4c, 0x44, 0x3a, 0xc0, 0x2a, 0x73, 0x12, 0xd8, 0x19, 0xdd,
-  0x0c, 0x95, 0x6a, 0x35, 0xa6, 0x89, 0xf9, 0xce, 0xbe, 0x15, 0x8e, 0x16,
-  0xb8, 0x5c, 0x33, 0xe8, 0xa5, 0xa8, 0x70, 0xcd, 0xf0, 0xa6, 0x2a, 0xa9,
-  0x9b, 0x7a, 0xce, 0x23, 0xdf, 0x42, 0x11, 0x60, 0x11, 0xe7, 0x11, 0x97,
-  0xc8, 0x76, 0x0e, 0x89, 0xab, 0xb0, 0xd5, 0x8a, 0xb3, 0x59, 0xd0, 0x89,
-  0xf3, 0x4f, 0xab, 0xf9, 0x89, 0xc3, 0x7b, 0xb3, 0x21, 0x80, 0x2e, 0x5c,
-  0x31, 0x5d, 0x51, 0xaf, 0xae, 0xae, 0xac, 0xf2, 0x4e, 0x63, 0x6a, 0xdd,
-  0x44, 0x76, 0xc2, 0xab, 0xc2, 0x51, 0xd0, 0xf7, 0xeb, 0x56, 0xf3, 0xc2,
-  0x6c, 0x3e, 0x66, 0x75, 0xa9, 0x11, 0xb3, 0xf9, 0x24, 0x65, 0xdf, 0x2a,
-  0x97, 0x74, 0x85, 0x04, 0x8d, 0xba, 0x0f, 0xf9, 0xf4, 0x7c, 0x03, 0x85,
-  0x13, 0x32, 0x0f, 0xc8, 0x60, 0x9b, 0x0e, 0x74, 0x3e, 0x1f, 0x81, 0xe2,
-  0x23, 0x51, 0xef, 0x5c, 0xa8, 0x95, 0x54, 0x06, 0x9c, 0xc4, 0x5e, 0xe5,
-  0xda, 0x88, 0x6a, 0xd6, 0x5e, 0x2e, 0xa8, 0x72, 0x9c, 0x29, 0x1f, 0xca,
-  0x6f, 0x13, 0x0f, 0x10, 0xe9, 0x0d, 0x8e, 0x1e, 0x65, 0x57, 0x4f, 0xbf,
-  0x63, 0x26, 0x0d, 0x07, 0xaf, 0xe3, 0x57, 0x98, 0x64, 0x63, 0x55, 0x46,
-  0x51, 0xd0, 0xa4, 0x98, 0x4a, 0xf2, 0x90, 0xc5, 0xcb, 0xd8, 0xd4, 0x6f,
-  0x6d, 0x2d, 0x0a, 0x8d, 0x08, 0xc4, 0x4b, 0xa0, 0x9a, 0x48, 0xc1, 0x11,
-  0x43, 0xca, 0x77, 0x31, 0x7a, 0xde, 0xff, 0x6b, 0xb3, 0xec, 0xb9, 0x4d,
-  0xea, 0x59, 0x4d, 0x02, 0x10, 0x01, 0x68, 0x80, 0x05, 0x3a, 0xe7, 0xc2,
-  0x3f, 0x98, 0xc7, 0x1c, 0xc4, 0x92, 0x4b, 0x74, 0x00, 0xb6, 0x0c, 0x44,
-  0x0d, 0x63, 0x5a, 0x83, 0xa7, 0xb6, 0x8e, 0x9f, 0x8b, 0xd6, 0x10, 0x5a,
-  0x63, 0x21, 0x05, 0xcd, 0x10, 0x95, 0x20, 0x9a, 0x7b, 0x1a, 0x96, 0x8e,
-  0x5e, 0x8f, 0x5d, 0x30, 0xa9, 0x9d, 0xd1, 0xc7, 0x8e, 0xec, 0xd9, 0xf9,
-  0xe9, 0xd7, 0xe7, 0x47, 0xe3, 0x71, 0xf4, 0xf6, 0xe8, 0x42, 0xd4, 0xfe,
-  0x0b, 0x89, 0xc2, 0xbb, 0x62, 0xcd, 0x3d, 0x82, 0xdb, 0xc1, 0xc0, 0x9c,
-  0x2c, 0xfa, 0xc4, 0x6c, 0x0a, 0x48, 0x7f, 0xca, 0xd9, 0xa5, 0x06, 0x51,
-  0x0e, 0xfa, 0xfc, 0x5c, 0x83, 0xf7, 0xae, 0x61, 0xf8, 0x47, 0x78, 0x13,
-  0x7c, 0x93, 0xce, 0x8e, 0xee, 0x2d, 0xaa, 0x90, 0x91, 0x25, 0xe0, 0xc9,
-  0xa5, 0x1f, 0x7a, 0x6b, 0x3a, 0xdf, 0xde, 0xf4, 0x13, 0xd3, 0xfb, 0x7d,
-  0x74, 0x91, 0x57, 0x5c, 0x14, 0x9c, 0x7f, 0x3d, 0x37, 0xfa, 0xf8, 0x7d,
-  0xf4, 0x03, 0xb5, 0x39, 0xa3, 0x55, 0x67, 0x63, 0x32, 0x5d, 0xb8, 0x63,
-  0x14, 0x3e, 0xf5, 0xf5, 0x85, 0x50, 0xad, 0x34, 0xac, 0xf7, 0xbe, 0x2a,
-  0x8a, 0x51, 0x77, 0x79, 0x9e, 0x5a, 0x7d, 0x1d, 0xc1, 0xcd, 0xd4, 0xf0,
-  0x3a, 0xd7, 0xb3, 0x56, 0x34, 0x8e, 0xa2, 0x93, 0xe4, 0xb2, 0x82, 0x40,
-  0xc2, 0xdd, 0x51, 0x73, 0x3b, 0x0c, 0x04, 0xbd, 0xcb, 0x05, 0xd0, 0xe8,
-  0xd7, 0x27, 0x9f, 0x3f, 0xdf, 0xf9, 0x5c, 0x7e, 0xb5, 0x7f, 0x5f, 0x3c,
-  0xdd, 0x51, 0x40, 0x75, 0xfa, 0xeb, 0xe9, 0xfe, 0xd3, 0xdd, 0x7d, 0xc6,
-  0x79, 0xdc, 0xd9, 0xdf, 0xa1, 0xff, 0x7f, 0xaa, 0x9f, 0x30, 0x98, 0xe5,
-  0x8b, 0xbd, 0xcf, 0x3f, 0x43, 0x60, 0x0c, 0xd3, 0xc7, 0x9c, 0x3a, 0x19,
-  0x56, 0xf9, 0x10, 0x70, 0x53, 0x10, 0x82, 0x7e, 0x5f, 0x37, 0x4a, 0xb2,
-  0xa7, 0x7d, 0xca, 0x7e, 0xd5, 0x2b, 0x51, 0x6f, 0xe6, 0x09, 0x73, 0x00,
-  0x35, 0xb0, 0x0a, 0x04, 0x8e, 0x05, 0x8b, 0x4b, 0x06, 0xb7, 0x4e, 0x43,
-  0xdf, 0xae, 0xf0, 0x37, 0xf0, 0xdb, 0x6a, 0xef, 0x48, 0xcc, 0x79, 0x00,
-  0x15, 0xf7, 0x4b, 0xbb, 0xb6, 0x9c, 0xf2, 0x0d, 0x00, 0xc0, 0xe9, 0x56,
-  0xe9, 0x7b, 0x53, 0x2b, 0x0a, 0xed, 0x9e, 0x62, 0x89, 0x70, 0x21, 0xe9,
-  0x09, 0x97, 0x12, 0xb9, 0xfc, 0x4b, 0xfb, 0x13, 0x23, 0x16, 0xbf, 0xa5,
-  0xd4, 0x10, 0xb5, 0x7b, 0x73, 0x69, 0x09, 0x1d, 0x7d, 0xd5, 0x88, 0x67,
-  0xc3, 0x6f, 0xbf, 0x5f, 0x29, 0xe6, 0x6a, 0xfa, 0x90, 0x4b, 0xe7, 0x92,
-  0x1a, 0xbb, 0x1d, 0x53, 0x6e, 0x35, 0xa7, 0x64, 0xf4, 0x0b, 0x9a, 0xf3,
-  0x33, 0x02, 0x05, 0xbb, 0x9d, 0x1b, 0x06, 0x9b, 0x93, 0x4a, 0x8c, 0x9b,
-  0xad, 0x86, 0x03, 0x18, 0xb5, 0x1b, 0x4f, 0x5e, 0x75, 0x24, 0x3b, 0x94,
-  0x37, 0x54, 0xfc, 0x74, 0x29, 0x72, 0x74, 0x0a, 0x6f, 0x73, 0xdc, 0xf6,
-  0xf2, 0xbc, 0x51, 0x76, 0xab, 0x2b, 0xa6, 0xc6, 0xa0, 0x3f, 0xed, 0x03,
-  0xe7, 0xc9, 0x1d, 0xba, 0x07, 0xa7, 0xe6, 0xc3, 0xec, 0x5d, 0x8d, 0xe1,
-  0x4d, 0x17, 0xb6, 0xde, 0x75, 0x24, 0xfd, 0x73, 0x88, 0x64, 0x77, 0xcd,
-  0x85, 0x17, 0x11, 0xea, 0x4b, 0x6b, 0x85, 0x0c, 0x46, 0x2d, 0x65, 0x98,
-  0xff, 0x2d, 0x63, 0x61, 0xc3, 0xdf, 0xb9, 0x08, 0x2e, 0xdc, 0x6b, 0x5a,
-  0x2e, 0x34, 0x16, 0xca, 0x9f, 0x87, 0x69, 0xb5, 0x8e, 0xdb, 0x4d, 0xe2,
-  0xa2, 0x06, 0xa8, 0xbf, 0x21, 0x65, 0x25, 0xe8, 0xa6, 0xa5, 0x9b, 0x03,
-  0x99, 0x8f, 0x22, 0x52, 0xfc, 0xcb, 0xc6, 0xc6, 0xf8, 0xec, 0xe8, 0xe8,
-  0x75, 0x74, 0x72, 0xfc, 0xf6, 0xf8, 0x22, 0x10, 0xc8, 0xdd, 0x45, 0x62,
-  0x46, 0x57, 0x2b, 0x3e, 0xd5, 0x58, 0x0e, 0x0f, 0xdf, 0x2c, 0xfd, 0xd9,
-  0x55, 0xbe, 0x48, 0x34, 0xa1, 0x62, 0xde, 0x7c, 0x0f, 0xaa, 0x37, 0x30,
-  0x9e, 0x46, 0xd1, 0x57, 0x41, 0x8c, 0x64, 0x54, 0x92, 0x70, 0x33, 0x75,
-  0x95, 0x97, 0x87, 0x7f, 0xd6, 0x90, 0x8d, 0xba, 0xe4, 0xa4, 0x28, 0xb4,
-  0x2e, 0xbb, 0x47, 0xc3, 0x5c, 0x1b, 0xa3, 0xe2, 0xb5, 0x4d, 0x24, 0xca,
-  0x3a, 0xb0, 0xd0, 0x21, 0x82, 0xef, 0x2e, 0x01, 0xf0, 0xc1, 0x22, 0x95,
-  0xb4, 0xcb, 0x30, 0xbc, 0xd8, 0x15, 0xa3, 0xbd, 0xc8, 0x85, 0x8f, 0x87,
-  0x3d, 0x86, 0x55, 0xc6, 0x2d, 0xb6, 0xd6, 0xfa, 0x0a, 0xcb, 0x57, 0x3f,
-  0xd9, 0x71, 0x99, 0x0b, 0x4b, 0xf0, 0x1c, 0x15, 0xf5, 0xb9, 0xb3, 0xdd,
-  0x88, 0xe4, 0x91, 0x15, 0x4b, 0xf5, 0xc5, 0x2a, 0x6b, 0x5d, 0x77, 0x7f,
-  0x96, 0x77, 0x69, 0xfe, 0xcf, 0x77, 0x70, 0xbd, 0x5d, 0xc6, 0xc5, 0x90,
-  0x24, 0xaf, 0xfb, 0xa1, 0x59, 0x57, 0x85, 0x22, 0x34, 0xf4, 0x58, 0x4c,
-  0x3f, 0x89, 0xaf, 0x7b, 0xdb, 0x90, 0x16, 0x7d, 0xfa, 0x49, 0x0e, 0x17,
-  0xe5, 0x5c, 0x0f, 0x00, 0x4f, 0x9d, 0x93, 0x7e, 0xcd, 0xd8, 0xe9, 0x65,
-  0x1d, 0x8f, 0x50, 0x6c, 0xbb, 0xe8, 0x79, 0x14, 0x27, 0x23, 0x80, 0xad,
-  0x72, 0xab, 0x29, 0x4f, 0x53, 0xe7, 0xd2, 0x16, 0xad, 0x17, 0xd1, 0xee,
-  0xe7, 0x3c, 0x8f, 0x4f, 0x9b, 0xcf, 0x9b, 0xbc, 0x98, 0xba, 0xf4, 0x62,
-  0xa8, 0x0b, 0x41, 0xae, 0xa9, 0x64, 0x48, 0xa0, 0x6c, 0x93, 0xac, 0xae,
-  0xc5, 0xc7, 0x22, 0x7e, 0x8f, 0xf5, 0x13, 0x75, 0xad, 0xc3, 0x32, 0x05,
-  0x5f, 0xb7, 0x48, 0x48, 0x7c, 0xd7, 0xe8, 0xba, 0xb0, 0xad, 0x55, 0xe2,
-  0xf7, 0xfa, 0x85, 0xcb, 0x45, 0x95, 0x65, 0x60, 0xeb, 0x08, 0xd1, 0xda,
-  0x5d, 0x3a, 0x83, 0x54, 0xed, 0xb1, 0xea, 0x68, 0xbf, 0x84, 0xf8, 0x24,
-  0x6c, 0x1a, 0xee, 0x4b, 0xf8, 0x3d, 0xdd, 0xc8, 0x54, 0x80, 0xe1, 0x65,
-  0xcd, 0x61, 0x5c, 0xd8, 0x84, 0xfc, 0xc0, 0xa9, 0xce, 0xde, 0x45, 0xc0,
-  0xaa, 0x14, 0xb3, 0xe6, 0x9e, 0xef, 0x85, 0xd3, 0x06, 0xaa, 0x6a, 0x6e,
-  0x76, 0x85, 0xb7, 0x8e, 0xb0, 0xeb, 0x73, 0x66, 0xd0, 0x96, 0x60, 0xda,
-  0xbb, 0x3b, 0x24, 0xbf, 0xce, 0xf3, 0x5a, 0x15, 0x74, 0x22, 0xaa, 0xb6,
-  0x52, 0x8a, 0x69, 0x0d, 0xb1, 0x3a, 0xbb, 0x3b, 0xdf, 0xae, 0x5f, 0x75,
-  0xe0, 0xf0, 0x3f, 0xf8, 0xf2, 0xde, 0xd3, 0x07, 0x36, 0xed, 0xb4, 0x80,
-  0x5e, 0x9e, 0x58, 0x38, 0x24, 0x04, 0x41, 0xef, 0x84, 0x69, 0x6d, 0x1b,
-  0x11, 0x7e, 0x72, 0x15, 0xf3, 0xf0, 0x1f, 0x1a, 0xbd, 0xa5, 0x87, 0x34,
-  0x86, 0xf2, 0x56, 0x03, 0xb4, 0xe5, 0xcb, 0x92, 0x2d, 0x64, 0x4b, 0x20,
-  0xf5, 0x79, 0x35, 0xd6, 0x65, 0x96, 0x0b, 0x4c, 0x43, 0xf0, 0xb6, 0x70,
-  0xce, 0x41, 0x9d, 0x49, 0x18, 0xf5, 0x14, 0xc9, 0xd5, 0x4a, 0x40, 0x31,
-  0x72, 0x51, 0xfb, 0x19, 0xd8, 0x5a, 0xcf, 0x2b, 0xf1, 0x66, 0x8e, 0x24,
-  0x12, 0x7a, 0x02, 0xe3, 0x9d, 0xc6, 0x26, 0xb2, 0x8a, 0xc8, 0xd1, 0xbc,
-  0x18, 0xd8, 0x3e, 0x3b, 0x65, 0x87, 0x18, 0xb8, 0xc1, 0x46, 0xd4, 0xac,
-  0xa0, 0x2d, 0xc8, 0x8d, 0x23, 0x24, 0xfd, 0x0a, 0xa1, 0x38, 0x66, 0xcf,
-  0x19, 0x66, 0xec, 0x18, 0xab, 0xc4, 0x43, 0x80, 0x06, 0x06, 0x4a, 0xb5,
-  0x68, 0xc9, 0x75, 0xc5, 0x1c, 0xbf, 0x34, 0x04, 0x4d, 0x41, 0xdb, 0x67,
-  0xbb, 0xff, 0xe1, 0xe9, 0xbb, 0x37, 0xc7, 0x5f, 0x3b, 0x54, 0x23, 0x61,
-  0xe2, 0x35, 0xb4, 0x0d, 0xb1, 0x24, 0x87, 0x4e, 0x6f, 0xad, 0xc9, 0xa8,
-  0x81, 0xb8, 0xc4, 0x9e, 0x3e, 0x84, 0x1f, 0x80, 0x81, 0x64, 0x4f, 0xd8,
-  0x56, 0x2e, 0x50, 0x20, 0xe5, 0x96, 0xb7, 0x3c, 0x34, 0x50, 0xeb, 0x24,
-  0x61, 0x23, 0x2e, 0xaa, 0xd5, 0xd2, 0xc5, 0x13, 0x06, 0x35, 0x1d, 0x15,
-  0x87, 0xdb, 0xb2, 0xd2, 0x57, 0x4b, 0x61, 0x4d, 0x9a, 0x5b, 0x5a, 0x33,
-  0xec, 0xca, 0x1d, 0xc0, 0x96, 0x05, 0x85, 0x55, 0xd1, 0x0b, 0xa0, 0x15,
-  0xa2, 0x33, 0x67, 0xf4, 0xce, 0x30, 0x74, 0xde, 0x5c, 0x39, 0x33, 0xd4,
-  0xc5, 0x0c, 0x6b, 0x9f, 0x2f, 0x44, 0x33, 0xe3, 0x79, 0xa3, 0xb8, 0xb4,
-  0x8b, 0xcb, 0x71, 0x81, 0xc0, 0xde, 0x55, 0x54, 0xba, 0x6a, 0xd9, 0x2e,
-  0x54, 0xc9, 0x32, 0x5a, 0x63, 0x78, 0x2d, 0xe1, 0xf6, 0xc4, 0x27, 0xaf,
-  0xd8, 0x43, 0xb3, 0xcf, 0x68, 0xf4, 0x0b, 0xc1, 0x96, 0x0b, 0x33, 0x51,
-  0x95, 0x4b, 0x7a, 0xd4, 0xf8, 0xe3, 0xcb, 0x20, 0xb9, 0x4d, 0x42, 0x06,
-  0x8d, 0xe8, 0xc4, 0x5c, 0xcc, 0xb6, 0x96, 0xfe, 0xef, 0xfa, 0xc3, 0xf2,
-  0x7e, 0x31, 0xc9, 0xe7, 0x96, 0x83, 0xe1, 0xb0, 0x24, 0xec, 0xa1, 0xb0,
-  0xc6, 0x5a, 0x24, 0x4e, 0xdb, 0x2a, 0xb0, 0x50, 0xfa, 0xb0, 0x29, 0x3f,
-  0x7e, 0xa9, 0x53, 0x04, 0x4f, 0x91, 0xcd, 0x02, 0x30, 0x3f, 0xcc, 0xe3,
-  0x93, 0x6c, 0x3a, 0xcf, 0x95, 0xaa, 0x39, 0xd7, 0x1c, 0x2b, 0x55, 0x9f,
-  0x3a, 0x3b, 0xff, 0xf2, 0x15, 0x1b, 0x3b, 0x50, 0x83, 0x84, 0xc4, 0x9d,
-  0x9e, 0x82, 0x6b, 0x60, 0x82, 0xfc, 0xb6, 0x7c, 0xa1, 0x01, 0xfa, 0x01,
-  0xd4, 0x8d, 0x14, 0x2d, 0xa1, 0xa1, 0xfe, 0x24, 0xb6, 0x45, 0x71, 0x01,
-  0xfe, 0xd9, 0x3a, 0xb7, 0x47, 0x1b, 0x4b, 0x4f, 0xf4, 0x14, 0x17, 0x57,
-  0x0a, 0xd8, 0xa7, 0x4e, 0x35, 0x28, 0x89, 0xae, 0x94, 0x8c, 0xb3, 0x51,
-  0xb2, 0x50, 0xe2, 0x02, 0x68, 0x20, 0x3e, 0xad, 0x24, 0xbd, 0x50, 0x93,
-  0xaf, 0xc4, 0x3a, 0xe9, 0x08, 0x31, 0xe0, 0x38, 0xbf, 0x73, 0x61, 0x29,
-  0xb1, 0xbf, 0xcb, 0xac, 0xc2, 0x85, 0x37, 0xd5, 0xea, 0x65, 0x16, 0xbc,
-  0xc6, 0xf6, 0x3c, 0x68, 0xc2, 0x89, 0xda, 0x50, 0xa4, 0x2b, 0xc8, 0x12,
-  0x0c, 0x71, 0x83, 0x3c, 0xa0, 0xa4, 0xf4, 0x4d, 0xc8, 0xf7, 0xaf, 0xb4,
-  0xb4, 0x15, 0x9d, 0x67, 0x05, 0x4d, 0x51, 0x24, 0xc1, 0xcf, 0x77, 0xd4,
-  0x12, 0x57, 0x69, 0xe4, 0x6a, 0x19, 0x1d, 0x9c, 0x1f, 0x91, 0x64, 0x7b,
-  0x95, 0x01, 0xae, 0x22, 0xab, 0x2c, 0xbf, 0x2e, 0xc9, 0xb4, 0x96, 0x56,
-  0x66, 0xe7, 0x83, 0x3b, 0xbc, 0x0b, 0xde, 0x64, 0x62, 0xd2, 0x18, 0x01,
-  0x49, 0xe5, 0xf6, 0x24, 0x37, 0x35, 0x5c, 0x61, 0x70, 0x1d, 0x46, 0x4c,
-  0x10, 0x92, 0x62, 0x6f, 0x09, 0x75, 0x95, 0x1b, 0xa6, 0xf0, 0x59, 0x8b,
-  0xad, 0x87, 0x60, 0xc2, 0xb6, 0xd6, 0x38, 0xd5, 0x3e, 0x2b, 0xe1, 0xaf,
-  0x06, 0xd1, 0xa9, 0x7d, 0xd5, 0x3c, 0xa0, 0x9e, 0x9c, 0x06, 0xdd, 0xd6,
-  0xa3, 0xbf, 0xe2, 0x9e, 0x61, 0x59, 0xa4, 0x29, 0x17, 0x24, 0x2e, 0xd8,
-  0x5e, 0x0c, 0xd9, 0xb3, 0x40, 0xf8, 0x95, 0x6c, 0x40, 0x0e, 0xb7, 0x16,
-  0x1b, 0xb5, 0x82, 0x02, 0xa9, 0x89, 0x47, 0xd4, 0x81, 0x99, 0x9e, 0x55,
-  0xa6, 0x0a, 0x8e, 0x1c, 0x9e, 0x30, 0x70, 0x92, 0x54, 0xd1, 0xae, 0xf1,
-  0xa7, 0x4e, 0x33, 0xef, 0xef, 0xdc, 0x6c, 0xfd, 0x18, 0xdc, 0x97, 0xfc,
-  0xd1, 0x2b, 0x07, 0x74, 0xc7, 0xa3, 0x18, 0x71, 0x47, 0x60, 0xa9, 0x70,
-  0x9f, 0xf2, 0x2f, 0xf8, 0x18, 0x01, 0x70, 0x06, 0x7c, 0x0a, 0xae, 0xe3,
-  0xd0, 0xb4, 0x72, 0x75, 0xaf, 0xfa, 0x81, 0x88, 0x8f, 0x0f, 0x1c, 0x7a,
-  0x12, 0x8a, 0xc6, 0xc3, 0x6f, 0xb7, 0xad, 0x1c, 0x2e, 0x9b, 0x72, 0x38,
-  0x97, 0xd8, 0x0e, 0x7c, 0x99, 0xd4, 0xea, 0xe7, 0xba, 0xa4, 0xa1, 0xde,
-  0xb0, 0x47, 0x6b, 0xd1, 0x9f, 0xcf, 0x3d, 0xc3, 0xb7, 0xc7, 0x78, 0x57,
-  0x91, 0x5f, 0xe7, 0x05, 0x26, 0xe5, 0x5d, 0x5c, 0x98, 0xe3, 0xbe, 0x96,
-  0xed, 0xc0, 0x95, 0xcd, 0x38, 0x19, 0xc8, 0x61, 0x7c, 0x21, 0x63, 0x04,
-  0xf1, 0x02, 0xb7, 0x69, 0x69, 0x7e, 0x48, 0xa2, 0xed, 0xa9, 0x84, 0x47,
-  0x54, 0x82, 0x4d, 0x90, 0x54, 0xd3, 0x60, 0x29, 0x93, 0xe9, 0x75, 0x2e,
-  0xe1, 0xb5, 0xb4, 0x68, 0x41, 0xd2, 0x67, 0x2f, 0xfa, 0x4f, 0xa5, 0x81,
-  0x6f, 0x7d, 0xfe, 0x1e, 0x13, 0xc2, 0x48, 0x20, 0x29, 0x47, 0x9e, 0x20,
-  0x8e, 0x7e, 0xb8, 0x38, 0x3f, 0x88, 0xbe, 0x39, 0x3a, 0x78, 0x7d, 0x74,
-  0x3e, 0x6e, 0x5c, 0xfa, 0x1a, 0x09, 0x22, 0x12, 0x1a, 0xdb, 0x83, 0x21,
-  0x1a, 0x1b, 0x06, 0x81, 0x86, 0xf0, 0x1b, 0xd7, 0x23, 0xe2, 0xe1, 0x83,
-  0x44, 0xe7, 0x83, 0x15, 0x22, 0x71, 0x1c, 0x00, 0x00, 0xb9, 0x04, 0xb3,
-  0x71, 0x6d, 0x4c, 0x89, 0x43, 0x71, 0x3c, 0x83, 0x59, 0xcf, 0xc3, 0xe4,
-  0x19, 0x0f, 0xdb, 0xe7, 0x2f, 0x93, 0x59, 0x6e, 0x79, 0x81, 0xf5, 0x9d,
-  0xfb, 0xc6, 0xa7, 0x7e, 0x07, 0x6c, 0x4b, 0x2f, 0x19, 0x35, 0x20, 0xf6,
-  0x7e, 0x18, 0x52, 0xbf, 0x43, 0x5a, 0xfc, 0x21, 0xe3, 0x3a, 0xde, 0x27,
-  0x65, 0xaf, 0x61, 0x0d, 0xac, 0x77, 0xbf, 0x21, 0xd5, 0x9c, 0x5a, 0x27,
-  0xe9, 0x9b, 0xce, 0x96, 0xf8, 0x74, 0x71, 0xc1, 0xe7, 0x96, 0x06, 0x81,
-  0x4b, 0x35, 0x10, 0x92, 0xf5, 0x04, 0xb5, 0x32, 0x5d, 0x34, 0x56, 0xc9,
-  0xab, 0x99, 0x1a, 0x1a, 0x86, 0x81, 0xe8, 0x14, 0x20, 0xeb, 0xd0, 0xd9,
-  0x93, 0x4b, 0x7d, 0x2e, 0x58, 0xcd, 0x62, 0x31, 0xa3, 0x61, 0xe9, 0x43,
-  0xe1, 0xfd, 0x00, 0x5f, 0x88, 0x86, 0xe3, 0x97, 0x35, 0x57, 0xa9, 0xda,
-  0x45, 0x15, 0xc6, 0x5b, 0x9b, 0xe3, 0x31, 0x38, 0x9a, 0xb7, 0x28, 0x7e,
-  0xee, 0xd2, 0x2a, 0x8c, 0xe8, 0xbb, 0x12, 0x10, 0xc6, 0x4a, 0x3d, 0x4c,
-  0x9d, 0x52, 0xaa, 0x54, 0xea, 0x15, 0x0a, 0x63, 0x0b, 0xd2, 0x82, 0x42,
-  0x62, 0x46, 0x39, 0x34, 0x04, 0x92, 0xbb, 0xe7, 0x92, 0xe8, 0x9b, 0xbc,
-  0xc4, 0x5d, 0xd0, 0x7e, 0x9c, 0x2f, 0xf9, 0xae, 0xe5, 0xc7, 0x1b, 0xea,
-  0xea, 0x72, 0x78, 0xb1, 0x80, 0x57, 0x06, 0xfb, 0x3a, 0x3b, 0xb8, 0xf8,
-  0x06, 0x8e, 0x56, 0x90, 0xf0, 0x6b, 0x80, 0xa7, 0x98, 0x7b, 0xad, 0x9d,
-  0x9d, 0xe5, 0x14, 0x38, 0x91, 0x7f, 0x0d, 0xa3, 0xd1, 0xe4, 0x49, 0x38,
-  0xf2, 0x52, 0x89, 0x49, 0x9a, 0x4b, 0x79, 0x58, 0xf0, 0xe8, 0x5a, 0x89,
-  0x3e, 0x44, 0xc1, 0xbb, 0xd4, 0x3b, 0x17, 0x7a, 0xd9, 0x97, 0x9c, 0xf8,
-  0xbe, 0xcc, 0x09, 0x44, 0xcf, 0xc2, 0x1c, 0x6b, 0x3c, 0x21, 0x08, 0x31,
-  0xbe, 0xe0, 0xa4, 0x67, 0xf1, 0x45, 0xcd, 0xf2, 0x6e, 0x08, 0xc4, 0xe0,
-  0x48, 0x7f, 0xb9, 0xb8, 0x1f, 0xb5, 0xb1, 0x78, 0xa2, 0xaf, 0x56, 0x55,
-  0x9d, 0xad, 0x34, 0xa0, 0x90, 0x9d, 0x64, 0x59, 0xe4, 0x79, 0x15, 0x8c,
-  0x01, 0xd2, 0x4f, 0x5c, 0xe9, 0x89, 0x16, 0xac, 0x4b, 0x19, 0x0b, 0x37,
-  0x95, 0xa9, 0xdc, 0x1d, 0x0a, 0x86, 0xf1, 0xa4, 0xcc, 0xe7, 0xab, 0x2a,
-  0x08, 0xc4, 0xfe, 0x65, 0x63, 0x0e, 0x06, 0xbd, 0x79, 0x3c, 0x32, 0xdc,
-  0xcf, 0x4c, 0xd0, 0xea, 0x48, 0xd3, 0x27, 0xf1, 0x12, 0x7e, 0xc7, 0x22,
-  0xcf, 0xea, 0x75, 0xe4, 0x10, 0xf3, 0xbd, 0xb5, 0xb1, 0x31, 0xb6, 0xcd,
-  0x66, 0xe4, 0xd7, 0xf6, 0xa6, 0x7f, 0x0f, 0x69, 0x92, 0xc7, 0x20, 0x7e,
-  0x83, 0x29, 0xfd, 0x62, 0x78, 0x70, 0x89, 0xec, 0x29, 0x58, 0xb8, 0xec,
-  0x71, 0x5a, 0xd6, 0x27, 0x85, 0xaf, 0x9c, 0xe7, 0xc2, 0x52, 0xcd, 0x2e,
-  0x72, 0xc3, 0xf4, 0x57, 0xcf, 0x9d, 0x27, 0x88, 0x5a, 0x62, 0x7c, 0x27,
-  0xd8, 0x34, 0x5f, 0x02, 0x56, 0x74, 0xd8, 0x45, 0xe6, 0xf2, 0x20, 0xb7,
-  0xff, 0x6b, 0x3b, 0x1a, 0x44, 0x5a, 0x0f, 0xbe, 0x03, 0xef, 0xe8, 0xff,
-  0x42, 0x0c, 0x96, 0x22, 0xfd, 0x72, 0x9b, 0xa3, 0x3a, 0x96, 0xec, 0x88,
-  0x54, 0xa8, 0xeb, 0x62, 0xea, 0xa9, 0x9f, 0xa4, 0x83, 0xe4, 0x8e, 0xf5,
-  0x17, 0xd3, 0x11, 0x14, 0x39, 0x44, 0xea, 0xfe, 0x3a, 0x2c, 0x26, 0x20,
-  0x6f, 0x5c, 0x3a, 0xab, 0x1e, 0x97, 0xe0, 0x94, 0x7a, 0x94, 0x22, 0xd6,
-  0xa3, 0x1c, 0x93, 0x79, 0x50, 0x25, 0xb9, 0xde, 0xe9, 0xed, 0x65, 0x54,
-  0xe6, 0xf2, 0xd3, 0xf2, 0x8f, 0x34, 0xc6, 0x4b, 0xc9, 0x3f, 0x28, 0xf3,
-  0x17, 0xd4, 0xc7, 0xb5, 0xe0, 0x53, 0x09, 0xac, 0x33, 0xcf, 0xa4, 0x0d,
-  0xd2, 0xa4, 0x00, 0x76, 0x5c, 0x02, 0xe1, 0x52, 0x41, 0x48, 0x38, 0xa8,
-  0x8c, 0xe1, 0x8c, 0x25, 0x7f, 0x9b, 0x0b, 0x38, 0x9a, 0x26, 0x63, 0x57,
-  0xaa, 0x65, 0x74, 0x6c, 0x84, 0xe5, 0xb4, 0x65, 0xf8, 0x7a, 0xf7, 0x23,
-  0x1f, 0x1f, 0x4e, 0xba, 0xbb, 0x98, 0x21, 0xd3, 0xbc, 0x48, 0x60, 0x53,
-  0xd2, 0x12, 0xb0, 0x12, 0xc7, 0x11, 0xc6, 0xa6, 0xf8, 0xe0, 0xcd, 0x2b,
-  0x4e, 0xf8, 0x50, 0x93, 0x94, 0xc2, 0x9a, 0xc0, 0xfe, 0x75, 0x9d, 0x6a,
-  0x88, 0xa9, 0xac, 0x7a, 0xbd, 0xc0, 0x26, 0x2c, 0x7c, 0x1c, 0x5d, 0xe0,
-  0x1d, 0xac, 0x2e, 0x06, 0x62, 0xd4, 0x3e, 0x30, 0x23, 0x07, 0xb0, 0xaa,
-  0x97, 0xc8, 0x71, 0x98, 0x5e, 0x2e, 0x01, 0x19, 0x2e, 0xec, 0xf9, 0x13,
-  0x7b, 0x0f, 0xbb, 0xe4, 0x78, 0xd6, 0x2c, 0x92, 0x5c, 0x12, 0x45, 0x8d,
-  0xe3, 0x0b, 0x65, 0x6f, 0x17, 0x8a, 0xa9, 0x84, 0x6f, 0x00, 0xb2, 0xd4,
-  0x5a, 0x30, 0xe8, 0xb4, 0xe6, 0xe2, 0x6f, 0x0d, 0x74, 0x95, 0x5c, 0xf2,
-  0xbd, 0x7a, 0x9b, 0x45, 0x2e, 0x0c, 0xfc, 0x4e, 0xb5, 0x42, 0x72, 0x92,
-  0xd0, 0x5d, 0x56, 0xc5, 0x6a, 0x5a, 0x43, 0xeb, 0x03, 0x45, 0xd4, 0xbc,
-  0xf4, 0x6e, 0x8d, 0xf3, 0x50, 0xb7, 0x3f, 0x3e, 0x53, 0xf5, 0x5e, 0xb4,
-  0x0f, 0x1e, 0xd9, 0x66, 0x5c, 0xcb, 0x77, 0x71, 0x35, 0x46, 0xc3, 0x7e,
-  0xb7, 0x1c, 0x95, 0x0d, 0xcf, 0x5c, 0x72, 0x7d, 0xa3, 0x52, 0x3c, 0x27,
-  0x2a, 0x04, 0x77, 0xaf, 0x0a, 0x62, 0x10, 0x3c, 0x8a, 0x48, 0x71, 0x18,
-  0x21, 0xd6, 0xb0, 0xc9, 0x72, 0xc3, 0x61, 0x25, 0xd2, 0x90, 0x86, 0x1a,
-  0xb5, 0x2a, 0x8e, 0xe0, 0x6d, 0x5a, 0x48, 0xab, 0x14, 0xe4, 0x4a, 0x64,
-  0x95, 0x1e, 0x6f, 0xb1, 0x11, 0xb2, 0x0a, 0xb4, 0x26, 0x27, 0x1f, 0x2a,
-  0x6e, 0x9c, 0xae, 0xdf, 0x28, 0x7a, 0xad, 0x87, 0x42, 0x7b, 0x68, 0x8a,
-  0x13, 0xed, 0xbb, 0xf1, 0x4c, 0x50, 0x51, 0x5a, 0x74, 0xf4, 0xda, 0x6c,
-  0xaa, 0x60, 0x39, 0x58, 0x1b, 0xd6, 0x6c, 0x6c, 0x93, 0x68, 0x5d, 0xad,
-  0x0b, 0x1a, 0x02, 0xcf, 0xb8, 0x3f, 0x4f, 0x76, 0xfa, 0x41, 0x8d, 0xaf,
-  0x4d, 0x89, 0xff, 0xcf, 0xa1, 0xfd, 0x38, 0xdc, 0x42, 0xb1, 0x5e, 0x70,
-  0x9c, 0xdb, 0x56, 0xc7, 0x50, 0xa8, 0x89, 0x5f, 0x3a, 0x98, 0xdd, 0x17,
-  0x7b, 0xa3, 0xdd, 0xe7, 0x9f, 0x8f, 0x76, 0x46, 0xbb, 0x3b, 0xcc, 0x5f,
-  0x78, 0x28, 0xc1, 0xe0, 0x64, 0x5d, 0x3a, 0xba, 0xaa, 0xbd, 0xd7, 0xee,
-  0xf3, 0xdd, 0xd1, 0xc5, 0xf7, 0xa7, 0xe7, 0xdf, 0x46, 0xc7, 0xef, 0x2e,
-  0x8e, 0xce, 0xdf, 0x1c, 0x1c, 0x7e, 0x2a, 0x76, 0x7f, 0x68, 0xb6, 0x0e,
-  0xca, 0x5c, 0x27, 0x7e, 0x61, 0xda, 0xb6, 0x41, 0xbf, 0x66, 0x49, 0x75,
-  0xbd, 0xb3, 0xbf, 0xfb, 0x20, 0x3a, 0x75, 0x87, 0x79, 0xd0, 0xbf, 0x6f,
-  0x93, 0xda, 0xe5, 0x49, 0xad, 0x6f, 0xc5, 0xa1, 0x34, 0x8e, 0x25, 0xcc,
-  0xca, 0x85, 0xe8, 0x82, 0xcd, 0xa3, 0x8a, 0x12, 0xc0, 0x59, 0x95, 0xb1,
-  0x4f, 0x04, 0x07, 0x57, 0x32, 0x6d, 0x15, 0x6f, 0x46, 0xc3, 0xd1, 0x95,
-  0xe7, 0x6e, 0x48, 0x49, 0xe9, 0x4a, 0xcd, 0x29, 0x82, 0x6c, 0x3b, 0x83,
-  0x88, 0x67, 0x5c, 0x59, 0xd3, 0xd8, 0x98, 0x5a, 0xb4, 0xca, 0xa9, 0x60,
-  0x0f, 0xce, 0x5c, 0xca, 0x88, 0x03, 0x24, 0x40, 0x14, 0x84, 0xc9, 0xe9,
-  0x18, 0x6b, 0xbd, 0x2a, 0x78, 0x18, 0x49, 0xdb, 0x80, 0x61, 0x2d, 0x2d,
-  0xc4, 0x19, 0x13, 0xab, 0x99, 0x46, 0x0f, 0x75, 0x20, 0x38, 0x0d, 0xc1,
-  0x68, 0xa4, 0x2b, 0x08, 0x54, 0x8c, 0x97, 0x06, 0xa4, 0xc8, 0x1a, 0x58,
-  0xb2, 0xdc, 0x51, 0x48, 0xa3, 0x10, 0xf9, 0xcf, 0x0a, 0x5c, 0x70, 0xeb,
-  0x65, 0x0d, 0xaf, 0x30, 0x92, 0xca, 0x56, 0xe1, 0xeb, 0x22, 0x6a, 0x23,
-  0x50, 0x73, 0x56, 0xc4, 0x77, 0x28, 0xcf, 0x92, 0x7a, 0xf4, 0xd1, 0x8d,
-  0xa8, 0x56, 0x9e, 0x8b, 0x05, 0x27, 0xbf, 0xe6, 0xd1, 0xd9, 0xd1, 0xdb,
-  0xa1, 0x15, 0x15, 0xa6, 0xdf, 0xc5, 0x18, 0x65, 0x50, 0x93, 0x92, 0xe6,
-  0xb3, 0x4c, 0x32, 0x0b, 0xab, 0x01, 0x4f, 0xd4, 0x38, 0xa0, 0x70, 0x02,
-  0x7c, 0x68, 0x1c, 0x18, 0xa5, 0x46, 0x8f, 0x5a, 0xf8, 0xa5, 0xa4, 0x19,
-  0x36, 0x11, 0x3a, 0x79, 0x3f, 0x35, 0x76, 0x39, 0xda, 0x74, 0xf1, 0xba,
-  0xdc, 0x1f, 0x82, 0x52, 0x11, 0x33, 0xe0, 0xc2, 0x04, 0x72, 0x4b, 0xc2,
-  0x3e, 0xfb, 0xf6, 0x70, 0xfc, 0xbb, 0xdd, 0x3d, 0x1d, 0xce, 0x96, 0x69,
-  0x05, 0xcc, 0xab, 0x9a, 0xf9, 0xf9, 0x60, 0xd7, 0xe1, 0x18, 0x2d, 0xdb,
-  0x1a, 0x07, 0x1c, 0x9b, 0xb1, 0xe9, 0x72, 0x84, 0xb6, 0x6a, 0x49, 0x42,
-  0x1b, 0x52, 0xdb, 0xde, 0x44, 0x4c, 0x57, 0xf8, 0x97, 0x5d, 0x22, 0x28,
-  0x0f, 0xa5, 0x05, 0x9a, 0x2a, 0x17, 0xf5, 0x17, 0x67, 0xf6, 0x91, 0xb4,
-  0xac, 0xad, 0x21, 0x9d, 0xdc, 0x47, 0xb6, 0x34, 0xf7, 0x9c, 0xd7, 0xdb,
-  0x7f, 0xcb, 0x90, 0xb1, 0x7a, 0xb3, 0x1b, 0x36, 0x90, 0xef, 0x06, 0x07,
-  0x40, 0x03, 0xd9, 0x67, 0x56, 0x02, 0x2e, 0xf3, 0x15, 0x51, 0xf8, 0xe9,
-  0x53, 0xda, 0x28, 0x3a, 0x59, 0x02, 0xe1, 0xc0, 0x4c, 0x21, 0x9f, 0xb3,
-  0xea, 0xe2, 0x1e, 0x79, 0x5d, 0x70, 0xe9, 0x99, 0xa5, 0x84, 0x94, 0xbe,
-  0x1b, 0x45, 0xdf, 0x24, 0x19, 0xe7, 0xd0, 0x73, 0xf0, 0x9d, 0xa5, 0x61,
-  0x21, 0x44, 0x90, 0x6b, 0x50, 0xa2, 0x26, 0xdf, 0x49, 0x12, 0x2b, 0x3c,
-  0x27, 0xf1, 0xba, 0x52, 0x34, 0x5c, 0xab, 0x47, 0x15, 0x73, 0xa0, 0x9e,
-  0x62, 0x89, 0x3a, 0xdc, 0x0b, 0xc1, 0x8b, 0xe6, 0x06, 0x36, 0xeb, 0x18,
-  0x9b, 0xa8, 0x8e, 0x80, 0xe6, 0xf4, 0x98, 0xc3, 0xd7, 0xa4, 0x56, 0xe5,
-  0x6b, 0x20, 0x6b, 0xb3, 0xb5, 0x50, 0x34, 0x2e, 0xcf, 0x54, 0x66, 0xc5,
-  0x35, 0x9b, 0x3e, 0x4a, 0xba, 0x6e, 0xe2, 0x6c, 0x7a, 0x3f, 0x9a, 0x91,
-  0x2c, 0xcb, 0xc6, 0xb3, 0xd1, 0xea, 0x66, 0x3b, 0x38, 0xa6, 0xcc, 0xf2,
-  0xaf, 0x05, 0x2e, 0xa0, 0x6e, 0xf8, 0xb6, 0x62, 0xc7, 0x6d, 0x14, 0xb1,
-  0xb8, 0x76, 0x26, 0x98, 0x24, 0x2c, 0xf1, 0x5f, 0x8e, 0xe7, 0x5a, 0xbc,
-  0xad, 0xa3, 0xc8, 0x81, 0x1d, 0x73, 0x0b, 0xa3, 0x65, 0xb2, 0xd8, 0x77,
-  0x89, 0xc9, 0xc6, 0x1f, 0xb4, 0xc0, 0x86, 0x53, 0x2c, 0x02, 0x23, 0x6d,
-  0x96, 0x5c, 0xcd, 0x55, 0xa0, 0x08, 0x55, 0x17, 0xd7, 0x44, 0x47, 0x36,
-  0x88, 0x28, 0x3c, 0x5a, 0x2d, 0x09, 0x12, 0x3b, 0xd1, 0x61, 0xa5, 0xd1,
-  0xb5, 0xf2, 0x70, 0xc1, 0x02, 0xbd, 0x6f, 0x44, 0x41, 0x44, 0x80, 0xbb,
-  0x8c, 0xc2, 0xf2, 0x62, 0xe2, 0xb1, 0xa0, 0x24, 0x75, 0x3f, 0x31, 0x26,
-  0x2c, 0x28, 0x04, 0x88, 0xee, 0x1a, 0x20, 0x0d, 0xe7, 0xa7, 0xd5, 0x14,
-  0x96, 0xb3, 0x42, 0x5f, 0xdf, 0x3e, 0x61, 0x8b, 0xf7, 0xc5, 0xc9, 0xd8,
-  0xbc, 0x22, 0x59, 0x72, 0x17, 0x90, 0x96, 0x54, 0x21, 0x50, 0xfa, 0x63,
-  0x03, 0x90, 0xa0, 0x2b, 0x03, 0xf8, 0x00, 0x23, 0x11, 0xae, 0xe0, 0xdd,
-  0x64, 0x3e, 0x0f, 0xc2, 0x16, 0x41, 0x23, 0x8a, 0x79, 0x28, 0x56, 0xfa,
-  0x4c, 0x84, 0x21, 0x07, 0xfa, 0xc2, 0x30, 0x7e, 0x24, 0x2c, 0x3d, 0x19,
-  0x44, 0xc3, 0x3d, 0x40, 0xe9, 0xec, 0xd6, 0x17, 0x31, 0xae, 0x04, 0x31,
-  0x90, 0xdb, 0xa0, 0x96, 0xac, 0x15, 0x65, 0x07, 0x9b, 0x4a, 0xd2, 0xb7,
-  0xf4, 0x3e, 0xff, 0xd8, 0xd3, 0x09, 0xdd, 0xee, 0x22, 0x78, 0x5b, 0x20,
-  0x2c, 0xe7, 0xf7, 0x6d, 0x91, 0x61, 0xef, 0xc1, 0x5d, 0x45, 0x9a, 0xc4,
-  0x5d, 0xea, 0xb0, 0xa4, 0xa5, 0x7e, 0x02, 0x4c, 0xa1, 0x8a, 0x0e, 0x6a,
-  0x03, 0xa0, 0x25, 0x54, 0x23, 0x77, 0x16, 0xdd, 0xee, 0x99, 0xaf, 0x99,
-  0xbf, 0xb1, 0x75, 0x13, 0x63, 0xbd, 0x67, 0x22, 0xad, 0x0c, 0x46, 0x0e,
-  0x78, 0x0b, 0xa8, 0x96, 0x13, 0xa0, 0x88, 0x66, 0x89, 0x8b, 0xd4, 0xb8,
-  0x4c, 0x9e, 0xa9, 0x59, 0x41, 0xb2, 0xdf, 0x05, 0x9a, 0x9e, 0x15, 0xf8,
-  0x20, 0xcc, 0x09, 0x41, 0xe0, 0x41, 0x70, 0xe4, 0x71, 0xe6, 0x72, 0x26,
-  0xd4, 0x94, 0x0f, 0xb4, 0x3e, 0x6c, 0xff, 0x75, 0x2a, 0x86, 0x09, 0x84,
-  0x9d, 0xe2, 0x3a, 0xa7, 0x93, 0xdf, 0x8f, 0xe8, 0x30, 0xad, 0x98, 0xe3,
-  0x57, 0xae, 0x0e, 0xdb, 0x58, 0x50, 0x3e, 0xfb, 0x21, 0x9b, 0x1b, 0x7e,
-  0xc1, 0x53, 0x29, 0xfb, 0x7e, 0xee, 0x8a, 0x76, 0x5e, 0x9f, 0x88, 0xfa,
-  0x39, 0xac, 0xf2, 0xd8, 0x59, 0x61, 0x05, 0xd6, 0xfb, 0x47, 0x1f, 0x59,
-  0xc6, 0xe9, 0x6b, 0x4f, 0xf2, 0xb5, 0xa4, 0xf7, 0x63, 0x8d, 0xce, 0x8e,
-  0xdf, 0x49, 0xc9, 0x70, 0x77, 0x16, 0x12, 0x46, 0x61, 0xdc, 0x90, 0x6a,
-  0xf7, 0x18, 0x4f, 0x6c, 0x70, 0xf0, 0x62, 0x38, 0x62, 0x9a, 0x61, 0x1a,
-  0x4f, 0xb5, 0xaf, 0xf3, 0x95, 0xf4, 0xde, 0xe7, 0x7b, 0xae, 0x2c, 0xe7,
-  0xfd, 0x46, 0x19, 0x5c, 0xb7, 0x27, 0x8d, 0x0b, 0xc5, 0x59, 0xa4, 0xa6,
-  0x33, 0x2f, 0xe0, 0xa3, 0xd4, 0x37, 0xb7, 0x52, 0xe3, 0x73, 0x83, 0x46,
-  0xd2, 0x63, 0x68, 0x0a, 0xff, 0x5d, 0x34, 0xda, 0xa6, 0x0e, 0xcb, 0x6d,
-  0x7b, 0x71, 0x79, 0x33, 0x2d, 0xe9, 0x86, 0xe3, 0x0c, 0xdf, 0x1f, 0xa1,
-  0x90, 0x63, 0x3b, 0x68, 0xc4, 0xb3, 0x9f, 0xa3, 0xe1, 0x74, 0x8e, 0xf9,
-  0x45, 0x28, 0xb8, 0xfd, 0x23, 0xed, 0x3c, 0x3f, 0xf1, 0xb3, 0xdb, 0xc3,
-  0x37, 0x29, 0x9f, 0xb7, 0x8f, 0x03, 0x9b, 0xfa, 0xa9, 0x28, 0x0c, 0x02,
-  0x75, 0x1b, 0x1d, 0xcc, 0x6e, 0x39, 0xff, 0x6e, 0xa6, 0x7f, 0xf2, 0x7c,
-  0x8e, 0x32, 0x94, 0x2a, 0xc5, 0x4c, 0xe3, 0x89, 0x54, 0x27, 0xff, 0x2e,
-  0x25, 0xa5, 0xe3, 0xb0, 0x21, 0x5f, 0x70, 0x2a, 0x20, 0x0f, 0x10, 0x6f,
-  0x05, 0x5f, 0x5a, 0x5e, 0xc7, 0x40, 0xd3, 0x17, 0x7c, 0xe4, 0x1f, 0x73,
-  0x67, 0xde, 0xba, 0x51, 0xf4, 0x15, 0xfb, 0x38, 0x8b, 0x24, 0x00, 0x82,
-  0xd5, 0x8b, 0x4f, 0x4a, 0xfa, 0xf1, 0x66, 0xc4, 0x02, 0x45, 0x31, 0x72,
-  0x33, 0x69, 0xa5, 0xc3, 0xb8, 0x39, 0xb9, 0x6f, 0xea, 0x93, 0xc3, 0xb8,
-  0x2c, 0xbb, 0x9d, 0xa6, 0x62, 0xa9, 0x13, 0x51, 0x6b, 0x2a, 0x01, 0x44,
-  0xa5, 0x8c, 0x50, 0x2e, 0xcc, 0x59, 0x62, 0x39, 0xfe, 0x79, 0x08, 0xac,
-  0x62, 0x96, 0x63, 0x34, 0x65, 0x12, 0x81, 0x23, 0x09, 0xdc, 0xe1, 0x7e,
-  0xd4, 0x87, 0xd7, 0xc4, 0x9a, 0x13, 0x37, 0xd4, 0xb1, 0x98, 0xf4, 0x6c,
-  0x88, 0x63, 0xbe, 0xa3, 0x6c, 0x13, 0xdc, 0x97, 0x96, 0x28, 0x09, 0x29,
-  0x74, 0x5b, 0x78, 0x97, 0xa3, 0x5d, 0x59, 0xdd, 0xfa, 0x14, 0x38, 0xbf,
-  0x71, 0xfc, 0xfe, 0x2d, 0x57, 0x39, 0x41, 0x05, 0xeb, 0x8b, 0xf3, 0x83,
-  0x77, 0xe3, 0x37, 0x62, 0x1a, 0xbf, 0xc8, 0x83, 0xc2, 0xd8, 0xea, 0x57,
-  0x30, 0xff, 0xb1, 0x43, 0x8c, 0xbb, 0x93, 0xd2, 0x1b, 0x16, 0x5a, 0xaf,
-  0x55, 0xb3, 0x07, 0x4d, 0xe8, 0x7d, 0x29, 0xb9, 0xcd, 0xab, 0xc1, 0x43,
-  0xdb, 0x1c, 0x6f, 0x39, 0x41, 0xa8, 0x0c, 0xcb, 0xb3, 0xf9, 0xca, 0xf5,
-  0x06, 0x12, 0xad, 0x0f, 0xf1, 0xb2, 0x1c, 0xda, 0x60, 0xec, 0x53, 0xb9,
-  0x7b, 0xd7, 0xe2, 0x92, 0x1e, 0x92, 0xaa, 0x38, 0xd4, 0xa2, 0x35, 0x41,
-  0x31, 0x3a, 0x67, 0x4e, 0x95, 0xbb, 0x57, 0x51, 0xfd, 0x5c, 0xe3, 0x61,
-  0x0a, 0xa8, 0x35, 0xbd, 0xf9, 0x87, 0xdd, 0xad, 0xee, 0xe6, 0x2f, 0x7e,
-  0x69, 0xf3, 0xdd, 0x63, 0x37, 0xdd, 0xcc, 0x67, 0x17, 0x6d, 0xfe, 0x61,
-  0x6f, 0xeb, 0xc1, 0x19, 0x85, 0x09, 0x92, 0xbe, 0x4f, 0x7a, 0x83, 0x07,
-  0x1b, 0xbd, 0x92, 0x63, 0xe6, 0x64, 0x26, 0x17, 0xa1, 0x13, 0x40, 0x0f,
-  0xd7, 0xb0, 0x3b, 0x38, 0x82, 0xdb, 0x49, 0xea, 0xde, 0xf1, 0xa6, 0x89,
-  0x26, 0xc7, 0xff, 0xfb, 0x28, 0x44, 0x94, 0xcc, 0xfa, 0x55, 0x78, 0x45,
-  0x31, 0x50, 0x40, 0x99, 0x8f, 0xd0, 0xf7, 0xde, 0x03, 0x7d, 0xfb, 0xd9,
-  0x05, 0x66, 0x09, 0xf6, 0x62, 0x73, 0x18, 0x9c, 0x01, 0x63, 0x6b, 0x3f,
-  0x1b, 0xbe, 0xe2, 0xfa, 0xfa, 0xfe, 0x2e, 0x8e, 0xdf, 0x1e, 0x31, 0x80,
-  0xf6, 0xeb, 0x63, 0xc6, 0xa1, 0x1b, 0x2b, 0x12, 0xa4, 0x59, 0x20, 0x1c,
-  0x38, 0x6f, 0x58, 0x38, 0x45, 0xdc, 0xbb, 0x2e, 0xda, 0xcc, 0x71, 0x0e,
-  0xb7, 0x13, 0xdc, 0xb5, 0x86, 0x43, 0x97, 0x96, 0x74, 0x79, 0x7c, 0x39,
-  0x7c, 0x9b, 0xcf, 0xa0, 0x25, 0x0f, 0xc7, 0x08, 0x15, 0xa4, 0xb7, 0xe8,
-  0xc3, 0xf7, 0xd9, 0xa2, 0xf6, 0xf1, 0xa8, 0x23, 0x69, 0x77, 0x63, 0x5d,
-  0x7d, 0x9e, 0xbf, 0x6d, 0x0f, 0x87, 0x3c, 0x98, 0xa1, 0x84, 0x75, 0xa9,
-  0x73, 0xa7, 0x06, 0xd5, 0x61, 0xac, 0x85, 0x16, 0x28, 0x9d, 0xdf, 0x4b,
-  0x20, 0x42, 0xec, 0xc3, 0xc7, 0x7c, 0x22, 0xe7, 0x15, 0x27, 0x93, 0x79,
-  0x13, 0x9f, 0x18, 0xf1, 0x36, 0x42, 0x1c, 0x53, 0x28, 0x52, 0xc9, 0x9d,
-  0x8f, 0x7f, 0xd2, 0xf2, 0xcd, 0xf9, 0xf2, 0x1e, 0xb3, 0xbc, 0xab, 0x85,
-  0x56, 0x74, 0xfa, 0x57, 0xff, 0x26, 0xef, 0xd4, 0x2a, 0x52, 0x29, 0xdc,
-  0x74, 0x40, 0x81, 0xfa, 0x89, 0x16, 0x70, 0x3a, 0x2d, 0x82, 0xeb, 0x4a,
-  0x87, 0x6d, 0x85, 0xee, 0x02, 0x8c, 0xd3, 0x00, 0x92, 0xb5, 0x3e, 0xce,
-  0x10, 0x0f, 0x36, 0xe7, 0x2c, 0xd8, 0xd7, 0xb9, 0x73, 0x8e, 0x11, 0xdb,
-  0x59, 0xd6, 0x0b, 0x24, 0x27, 0x91, 0xe5, 0x7b, 0x4b, 0x3a, 0x7f, 0x7f,
-  0xd8, 0x47, 0x89, 0x86, 0x34, 0xeb, 0x98, 0xcc, 0xf0, 0x97, 0xcf, 0xa6,
-  0xe5, 0x7a, 0x8d, 0x7a, 0x97, 0x8c, 0x89, 0xc1, 0x7e, 0xac, 0x9e, 0x0c,
-  0x40, 0x20, 0x63, 0x84, 0xb8, 0xe8, 0x82, 0x60, 0xbe, 0x66, 0x8a, 0xa4,
-  0x28, 0xd5, 0x2e, 0x32, 0xd6, 0x19, 0xc9, 0xc5, 0x2a, 0xc9, 0x8c, 0x74,
-  0xb5, 0x9c, 0x21, 0x28, 0x43, 0xc2, 0x51, 0xff, 0x9d, 0xf1, 0xb1, 0x8b,
-  0xfb, 0x68, 0x77, 0x6f, 0x10, 0xed, 0xed, 0xec, 0xee, 0x75, 0xcc, 0xa1,
-  0xf7, 0xef, 0x1c, 0x14, 0xb5, 0x87, 0xaf, 0x7b, 0x9f, 0x3a, 0x0b, 0x9f,
-  0xda, 0x80, 0x9b, 0x44, 0x93, 0x80, 0x89, 0xf9, 0xb0, 0x7f, 0x16, 0x98,
-  0xcc, 0xa8, 0x9a, 0x0c, 0x64, 0x3b, 0x5c, 0x5b, 0x62, 0x24, 0xb4, 0x6a,
-  0x9b, 0xae, 0x8a, 0xd8, 0x0c, 0x45, 0x75, 0xa4, 0x70, 0x2d, 0x22, 0x5f,
-  0x9c, 0xa5, 0x34, 0x2e, 0x50, 0x4a, 0xb4, 0xbe, 0x47, 0x69, 0x65, 0xdb,
-  0xc2, 0xa1, 0x35, 0xbc, 0x37, 0x44, 0xef, 0xaf, 0x8f, 0x0f, 0x2f, 0x0c,
-  0xfa, 0xf0, 0x92, 0x85, 0xa7, 0xe2, 0xfe, 0xd3, 0xea, 0x32, 0x3e, 0xf8,
-  0xcc, 0x6c, 0xff, 0x3a, 0x21, 0x31, 0x3a, 0x9b, 0xac, 0xae, 0xf6, 0xff,
-  0x12, 0x17, 0x57, 0x79, 0xf6, 0xd8, 0xf3, 0x33, 0xe4, 0x96, 0xed, 0x13,
-  0x87, 0xda, 0x7d, 0xb1, 0xfb, 0x44, 0x12, 0x17, 0x52, 0xd4, 0x06, 0x62,
-  0x06, 0xd1, 0x5f, 0xf4, 0x05, 0x6b, 0x03, 0x19, 0x13, 0x0e, 0x60, 0x23,
-  0x9b, 0xf5, 0xe5, 0xba, 0x8f, 0xc3, 0x67, 0x67, 0xfa, 0xac, 0x64, 0xa1,
-  0xf7, 0x37, 0xa4, 0x4c, 0x4a, 0x9f, 0x33, 0x36, 0x57, 0xcb, 0x7e, 0x1d,
-  0x2d, 0xfe, 0x91, 0xb9, 0x72, 0x17, 0xae, 0x0c, 0xe5, 0xa1, 0xc3, 0xc0,
-  0x47, 0x32, 0x51, 0x91, 0xc4, 0x37, 0xbe, 0x8c, 0xb2, 0x07, 0xe2, 0x30,
-  0x97, 0xc7, 0xf9, 0x9b, 0x43, 0x01, 0x33, 0xb5, 0xd4, 0x29, 0x2c, 0x75,
-  0xe4, 0x4c, 0x53, 0x5b, 0x3c, 0xca, 0x47, 0xfa, 0xe7, 0xdc, 0x86, 0xfd,
-  0xd9, 0xe4, 0x13, 0x1e, 0xa2, 0x73, 0x27, 0xb8, 0x71, 0x07, 0xf5, 0x2a,
-  0x3c, 0xac, 0xa8, 0xa1, 0x94, 0x88, 0xd5, 0x4c, 0xde, 0x94, 0x9a, 0xb4,
-  0xe2, 0x71, 0xe0, 0xa1, 0x59, 0x25, 0x6a, 0xb3, 0xee, 0xd0, 0xb8, 0xb9,
-  0xde, 0xeb, 0xeb, 0x83, 0xb3, 0x40, 0xd1, 0x85, 0x22, 0xe9, 0x8d, 0x7a,
-  0xfc, 0x1c, 0x2b, 0x3a, 0x28, 0xc9, 0xae, 0x85, 0x99, 0x06, 0x5e, 0x45,
-  0xa9, 0xc0, 0x27, 0x59, 0x36, 0x42, 0x80, 0x7c, 0xae, 0xf7, 0x09, 0xec,
-  0x4f, 0x28, 0x6c, 0x30, 0x9f, 0xc5, 0x70, 0x84, 0xea, 0x2d, 0x04, 0x99,
-  0x0b, 0x6d, 0xa5, 0x1a, 0x0d, 0x45, 0x7b, 0xf3, 0x31, 0xd2, 0x24, 0x0e,
-  0xcd, 0x56, 0xd1, 0xd2, 0x23, 0x78, 0x8c, 0x13, 0x94, 0xef, 0x6d, 0x02,
-  0xc2, 0x9f, 0x69, 0xf0, 0x71, 0x79, 0x43, 0xac, 0x54, 0x1c, 0xf8, 0xd4,
-  0x7b, 0xaa, 0x2e, 0x70, 0x36, 0xfa, 0xa4, 0x12, 0x48, 0xc3, 0xe6, 0x27,
-  0x40, 0x22, 0xd5, 0x36, 0x4c, 0xae, 0x20, 0xd6, 0x38, 0xe7, 0x65, 0x22,
-  0x00, 0x86, 0xd1, 0xc5, 0x5d, 0x2e, 0x2a, 0x46, 0x69, 0xe1, 0xb5, 0x12,
-  0x8a, 0x5a, 0xae, 0x52, 0x91, 0x22, 0x69, 0xf3, 0xc0, 0x0f, 0x82, 0x82,
-  0xb2, 0x3d, 0x67, 0xf9, 0x7a, 0xed, 0xfc, 0x9e, 0xe3, 0xd7, 0xdf, 0x46,
-  0x9c, 0x5a, 0xcf, 0x7d, 0x1c, 0x32, 0xb4, 0x3f, 0x87, 0x30, 0x2c, 0xa0,
-  0xfd, 0x7d, 0xbd, 0xe2, 0xf3, 0x7e, 0x78, 0x1d, 0x2f, 0x59, 0x01, 0xda,
-  0xdd, 0x61, 0x73, 0xc9, 0xf7, 0x96, 0xa4, 0xc7, 0x07, 0xd5, 0x0a, 0xde,
-  0x97, 0xbd, 0xc0, 0x92, 0x32, 0xe3, 0x7a, 0xf5, 0xac, 0x01, 0xd5, 0x8d,
-  0xb4, 0x74, 0x7d, 0x96, 0xdb, 0x02, 0xe8, 0x5f, 0x12, 0x69, 0x14, 0xe5,
-  0xec, 0x66, 0x7b, 0x4a, 0xff, 0x3c, 0xd9, 0xd9, 0x06, 0xa6, 0x66, 0x05,
-  0x9b, 0x26, 0xd3, 0xe4, 0xde, 0xde, 0xb3, 0x67, 0x83, 0xa8, 0xc7, 0x56,
-  0x46, 0xeb, 0x80, 0x8f, 0x04, 0x9d, 0xac, 0x5e, 0x57, 0x65, 0xdd, 0xed,
-  0xe2, 0x72, 0xca, 0xff, 0xe3, 0xd7, 0xac, 0xa0, 0xe4, 0x85, 0x66, 0xdd,
-  0x60, 0x1d, 0xb2, 0x10, 0x26, 0x47, 0xc8, 0x8a, 0xbf, 0x3b, 0x76, 0x76,
-  0x24, 0x76, 0x1a, 0x2d, 0x93, 0x7c, 0x69, 0xde, 0xe1, 0x85, 0x96, 0x0a,
-  0x41, 0xf7, 0x81, 0x4b, 0x0d, 0xfe, 0x7c, 0x09, 0x87, 0x53, 0x3c, 0x84,
-  0x72, 0x35, 0x19, 0x6a, 0x62, 0xb0, 0x68, 0x95, 0x29, 0x9d, 0x5c, 0xfa,
-  0x73, 0x6e, 0xe6, 0xfa, 0x16, 0x47, 0xfe, 0x2a, 0xea, 0x29, 0x6d, 0xf1,
-  0x8f, 0x11, 0x9c, 0xbb, 0xc9, 0x94, 0xa7, 0x91, 0xbf, 0xd2, 0x3f, 0xfe,
-  0xed, 0xdf, 0xa8, 0xd9, 0x7f, 0xe3, 0x56, 0x5e, 0xfd, 0xa1, 0xac, 0xae,
-  0x83, 0x67, 0x7a, 0x4a, 0xf0, 0xc7, 0xde, 0xb5, 0x8d, 0x70, 0x35, 0x20,
-  0xce, 0x22, 0x7f, 0xed, 0xed, 0x89, 0x72, 0xe4, 0x41, 0x30, 0xbf, 0x14,
-  0x99, 0x85, 0x62, 0x24, 0x75, 0xd1, 0x22, 0x5f, 0xb1, 0xdb, 0x39, 0xe1,
-  0x8c, 0x74, 0xba, 0x48, 0x00, 0x28, 0xb8, 0x65, 0x22, 0xc6, 0xd1, 0xbb,
-  0xef, 0x8e, 0xcf, 0x4f, 0xdf, 0xbd, 0x3d, 0x7a, 0x77, 0x11, 0x7d, 0x77,
-  0x70, 0x7e, 0x7c, 0xf0, 0xd5, 0x89, 0x26, 0xbe, 0xf3, 0x14, 0x38, 0xc8,
-  0x47, 0x64, 0xef, 0x06, 0x20, 0x6c, 0x90, 0x88, 0xd4, 0x59, 0x46, 0xa4,
-  0x51, 0x20, 0xf9, 0x83, 0xa2, 0x99, 0x43, 0x13, 0xf9, 0x80, 0x8a, 0x48,
-  0x03, 0x16, 0x3e, 0x3f, 0x58, 0x71, 0x24, 0x56, 0x9e, 0xee, 0x83, 0x54,
-  0x6a, 0x8e, 0x3f, 0x62, 0x2a, 0x35, 0xfe, 0xe4, 0xcb, 0x02, 0xba, 0x3a,
-  0x1b, 0x5f, 0x4b, 0x36, 0xbe, 0x15, 0x1d, 0xb1, 0x57, 0x35, 0x33, 0x0c,
-  0x76, 0x37, 0x37, 0x86, 0x83, 0x93, 0x13, 0xdf, 0xd5, 0xc3, 0xf5, 0x68,
-  0x14, 0x89, 0x49, 0x92, 0xb7, 0xd0, 0x28, 0x3b, 0x06, 0xaf, 0x72, 0x0f,
-  0xcd, 0x9e, 0xdd, 0x87, 0x28, 0xec, 0xdc, 0x19, 0x6d, 0xc7, 0xa6, 0x40,
-  0x68, 0xb0, 0x97, 0x98, 0x0e, 0x50, 0x5a, 0xde, 0x0c, 0xa2, 0xfe, 0x1f,
-  0xfa, 0x5a, 0x52, 0x1c, 0xb8, 0xc1, 0x52, 0xed, 0x66, 0xcb, 0x0f, 0xea,
-  0xdd, 0xa9, 0x1f, 0x93, 0x3a, 0x3e, 0xdd, 0x00, 0xdc, 0x8b, 0xde, 0x6d,
-  0x5d, 0x9a, 0x3c, 0x83, 0x78, 0x51, 0xff, 0xb8, 0x96, 0x84, 0x70, 0xc8,
-  0x00, 0x4a, 0xa3, 0xec, 0xd8, 0xea, 0x7c, 0x17, 0x5a, 0x5b, 0x3c, 0x0d,
-  0xe0, 0xa1, 0x31, 0xd7, 0x8c, 0x4d, 0x1d, 0xae, 0x4c, 0x97, 0x59, 0x03,
-  0x69, 0xa9, 0xd9, 0xa6, 0xa7, 0xee, 0xc4, 0x55, 0xa9, 0x1c, 0x14, 0x54,
-  0xf5, 0x71, 0xdb, 0xaa, 0xde, 0xc0, 0xc7, 0xc8, 0xf9, 0x00, 0x45, 0x3a,
-  0x53, 0xb8, 0xc1, 0x4e, 0xaa, 0x18, 0xc1, 0x35, 0x75, 0x7e, 0x08, 0x74,
-  0xf6, 0x8c, 0xeb, 0x33, 0xfa, 0xaa, 0x1a, 0x88, 0x1d, 0x26, 0x2e, 0x52,
-  0x70, 0x42, 0x5e, 0xa6, 0x42, 0x08, 0xe2, 0x71, 0x21, 0xa3, 0xc7, 0x57,
-  0xb9, 0xc9, 0xdf, 0xb1, 0x73, 0x9a, 0xbb, 0xda, 0x63, 0x81, 0x4c, 0xef,
-  0x30, 0xc4, 0x9c, 0xc9, 0x12, 0xee, 0x75, 0x73, 0x10, 0x70, 0x78, 0x19,
-  0x6f, 0xb9, 0xd5, 0x92, 0x2e, 0x83, 0x2c, 0x6d, 0x9f, 0xbd, 0xc0, 0xbc,
-  0x44, 0x82, 0xf4, 0x0d, 0xd4, 0x0b, 0x40, 0x6a, 0x96, 0xd5, 0x8d, 0x40,
-  0x47, 0x0c, 0x8b, 0x1f, 0x44, 0x93, 0x1a, 0xb3, 0x8a, 0x26, 0xcd, 0x76,
-  0x4d, 0xa7, 0x67, 0xce, 0x09, 0x64, 0xc6, 0x89, 0xe2, 0x68, 0x92, 0x5e,
-  0x09, 0x3a, 0x00, 0xa7, 0xa2, 0x33, 0x95, 0x00, 0xec, 0x8d, 0x14, 0x7b,
-  0xde, 0x2a, 0x40, 0xb9, 0x41, 0x76, 0xbf, 0xce, 0xe7, 0x21, 0xde, 0x98,
-  0xcd, 0xa4, 0xd4, 0xaa, 0x6a, 0x66, 0xfa, 0x84, 0xeb, 0x63, 0xc5, 0xeb,
-  0x68, 0xd1, 0x68, 0x0a, 0x54, 0xae, 0xb1, 0x79, 0x6c, 0x53, 0x07, 0x6a,
-  0x62, 0x86, 0x4c, 0x20, 0xcb, 0xaa, 0xc6, 0x3a, 0x58, 0xdc, 0x32, 0x73,
-  0x0b, 0xd8, 0xd1, 0xb8, 0xe2, 0xe3, 0xa6, 0x43, 0x1a, 0xe7, 0x56, 0xa6,
-  0x82, 0xd5, 0xca, 0x44, 0x2f, 0x1e, 0xe5, 0x7a, 0x69, 0x20, 0xdd, 0x2c,
-  0x45, 0xd1, 0x22, 0x9a, 0xe0, 0x41, 0xd3, 0x4a, 0x6d, 0x06, 0x8c, 0x27,
-  0x23, 0x12, 0x91, 0xc7, 0x44, 0x81, 0xd4, 0xbf, 0x86, 0xae, 0xaa, 0x99,
-  0xfa, 0x9d, 0xb7, 0x7c, 0xdc, 0x81, 0x48, 0x01, 0x4c, 0xad, 0x53, 0xad,
-  0x2b, 0x09, 0x0f, 0x3d, 0x17, 0xc5, 0x04, 0x34, 0x54, 0xcd, 0xf6, 0x18,
-  0x59, 0xbe, 0xcd, 0x7c, 0x1e, 0x40, 0x8d, 0x8b, 0x39, 0x22, 0x6e, 0xc9,
-  0x1e, 0xec, 0x1c, 0x92, 0x34, 0x54, 0x8d, 0xfc, 0x11, 0x58, 0xe2, 0x60,
-  0x22, 0x1a, 0x53, 0xce, 0xd2, 0x59, 0xc3, 0xa4, 0x19, 0x30, 0x34, 0xf3,
-  0x8e, 0x87, 0x17, 0x93, 0x56, 0xd6, 0x48, 0xe3, 0x85, 0xc8, 0x8e, 0x9e,
-  0xfa, 0x16, 0xf7, 0x12, 0x75, 0xb8, 0xb1, 0x71, 0xf8, 0x7e, 0x7c, 0x71,
-  0xfa, 0x36, 0x3a, 0x7d, 0x7f, 0x71, 0xf6, 0xfe, 0x42, 0x6f, 0xae, 0x89,
-  0xc4, 0x6c, 0x4b, 0xe4, 0x82, 0x08, 0x01, 0xb6, 0x99, 0x0b, 0xf5, 0xef,
-  0x23, 0xc4, 0x24, 0x07, 0xc0, 0x60, 0x80, 0x2d, 0xe4, 0x72, 0xb2, 0x80,
-  0xba, 0x25, 0xc8, 0xc5, 0x58, 0xf2, 0x3b, 0x5a, 0x72, 0xe4, 0xd3, 0xc2,
-  0x90, 0x67, 0x29, 0x5e, 0x50, 0x7b, 0xec, 0xac, 0xd5, 0xab, 0xd6, 0xdc,
-  0xd7, 0xd5, 0x18, 0x38, 0xe7, 0xeb, 0x58, 0x4e, 0x61, 0xf1, 0x4c, 0xb1,
-  0xed, 0x78, 0xd3, 0x4f, 0x18, 0xd2, 0xa9, 0xa5, 0x37, 0xcd, 0x00, 0x6d,
-  0x51, 0xb5, 0x08, 0x35, 0xaa, 0x27, 0x16, 0x86, 0xf9, 0x8d, 0x55, 0x4e,
-  0x33, 0xbc, 0x76, 0x11, 0xf1, 0x1c, 0x45, 0x84, 0x48, 0x40, 0x09, 0xa0,
-  0xe0, 0x90, 0x3b, 0xd1, 0x18, 0x48, 0x0f, 0x64, 0x97, 0x45, 0xeb, 0x96,
-  0xbd, 0x8b, 0xfa, 0xdf, 0x27, 0x61, 0x83, 0xbf, 0xff, 0x0f, 0x4e, 0xdb,
-  0xfc, 0x60, 0x9f, 0xfc, 0x5d, 0xba, 0xfc, 0x29, 0xeb, 0x23, 0x80, 0xae,
-  0xee, 0x29, 0xff, 0xf6, 0xe8, 0xfc, 0xab, 0xa3, 0xf3, 0xd3, 0x31, 0xf8,
-  0x81, 0x99, 0xbb, 0xda, 0xb4, 0x7e, 0x93, 0x14, 0x93, 0xa4, 0xc8, 0xb5,
-  0xa2, 0x96, 0xfd, 0xf5, 0x6c, 0xfb, 0xeb, 0xf1, 0xf8, 0xe0, 0xec, 0xd8,
-  0xd5, 0xac, 0x71, 0x09, 0x64, 0xa2, 0x22, 0x65, 0x92, 0xe2, 0xc8, 0xf3,
-  0xb7, 0x57, 0x88, 0x2e, 0xa6, 0x37, 0x12, 0x58, 0xdc, 0xf2, 0x49, 0x9b,
-  0x5d, 0x9d, 0x9d, 0xd1, 0x9a, 0x57, 0xc8, 0x0d, 0x1b, 0x26, 0x54, 0x88,
-  0x3b, 0x2f, 0x00, 0xf1, 0xec, 0x0b, 0x18, 0xb8, 0x08, 0xbc, 0x9b, 0x62,
-  0x32, 0x24, 0x6a, 0xbf, 0xb1, 0x12, 0xce, 0x92, 0x07, 0x41, 0xac, 0x52,
-  0x02, 0xa4, 0xbd, 0xad, 0x81, 0x64, 0xba, 0xb4, 0xda, 0xbe, 0xe1, 0xf3,
-  0xc1, 0xf5, 0x54, 0xe6, 0x23, 0xe1, 0xee, 0x72, 0xa0, 0x2c, 0xea, 0x95,
-  0x59, 0xec, 0x43, 0x38, 0x15, 0xd4, 0x9b, 0x2b, 0x82, 0x28, 0xf6, 0x2e,
-  0xfa, 0xe4, 0xa9, 0x03, 0xec, 0x0a, 0x2b, 0x8a, 0x5f, 0x92, 0x00, 0xbe,
-  0xbc, 0x9b, 0xe9, 0x25, 0x02, 0xbc, 0xea, 0x4c, 0xdc, 0x13, 0xc2, 0xc3,
-  0x9b, 0x0e, 0x2a, 0x2e, 0xd4, 0x88, 0x84, 0x0d, 0x0d, 0x47, 0x8f, 0x26,
-  0xf3, 0x38, 0xbb, 0xc1, 0x6d, 0x86, 0xfb, 0x89, 0x55, 0x4e, 0x83, 0xa1,
-  0xe2, 0x02, 0x9a, 0xf0, 0x47, 0x2a, 0x32, 0x04, 0x84, 0xc0, 0x39, 0x33,
-  0xb7, 0x7b, 0xb1, 0xe5, 0x3b, 0xb4, 0xad, 0xc0, 0xf3, 0x86, 0xe3, 0xe4,
-  0x17, 0x81, 0x4d, 0x47, 0x47, 0x27, 0x74, 0x31, 0xb9, 0x24, 0x13, 0xa8,
-  0xe8, 0xc9, 0x9c, 0x4d, 0xc1, 0x16, 0x11, 0x24, 0x79, 0x95, 0x29, 0x18,
-  0x99, 0x70, 0x0f, 0x83, 0x52, 0x87, 0xff, 0x08, 0xe4, 0x82, 0xf4, 0xd1,
-  0xd2, 0x15, 0x1c, 0x51, 0xce, 0x2d, 0x4c, 0x0c, 0x38, 0xa1, 0xbe, 0xfe,
-  0x48, 0x58, 0x09, 0x47, 0xc3, 0xed, 0x0e, 0x7d, 0x3c, 0x90, 0x2b, 0x0d,
-  0x26, 0x83, 0xf0, 0x62, 0xa9, 0xf3, 0x30, 0xd6, 0xb2, 0x5b, 0xd6, 0x6e,
-  0x93, 0xbc, 0xde, 0x65, 0x04, 0x10, 0x78, 0xb3, 0x99, 0xfa, 0x3b, 0x1c,
-  0x32, 0x90, 0x85, 0x2c, 0xd7, 0xc3, 0x84, 0x6d, 0xe0, 0x12, 0x0d, 0xc0,
-  0xc6, 0xdb, 0x79, 0x65, 0x4e, 0x43, 0x84, 0xb8, 0xea, 0x0d, 0x5c, 0xcd,
-  0xc0, 0x72, 0x8a, 0x1a, 0x68, 0x6d, 0x18, 0x9d, 0x2b, 0xe0, 0x15, 0xb0,
-  0x0d, 0x4a, 0xbe, 0x06, 0xb4, 0x18, 0x27, 0xdf, 0x0e, 0xdf, 0xf1, 0x75,
-  0x91, 0x0f, 0x27, 0x2b, 0xe8, 0x65, 0x41, 0xc9, 0x2e, 0xc9, 0xe1, 0x24,
-  0x75, 0x4d, 0x70, 0xd5, 0xf0, 0x3d, 0xfb, 0xa3, 0x90, 0x1d, 0x2f, 0x2e,
-  0x2a, 0xa4, 0x4b, 0xd6, 0x31, 0x77, 0x1c, 0xd2, 0x8a, 0xe4, 0x20, 0xf8,
-  0x5a, 0xc2, 0x6e, 0x82, 0xba, 0xc9, 0x2e, 0x5a, 0x30, 0xd3, 0x82, 0xaf,
-  0xf0, 0xac, 0xd4, 0x23, 0xae, 0x2b, 0x07, 0x7d, 0x7f, 0x01, 0x31, 0x21,
-  0x51, 0x40, 0x78, 0x0b, 0xa5, 0xb6, 0xc4, 0x8d, 0xdb, 0x8a, 0x8b, 0x4c,
-  0x09, 0x48, 0x44, 0x3c, 0x97, 0x8a, 0x1d, 0x6b, 0xaf, 0x12, 0x39, 0x4c,
-  0xd5, 0xc5, 0xc5, 0x9f, 0xcf, 0x8e, 0x5e, 0xd9, 0x9b, 0x0f, 0xed, 0x99,
-  0x60, 0xa7, 0x21, 0x66, 0x26, 0x51, 0xac, 0xd2, 0xa0, 0x4c, 0x36, 0x11,
-  0xd9, 0xb0, 0x32, 0x5f, 0xbe, 0x74, 0x33, 0x8c, 0x7e, 0x78, 0x7d, 0x3c,
-  0x3e, 0x3b, 0x39, 0x3d, 0x7c, 0xf5, 0xf2, 0x07, 0x63, 0xc9, 0x5f, 0xb0,
-  0x8b, 0x40, 0xe4, 0x34, 0xf7, 0x99, 0xc7, 0x76, 0xd0, 0xf7, 0xde, 0x1d,
-  0x7d, 0xff, 0x81, 0xb4, 0x83, 0x57, 0x8c, 0xf0, 0x3e, 0xb8, 0x8d, 0xe7,
-  0xfa, 0x12, 0xab, 0x58, 0x1d, 0xb2, 0xdd, 0xa8, 0x0e, 0xc6, 0xd7, 0x5c,
-  0x58, 0x57, 0xa9, 0xd4, 0xe7, 0x29, 0xdc, 0x5b, 0x18, 0x5d, 0x50, 0x94,
-  0x2a, 0xae, 0xa5, 0xd5, 0x76, 0xd4, 0x15, 0xf6, 0xd7, 0x7f, 0xbf, 0x92,
-  0x98, 0x4a, 0x0e, 0x21, 0x08, 0x3d, 0xf3, 0x88, 0x5b, 0xd5, 0x6f, 0x7c,
-  0x3c, 0xaf, 0x22, 0x29, 0x17, 0x1c, 0xc0, 0xe2, 0xa0, 0x28, 0xb5, 0x58,
-  0x35, 0x7c, 0xde, 0x8a, 0x57, 0xa9, 0x20, 0x4c, 0x1c, 0x42, 0x6b, 0xd1,
-  0xf4, 0xc6, 0xc7, 0x54, 0x84, 0x71, 0x63, 0x89, 0xad, 0x6c, 0x2e, 0x6a,
-  0xf3, 0x9c, 0x1d, 0x9d, 0x8f, 0x8f, 0xc7, 0x17, 0xac, 0x46, 0x69, 0x0d,
-  0x47, 0xb5, 0x41, 0x5b, 0x81, 0x4d, 0x60, 0x36, 0xd4, 0xa1, 0x47, 0xc3,
-  0xba, 0x21, 0xb5, 0x13, 0xed, 0xd8, 0x5c, 0x3d, 0x89, 0x93, 0x6f, 0x00,
-  0xc9, 0x0c, 0x65, 0x41, 0x54, 0x00, 0x74, 0xe3, 0x4b, 0x3b, 0xc0, 0xb9,
-  0x92, 0x46, 0xa3, 0x7c, 0x06, 0x4a, 0xdf, 0x60, 0x77, 0xe6, 0xe9, 0x24,
-  0x28, 0x9a, 0x5d, 0x77, 0x21, 0x73, 0x74, 0x82, 0x82, 0x75, 0x84, 0x47,
-  0xc8, 0xec, 0xe1, 0x3e, 0x33, 0x5a, 0xcb, 0xfa, 0xea, 0xb5, 0xa6, 0x59,
-  0x8d, 0x61, 0xfe, 0xaa, 0x53, 0x54, 0xa1, 0x9c, 0x84, 0xe5, 0xcb, 0xf1,
-  0x69, 0x10, 0x84, 0xaa, 0xf8, 0x4f, 0x80, 0xae, 0x55, 0x96, 0xcd, 0x4c,
-  0x39, 0x95, 0x4c, 0x34, 0x36, 0xb4, 0x90, 0xd4, 0x82, 0xcc, 0x7a, 0xc4,
-  0x09, 0xe9, 0xcc, 0x5a, 0x22, 0x88, 0x8a, 0x8e, 0x57, 0x9c, 0xc2, 0x06,
-  0x90, 0xad, 0x19, 0xcb, 0x5b, 0xb0, 0xc0, 0x85, 0x9d, 0xd9, 0x75, 0xca,
-  0x2b, 0x38, 0x59, 0x85, 0x45, 0xe1, 0xdc, 0xe8, 0xa5, 0x3e, 0x09, 0x16,
-  0x1e, 0x11, 0x92, 0x71, 0x01, 0x14, 0xcb, 0x4a, 0x41, 0xe3, 0x4d, 0xf1,
-  0xd1, 0x70, 0xc7, 0x51, 0x1d, 0xcf, 0xc7, 0xe8, 0xd2, 0x0a, 0x97, 0x3e,
-  0xb4, 0xa2, 0x41, 0x15, 0x49, 0x26, 0xdf, 0x22, 0xb1, 0xb8, 0x25, 0x31,
-  0x33, 0x94, 0xec, 0x70, 0xc8, 0xa6, 0xee, 0x32, 0xe6, 0xa4, 0x23, 0xf6,
-  0x2f, 0x16, 0x8a, 0x95, 0x44, 0xec, 0x8f, 0x2d, 0xcb, 0x28, 0x3d, 0x89,
-  0x9a, 0xcc, 0xec, 0x75, 0x33, 0x1c, 0x3d, 0x1f, 0xc6, 0x2d, 0xcb, 0x1d,
-  0x90, 0x95, 0x98, 0xd7, 0xef, 0xb5, 0x43, 0x97, 0x20, 0x6f, 0x9b, 0x35,
-  0x90, 0x7c, 0xab, 0x18, 0xe9, 0x3d, 0x66, 0xd7, 0x0d, 0xd2, 0x44, 0x4b,
-  0x4d, 0xbe, 0x75, 0xee, 0x69, 0x30, 0xbc, 0x5a, 0xfd, 0x5d, 0x9e, 0x5d,
-  0xcd, 0x35, 0x48, 0xf2, 0xe5, 0x12, 0xc5, 0x94, 0xa6, 0x8a, 0x26, 0x8f,
-  0xa0, 0x5d, 0xd7, 0xa0, 0x5d, 0x22, 0x7e, 0xb1, 0x68, 0x55, 0xdf, 0xbe,
-  0x3f, 0xb9, 0x38, 0x3e, 0x0b, 0xdd, 0x8f, 0xd1, 0xf7, 0xc7, 0x17, 0xdf,
-  0x90, 0xd4, 0x3e, 0x3e, 0x7e, 0xf7, 0xf5, 0x09, 0xfb, 0x78, 0xde, 0xbe,
-  0x3d, 0x78, 0xc7, 0xe8, 0x02, 0xef, 0x10, 0xd9, 0x78, 0x00, 0xc5, 0x81,
-  0xd9, 0x11, 0x2d, 0x31, 0xd3, 0x0e, 0xe7, 0x9d, 0x0f, 0xda, 0xae, 0x86,
-  0xc6, 0xf1, 0x93, 0xfa, 0xca, 0x59, 0x7d, 0x91, 0x36, 0x50, 0x2d, 0x1b,
-  0x9a, 0xc1, 0x3d, 0x1b, 0x76, 0x70, 0x6c, 0x59, 0xd9, 0xe2, 0x85, 0x6e,
-  0xc2, 0xc8, 0x23, 0xc7, 0x51, 0x24, 0x74, 0xb8, 0xd1, 0xe5, 0xee, 0xf6,
-  0xee, 0x0b, 0xec, 0xa8, 0x03, 0xa1, 0x85, 0x1e, 0x43, 0x32, 0x53, 0xa6,
-  0x7a, 0x8d, 0xdc, 0x97, 0xf5, 0x9c, 0x03, 0xea, 0x11, 0x43, 0x42, 0x1c,
-  0x41, 0xee, 0x2d, 0x82, 0xac, 0x71, 0xb2, 0xd2, 0x7c, 0x7e, 0x12, 0x5e,
-  0xa8, 0xa3, 0x5a, 0xf5, 0x31, 0x0b, 0x0f, 0xbc, 0xca, 0x13, 0x7f, 0x72,
-  0x87, 0xa7, 0xd6, 0x8c, 0x99, 0x7f, 0xa1, 0x86, 0xc9, 0xe5, 0x32, 0x64,
-  0xbe, 0x36, 0xa4, 0x2d, 0xd9, 0x72, 0x15, 0x87, 0xd4, 0x7c, 0xb6, 0x2f,
-  0x62, 0xa5, 0x83, 0x59, 0xb6, 0x42, 0x7d, 0xd4, 0x9c, 0xb5, 0xac, 0xa1,
-  0x28, 0x88, 0xc7, 0xd6, 0xb4, 0x26, 0x9d, 0x33, 0xb8, 0xa5, 0x3d, 0x56,
-  0xcb, 0xca, 0x96, 0xfb, 0xee, 0xd4, 0x4c, 0x7b, 0x96, 0xd6, 0xe6, 0x4a,
-  0xc0, 0x79, 0xcf, 0x29, 0x8a, 0xac, 0xe5, 0xf9, 0x28, 0xf9, 0x98, 0xb0,
-  0x93, 0x93, 0x7f, 0xfd, 0xcb, 0xf2, 0x2a, 0xcc, 0x78, 0x93, 0x12, 0xd3,
-  0xcb, 0xae, 0x9d, 0x55, 0x4c, 0x67, 0x11, 0x8b, 0xb4, 0xac, 0x5d, 0x6d,
-  0x04, 0x5a, 0xab, 0x6e, 0x77, 0x5d, 0x87, 0xfa, 0xfd, 0x5e, 0xfb, 0xfb,
-  0x3d, 0x31, 0x3b, 0x1e, 0x9f, 0xdd, 0x3e, 0x77, 0x58, 0xa8, 0x92, 0xc7,
-  0x1d, 0x8a, 0x6f, 0x26, 0x14, 0x30, 0x85, 0xf1, 0xa3, 0x72, 0xe7, 0xc4,
-  0xc2, 0x13, 0xc5, 0xf6, 0xcf, 0x11, 0x64, 0xab, 0x02, 0xf9, 0xa9, 0x78,
-  0x04, 0x66, 0x62, 0x09, 0xfb, 0x45, 0x90, 0x1d, 0xf8, 0x14, 0x5f, 0x57,
-  0xd4, 0x20, 0x7d, 0xff, 0xd4, 0xc5, 0xe2, 0x7b, 0x9e, 0x86, 0x72, 0x6d,
-  0x9a, 0x0d, 0x35, 0x4c, 0x97, 0xb7, 0x56, 0xef, 0x97, 0x7e, 0x7d, 0xee,
-  0x4a, 0xf5, 0x94, 0x35, 0x1f, 0x55, 0x0d, 0x77, 0xd8, 0x98, 0x3f, 0x06,
-  0x87, 0xb0, 0x48, 0xe6, 0x0c, 0x5e, 0xc9, 0x68, 0x8c, 0x2b, 0xa9, 0x07,
-  0x64, 0x07, 0x05, 0x4b, 0x61, 0x60, 0x9e, 0x23, 0x33, 0x16, 0xfc, 0x28,
-  0x60, 0x2e, 0x21, 0xe6, 0xbf, 0xee, 0xfa, 0x8f, 0x7b, 0x3b, 0x3b, 0xbb,
-  0xfb, 0xbb, 0x9f, 0xbf, 0xd8, 0xd9, 0xdf, 0xdd, 0xdd, 0xdd, 0xdb, 0xdf,
-  0xdd, 0xdf, 0xdf, 0xdb, 0xf9, 0x79, 0x9b, 0xed, 0x47, 0xb7, 0x69, 0x72,
-  0x67, 0x8e, 0x29, 0xc9, 0xc5, 0x03, 0x59, 0x4b, 0xdd, 0x76, 0xd5, 0xe0,
-  0x55, 0xcf, 0x35, 0xc9, 0xc7, 0xa1, 0x4a, 0x48, 0xc8, 0xbc, 0x80, 0xc9,
-  0x2d, 0x7d, 0xa6, 0x29, 0xce, 0x60, 0x00, 0x78, 0x8d, 0x51, 0xfd, 0x75,
-  0xc5, 0x33, 0x9d, 0xb0, 0x38, 0x00, 0x99, 0xa6, 0x74, 0x79, 0x7d, 0x57,
-  0xf3, 0x7c, 0x32, 0x41, 0xe6, 0x82, 0x4b, 0x6d, 0x1d, 0x45, 0x8c, 0xaa,
-  0x7a, 0x23, 0x24, 0xa1, 0x9e, 0x03, 0x04, 0x15, 0xca, 0x41, 0xf7, 0xab,
-  0x23, 0x82, 0x97, 0x06, 0x52, 0x4f, 0x73, 0xae, 0x30, 0x30, 0x63, 0xa6,
-  0x44, 0x8b, 0x54, 0xb8, 0x94, 0x97, 0xe8, 0x32, 0xf9, 0x7c, 0x67, 0x7f,
-  0x9f, 0x8b, 0x80, 0xfc, 0x7e, 0x77, 0xa0, 0xf1, 0xa0, 0x61, 0x90, 0xfb,
-  0xc0, 0x5d, 0x4f, 0xd2, 0x06, 0xab, 0x1f, 0xe1, 0x3c, 0xb3, 0xd5, 0x22,
-  0x29, 0x48, 0x11, 0xe1, 0x32, 0xb2, 0x08, 0x88, 0x84, 0xd1, 0x5b, 0xd0,
-  0xd6, 0x00, 0xc8, 0xd2, 0x08, 0xc6, 0xe7, 0x1b, 0x41, 0x50, 0x63, 0x5d,
-  0x12, 0xba, 0xc0, 0x05, 0xf9, 0x29, 0xba, 0xb6, 0x51, 0x08, 0x07, 0x76,
-  0x7c, 0x49, 0x65, 0x91, 0x24, 0x1e, 0xb9, 0x6f, 0x95, 0x33, 0xe0, 0x70,
-  0x65, 0x52, 0xdc, 0x94, 0x1f, 0x17, 0x19, 0x1e, 0x16, 0x93, 0x40, 0xb8,
-  0xd5, 0xfc, 0x9d, 0x1f, 0x83, 0xc9, 0xee, 0x3d, 0xdb, 0xfd, 0x59, 0xc2,
-  0x15, 0xf9, 0x40, 0xf8, 0x55, 0xd3, 0xc2, 0x70, 0xb3, 0x30, 0x43, 0xc3,
-  0x08, 0x69, 0x33, 0x19, 0x5d, 0x8d, 0x4c, 0xaa, 0x50, 0x6b, 0xe3, 0x20,
-  0x0c, 0x1a, 0x17, 0xc4, 0x72, 0x29, 0x59, 0x0c, 0x3d, 0xcd, 0x0c, 0x4a,
-  0x66, 0x10, 0x16, 0x63, 0x66, 0xad, 0xc2, 0x0f, 0xdd, 0x30, 0x47, 0x17,
-  0x07, 0x74, 0x79, 0x7c, 0xdb, 0x56, 0xf4, 0xdf, 0x26, 0xa4, 0x95, 0xf3,
-  0x66, 0x6f, 0xe2, 0x3c, 0xdc, 0x3a, 0x9c, 0x60, 0x5e, 0xbb, 0xa7, 0xd1,
-  0x26, 0xfb, 0x2c, 0x9e, 0x7d, 0xfe, 0xec, 0xe9, 0x96, 0x14, 0x65, 0x90,
-  0xd7, 0x12, 0xce, 0x0f, 0x81, 0x55, 0x52, 0xc1, 0x69, 0xd8, 0x9c, 0xec,
-  0x58, 0xd2, 0xfb, 0xf3, 0x63, 0x39, 0xd2, 0xd7, 0x82, 0x21, 0x20, 0x4a,
-  0x6f, 0x13, 0x57, 0x0e, 0xf7, 0x6d, 0x20, 0x64, 0x2c, 0x52, 0xc6, 0x3c,
-  0x44, 0xee, 0x35, 0x5f, 0x8c, 0x2e, 0xf7, 0x1f, 0x37, 0x2c, 0x1d, 0xd0,
-  0x1c, 0xa5, 0x0a, 0xb5, 0x02, 0x14, 0x06, 0x03, 0x90, 0x44, 0xc6, 0x68,
-  0x55, 0x3a, 0x73, 0x1a, 0x18, 0xeb, 0x41, 0xc2, 0x8f, 0x84, 0xfb, 0x37,
-  0x70, 0xb9, 0xb7, 0xc4, 0xe3, 0x0f, 0xa1, 0x90, 0xc9, 0x90, 0x1e, 0xb4,
-  0xd0, 0x51, 0x1e, 0x71, 0x2d, 0x1b, 0xcd, 0x4b, 0x9b, 0x01, 0xa6, 0x93,
-  0xc1, 0xb9, 0x28, 0x2b, 0x72, 0x4b, 0x28, 0xee, 0xec, 0x0a, 0x96, 0xc5,
-  0xb4, 0x66, 0xf2, 0xd1, 0x5c, 0x7a, 0xe4, 0xb4, 0x23, 0xe4, 0x78, 0x41,
-  0xd7, 0x51, 0x71, 0xaf, 0x12, 0x36, 0xd4, 0x04, 0x57, 0x59, 0xad, 0x11,
-  0x10, 0x20, 0xa8, 0x11, 0x61, 0x24, 0xbd, 0x03, 0x4d, 0x31, 0xa5, 0xb9,
-  0x36, 0x80, 0x1a, 0xdb, 0x1f, 0x2e, 0xec, 0xab, 0x20, 0x5e, 0x26, 0x4c,
-  0x2f, 0xb3, 0xdf, 0xed, 0xb9, 0x20, 0x94, 0x32, 0x6e, 0x4e, 0x6c, 0xcd,
-  0xd0, 0x04, 0x5b, 0x13, 0xe1, 0x53, 0x4e, 0xfb, 0xd9, 0xc4, 0x48, 0xb6,
-  0xb7, 0xb7, 0xd6, 0x8c, 0x46, 0xbf, 0xee, 0xea, 0xfd, 0x0c, 0x98, 0x24,
-  0x41, 0x46, 0x27, 0xed, 0x79, 0xbd, 0x71, 0x5e, 0xda, 0xb4, 0xe4, 0x9d,
-  0x9c, 0x69, 0x5c, 0xac, 0x98, 0x51, 0x4d, 0xbd, 0x92, 0xc1, 0x1b, 0xf3,
-  0xaa, 0x4f, 0x42, 0x43, 0x71, 0x0c, 0x23, 0x4a, 0xea, 0x4b, 0x8b, 0x7b,
-  0x73, 0x14, 0x1d, 0x30, 0x35, 0xd4, 0x3a, 0x0e, 0x86, 0x6c, 0xf6, 0x5c,
-  0x43, 0x40, 0x37, 0x21, 0xd6, 0x99, 0xf3, 0x06, 0xc1, 0x97, 0x26, 0xe6,
-  0x19, 0x24, 0x80, 0x33, 0xf6, 0x4e, 0x12, 0x81, 0x3f, 0x71, 0x9c, 0x33,
-  0x40, 0x36, 0x4e, 0xb3, 0x5a, 0xc9, 0x50, 0x6d, 0x04, 0x8e, 0x6e, 0x37,
-  0x09, 0x80, 0x26, 0x16, 0x06, 0xc6, 0x1b, 0x96, 0x11, 0x04, 0x02, 0x81,
-  0x06, 0xb5, 0x8b, 0x60, 0xed, 0x88, 0x58, 0xbc, 0xad, 0x13, 0x21, 0xaf,
-  0xda, 0x7a, 0x0c, 0x84, 0xe2, 0x25, 0x88, 0x41, 0xe2, 0x6d, 0xe9, 0x90,
-  0x30, 0xc3, 0x38, 0x38, 0x3e, 0xe1, 0xa8, 0xb8, 0x13, 0x52, 0xf1, 0xc6,
-  0x26, 0x2a, 0x21, 0x4a, 0x14, 0xf1, 0x7a, 0x59, 0xca, 0xe2, 0xfa, 0xc0,
-  0x95, 0x1e, 0xb1, 0x64, 0x29, 0xe8, 0x2d, 0xec, 0xdc, 0x13, 0xd5, 0x5f,
-  0x31, 0x02, 0x69, 0xb7, 0x48, 0x5e, 0x2a, 0xc5, 0x68, 0x0b, 0x28, 0x5e,
-  0x06, 0xa9, 0x87, 0x23, 0x15, 0x2a, 0xb5, 0xb0, 0x69, 0x54, 0x3e, 0x2a,
-  0x92, 0x79, 0x72, 0xab, 0xd6, 0x55, 0x01, 0x36, 0xfd, 0x5a, 0x7d, 0x98,
-  0x52, 0xfa, 0xb4, 0xf2, 0xae, 0xd8, 0x9a, 0x9b, 0x94, 0xfb, 0xdc, 0x16,
-  0x4c, 0x18, 0x0f, 0xf5, 0xc1, 0xdd, 0x7b, 0x34, 0x7e, 0x73, 0x19, 0xf3,
-  0x7b, 0x43, 0xd6, 0x71, 0x35, 0xb4, 0xf5, 0x7d, 0xa9, 0x68, 0x0e, 0xcd,
-  0x58, 0x71, 0xb1, 0x15, 0x5a, 0xf1, 0x3c, 0x31, 0xbe, 0x0f, 0x0c, 0x2f,
-  0x59, 0x3c, 0x06, 0x7c, 0xf1, 0x0c, 0xd8, 0x50, 0x2b, 0xc5, 0xe0, 0x49,
-  0x21, 0xe3, 0xca, 0x18, 0x03, 0x49, 0x1c, 0x05, 0x6d, 0xe4, 0x73, 0xfa,
-  0x13, 0xe1, 0x54, 0x12, 0x60, 0x49, 0xcf, 0x32, 0xde, 0x6b, 0x10, 0xd1,
-  0x4a, 0x7f, 0x4a, 0x32, 0x84, 0xfe, 0x85, 0xa6, 0x8a, 0x15, 0x60, 0x85,
-  0x07, 0x72, 0x19, 0xb2, 0xd3, 0xb1, 0x9a, 0x8e, 0xdc, 0xe8, 0xd5, 0xe7,
-  0x2f, 0xe3, 0x7f, 0x6d, 0x2e, 0x69, 0x13, 0x43, 0xf2, 0xc2, 0x56, 0x57,
-  0x76, 0x61, 0x22, 0xb5, 0x0e, 0xbf, 0x5a, 0xb1, 0x33, 0xcc, 0x55, 0xf2,
-  0xe1, 0x51, 0x2c, 0xf8, 0x2a, 0x4a, 0xa4, 0xac, 0xa8, 0x6b, 0x9c, 0x35,
-  0xba, 0x15, 0xed, 0xae, 0xb4, 0x7e, 0x92, 0xdf, 0x71, 0x4d, 0xd4, 0xcb,
-  0xcb, 0x74, 0xca, 0x85, 0x6e, 0x3c, 0x7c, 0x30, 0xb3, 0x78, 0x79, 0x70,
-  0x61, 0x65, 0x98, 0x68, 0x6e, 0xd1, 0x72, 0x35, 0x99, 0xd3, 0x5d, 0x6d,
-  0xd1, 0xec, 0x74, 0xa8, 0xb0, 0x4a, 0xa4, 0x6c, 0xa1, 0x39, 0xf1, 0xe5,
-  0x43, 0xdf, 0x6c, 0x44, 0x50, 0x6b, 0xa1, 0x78, 0x96, 0xc0, 0x17, 0x28,
-  0x0e, 0xcb, 0x61, 0xc6, 0x8b, 0x3c, 0xb3, 0x64, 0x98, 0x55, 0x29, 0x60,
-  0x92, 0x56, 0x55, 0x7e, 0x43, 0x3c, 0x13, 0xe9, 0x5c, 0xd1, 0xdb, 0x55,
-  0x33, 0xc7, 0x1b, 0xe1, 0x64, 0x66, 0xc3, 0xe5, 0xf5, 0xd2, 0x76, 0xda,
-  0xe4, 0x21, 0x11, 0x96, 0x34, 0xfd, 0x02, 0x27, 0xef, 0xec, 0x9b, 0xb3,
-  0x51, 0x74, 0xc4, 0x2d, 0xc9, 0x98, 0x54, 0xce, 0x85, 0x89, 0x86, 0xbe,
-  0xa3, 0xc9, 0x5e, 0xf1, 0xfd, 0x75, 0x5a, 0xf0, 0x5f, 0x68, 0x4d, 0xbf,
-  0x14, 0xab, 0x2c, 0xbe, 0xad, 0xf7, 0x4a, 0x0d, 0x59, 0x90, 0xf5, 0x19,
-  0x7e, 0xa7, 0xa3, 0x42, 0xd2, 0x97, 0xdb, 0x26, 0xdf, 0x43, 0x5e, 0xd4,
-  0xa0, 0x77, 0xe4, 0xcd, 0x88, 0x84, 0x32, 0x88, 0x56, 0xcb, 0x7b, 0xec,
-  0x5f, 0xc0, 0x1b, 0x45, 0xfc, 0x94, 0x06, 0x02, 0xd2, 0x52, 0xf2, 0x73,
-  0xe1, 0x7b, 0x72, 0xae, 0x0a, 0x01, 0x9d, 0x29, 0x12, 0x0d, 0x76, 0xcc,
-  0xd5, 0x4b, 0x2a, 0x06, 0x8d, 0x32, 0x69, 0x1c, 0xd7, 0x40, 0x7d, 0xb3,
-  0x2f, 0x58, 0xeb, 0xe6, 0xb1, 0x90, 0xd0, 0x42, 0x5b, 0x30, 0xda, 0xf8,
-  0xbf, 0x01, 0x87, 0xa5, 0x00, 0x5a, 0xec, 0x78, 0x02, 0x00,
+  0x84, 0x99, 0x80, 0x29, 0x57, 0x46, 0xc5, 0xf0, 0xa5, 0xa3, 0x5a, 0x02,
+  0x65, 0xf4, 0xd2, 0x85, 0x58, 0x06, 0xb4, 0x94, 0x8a, 0xe3, 0x17, 0xc4,
+  0xcc, 0xb9, 0x9c, 0x2f, 0x38, 0x37, 0x7e, 0x5c, 0x4b, 0x3d, 0x4b, 0x9c,
+  0xa5, 0x61, 0xf2, 0x7e, 0x2e, 0xa5, 0x04, 0x32, 0x56, 0x96, 0xf3, 0x72,
+  0xbc, 0x9c, 0xb1, 0xa9, 0x62, 0xcc, 0x06, 0x32, 0x5c, 0x3c, 0x22, 0x1e,
+  0x34, 0xdc, 0xf3, 0xe1, 0x80, 0xc5, 0x38, 0x22, 0x06, 0x73, 0xed, 0x17,
+  0xa1, 0x28, 0x1c, 0x80, 0xa5, 0x06, 0x71, 0x48, 0x05, 0x0e, 0x35, 0x45,
+  0x19, 0x10, 0x7b, 0x06, 0x0f, 0xdf, 0x1c, 0x9e, 0x9d, 0x1d, 0x9e, 0xf1,
+  0x7a, 0xef, 0xcf, 0x1b, 0x65, 0xe3, 0x1c, 0x74, 0xaa, 0x77, 0x35, 0x5a,
+  0xd8, 0x6f, 0x0c, 0xa1, 0x2f, 0xac, 0x30, 0x9d, 0x4c, 0x18, 0x64, 0x1c,
+  0x1a, 0x84, 0xe0, 0x04, 0x49, 0xb1, 0xee, 0xd0, 0xbc, 0x88, 0xb0, 0x6f,
+  0xe7, 0x36, 0x08, 0x8b, 0x36, 0x06, 0xb2, 0x85, 0x6f, 0xa1, 0xd4, 0xaa,
+  0xa4, 0x4b, 0x4b, 0xc9, 0xbf, 0xce, 0x1a, 0x62, 0xea, 0x50, 0x23, 0x75,
+  0x33, 0x75, 0xa6, 0x4f, 0x9d, 0x7d, 0x02, 0x53, 0xbe, 0xe4, 0x33, 0xca,
+  0xba, 0x13, 0x16, 0xa3, 0xaa, 0x97, 0x8b, 0x7c, 0xe2, 0xac, 0xbd, 0xf4,
+  0x39, 0x89, 0x7f, 0x89, 0x9c, 0xf2, 0xca, 0x62, 0x5d, 0xe0, 0xd5, 0x34,
+  0x63, 0x44, 0x68, 0x6d, 0x6b, 0xe1, 0xf7, 0x26, 0xc8, 0x96, 0x93, 0xa0,
+  0x31, 0xab, 0x99, 0xd4, 0xcc, 0x2d, 0x57, 0xda, 0xcf, 0x60, 0x65, 0x64,
+  0x6e, 0x61, 0xe1, 0x37, 0x21, 0x67, 0x60, 0x5b, 0xd6, 0xcc, 0xc7, 0xbb,
+  0x73, 0x08, 0xdb, 0x9e, 0xc0, 0xa0, 0x20, 0xa5, 0xb4, 0xdc, 0x4b, 0x7e,
+  0xac, 0xf2, 0xf1, 0xcf, 0xfe, 0xf2, 0x40, 0xfa, 0x8f, 0x0f, 0x49, 0x17,
+  0x0b, 0x3d, 0x4d, 0x5e, 0x17, 0x4a, 0x95, 0x61, 0x49, 0xe5, 0x7e, 0x7f,
+  0x7e, 0x78, 0x96, 0xec, 0x7f, 0xcd, 0x28, 0xc0, 0xff, 0xcd, 0x0d, 0xe6,
+  0xe7, 0xf4, 0x76, 0x58, 0x53, 0x1c, 0x3e, 0xc5, 0x36, 0xc9, 0xcc, 0x14,
+  0x2e, 0xb8, 0x5c, 0x8d, 0x9d, 0xcd, 0xad, 0xfa, 0xb6, 0xbf, 0xee, 0x9b,
+  0x7b, 0xb8, 0x96, 0x3c, 0xba, 0x8b, 0x9f, 0xb2, 0x87, 0x7c, 0xc8, 0xc2,
+  0x5d, 0x14, 0x54, 0x24, 0x71, 0x49, 0xd8, 0xde, 0xe8, 0xe8, 0xab, 0x48,
+  0xed, 0x94, 0x5d, 0xda, 0x4f, 0x7a, 0x6f, 0x8b, 0xbf, 0x91, 0x30, 0x90,
+  0x6e, 0x3d, 0x19, 0x6e, 0x27, 0x1b, 0xdf, 0xe7, 0xf3, 0x17, 0xcf, 0xfe,
+  0x94, 0x1c, 0x6d, 0xf6, 0x1a, 0xc1, 0xfc, 0x52, 0x81, 0x75, 0x94, 0xce,
+  0x6f, 0xdc, 0x96, 0x9d, 0xe0, 0x64, 0x4b, 0x50, 0x9d, 0x55, 0x65, 0x91,
+  0xaa, 0xd1, 0x2b, 0x5b, 0x44, 0xe2, 0xa7, 0xe6, 0x05, 0x24, 0xdf, 0x39,
+  0xc8, 0x6b, 0xd6, 0xf2, 0xe9, 0xa9, 0x09, 0x2f, 0xdd, 0x8b, 0x67, 0x51,
+  0x13, 0x4f, 0x5d, 0x1b, 0xef, 0xa5, 0x8d, 0x5f, 0xd8, 0xc4, 0xee, 0x70,
+  0x7b, 0x37, 0xd9, 0x38, 0x39, 0xdf, 0xda, 0x75, 0x2d, 0xc4, 0x4d, 0xec,
+  0xa2, 0x09, 0x7e, 0xa8, 0xf9, 0xf2, 0x53, 0xee, 0xff, 0xc7, 0x6c, 0xfe,
+  0x73, 0xb2, 0xf1, 0xc3, 0xce, 0x0e, 0x35, 0xf0, 0xa7, 0x64, 0xff, 0xe8,
+  0x87, 0xe4, 0xe9, 0x90, 0x1a, 0x7b, 0x97, 0xde, 0x6a, 0x73, 0x0a, 0x66,
+  0x7b, 0x8e, 0x46, 0xe8, 0xfb, 0xa8, 0x8d, 0x67, 0xad, 0x36, 0x8e, 0x49,
+  0x2f, 0xfc, 0x48, 0xd7, 0xca, 0xf6, 0xf0, 0xc9, 0x6e, 0x92, 0x3f, 0xfb,
+  0xfc, 0xb9, 0x35, 0xa4, 0x6d, 0xe0, 0xfb, 0xa6, 0xb5, 0x52, 0xe0, 0x52,
+  0x48, 0xd4, 0x39, 0xfc, 0x48, 0x0c, 0x0d, 0x2c, 0x02, 0x95, 0x32, 0xae,
+  0xd3, 0xd2, 0x6a, 0x18, 0x73, 0xb9, 0x03, 0xda, 0x29, 0x85, 0x91, 0xce,
+  0x60, 0xb6, 0xa4, 0x8b, 0x73, 0x2f, 0x1a, 0x0e, 0xeb, 0xa6, 0xf6, 0xe8,
+  0x9f, 0x92, 0xb7, 0xe7, 0x47, 0x87, 0x34, 0xa3, 0x6d, 0x1a, 0x9a, 0x5f,
+  0x43, 0x19, 0x10, 0xbe, 0xc2, 0xe2, 0xbe, 0x00, 0x2a, 0xa9, 0xb6, 0x11,
+  0x56, 0xdb, 0x05, 0xd1, 0xd1, 0xc5, 0x5d, 0xa1, 0x5f, 0x0e, 0x49, 0x19,
+  0xec, 0x5f, 0xb1, 0x0a, 0x21, 0x57, 0x2d, 0xba, 0xfe, 0xb6, 0x98, 0xd3,
+  0x31, 0x29, 0x8b, 0x92, 0x23, 0xa7, 0x7a, 0x0d, 0x69, 0xe1, 0xdb, 0xd7,
+  0x87, 0x92, 0x52, 0xff, 0x36, 0x9d, 0x13, 0x8f, 0x64, 0x74, 0xac, 0xea,
+  0x86, 0xfd, 0xff, 0xe2, 0xce, 0x91, 0xf7, 0x8f, 0xef, 0xe7, 0x1f, 0x69,
+  0x1f, 0x3f, 0x1b, 0xee, 0x70, 0xc8, 0x36, 0x6b, 0xbd, 0x6f, 0xde, 0xd2,
+  0xdf, 0x3b, 0x4f, 0x7b, 0x09, 0x7f, 0xd5, 0xd4, 0xe0, 0xed, 0xbc, 0xae,
+  0x1d, 0x9c, 0x9c, 0x7c, 0x7b, 0x24, 0x01, 0x20, 0x07, 0x6a, 0x56, 0x65,
+  0xe1, 0xca, 0x69, 0xc5, 0xc2, 0x5d, 0x49, 0x7b, 0xf3, 0xd9, 0x4a, 0x70,
+  0xc6, 0xdd, 0x64, 0xd9, 0x82, 0xa3, 0x11, 0xea, 0x16, 0x47, 0xa8, 0x95,
+  0x47, 0xbb, 0xd8, 0x26, 0x16, 0x7f, 0x1a, 0xc8, 0x5e, 0x15, 0x43, 0x25,
+  0x9b, 0x09, 0x77, 0x74, 0xef, 0x60, 0x3b, 0x52, 0x5f, 0x0e, 0x51, 0xeb,
+  0xa6, 0x68, 0x53, 0x66, 0x82, 0x96, 0xa2, 0x23, 0xf4, 0xa2, 0xea, 0xbe,
+  0xbd, 0x73, 0x92, 0xee, 0x65, 0xd0, 0x7b, 0x6a, 0xb5, 0xed, 0x05, 0xd8,
+  0xd2, 0x90, 0x68, 0x17, 0x5a, 0xea, 0x07, 0xa6, 0x63, 0x8b, 0xa8, 0x37,
+  0xde, 0x5c, 0xc1, 0x96, 0x8d, 0xf0, 0xbc, 0x77, 0xfb, 0x6f, 0x0f, 0x5f,
+  0x7d, 0xb7, 0x7f, 0xfc, 0xfe, 0x90, 0x5e, 0xc9, 0x01, 0xe3, 0xee, 0x42,
+  0xf8, 0x30, 0xc6, 0x59, 0x8e, 0x4a, 0xbf, 0x15, 0x89, 0x07, 0xbd, 0x35,
+  0x09, 0x2f, 0x4f, 0xd6, 0xf9, 0xad, 0x1d, 0x79, 0x8d, 0xe8, 0x82, 0xff,
+  0xda, 0x95, 0xbf, 0x76, 0xff, 0xb4, 0xbe, 0xd9, 0x98, 0x74, 0xa4, 0x25,
+  0x33, 0xbd, 0xdc, 0x49, 0xbd, 0x27, 0x0e, 0x0f, 0x92, 0xdc, 0x0d, 0x59,
+  0x95, 0x75, 0xf3, 0xd1, 0x84, 0x45, 0x2f, 0x37, 0x46, 0xf7, 0xa1, 0x0e,
+  0xbe, 0xce, 0x2f, 0xbd, 0x82, 0x80, 0xb1, 0x0e, 0xa0, 0xfb, 0xcc, 0x56,
+  0x4b, 0xda, 0xb0, 0x26, 0xb2, 0x8f, 0x0b, 0x8e, 0x88, 0xdc, 0x58, 0x97,
+  0x5f, 0x5e, 0xbd, 0xde, 0xbf, 0x38, 0xe4, 0x17, 0xac, 0x7b, 0xab, 0x6d,
+  0x60, 0x69, 0x14, 0x3c, 0x9e, 0x0d, 0x75, 0x4d, 0xbf, 0xe2, 0x09, 0xad,
+  0x6f, 0x8a, 0x2f, 0x03, 0x4e, 0xf5, 0xd6, 0xb8, 0x98, 0xa7, 0x49, 0xe0,
+  0xb6, 0x4f, 0x53, 0xaf, 0x2c, 0x62, 0x65, 0x63, 0x5d, 0xbe, 0x5b, 0x77,
+  0x16, 0x5c, 0xba, 0xcb, 0x7b, 0xb7, 0x99, 0xb9, 0x2b, 0x27, 0x48, 0xb2,
+  0x88, 0x32, 0x6b, 0x25, 0x24, 0xcd, 0xef, 0x8f, 0x3a, 0x2b, 0xc4, 0xe2,
+  0x14, 0xa0, 0x6d, 0xbb, 0x8d, 0xd7, 0x3c, 0x78, 0xb6, 0x31, 0x15, 0xc5,
+  0xce, 0xee, 0x93, 0x3f, 0x61, 0x3d, 0x5f, 0xad, 0x6f, 0xd1, 0xdd, 0xb0,
+  0xfe, 0x27, 0xee, 0x3a, 0xf7, 0x35, 0xb5, 0xdd, 0x7e, 0xb0, 0x3e, 0xa5,
+  0x14, 0x25, 0xe1, 0x32, 0xbc, 0xeb, 0x01, 0xbc, 0x0f, 0x16, 0xf4, 0x4e,
+  0xb2, 0xc4, 0x0c, 0x0c, 0xc7, 0x82, 0x07, 0xb0, 0x5f, 0xa3, 0xec, 0x2a,
+  0x9f, 0xa3, 0xd4, 0x9f, 0x18, 0x75, 0xd1, 0x5d, 0x78, 0x7f, 0xf4, 0xe5,
+  0x5d, 0x99, 0xa3, 0x02, 0x08, 0x71, 0x9f, 0xb3, 0x7b, 0x4b, 0x24, 0xab,
+  0x2a, 0x53, 0x71, 0x65, 0xcf, 0x22, 0xc9, 0x78, 0xa4, 0xb6, 0x1d, 0x53,
+  0x46, 0x20, 0x13, 0x10, 0x6b, 0xb9, 0x87, 0xa0, 0x84, 0x68, 0x83, 0x30,
+  0xc8, 0xc2, 0xee, 0xec, 0x74, 0xc4, 0x49, 0xe6, 0x2e, 0x35, 0x26, 0xd0,
+  0xca, 0xdd, 0xd2, 0xdb, 0xf1, 0xcb, 0x03, 0x64, 0x26, 0xbe, 0x28, 0x65,
+  0x2d, 0x2b, 0x67, 0x43, 0x82, 0xb7, 0x51, 0x9f, 0x6d, 0xee, 0x53, 0x2b,
+  0x1f, 0x0d, 0xd3, 0x10, 0x95, 0x5e, 0xf4, 0x63, 0x62, 0x35, 0xf3, 0xac,
+  0x7c, 0x30, 0xc0, 0xa2, 0xc3, 0x19, 0x85, 0x29, 0x06, 0x91, 0x0e, 0xfc,
+  0xce, 0x70, 0x38, 0xf4, 0x75, 0xc9, 0x79, 0x5b, 0xd4, 0x07, 0x85, 0x5a,
+  0x46, 0x01, 0x7e, 0x2c, 0xd6, 0x78, 0x03, 0xc2, 0x3c, 0x04, 0xea, 0x4d,
+  0x0d, 0xbc, 0x51, 0x3b, 0x81, 0x3b, 0x1a, 0x81, 0x8d, 0xa3, 0xa7, 0xdd,
+  0xf6, 0x0c, 0xb4, 0xe1, 0xa6, 0x6b, 0x13, 0x1e, 0x18, 0x9b, 0xd8, 0x1e,
+  0xb5, 0xc0, 0xa6, 0xe3, 0x53, 0x85, 0x5b, 0x0b, 0xa6, 0x60, 0x0e, 0x20,
+  0x07, 0x9d, 0x48, 0xc6, 0xb1, 0x2c, 0x9a, 0x0e, 0x45, 0x4b, 0xad, 0x31,
+  0x93, 0x2b, 0xee, 0x00, 0x82, 0x20, 0xc5, 0x6a, 0x16, 0x25, 0x6b, 0x7a,
+  0xbc, 0xc6, 0x76, 0x83, 0x2c, 0x9c, 0xd8, 0xac, 0xed, 0x28, 0x96, 0x30,
+  0xeb, 0xcc, 0x90, 0xfd, 0x35, 0xcb, 0x51, 0xe1, 0x68, 0x2a, 0x4b, 0xe2,
+  0x21, 0xb1, 0xad, 0x98, 0xc1, 0xed, 0xa5, 0x93, 0xf7, 0xe6, 0x2a, 0x8e,
+  0x36, 0x1b, 0x08, 0xa0, 0x8b, 0x25, 0x22, 0x1a, 0xf7, 0x50, 0x50, 0x8f,
+  0x87, 0xfc, 0xe5, 0x63, 0x6b, 0xd1, 0x39, 0xcb, 0x5b, 0x6b, 0xe3, 0x6f,
+  0xe5, 0x26, 0xeb, 0xa2, 0x15, 0x15, 0xeb, 0xb2, 0x40, 0x67, 0x78, 0xbe,
+  0x97, 0xa4, 0x77, 0x74, 0xf5, 0xcc, 0x33, 0x8e, 0xcf, 0x44, 0xa4, 0x03,
+  0xac, 0x32, 0xc7, 0x81, 0x9d, 0xd1, 0xcd, 0x50, 0xa9, 0x56, 0x63, 0x9a,
+  0x98, 0xef, 0xec, 0x59, 0x89, 0x6d, 0x81, 0xcb, 0x35, 0x83, 0x5e, 0x8e,
+  0x7a, 0xe0, 0x0c, 0x6f, 0xaa, 0x92, 0xba, 0xa9, 0xe7, 0x3c, 0xf2, 0x4d,
+  0x54, 0x4b, 0x16, 0x71, 0x1e, 0x71, 0x89, 0x6c, 0xe7, 0x90, 0xb8, 0x0a,
+  0x5b, 0xad, 0x74, 0x3e, 0x09, 0x3a, 0x71, 0xfe, 0x69, 0x35, 0x3f, 0x71,
+  0x78, 0xef, 0x7c, 0x00, 0xa0, 0x0b, 0x57, 0x4c, 0x57, 0xd4, 0xab, 0xab,
+  0x2b, 0xab, 0xbc, 0xd3, 0x9a, 0x5a, 0x37, 0x91, 0x1d, 0xf3, 0xaa, 0x70,
+  0x14, 0xf4, 0xfd, 0xaa, 0xd5, 0xbc, 0x30, 0x9b, 0x8f, 0x59, 0x5d, 0x1a,
+  0xc4, 0x6c, 0x3e, 0x49, 0xd9, 0xb7, 0xda, 0x25, 0x5d, 0x21, 0x41, 0xa3,
+  0xe9, 0x43, 0x3e, 0x39, 0x5b, 0x43, 0xe1, 0x84, 0xb9, 0x07, 0x64, 0xb0,
+  0x4d, 0x07, 0x3a, 0x9f, 0x8f, 0x40, 0xf1, 0x91, 0xa8, 0x77, 0x2e, 0xd4,
+  0x4a, 0x2a, 0x03, 0x8e, 0x52, 0xaf, 0x72, 0xad, 0x25, 0x0d, 0x6b, 0x2f,
+  0x17, 0x54, 0x39, 0x9a, 0x2b, 0x1f, 0x2a, 0x6e, 0x33, 0x0f, 0x10, 0xe9,
+  0x0d, 0x8e, 0x1e, 0x65, 0x57, 0x4f, 0xbf, 0x63, 0x26, 0x2d, 0x07, 0xaf,
+  0xe3, 0x57, 0x98, 0x64, 0x6b, 0x55, 0x86, 0x49, 0xd0, 0xa4, 0x98, 0x4a,
+  0x8a, 0x90, 0xc5, 0xcb, 0xd8, 0xd4, 0x6f, 0x6d, 0x2d, 0x0a, 0x8d, 0x08,
+  0xc4, 0x4b, 0xa0, 0x9a, 0x48, 0xc1, 0x11, 0x43, 0xca, 0x77, 0x31, 0x7a,
+  0xde, 0xff, 0x6b, 0xb3, 0x5c, 0x77, 0x9b, 0xb4, 0x6e, 0x35, 0x09, 0x40,
+  0x04, 0xa0, 0x01, 0x16, 0xe8, 0x9c, 0x0b, 0xff, 0x42, 0xf7, 0x09, 0x94,
+  0x0c, 0x0b, 0x5a, 0x8b, 0x91, 0x46, 0x67, 0xce, 0x85, 0x68, 0x20, 0x0f,
+  0x85, 0x38, 0x2f, 0xe2, 0x0a, 0x06, 0xa3, 0x35, 0xc9, 0x37, 0x1a, 0x8c,
+  0xc3, 0xca, 0xda, 0xab, 0x01, 0x0b, 0x46, 0x8d, 0x83, 0xf9, 0xd8, 0x39,
+  0x3d, 0x3d, 0x3b, 0xf9, 0xfa, 0xec, 0xf0, 0xfc, 0x3c, 0x79, 0x7b, 0x78,
+  0x21, 0xba, 0xfe, 0x85, 0x84, 0xde, 0x5d, 0xb1, 0xba, 0x9e, 0xc0, 0xd7,
+  0x60, 0x08, 0x4e, 0x16, 0x72, 0x62, 0x86, 0x04, 0xe4, 0x3c, 0x15, 0xec,
+  0x47, 0x83, 0xfc, 0x06, 0x25, 0x7e, 0xaa, 0x11, 0x7b, 0xd7, 0xb0, 0xf6,
+  0x23, 0xa6, 0x09, 0x0e, 0x49, 0x67, 0x3c, 0xf7, 0x66, 0x54, 0x08, 0xc6,
+  0x12, 0xe5, 0xe4, 0x72, 0x0e, 0xbd, 0x09, 0x9d, 0xaf, 0x6c, 0xfa, 0x89,
+  0xe9, 0xfd, 0x9e, 0x56, 0xb3, 0xe6, 0xb2, 0xe9, 0xfc, 0xeb, 0x99, 0x11,
+  0xc5, 0xef, 0x93, 0x1f, 0xa8, 0xcd, 0x09, 0x29, 0xaf, 0x6c, 0x41, 0xa6,
+  0x5b, 0xf6, 0x1c, 0xd5, 0x4e, 0x7d, 0x51, 0x21, 0x94, 0x28, 0x0d, 0xfe,
+  0xe3, 0x42, 0xc4, 0xc3, 0xee, 0x9a, 0x3c, 0x8d, 0xa2, 0x3a, 0x02, 0x96,
+  0xa9, 0x31, 0x75, 0xae, 0x67, 0x2d, 0x63, 0x9c, 0x24, 0xc7, 0xd9, 0x65,
+  0x0d, 0x29, 0x84, 0xbb, 0xa3, 0xe6, 0xb6, 0x19, 0xfd, 0x79, 0x87, 0xab,
+  0x9e, 0xd1, 0xaf, 0x4f, 0x3e, 0x7f, 0xbe, 0xfd, 0xb9, 0xfc, 0x6a, 0xff,
+  0xbe, 0x78, 0xba, 0xad, 0x28, 0xea, 0xf4, 0xd7, 0xd3, 0xbd, 0xa7, 0x3b,
+  0x7b, 0x0c, 0xee, 0xb8, 0xbd, 0xb7, 0x4d, 0xff, 0xff, 0x54, 0x3f, 0x61,
+  0x04, 0xcb, 0x17, 0xbb, 0x9f, 0x7f, 0x86, 0x68, 0x18, 0xa6, 0x8f, 0x29,
+  0x75, 0x32, 0xa8, 0x8b, 0x01, 0x30, 0xa6, 0x20, 0xf9, 0xfc, 0xbe, 0x69,
+  0x89, 0x64, 0xf7, 0xfa, 0x98, 0x9d, 0xa9, 0x57, 0xa2, 0xd3, 0x4c, 0x33,
+  0x3e, 0xf6, 0x6a, 0x55, 0x15, 0xdc, 0x1b, 0x8b, 0x10, 0x97, 0xb4, 0x6d,
+  0x9d, 0x86, 0xbe, 0x5d, 0xe3, 0x6f, 0x80, 0xb6, 0x35, 0xde, 0x91, 0x40,
+  0xf3, 0x00, 0x1f, 0xee, 0x97, 0x76, 0x6d, 0x89, 0xe4, 0x6b, 0x40, 0x7d,
+  0xd3, 0xad, 0xd2, 0xf7, 0xc6, 0x56, 0x09, 0xda, 0x3d, 0xc5, 0x62, 0xe0,
+  0x4c, 0x72, 0x12, 0x2e, 0x25, 0x5c, 0xf9, 0x97, 0xf6, 0x27, 0x96, 0x2b,
+  0x7e, 0x4b, 0xa9, 0x21, 0x89, 0x7b, 0x73, 0xb9, 0x08, 0x1d, 0x7d, 0x35,
+  0x88, 0x67, 0xcd, 0x6f, 0xbf, 0x5f, 0x29, 0x66, 0x65, 0xfa, 0x90, 0xcb,
+  0xe1, 0x92, 0xc2, 0xba, 0x1d, 0x53, 0x8e, 0x9a, 0x53, 0x32, 0xfa, 0x05,
+  0xcd, 0xf9, 0x19, 0x81, 0x82, 0xdd, 0xce, 0x0d, 0x82, 0xcd, 0xc9, 0x25,
+  0xb0, 0xcd, 0x56, 0xc3, 0xa1, 0x8a, 0xda, 0x35, 0x27, 0xaf, 0x3a, 0x92,
+  0x1d, 0xc8, 0x1b, 0x2a, 0x73, 0xba, 0xbc, 0x38, 0x3a, 0x85, 0xb7, 0x05,
+  0xae, 0x78, 0x79, 0xde, 0x28, 0x3b, 0xea, 0x8a, 0xa9, 0x31, 0xe8, 0x4f,
+  0xfb, 0xc0, 0x79, 0x72, 0x87, 0xee, 0xc1, 0xa9, 0xf9, 0xd8, 0x7a, 0x57,
+  0x58, 0x78, 0xc3, 0xc5, 0xaa, 0x77, 0x1d, 0x49, 0xff, 0x1c, 0xc2, 0xd7,
+  0x5d, 0x73, 0xe1, 0xed, 0x83, 0xa2, 0xd2, 0x5a, 0x16, 0x83, 0xa1, 0x4a,
+  0x19, 0xdb, 0x7f, 0xd3, 0x58, 0xd8, 0xe0, 0x77, 0x2e, 0x6c, 0x0b, 0x97,
+  0x99, 0xd6, 0x08, 0x4d, 0x85, 0xf2, 0xa7, 0x61, 0x2e, 0xad, 0xe3, 0x76,
+  0xa3, 0xb4, 0x6c, 0xa0, 0xe8, 0xaf, 0x49, 0x2d, 0x09, 0xba, 0x5e, 0xe9,
+  0xba, 0x40, 0xba, 0xa3, 0xc8, 0x11, 0xff, 0xb2, 0xb6, 0x76, 0x7e, 0x7a,
+  0x78, 0xf8, 0x3a, 0x39, 0x3e, 0x7a, 0x7b, 0x74, 0x11, 0x48, 0xe1, 0xee,
+  0xf6, 0x30, 0x4b, 0xab, 0x55, 0x9c, 0x6a, 0x2d, 0x87, 0xc7, 0x6c, 0x96,
+  0xfe, 0xec, 0xfe, 0x9e, 0x65, 0x9a, 0x45, 0x31, 0x6d, 0xbf, 0x07, 0x7d,
+  0x1b, 0xc0, 0x4e, 0xc3, 0xe4, 0xab, 0x20, 0x30, 0x32, 0xa9, 0x48, 0xa2,
+  0x19, 0xbb, 0x72, 0xcb, 0x83, 0x3f, 0x6b, 0x9c, 0x46, 0x53, 0x5c, 0x52,
+  0xe8, 0x59, 0x97, 0xd2, 0xa3, 0xb1, 0xad, 0xad, 0x51, 0xf1, 0xda, 0x66,
+  0x12, 0x5a, 0x1d, 0x98, 0xe5, 0x10, 0xb6, 0x77, 0x97, 0x01, 0xed, 0x60,
+  0x96, 0x4b, 0xae, 0x65, 0x18, 0x53, 0xec, 0x2a, 0xd0, 0x5e, 0x14, 0xc2,
+  0xc7, 0xc3, 0x1e, 0xc3, 0xd2, 0xe2, 0x16, 0x50, 0x6b, 0x7d, 0x85, 0x35,
+  0xab, 0x9f, 0x6c, 0xbb, 0x74, 0x85, 0x05, 0x78, 0x8e, 0xca, 0xf7, 0xdc,
+  0xd9, 0x4e, 0x42, 0x42, 0xc8, 0x92, 0x45, 0xf9, 0x72, 0x39, 0x8f, 0xae,
+  0xbb, 0x3f, 0xcb, 0xbb, 0x34, 0xff, 0xe7, 0xdb, 0xb8, 0xde, 0x2e, 0xd3,
+  0x72, 0x40, 0xe2, 0xd6, 0xfd, 0xc0, 0x4c, 0xaa, 0x42, 0x11, 0x1a, 0x6f,
+  0x2c, 0xf6, 0x9e, 0xcc, 0x17, 0xbb, 0x6d, 0x89, 0x88, 0x3e, 0xe7, 0xa4,
+  0x80, 0x5f, 0x72, 0xaa, 0x07, 0x80, 0xa7, 0xce, 0x99, 0xbe, 0x66, 0xe1,
+  0xf4, 0x02, 0x8e, 0x87, 0x25, 0xb6, 0x5d, 0xf4, 0x3c, 0x8a, 0x33, 0x10,
+  0xc0, 0x56, 0xb9, 0xd5, 0x9c, 0xa7, 0xa9, 0x73, 0x89, 0xe5, 0xe9, 0x59,
+  0xb2, 0xf3, 0x39, 0xcf, 0xe3, 0xd3, 0xe6, 0xf3, 0xa6, 0x28, 0xc7, 0x2e,
+  0xa7, 0x18, 0x3a, 0x42, 0x90, 0x60, 0x2a, 0x69, 0x11, 0xa8, 0xd5, 0x24,
+  0xab, 0x6b, 0x41, 0xb1, 0x08, 0xda, 0x63, 0xa5, 0x44, 0xfd, 0xe9, 0x30,
+  0x47, 0xc1, 0xc1, 0x2d, 0x62, 0x11, 0xdf, 0x35, 0xba, 0x2e, 0x6c, 0x60,
+  0x95, 0xa0, 0xbd, 0x5e, 0xe9, 0x12, 0x50, 0x65, 0x19, 0xd8, 0x24, 0x42,
+  0xb4, 0x76, 0x97, 0x4f, 0x20, 0x4a, 0x7b, 0x80, 0x3a, 0xda, 0x2f, 0x21,
+  0x3e, 0x89, 0x95, 0x86, 0xcf, 0x12, 0xce, 0x4e, 0x37, 0x32, 0x15, 0x60,
+  0x78, 0x59, 0x0b, 0x58, 0x14, 0x36, 0x20, 0x3f, 0x70, 0x7e, 0xb3, 0xf7,
+  0x0b, 0xb0, 0xfe, 0xc4, 0xac, 0x79, 0xdd, 0xf7, 0xc2, 0xb9, 0x02, 0x75,
+  0x3d, 0x35, 0x63, 0xc2, 0x5b, 0x47, 0xd8, 0xcd, 0x39, 0x33, 0x52, 0x4b,
+  0x30, 0xed, 0x9d, 0x6d, 0x12, 0x5a, 0xa7, 0x45, 0xa3, 0xf4, 0x39, 0x11,
+  0x55, 0xac, 0x89, 0x62, 0x5a, 0x03, 0xac, 0xce, 0xce, 0xf6, 0xb7, 0xab,
+  0x57, 0x1d, 0xe0, 0xfb, 0x0f, 0xbe, 0xbc, 0xfb, 0xf4, 0x81, 0x4d, 0x3b,
+  0x29, 0xa1, 0x8c, 0x67, 0x16, 0x03, 0x09, 0x41, 0xd0, 0x7b, 0x5e, 0xa2,
+  0x6d, 0x23, 0xc2, 0xcf, 0xae, 0x52, 0x1e, 0xfe, 0x43, 0xa3, 0xb7, 0x9c,
+  0x90, 0xd6, 0x50, 0xde, 0x6a, 0x54, 0xb6, 0x7c, 0x59, 0xb1, 0x59, 0x6c,
+  0x01, 0x78, 0x3e, 0xaf, 0xbb, 0xba, 0x74, 0x72, 0xc1, 0x66, 0x08, 0xde,
+  0x16, 0xce, 0xd9, 0x6f, 0x32, 0x09, 0xa3, 0x9e, 0x32, 0xbb, 0x5a, 0x0a,
+  0x12, 0x46, 0x21, 0xba, 0x3e, 0xa3, 0x59, 0xeb, 0x79, 0x25, 0xde, 0xcc,
+  0xe1, 0x43, 0x42, 0x4f, 0x60, 0xbc, 0xe3, 0xd4, 0x44, 0x56, 0x11, 0x39,
+  0xda, 0x17, 0x03, 0x1b, 0x65, 0xc7, 0xec, 0x05, 0x03, 0x37, 0x58, 0x4b,
+  0xda, 0x65, 0xb3, 0x05, 0xae, 0x71, 0x88, 0x4c, 0x5f, 0x21, 0x14, 0xc7,
+  0xec, 0x39, 0xad, 0x8c, 0xbd, 0x61, 0xb5, 0xb8, 0x05, 0xd0, 0x40, 0x5f,
+  0xa9, 0x16, 0x2d, 0xb9, 0xae, 0x98, 0xe3, 0x57, 0x06, 0x9b, 0x29, 0x10,
+  0xfb, 0x6c, 0xec, 0x3f, 0x38, 0x79, 0xf7, 0xe6, 0xe8, 0x6b, 0x07, 0x65,
+  0x24, 0x4c, 0xbc, 0x01, 0xb1, 0x21, 0xe6, 0xe3, 0xd0, 0xd3, 0xad, 0x85,
+  0x18, 0x35, 0xfa, 0x96, 0xd8, 0xd3, 0x87, 0xf0, 0x03, 0x30, 0x90, 0xf9,
+  0x13, 0x36, 0x90, 0x0b, 0xfe, 0x47, 0xb5, 0xe9, 0xcd, 0x0d, 0x2d, 0xa8,
+  0x3a, 0xc9, 0xd2, 0x48, 0xcb, 0x7a, 0xb9, 0x70, 0x41, 0x84, 0x41, 0x21,
+  0x47, 0x05, 0xdf, 0xb6, 0x54, 0xf4, 0xe5, 0x42, 0x58, 0x93, 0x26, 0x94,
+  0x36, 0xac, 0xb9, 0x72, 0x07, 0xb0, 0x39, 0x41, 0xb1, 0x54, 0xf4, 0x02,
+  0x88, 0xe2, 0x72, 0xa6, 0x0c, 0xd9, 0x19, 0xc6, 0xcb, 0x9b, 0xff, 0x66,
+  0x82, 0x62, 0x98, 0x61, 0xc1, 0xf3, 0x99, 0xa8, 0x63, 0x3c, 0x6f, 0x54,
+  0x94, 0x76, 0xc1, 0x38, 0x2e, 0xfa, 0xd7, 0xfb, 0x87, 0x2a, 0x57, 0x22,
+  0xdb, 0xc5, 0x27, 0x59, 0x1a, 0x6b, 0x0a, 0x57, 0x25, 0x7c, 0x9d, 0xf8,
+  0xe4, 0x15, 0xbb, 0x65, 0xf6, 0x18, 0x82, 0x7e, 0x26, 0x80, 0x72, 0x61,
+  0xfa, 0xa9, 0x72, 0x49, 0x0f, 0x15, 0x7f, 0x74, 0x19, 0x64, 0xb4, 0x49,
+  0x9c, 0xa0, 0x11, 0x9d, 0xd8, 0x88, 0xd9, 0xc0, 0xd2, 0xfb, 0x5d, 0x6f,
+  0x50, 0xdd, 0xcf, 0x46, 0xc5, 0xd4, 0x12, 0x2f, 0x1c, 0x80, 0x84, 0x3d,
+  0x14, 0x16, 0x56, 0x4b, 0xc4, 0x53, 0x5b, 0x07, 0x66, 0x49, 0x1f, 0x2b,
+  0xe5, 0xc7, 0x2f, 0xc5, 0x89, 0xe0, 0x1e, 0xb2, 0x59, 0x00, 0xdb, 0x87,
+  0x79, 0x7c, 0x36, 0x1f, 0x4f, 0x0b, 0xa5, 0x6a, 0x4e, 0x30, 0xc7, 0x4a,
+  0x35, 0xa7, 0xce, 0x1e, 0xbf, 0x62, 0xc9, 0x16, 0x0e, 0x14, 0x1e, 0x21,
+  0x71, 0x67, 0x5d, 0x11, 0x35, 0x30, 0x41, 0x7e, 0x5b, 0xbe, 0xd0, 0xa8,
+  0xfc, 0x00, 0xdf, 0x46, 0x2a, 0x95, 0xd0, 0x50, 0x7f, 0x12, 0x83, 0xa2,
+  0xf8, 0xfd, 0xfe, 0x6c, 0x9d, 0xdb, 0xa3, 0xad, 0xa5, 0x27, 0x7a, 0x4a,
+  0xcb, 0x2b, 0x45, 0xe9, 0x53, 0x4f, 0x1a, 0x94, 0x44, 0x57, 0x3f, 0xc6,
+  0x19, 0x26, 0x59, 0x28, 0x71, 0x51, 0x33, 0x10, 0x9f, 0x96, 0x92, 0x53,
+  0xa8, 0x19, 0x57, 0x62, 0x92, 0x74, 0x84, 0x18, 0x70, 0x9c, 0xdf, 0xb9,
+  0x58, 0x94, 0xd4, 0xdf, 0x65, 0x56, 0xd6, 0xc2, 0xdb, 0x67, 0xf5, 0x32,
+  0x0b, 0x5e, 0x63, 0x23, 0x1e, 0x34, 0xe1, 0x4c, 0x0d, 0x27, 0xd2, 0x15,
+  0x64, 0x09, 0xc6, 0xb5, 0x41, 0xf2, 0x4f, 0x56, 0xf9, 0x26, 0xe4, 0xfb,
+  0x57, 0x5a, 0xcf, 0x8a, 0xce, 0xb3, 0x22, 0xa5, 0x28, 0x7c, 0xe0, 0xe7,
+  0xdb, 0x6a, 0x7e, 0xab, 0x35, 0x5c, 0xb5, 0x4a, 0xf6, 0xcf, 0x0e, 0x49,
+  0xb2, 0xbd, 0x9a, 0x03, 0xa3, 0x62, 0x5e, 0x5b, 0x52, 0x5d, 0x36, 0xd7,
+  0x02, 0x5a, 0x73, 0x3b, 0x1f, 0xdc, 0xe1, 0x5d, 0xf0, 0x26, 0x13, 0x93,
+  0x06, 0x06, 0x48, 0xfe, 0xb6, 0x27, 0xb9, 0xb1, 0x81, 0x09, 0x83, 0xeb,
+  0x30, 0x4c, 0x82, 0x90, 0x14, 0xbb, 0x48, 0xa8, 0xab, 0xc2, 0x80, 0x84,
+  0x4f, 0x23, 0xb6, 0x1e, 0x22, 0x08, 0xdb, 0x5a, 0xe3, 0x54, 0xfb, 0x54,
+  0x84, 0xbf, 0x1a, 0x2e, 0xa7, 0xf6, 0xd5, 0x70, 0x7b, 0x7a, 0x72, 0xea,
+  0x77, 0x9b, 0x8c, 0xfe, 0x8a, 0x7b, 0x86, 0x65, 0x91, 0xb6, 0x5c, 0x90,
+  0xb9, 0x08, 0x7b, 0xb1, 0x5e, 0x4f, 0x02, 0xe1, 0x57, 0x52, 0x00, 0x39,
+  0xc6, 0x5a, 0x0c, 0xd3, 0x8a, 0x04, 0xa4, 0x76, 0x1d, 0x51, 0x07, 0x26,
+  0x7a, 0x56, 0x99, 0x2a, 0x38, 0x5c, 0x78, 0xc4, 0x68, 0x49, 0x52, 0x3a,
+  0xbb, 0xc1, 0x9f, 0x3a, 0x6d, 0xbb, 0xbf, 0x73, 0xb3, 0xf5, 0x63, 0x70,
+  0x5f, 0xf2, 0x47, 0xaf, 0x1c, 0xba, 0x1d, 0x8f, 0x62, 0xc8, 0x1d, 0x81,
+  0xa5, 0xc2, 0x67, 0xca, 0xbf, 0xe0, 0x63, 0x44, 0xbd, 0x19, 0xda, 0x29,
+  0xb8, 0x8e, 0x83, 0xd0, 0x2a, 0xd4, 0xa7, 0xea, 0x07, 0x22, 0x8e, 0x3d,
+  0x70, 0xe8, 0x51, 0x28, 0x1a, 0x0f, 0xbe, 0xdd, 0xb2, 0x1a, 0xb8, 0x6c,
+  0xbf, 0xe1, 0x04, 0x62, 0x3b, 0xf0, 0x55, 0xd6, 0x28, 0x9a, 0xeb, 0x32,
+  0x85, 0xd6, 0x07, 0xeb, 0xb4, 0x16, 0xbd, 0xe9, 0xd4, 0x33, 0x7c, 0x7b,
+  0x8c, 0x77, 0x15, 0x49, 0x75, 0x5e, 0x60, 0x52, 0xde, 0xc5, 0xd5, 0x38,
+  0xee, 0x1b, 0x29, 0x0e, 0x5c, 0xce, 0x8c, 0x33, 0x80, 0x1c, 0xb0, 0x17,
+  0xd2, 0x44, 0x10, 0x24, 0x70, 0x9b, 0x57, 0xe6, 0x7c, 0x24, 0xda, 0x1e,
+  0x4b, 0x4c, 0x44, 0x2d, 0x80, 0x04, 0x59, 0x3d, 0x0e, 0x96, 0x32, 0x1b,
+  0x5f, 0x17, 0x12, 0x53, 0x4b, 0x8b, 0x16, 0x64, 0x7a, 0xae, 0x27, 0xff,
+  0xa9, 0x34, 0xf0, 0xad, 0x4f, 0xda, 0x63, 0x42, 0x18, 0x0a, 0x0e, 0xe5,
+  0xd0, 0x13, 0xc4, 0xe1, 0x0f, 0x17, 0x67, 0xfb, 0xc9, 0x37, 0x87, 0xfb,
+  0xaf, 0x0f, 0xcf, 0xce, 0x5b, 0x97, 0xbe, 0x86, 0x7f, 0x88, 0x84, 0xc6,
+  0x46, 0x60, 0x88, 0xc6, 0x06, 0x3c, 0xa0, 0x71, 0xfb, 0xc6, 0xf5, 0x88,
+  0x78, 0xf8, 0x20, 0xd1, 0xf9, 0x60, 0x85, 0x48, 0xbc, 0x05, 0x40, 0x3d,
+  0xae, 0xc0, 0x6c, 0x5c, 0x1b, 0x63, 0xe2, 0x50, 0x1c, 0xc4, 0x60, 0x26,
+  0xf3, 0x30, 0x63, 0xc6, 0x63, 0xf5, 0xf9, 0xcb, 0x64, 0x52, 0x58, 0x32,
+  0x60, 0x73, 0xe7, 0xbe, 0xf1, 0xf9, 0xde, 0x01, 0xdb, 0xd2, 0x4b, 0x46,
+  0xad, 0x86, 0xeb, 0x3f, 0x0c, 0xa8, 0xdf, 0x01, 0x2d, 0xfe, 0x80, 0xc1,
+  0x1c, 0xef, 0xb3, 0x6a, 0xbd, 0x65, 0x02, 0x6c, 0x76, 0xbf, 0x26, 0x25,
+  0x9c, 0xa2, 0x93, 0xf4, 0x4d, 0x67, 0x4b, 0x7c, 0xba, 0xb8, 0xca, 0x73,
+  0xa4, 0x41, 0xe0, 0x52, 0x0d, 0x84, 0x64, 0x3d, 0x41, 0x51, 0x7a, 0x8b,
+  0x06, 0x28, 0x79, 0x35, 0x53, 0xe3, 0xc1, 0x30, 0x10, 0x9d, 0x02, 0x64,
+  0x1d, 0x3a, 0x7b, 0x72, 0xa9, 0x4f, 0x05, 0xa0, 0x59, 0x2c, 0x66, 0x34,
+  0x2c, 0x7d, 0x28, 0xbc, 0x1f, 0xe0, 0x00, 0xd1, 0x18, 0xfc, 0xaa, 0xe1,
+  0x1f, 0x55, 0x63, 0xa8, 0x62, 0x77, 0x6b, 0x73, 0x3c, 0x06, 0x47, 0xf3,
+  0x16, 0xba, 0xcf, 0x5d, 0x5a, 0x59, 0x11, 0x7d, 0x57, 0xa2, 0xc0, 0x58,
+  0xa9, 0x87, 0x7d, 0x53, 0xea, 0x93, 0x4a, 0x91, 0x42, 0x61, 0x6c, 0x41,
+  0x2e, 0x50, 0x48, 0xcc, 0xa8, 0x81, 0x86, 0xe8, 0x71, 0xf7, 0x5c, 0x96,
+  0x7c, 0x53, 0x54, 0xb8, 0x0b, 0xe2, 0xc7, 0xf9, 0x92, 0xef, 0x5a, 0x7e,
+  0xbc, 0xa1, 0xfe, 0x2d, 0x07, 0x12, 0x0b, 0x4c, 0x65, 0xb0, 0xaf, 0xd3,
+  0xfd, 0x8b, 0x6f, 0xe0, 0x5d, 0x05, 0x09, 0xbf, 0x06, 0x62, 0x8a, 0xf9,
+  0xd4, 0xe2, 0x94, 0x2c, 0xa7, 0xc0, 0x89, 0xfc, 0x6b, 0xc0, 0x8c, 0x26,
+  0x4f, 0xc2, 0x7b, 0x97, 0x4b, 0x20, 0xd2, 0x54, 0x6a, 0xc2, 0x82, 0x47,
+  0x37, 0xea, 0xf2, 0x21, 0xf4, 0xdd, 0xe5, 0xdb, 0xb9, 0x78, 0xcb, 0x9e,
+  0x24, 0xc2, 0xf7, 0x64, 0x4e, 0x20, 0x7a, 0x16, 0xe6, 0x58, 0xe3, 0x09,
+  0x91, 0x87, 0xf1, 0x05, 0x67, 0x3a, 0x8b, 0x03, 0x6a, 0x52, 0x74, 0xe3,
+  0x1e, 0x06, 0x47, 0xfa, 0xcb, 0xd9, 0xfd, 0x30, 0x06, 0xe0, 0x49, 0xbe,
+  0x5a, 0xd6, 0x4d, 0xb6, 0xd2, 0xc2, 0x3f, 0x76, 0x92, 0x65, 0x59, 0x14,
+  0x75, 0x30, 0x06, 0x48, 0x3f, 0x69, 0xad, 0x27, 0x5a, 0x00, 0x2e, 0x65,
+  0x2c, 0xdc, 0xd4, 0x5c, 0xe5, 0xee, 0x50, 0x30, 0x4c, 0x47, 0x55, 0x31,
+  0x5d, 0xd6, 0x41, 0xf4, 0xf5, 0x2f, 0x1b, 0x73, 0x30, 0xe8, 0x8d, 0xa3,
+  0xa1, 0x81, 0x7d, 0xce, 0x05, 0xa2, 0x8e, 0x34, 0x7d, 0x12, 0x2f, 0xe1,
+  0x6c, 0x2c, 0x8b, 0x79, 0xb3, 0x78, 0x1c, 0x02, 0xbd, 0x37, 0xd7, 0xd6,
+  0xce, 0x6d, 0xb3, 0x19, 0xee, 0x35, 0xde, 0xf4, 0xef, 0x21, 0x4d, 0xf2,
+  0x18, 0xc4, 0x59, 0x30, 0xa6, 0x5f, 0x0c, 0x04, 0x2e, 0x93, 0x3d, 0x05,
+  0x0b, 0x97, 0x3d, 0xce, 0xab, 0xe6, 0xa4, 0xf0, 0x95, 0x73, 0x57, 0x58,
+  0x7e, 0xd9, 0x45, 0x61, 0x40, 0xfe, 0xea, 0xae, 0xf3, 0x04, 0xd1, 0xc8,
+  0x86, 0xef, 0x44, 0x98, 0xe6, 0x4b, 0xc0, 0x2a, 0x0d, 0xbb, 0x70, 0x5c,
+  0x1e, 0xe4, 0xd6, 0x7f, 0x6d, 0x25, 0xfd, 0x44, 0x8b, 0xc0, 0x77, 0x80,
+  0x1c, 0xfd, 0x5f, 0x08, 0xbc, 0x52, 0x78, 0x5f, 0x6e, 0x73, 0xd8, 0x04,
+  0x90, 0x1d, 0x92, 0x0a, 0x75, 0x5d, 0x8e, 0x3d, 0xf5, 0x93, 0x74, 0x90,
+  0xdd, 0xb1, 0xfe, 0x62, 0x3a, 0x82, 0xc2, 0x85, 0x48, 0xb1, 0x5f, 0x07,
+  0xc0, 0x04, 0xb8, 0x8d, 0x4b, 0x67, 0xd5, 0xe3, 0xba, 0x9b, 0x52, 0x84,
+  0x52, 0xc4, 0x7a, 0xd4, 0x60, 0x32, 0xb7, 0xa9, 0x64, 0xd4, 0x3b, 0xbd,
+  0xbd, 0x4a, 0xaa, 0x42, 0x7e, 0x5a, 0xd2, 0x91, 0x06, 0x76, 0x29, 0xf9,
+  0x07, 0xb5, 0xfd, 0x82, 0xa2, 0xb8, 0x16, 0x71, 0x2a, 0xd1, 0x74, 0xe6,
+  0x8e, 0xb4, 0x41, 0x9a, 0x14, 0xc0, 0xde, 0x4a, 0xc0, 0x5a, 0x2a, 0xf2,
+  0x08, 0x47, 0x92, 0x31, 0x86, 0xb1, 0x24, 0x6d, 0x73, 0xd5, 0x46, 0xd3,
+  0x64, 0xec, 0x4a, 0xb5, 0x34, 0x8e, 0xb5, 0xb0, 0x86, 0xb6, 0x0c, 0x5f,
+  0xef, 0x7e, 0x24, 0xe1, 0xc3, 0x33, 0x77, 0x97, 0x32, 0x4e, 0x9a, 0x17,
+  0x09, 0x6c, 0x4a, 0x5a, 0xf7, 0x55, 0x82, 0x37, 0xc2, 0x80, 0x14, 0x1f,
+  0xb1, 0x79, 0xc5, 0x59, 0x1e, 0x6a, 0x92, 0x52, 0x2c, 0x13, 0xd8, 0xbf,
+  0xae, 0x73, 0x8d, 0x2b, 0x95, 0x55, 0x6f, 0x56, 0xd5, 0x84, 0x85, 0x8f,
+  0x43, 0x0a, 0xbc, 0x57, 0xd5, 0x05, 0x3e, 0x0c, 0xe3, 0x03, 0x33, 0x74,
+  0xa8, 0xaa, 0x7a, 0x89, 0x1c, 0x85, 0x39, 0xe5, 0x12, 0x85, 0xe1, 0x62,
+  0x9d, 0x3f, 0xb1, 0xf7, 0xb0, 0x4b, 0x0e, 0x62, 0x9d, 0x27, 0x92, 0x40,
+  0xa2, 0x50, 0x71, 0x7c, 0xa1, 0xec, 0xee, 0x40, 0x31, 0x95, 0x98, 0x0d,
+  0xe0, 0x94, 0x5a, 0x0b, 0x86, 0x97, 0xd6, 0x5e, 0xfc, 0xcd, 0xbe, 0xae,
+  0x92, 0xcb, 0xb8, 0x57, 0x17, 0xb3, 0xc8, 0x85, 0x81, 0xdf, 0xa9, 0x51,
+  0x3d, 0x4e, 0xb2, 0xb8, 0xab, 0xba, 0x5c, 0x8e, 0x1b, 0x10, 0x7d, 0xa0,
+  0x88, 0x86, 0x6b, 0xde, 0xad, 0x71, 0x11, 0xea, 0xf6, 0x47, 0xa7, 0xaa,
+  0xde, 0x8b, 0xf6, 0xc1, 0x23, 0xdb, 0x48, 0x1b, 0x49, 0x2e, 0xae, 0xb0,
+  0x68, 0xd8, 0xef, 0xa6, 0xa3, 0xb2, 0xc1, 0xa9, 0xcb, 0xa8, 0x6f, 0x95,
+  0x87, 0xe7, 0xec, 0x84, 0xe0, 0xee, 0x55, 0x41, 0x0c, 0x82, 0x47, 0x99,
+  0x28, 0xf8, 0x22, 0xc4, 0x1a, 0x36, 0x59, 0xae, 0x39, 0x80, 0x44, 0x1a,
+  0xd2, 0x40, 0x43, 0x55, 0xc5, 0xfb, 0xbb, 0x45, 0x0b, 0x69, 0xe5, 0x81,
+  0x5c, 0x5d, 0xac, 0xca, 0x83, 0x2c, 0xb6, 0xe2, 0x54, 0x01, 0xd1, 0xe4,
+  0xe4, 0x43, 0x05, 0x8b, 0xd3, 0xf5, 0x1b, 0x26, 0xaf, 0xf5, 0x50, 0x68,
+  0x0f, 0x6d, 0x71, 0x22, 0xbe, 0x1b, 0x4f, 0x05, 0x0a, 0x25, 0xa2, 0xa3,
+  0xd7, 0x66, 0x53, 0x05, 0xcb, 0xc1, 0xda, 0xb0, 0x66, 0x63, 0x9b, 0x44,
+  0xeb, 0x6a, 0x5d, 0xd0, 0x10, 0x78, 0xc6, 0xbd, 0x69, 0xb6, 0xdd, 0x0b,
+  0x0a, 0x7b, 0x6d, 0x48, 0xd0, 0x7f, 0x01, 0xed, 0xc7, 0x81, 0x15, 0x8a,
+  0xf5, 0x82, 0x83, 0xdb, 0x36, 0x3b, 0x86, 0x42, 0x4d, 0xfc, 0xd2, 0xc1,
+  0xec, 0xbc, 0xd8, 0x1d, 0xee, 0x3c, 0xff, 0x7c, 0xb8, 0x3d, 0xdc, 0xd9,
+  0x66, 0xfe, 0xc2, 0x43, 0x09, 0x06, 0x27, 0xeb, 0xd2, 0xd1, 0x55, 0xe3,
+  0xbd, 0xb8, 0xcf, 0x77, 0x87, 0x17, 0xdf, 0x9f, 0x9c, 0x7d, 0x9b, 0x1c,
+  0xbd, 0xbb, 0x38, 0x3c, 0x7b, 0xb3, 0x7f, 0xf0, 0xa9, 0x80, 0xfd, 0xa1,
+  0xd9, 0x3a, 0xa8, 0x6d, 0x9d, 0xf9, 0x85, 0x89, 0x6d, 0x83, 0x7e, 0xcd,
+  0xb2, 0xfa, 0x7a, 0x7b, 0x6f, 0xe7, 0x41, 0x48, 0xea, 0x0e, 0xf3, 0xa0,
+  0x7f, 0xdf, 0x26, 0xb5, 0xc3, 0x93, 0x5a, 0xdd, 0x8a, 0x83, 0x66, 0x3c,
+  0x97, 0xd8, 0x2a, 0x17, 0x97, 0x0b, 0x36, 0x8f, 0xd2, 0x49, 0x40, 0x64,
+  0x55, 0xc6, 0x3e, 0x12, 0xf0, 0x5b, 0x49, 0xaf, 0x55, 0x90, 0x19, 0x8d,
+  0x41, 0x57, 0x9e, 0xbb, 0x26, 0x75, 0xa4, 0x6b, 0x35, 0xa7, 0x08, 0x9c,
+  0xed, 0x04, 0x22, 0x9e, 0x71, 0x65, 0xcd, 0x5d, 0x63, 0x6a, 0xd1, 0xd2,
+  0xa6, 0x02, 0x38, 0x38, 0x71, 0x79, 0x22, 0x0e, 0x85, 0x00, 0xa1, 0x0f,
+  0x26, 0xa7, 0x63, 0xac, 0xcd, 0x52, 0xe0, 0x61, 0xf8, 0x6c, 0x0b, 0x7b,
+  0xb5, 0xb2, 0xb8, 0x66, 0x4c, 0xac, 0x61, 0x1a, 0x3d, 0xd0, 0x81, 0xe0,
+  0x34, 0x04, 0xa3, 0x91, 0xae, 0x20, 0x50, 0x31, 0x48, 0x1a, 0xe0, 0x21,
+  0x1b, 0x08, 0xc9, 0x72, 0x47, 0x21, 0x77, 0x42, 0xe4, 0x3f, 0xab, 0x6a,
+  0xc1, 0xad, 0x57, 0x0d, 0x90, 0xc2, 0x44, 0xca, 0x59, 0x85, 0xaf, 0x8b,
+  0xa8, 0x8d, 0xe8, 0xcc, 0x49, 0x99, 0xde, 0xa1, 0x26, 0x4b, 0xee, 0x21,
+  0x47, 0xd7, 0x92, 0x46, 0x4d, 0x2e, 0x16, 0x9c, 0xfc, 0x9a, 0x27, 0xa7,
+  0x87, 0x6f, 0x07, 0x56, 0x49, 0x98, 0x7e, 0x17, 0x63, 0x94, 0xe1, 0x4b,
+  0x4a, 0x6e, 0xcf, 0x22, 0x9b, 0x5b, 0x2c, 0x0d, 0x78, 0xa2, 0x06, 0xff,
+  0x84, 0x13, 0xe0, 0x43, 0xe3, 0x10, 0x28, 0x35, 0x64, 0xd4, 0x62, 0x2e,
+  0x25, 0xb7, 0xb0, 0x0d, 0xcb, 0xc9, 0xfb, 0xa9, 0x01, 0xcb, 0xc9, 0x86,
+  0x0b, 0xd2, 0xe5, 0xfe, 0x10, 0x89, 0x8a, 0xa8, 0x01, 0x17, 0x26, 0x50,
+  0x58, 0xe6, 0xf5, 0xe9, 0xb7, 0x07, 0xe7, 0xbf, 0xdb, 0xd9, 0xd5, 0xe1,
+  0x6c, 0x9a, 0x56, 0xc0, 0xbc, 0xaa, 0x9d, 0x94, 0x0f, 0x76, 0x1d, 0x8e,
+  0xd1, 0x52, 0xac, 0x71, 0xc0, 0xb1, 0x19, 0x1b, 0x2e, 0x31, 0x68, 0xb3,
+  0x91, 0x19, 0xb4, 0x26, 0x05, 0xed, 0x4d, 0xc4, 0x74, 0xd5, 0x7e, 0xd9,
+  0x25, 0x82, 0x9a, 0x50, 0x5a, 0x95, 0xa9, 0x76, 0xa1, 0x7e, 0xe9, 0xdc,
+  0x3e, 0x92, 0x96, 0xb5, 0x35, 0xe4, 0x90, 0xfb, 0x70, 0x96, 0xf6, 0x9e,
+  0xf3, 0x7a, 0xfb, 0x6f, 0x19, 0x27, 0x56, 0x6f, 0x76, 0x03, 0x04, 0xf2,
+  0xdd, 0xe0, 0x00, 0x68, 0xf4, 0xfa, 0xc4, 0xea, 0xbe, 0xcd, 0x7d, 0x19,
+  0x14, 0x7e, 0xfa, 0x84, 0x36, 0x8a, 0x4e, 0x96, 0xe0, 0x36, 0x30, 0x53,
+  0x28, 0xa6, 0xac, 0xba, 0xb8, 0x47, 0x5e, 0x97, 0x5c, 0x6f, 0x66, 0x21,
+  0x71, 0xa4, 0xef, 0x86, 0xc9, 0x37, 0xd9, 0x9c, 0x13, 0xe7, 0x39, 0xe2,
+  0xce, 0x72, 0xaf, 0x10, 0x17, 0xc8, 0x85, 0x27, 0x51, 0x88, 0xef, 0x38,
+  0x4b, 0x15, 0x93, 0x93, 0x78, 0x5d, 0x25, 0x1a, 0xae, 0x15, 0xa1, 0x4a,
+  0x39, 0x3a, 0x4f, 0x01, 0x44, 0x1d, 0xd8, 0x85, 0x80, 0x44, 0x73, 0x03,
+  0x1b, 0x4d, 0x60, 0x4d, 0x94, 0x44, 0x40, 0x73, 0x7a, 0xcc, 0xe1, 0x6b,
+  0x52, 0xab, 0xf2, 0x35, 0xe0, 0xb4, 0xd9, 0x5a, 0x28, 0x1a, 0x97, 0x67,
+  0x2a, 0x93, 0xf2, 0x9a, 0x4d, 0x1f, 0x15, 0x5d, 0x37, 0xe9, 0x7c, 0x7c,
+  0x3f, 0x9c, 0x90, 0x2c, 0xcb, 0xc6, 0xb3, 0xe1, 0xf2, 0x66, 0x2b, 0x38,
+  0xa6, 0xcc, 0xf2, 0xaf, 0x05, 0x23, 0xa0, 0x69, 0xf8, 0xb6, 0x0a, 0xc7,
+  0x31, 0x74, 0x58, 0xda, 0x38, 0x13, 0x4c, 0x12, 0x96, 0xed, 0x2f, 0xc7,
+  0x73, 0x25, 0xc8, 0xd6, 0x61, 0xe2, 0x10, 0x8e, 0xb9, 0x85, 0xe1, 0x22,
+  0x9b, 0xed, 0xb9, 0x6c, 0x64, 0xe3, 0x0f, 0x5a, 0x55, 0xc3, 0x29, 0x16,
+  0x81, 0x91, 0x76, 0x9e, 0x5d, 0x4d, 0x55, 0xa0, 0x08, 0x55, 0x17, 0xd7,
+  0x44, 0x47, 0x0a, 0x88, 0x28, 0x3c, 0x5a, 0x22, 0x09, 0x12, 0x3b, 0xd1,
+  0x61, 0xad, 0x21, 0xb5, 0xf2, 0x70, 0xc9, 0x02, 0xbd, 0x6f, 0x44, 0x91,
+  0x43, 0x00, 0xb6, 0x8c, 0x6a, 0xf2, 0x62, 0xe2, 0xb1, 0x48, 0x24, 0x75,
+  0x3f, 0x31, 0x10, 0x2c, 0x28, 0x04, 0x30, 0xee, 0x1a, 0x15, 0x0d, 0xe7,
+  0xa7, 0x15, 0x12, 0x96, 0xb3, 0x42, 0x5f, 0xdf, 0x3e, 0x61, 0x8b, 0xf7,
+  0xc5, 0xf1, 0xb9, 0x79, 0x45, 0xe6, 0xd9, 0x5d, 0x40, 0x5a, 0x52, 0x7a,
+  0x40, 0xe9, 0x8f, 0x0d, 0x40, 0x02, 0xa9, 0x0c, 0xb4, 0x03, 0x8c, 0x44,
+  0xb8, 0x82, 0x77, 0x93, 0xf9, 0xe4, 0x07, 0x5b, 0x04, 0x0d, 0x23, 0xe6,
+  0xa1, 0x58, 0xbd, 0x33, 0x11, 0x86, 0x1c, 0xd2, 0x0b, 0x63, 0xf7, 0x91,
+  0xb0, 0xf4, 0xa4, 0x9f, 0x0c, 0x76, 0x81, 0x9f, 0xb3, 0xd3, 0x5c, 0xc4,
+  0xb4, 0x16, 0x98, 0x40, 0x6e, 0x83, 0x5a, 0xb2, 0x56, 0x94, 0x1d, 0x6c,
+  0x28, 0x49, 0xdf, 0xd2, 0xfb, 0xfc, 0x63, 0x57, 0x27, 0x74, 0xbb, 0x83,
+  0x88, 0x6d, 0xc1, 0xad, 0x9c, 0xde, 0xc7, 0x22, 0xc3, 0xee, 0x83, 0xbb,
+  0x8a, 0xdc, 0x88, 0xbb, 0xdc, 0x01, 0x48, 0x4b, 0xd1, 0x04, 0x98, 0x42,
+  0x15, 0x12, 0xd4, 0x06, 0x40, 0x4b, 0xa8, 0x46, 0xee, 0x79, 0x72, 0xbb,
+  0x6b, 0xbe, 0x66, 0xfe, 0xc6, 0xd6, 0x4d, 0x8c, 0xf5, 0x9e, 0x89, 0x44,
+  0x69, 0x8b, 0x1c, 0xe5, 0x16, 0x50, 0x2d, 0x67, 0x3d, 0x11, 0xcd, 0x12,
+  0x17, 0x69, 0x70, 0x99, 0x62, 0xae, 0x66, 0x05, 0x49, 0x79, 0x17, 0x3c,
+  0x7a, 0x56, 0xe0, 0x83, 0x30, 0x27, 0x44, 0x7e, 0x07, 0x11, 0x91, 0x47,
+  0x73, 0x97, 0x28, 0xa1, 0xa6, 0x7c, 0x40, 0xf4, 0x61, 0xfb, 0xaf, 0x73,
+  0x31, 0x4c, 0x20, 0xd6, 0x14, 0xd7, 0x39, 0x9d, 0xfc, 0x5e, 0x42, 0x87,
+  0x69, 0xc9, 0x1c, 0xbf, 0x76, 0xc5, 0xd7, 0xce, 0x05, 0xda, 0xb3, 0x17,
+  0xb2, 0xb9, 0xc1, 0x17, 0x3c, 0x95, 0xaa, 0xe7, 0xe7, 0xae, 0x10, 0xe7,
+  0xcd, 0x89, 0xa8, 0x9f, 0xc3, 0xca, 0x8d, 0x9d, 0x96, 0x56, 0x55, 0xbd,
+  0x77, 0xf8, 0x91, 0x65, 0x9c, 0x9e, 0xf6, 0x24, 0x5f, 0x4b, 0x4e, 0x3f,
+  0xd6, 0xe8, 0xf4, 0xe8, 0x9d, 0xd4, 0x09, 0x77, 0x67, 0x21, 0x63, 0xe8,
+  0xc5, 0x35, 0x29, 0x71, 0x8f, 0xf1, 0xa4, 0x86, 0x01, 0x2f, 0x86, 0x23,
+  0xa6, 0x19, 0xa6, 0xf1, 0x5c, 0xfb, 0x3a, 0x5b, 0x4a, 0xef, 0x3d, 0xbe,
+  0xe7, 0xaa, 0x6a, 0xda, 0x6b, 0xd5, 0xbe, 0x75, 0x7b, 0xd2, 0xba, 0x50,
+  0x9c, 0x45, 0x6a, 0x3c, 0xf1, 0x02, 0x3e, 0xea, 0x7b, 0x73, 0x2b, 0x0d,
+  0x3e, 0xd7, 0x6f, 0x65, 0x3a, 0x86, 0xa6, 0xf0, 0xdf, 0x25, 0xc3, 0x2d,
+  0xea, 0xb0, 0xda, 0xb2, 0x17, 0x17, 0x37, 0xe3, 0x8a, 0x6e, 0x38, 0x4e,
+  0xeb, 0xfd, 0x11, 0x0a, 0x39, 0xb6, 0x83, 0x46, 0x3c, 0xf9, 0x39, 0x19,
+  0x8c, 0xa7, 0x98, 0x5f, 0x82, 0x2a, 0xdb, 0x3f, 0xd2, 0xce, 0xf3, 0x13,
+  0x3f, 0xbb, 0x3d, 0x7c, 0x93, 0xf3, 0x79, 0xfb, 0xd8, 0xb7, 0xa9, 0x9f,
+  0x88, 0xc2, 0x20, 0xf8, 0xb6, 0xc9, 0xfe, 0xe4, 0x96, 0x93, 0xee, 0x26,
+  0xfa, 0x27, 0xcf, 0xe7, 0x70, 0x8e, 0xfa, 0xa4, 0x98, 0x69, 0x3a, 0x92,
+  0x92, 0xe4, 0xdf, 0xe5, 0xa4, 0x74, 0x1c, 0xb4, 0xe4, 0x0b, 0xce, 0xff,
+  0xe3, 0x01, 0xe2, 0xad, 0xe0, 0x4b, 0x4b, 0xe6, 0xe8, 0x6b, 0xce, 0x82,
+  0x0f, 0x2d, 0x65, 0xee, 0xcc, 0x5b, 0x37, 0x4c, 0xbe, 0x62, 0x1f, 0x67,
+  0x99, 0x05, 0xe8, 0xaf, 0x7a, 0xf1, 0x49, 0x1d, 0x3f, 0xde, 0x8c, 0x54,
+  0xf0, 0x27, 0x86, 0x6e, 0x26, 0x51, 0x0e, 0x8c, 0x9b, 0x93, 0xfb, 0xa6,
+  0x39, 0x39, 0x8c, 0xcb, 0x52, 0xda, 0x69, 0x2a, 0x96, 0x2f, 0x91, 0x44,
+  0x53, 0x09, 0x70, 0x29, 0x65, 0x84, 0x72, 0x61, 0x4e, 0x32, 0x4b, 0xec,
+  0x2f, 0x42, 0x34, 0x15, 0xb3, 0x1c, 0xa3, 0x29, 0x93, 0x08, 0x1c, 0x49,
+  0xe0, 0x0e, 0xf7, 0xa3, 0x3e, 0xb8, 0x26, 0xd6, 0x9c, 0xb9, 0xa1, 0x9e,
+  0x8b, 0x49, 0xcf, 0x86, 0x78, 0xce, 0x77, 0x94, 0x6d, 0x82, 0xfb, 0xd2,
+  0xb2, 0x23, 0x21, 0x85, 0x6e, 0x09, 0xef, 0x72, 0xb4, 0x2b, 0xab, 0xdb,
+  0x9c, 0x02, 0x27, 0x35, 0x9e, 0xbf, 0x7f, 0xcb, 0xa5, 0x4d, 0x50, 0xb6,
+  0xfa, 0xe2, 0x6c, 0xff, 0xdd, 0xf9, 0x1b, 0x31, 0x8d, 0x5f, 0x14, 0x41,
+  0x35, 0x6c, 0xf5, 0x2b, 0x98, 0xff, 0xd8, 0xc1, 0xc4, 0xdd, 0x49, 0xbd,
+  0x0d, 0x8b, 0xa7, 0xd7, 0x52, 0xd9, 0xfd, 0x36, 0xde, 0xbe, 0xd4, 0xd9,
+  0xe6, 0xd5, 0xe0, 0xa1, 0x6d, 0x9c, 0x6f, 0x3a, 0x41, 0xa8, 0x0a, 0x6b,
+  0xb2, 0xf9, 0x72, 0xf5, 0x86, 0x0c, 0xad, 0x0f, 0xf1, 0xb2, 0x1c, 0xd8,
+  0x60, 0xec, 0x53, 0xb9, 0x7b, 0x57, 0x82, 0x91, 0x1e, 0x90, 0xaa, 0x38,
+  0xd0, 0x4a, 0x35, 0x41, 0x05, 0x3a, 0x67, 0x4e, 0x95, 0xbb, 0x57, 0xa1,
+  0xfc, 0x5c, 0xe3, 0x61, 0xde, 0xa7, 0x35, 0xbd, 0xf1, 0x87, 0x9d, 0xcd,
+  0xee, 0xe6, 0x2f, 0x7e, 0x69, 0xf3, 0xdd, 0x63, 0x37, 0xdd, 0xcc, 0xa7,
+  0x14, 0x6d, 0xfc, 0x61, 0x77, 0xf3, 0xc1, 0x19, 0x85, 0x59, 0x91, 0xbe,
+  0x4f, 0x7a, 0x83, 0x07, 0x9b, 0xbc, 0x92, 0x63, 0xe6, 0x64, 0x26, 0x17,
+  0xa1, 0x13, 0xe0, 0x0d, 0x37, 0x00, 0x3b, 0x38, 0x6c, 0xdb, 0x49, 0xea,
+  0xde, 0xf1, 0xa6, 0xd9, 0x25, 0x47, 0xff, 0xfb, 0x30, 0x84, 0x91, 0x9c,
+  0xf7, 0xea, 0xf0, 0x8a, 0x62, 0x74, 0x80, 0xaa, 0x18, 0xa2, 0xef, 0xdd,
+  0x07, 0xfa, 0xf6, 0xb3, 0x0b, 0xcc, 0x12, 0xec, 0xc5, 0xe6, 0x30, 0x38,
+  0x43, 0xc3, 0xd6, 0x7e, 0xd6, 0x7c, 0x99, 0xf5, 0xd5, 0xfd, 0x5d, 0x1c,
+  0xbd, 0x3d, 0x64, 0xd4, 0xec, 0xd7, 0x47, 0x0c, 0x3e, 0x77, 0xae, 0xf0,
+  0x8f, 0x66, 0x81, 0x70, 0x88, 0xbc, 0x61, 0xb5, 0x14, 0x71, 0xef, 0xba,
+  0x68, 0x33, 0xc7, 0x39, 0xdc, 0x4e, 0x70, 0xd7, 0x1a, 0x03, 0x5d, 0x59,
+  0xa6, 0xe5, 0xd1, 0xe5, 0xe0, 0x6d, 0x31, 0x81, 0x96, 0x3c, 0x38, 0x47,
+  0xa8, 0x20, 0xbd, 0x45, 0x1f, 0xbe, 0x9f, 0xcf, 0x1a, 0x1f, 0x0f, 0x3b,
+  0x32, 0x75, 0xd7, 0x56, 0x15, 0xe5, 0xf9, 0xdb, 0xd6, 0x60, 0xc0, 0x83,
+  0x19, 0x48, 0x58, 0x97, 0x3a, 0x77, 0x1a, 0xf8, 0x1c, 0xc6, 0x5a, 0x68,
+  0x81, 0xf2, 0xe9, 0xbd, 0x04, 0x22, 0xa4, 0x3e, 0x7c, 0xcc, 0x67, 0x6f,
+  0x5e, 0x71, 0x06, 0x99, 0x37, 0xf1, 0x89, 0x11, 0x6f, 0x2d, 0x04, 0x2f,
+  0x85, 0x22, 0x95, 0xdd, 0xf9, 0xf8, 0x27, 0xad, 0xd9, 0x5c, 0x2c, 0xee,
+  0x31, 0xcb, 0xbb, 0x46, 0x68, 0x45, 0xa7, 0x7f, 0xf5, 0x6f, 0xf2, 0x4e,
+  0xa3, 0x0c, 0x95, 0x62, 0x4c, 0x07, 0x14, 0xa8, 0x9f, 0x68, 0xd5, 0xa6,
+  0x93, 0x32, 0xb8, 0xae, 0x74, 0xd8, 0x56, 0xdd, 0x2e, 0x00, 0x36, 0x0d,
+  0x70, 0x58, 0x9b, 0xe3, 0x0c, 0x41, 0x60, 0x0b, 0x4e, 0x7d, 0x7d, 0x5d,
+  0x38, 0xe7, 0x18, 0xb1, 0x9d, 0x45, 0xb3, 0x2a, 0x72, 0x96, 0x58, 0x92,
+  0xb7, 0xe4, 0xf0, 0xf7, 0x06, 0x3d, 0xd4, 0x65, 0xc8, 0xe7, 0x1d, 0x93,
+  0x19, 0xfc, 0xf2, 0xd9, 0x44, 0xae, 0xd7, 0x64, 0xfd, 0x92, 0x81, 0x30,
+  0xd8, 0x8f, 0xb5, 0x2e, 0x03, 0x10, 0x9c, 0x18, 0x21, 0x2e, 0xba, 0x20,
+  0x98, 0xaf, 0x99, 0x22, 0x29, 0x4a, 0xb5, 0x8b, 0x8c, 0x75, 0x46, 0x72,
+  0xb1, 0x4a, 0x32, 0x23, 0x5d, 0x2e, 0x26, 0x08, 0xca, 0x90, 0x70, 0xd4,
+  0x7f, 0x67, 0x50, 0xec, 0xf2, 0x3e, 0xd9, 0xd9, 0xed, 0x27, 0xbb, 0xdb,
+  0x3b, 0xbb, 0x1d, 0x73, 0x58, 0xff, 0x77, 0x0e, 0x8a, 0xda, 0xc5, 0xd7,
+  0xeb, 0x9f, 0x3a, 0x0b, 0x9f, 0xcf, 0x80, 0x9b, 0x44, 0x33, 0x7f, 0x89,
+  0xf9, 0xb0, 0x7f, 0x16, 0x40, 0xcc, 0x28, 0x95, 0x0c, 0x38, 0x3b, 0x5c,
+  0x5b, 0x62, 0x24, 0xb4, 0x12, 0x9b, 0xae, 0x74, 0xd8, 0x04, 0x95, 0x74,
+  0xa4, 0x5a, 0x2d, 0x22, 0x5f, 0x9c, 0xa5, 0x34, 0x2d, 0x51, 0x3f, 0xb4,
+  0xb9, 0x47, 0x79, 0x6d, 0xdb, 0xc2, 0xa1, 0x35, 0xbc, 0x37, 0x44, 0xef,
+  0xaf, 0x8f, 0x0e, 0x2e, 0x0c, 0xef, 0xf0, 0x92, 0x85, 0xa7, 0xf2, 0xfe,
+  0xd3, 0x8a, 0x31, 0x3e, 0xf8, 0xcc, 0x64, 0xef, 0x3a, 0x23, 0x31, 0x7a,
+  0x3e, 0x5a, 0x5e, 0xed, 0xfd, 0x25, 0x2d, 0xaf, 0x8a, 0xf9, 0x63, 0xcf,
+  0x4f, 0x90, 0x50, 0xb6, 0x47, 0x1c, 0x6a, 0xe7, 0xc5, 0xce, 0x13, 0xe4,
+  0x7f, 0x4f, 0x73, 0x14, 0x04, 0x62, 0x06, 0xd1, 0x9b, 0xf5, 0x04, 0x60,
+  0x03, 0x69, 0x12, 0x0e, 0x55, 0x63, 0x3e, 0xe9, 0xc9, 0x75, 0x9f, 0x86,
+  0xcf, 0x4e, 0xf4, 0x59, 0x49, 0x3d, 0xef, 0x69, 0xae, 0x42, 0x8f, 0xd3,
+  0x34, 0x97, 0x8b, 0x5e, 0x13, 0x22, 0xfe, 0x91, 0xb9, 0x72, 0x17, 0xae,
+  0xf6, 0xe4, 0x81, 0x03, 0xbe, 0x47, 0x06, 0x51, 0x99, 0xa5, 0x37, 0xbe,
+  0x76, 0xb2, 0x47, 0xdf, 0x30, 0x97, 0xc7, 0xd9, 0x9b, 0x03, 0x41, 0x30,
+  0xb5, 0x7c, 0x29, 0x2c, 0x75, 0xe2, 0x4c, 0x53, 0x9b, 0x3c, 0xca, 0x47,
+  0xfa, 0xe7, 0xdc, 0x86, 0xbd, 0xc9, 0xe8, 0x13, 0x1e, 0xa2, 0x73, 0x27,
+  0x60, 0x71, 0xfb, 0xcd, 0xd2, 0x3b, 0xac, 0xa8, 0xa1, 0x7e, 0x88, 0x15,
+  0x4a, 0xde, 0x90, 0x42, 0xb4, 0xe2, 0x71, 0xe0, 0xa1, 0x59, 0xf9, 0x69,
+  0xb3, 0xee, 0xd0, 0xb8, 0xb9, 0xc8, 0xeb, 0xeb, 0xfd, 0xd3, 0x40, 0xd1,
+  0x85, 0x22, 0xe9, 0x8d, 0x7a, 0xfc, 0x1c, 0x2b, 0x3a, 0xa8, 0xc3, 0xae,
+  0xd5, 0x98, 0xfa, 0x5e, 0x45, 0xa9, 0xc1, 0x27, 0x59, 0x36, 0x42, 0x80,
+  0x7c, 0xa1, 0xf7, 0x09, 0xec, 0x4f, 0xa8, 0x66, 0x30, 0x9d, 0xa4, 0x70,
+  0x84, 0xea, 0x2d, 0x04, 0x99, 0x0b, 0x6d, 0xe5, 0x1a, 0x0d, 0x45, 0x7b,
+  0xf3, 0x31, 0xd1, 0x24, 0x0e, 0xcd, 0x56, 0xd1, 0x7a, 0x23, 0x78, 0x8c,
+  0xb3, 0x92, 0xef, 0x6d, 0x02, 0xc2, 0x9f, 0x69, 0xf0, 0x69, 0x75, 0x43,
+  0xac, 0x54, 0x1c, 0xf8, 0xd4, 0x7b, 0xae, 0x2e, 0x70, 0x36, 0xfa, 0xe4,
+  0x12, 0x48, 0xc3, 0xe6, 0x27, 0xe0, 0x20, 0x35, 0x36, 0x4c, 0xae, 0x20,
+  0xd6, 0x38, 0xa7, 0x55, 0x26, 0xa8, 0x85, 0xc9, 0xc5, 0x5d, 0x21, 0x2a,
+  0x46, 0x65, 0xe1, 0xb5, 0x12, 0x8a, 0x5a, 0x2d, 0x73, 0x91, 0x22, 0x69,
+  0xf3, 0xc0, 0x0f, 0x82, 0x2a, 0xb2, 0xeb, 0xce, 0xf2, 0xf5, 0xda, 0xf9,
+  0x3d, 0xcf, 0x5f, 0x7f, 0x9b, 0x70, 0x3e, 0x3d, 0xf7, 0x71, 0xc0, 0x78,
+  0xfe, 0x1c, 0xc2, 0x30, 0x83, 0xf6, 0xf7, 0xf5, 0x92, 0xcf, 0xfb, 0xc1,
+  0x75, 0xba, 0x60, 0x05, 0x68, 0x67, 0x9b, 0xcd, 0x25, 0xdf, 0x5b, 0x66,
+  0x1e, 0x1f, 0x54, 0xab, 0x72, 0x5f, 0xad, 0x07, 0x96, 0x94, 0x09, 0x17,
+  0xa9, 0x67, 0x0d, 0xa8, 0x69, 0xa4, 0xa5, 0xeb, 0xb3, 0xda, 0x12, 0x14,
+  0xff, 0x8a, 0x48, 0xa3, 0xac, 0x26, 0x37, 0x5b, 0x63, 0xfa, 0xe7, 0xc9,
+  0xf6, 0x16, 0x80, 0x34, 0x6b, 0xd8, 0x34, 0x99, 0x26, 0x77, 0x77, 0x9f,
+  0x3d, 0xeb, 0x27, 0xeb, 0x6c, 0x65, 0xb4, 0x0e, 0xf8, 0x48, 0xd0, 0xc9,
+  0x5a, 0xef, 0x2a, 0xa7, 0xbb, 0x55, 0x5e, 0x8e, 0xf9, 0x7f, 0xfc, 0x9a,
+  0x55, 0x91, 0xbc, 0xd0, 0xac, 0x1b, 0xac, 0xc3, 0x3c, 0xc4, 0xc6, 0x11,
+  0xb2, 0xe2, 0xef, 0x8e, 0x9c, 0x1d, 0x89, 0x9d, 0x46, 0x8b, 0xac, 0x58,
+  0x98, 0x77, 0x78, 0xa6, 0xf5, 0x41, 0xd0, 0x7d, 0xe0, 0x52, 0x83, 0x3f,
+  0x5f, 0xc2, 0xe1, 0x14, 0x04, 0xa1, 0x5a, 0x8e, 0x06, 0x9a, 0x0d, 0x2c,
+  0x5a, 0x65, 0x4e, 0x27, 0x97, 0xfe, 0x9c, 0x9a, 0xb9, 0x3e, 0xe2, 0xc8,
+  0x5f, 0x25, 0xeb, 0x4a, 0x5b, 0xfc, 0x63, 0x08, 0xe7, 0x6e, 0x36, 0xe6,
+  0x69, 0x14, 0xaf, 0xf4, 0x8f, 0x7f, 0xfb, 0x37, 0x6a, 0xf6, 0xdf, 0xb8,
+  0x95, 0x57, 0x7f, 0xa8, 0xea, 0xeb, 0xe0, 0x99, 0x75, 0x25, 0xf8, 0x23,
+  0xef, 0xda, 0x46, 0xb8, 0x1a, 0x60, 0x66, 0x91, 0xb4, 0xf6, 0xf6, 0x58,
+  0x39, 0x72, 0x3f, 0x98, 0x5f, 0x8e, 0x74, 0x42, 0x31, 0x92, 0xba, 0x68,
+  0x91, 0xaf, 0xd8, 0xed, 0x9c, 0x71, 0x1a, 0x3a, 0x5d, 0x24, 0x40, 0x11,
+  0xdc, 0x34, 0x11, 0xe3, 0xf0, 0xdd, 0x77, 0x47, 0x67, 0x27, 0xef, 0xde,
+  0x1e, 0xbe, 0xbb, 0x48, 0xbe, 0xdb, 0x3f, 0x3b, 0xda, 0xff, 0xea, 0x58,
+  0xb3, 0xdd, 0x79, 0x0a, 0x1c, 0xe4, 0x23, 0xb2, 0x77, 0x0b, 0x05, 0x36,
+  0x48, 0x44, 0xea, 0xac, 0x1d, 0xd2, 0xaa, 0x8a, 0xfc, 0x41, 0x21, 0xcc,
+  0xa1, 0x89, 0x7c, 0x40, 0x19, 0xa4, 0x3e, 0x0b, 0x9f, 0x1f, 0xac, 0x22,
+  0x12, 0x2b, 0x4f, 0xf7, 0x41, 0xfe, 0x34, 0xc7, 0x1f, 0x31, 0x95, 0x1a,
+  0x7f, 0xf2, 0xb5, 0x00, 0x5d, 0x71, 0x8d, 0xaf, 0x25, 0x05, 0xdf, 0x2a,
+  0x8d, 0xd8, 0xab, 0xd8, 0x43, 0xb9, 0x5c, 0xfc, 0x18, 0xf6, 0x8f, 0x8f,
+  0x7d, 0x57, 0x0f, 0x17, 0xa1, 0x51, 0xf8, 0x25, 0x49, 0xde, 0x42, 0xa3,
+  0xec, 0x18, 0xbc, 0x2a, 0x3c, 0x1e, 0xfb, 0xfc, 0x3e, 0x84, 0x5e, 0xe7,
+  0xce, 0x68, 0x3b, 0x36, 0x04, 0x37, 0x83, 0xbd, 0xc4, 0x74, 0x80, 0xf2,
+  0xea, 0xa6, 0x9f, 0xf4, 0xfe, 0xd0, 0xd3, 0x3a, 0xe2, 0x00, 0x0b, 0x96,
+  0x12, 0x37, 0x9b, 0x7e, 0x50, 0xef, 0x4e, 0xfc, 0x98, 0xd4, 0xf1, 0xe9,
+  0x06, 0xe0, 0x5e, 0xf4, 0x6e, 0xeb, 0xca, 0xe4, 0x19, 0xc4, 0x8b, 0xfa,
+  0xc7, 0xb5, 0x0e, 0x84, 0x83, 0x03, 0x50, 0x1a, 0x65, 0xc7, 0x56, 0xe7,
+  0xbb, 0xd0, 0xda, 0xd2, 0x71, 0x80, 0x09, 0x8d, 0xb9, 0xce, 0xd9, 0xd4,
+  0xe1, 0x6a, 0x73, 0x99, 0x35, 0x90, 0x96, 0x9a, 0x6d, 0x7a, 0xea, 0x4e,
+  0x5c, 0x56, 0xca, 0x41, 0x41, 0x55, 0x1f, 0xb7, 0xac, 0xd4, 0x0d, 0x7c,
+  0x8c, 0x9c, 0x0f, 0x50, 0xe6, 0x13, 0xc5, 0x18, 0xec, 0xa4, 0x8a, 0x21,
+  0x5c, 0x53, 0x67, 0x07, 0x80, 0x64, 0x9f, 0x73, 0x51, 0x46, 0x5f, 0x4a,
+  0x03, 0xb1, 0xc3, 0xc4, 0x45, 0x4a, 0x4e, 0xc8, 0x9b, 0xab, 0x10, 0x82,
+  0x78, 0x5c, 0xc8, 0xe8, 0xe9, 0x55, 0x61, 0xf2, 0x77, 0xea, 0x9c, 0xe6,
+  0xae, 0xe0, 0x58, 0x20, 0xd3, 0x3b, 0xe0, 0x30, 0x67, 0xb2, 0x84, 0x7b,
+  0xdd, 0x1c, 0x04, 0x1c, 0x5e, 0xc6, 0x5b, 0x6e, 0x05, 0xa4, 0xab, 0x20,
+  0x35, 0xdb, 0x67, 0x2f, 0x30, 0x2f, 0x91, 0x20, 0x7d, 0x43, 0xf2, 0x02,
+  0x7a, 0x9a, 0xa5, 0x72, 0x23, 0xd0, 0x11, 0xc3, 0xe2, 0x07, 0xd1, 0xa4,
+  0xc6, 0xac, 0xa2, 0x49, 0xb3, 0x5d, 0xd3, 0xe9, 0x99, 0x72, 0x02, 0x99,
+  0x71, 0xa2, 0x34, 0x19, 0xe5, 0x57, 0x02, 0x09, 0xc0, 0xf9, 0xe7, 0x4c,
+  0x25, 0x40, 0x78, 0x23, 0xc5, 0x9e, 0xb7, 0x0a, 0xf8, 0x6d, 0x90, 0xdd,
+  0xaf, 0x8b, 0x69, 0x08, 0x32, 0x66, 0x33, 0xa9, 0xb4, 0x94, 0x9a, 0x99,
+  0x3e, 0xe1, 0xfa, 0x58, 0xf2, 0x3a, 0x5a, 0x34, 0x9a, 0xa2, 0x93, 0x6b,
+  0x6c, 0x1e, 0xdb, 0xd4, 0x01, 0x95, 0x38, 0x47, 0x26, 0x90, 0xa5, 0x52,
+  0x63, 0x1d, 0x2c, 0x6e, 0x99, 0xb9, 0x05, 0xec, 0x68, 0x5c, 0xe6, 0x71,
+  0xc3, 0xc1, 0x8b, 0x73, 0x2b, 0x63, 0x01, 0x68, 0x65, 0xa2, 0x17, 0x8f,
+  0x72, 0xb3, 0x1e, 0x90, 0x6e, 0x96, 0x42, 0x67, 0x11, 0x4d, 0xf0, 0xa0,
+  0x69, 0xa5, 0x36, 0x02, 0xc6, 0x33, 0x27, 0x12, 0x91, 0xc7, 0x44, 0x81,
+  0xd4, 0xbf, 0x06, 0xae, 0x94, 0x99, 0xfa, 0x9d, 0x37, 0x7d, 0xdc, 0x81,
+  0x48, 0x01, 0x4c, 0xad, 0x63, 0x2d, 0x26, 0x09, 0x0f, 0x3d, 0x57, 0xc2,
+  0x04, 0x1e, 0x54, 0xc3, 0xf6, 0x98, 0x58, 0xbe, 0xcd, 0x74, 0x1a, 0xe0,
+  0x8b, 0x8b, 0x39, 0x22, 0x8d, 0x64, 0x0f, 0x76, 0x0e, 0x0d, 0x85, 0x03,
+  0x48, 0xe4, 0x8f, 0x60, 0x11, 0x07, 0x13, 0xd1, 0x98, 0x72, 0x96, 0xce,
+  0x5a, 0x26, 0xcd, 0x80, 0xa1, 0x99, 0x77, 0x3c, 0xbc, 0x98, 0xb4, 0x9c,
+  0x46, 0x9e, 0xce, 0x44, 0x76, 0xf4, 0xd4, 0x37, 0xbb, 0x97, 0xa8, 0xc3,
+  0xb5, 0xb5, 0x83, 0xf7, 0xe7, 0x17, 0x27, 0x6f, 0x93, 0x93, 0xf7, 0x17,
+  0xa7, 0xef, 0x2f, 0xf4, 0xe6, 0x1a, 0x49, 0xcc, 0xb6, 0x44, 0x2e, 0x88,
+  0x10, 0x60, 0x9b, 0x39, 0x53, 0xff, 0x3e, 0x42, 0x4c, 0x0a, 0xa0, 0x0a,
+  0x06, 0x80, 0x42, 0x2e, 0x27, 0x0b, 0x50, 0x5b, 0x02, 0x57, 0x8c, 0x25,
+  0xbf, 0xa3, 0x25, 0x47, 0x3e, 0x2d, 0x0c, 0x79, 0x96, 0xe2, 0x05, 0xb5,
+  0xc7, 0xce, 0x5a, 0xb3, 0x54, 0xcd, 0x7d, 0x53, 0x8d, 0x81, 0x73, 0xbe,
+  0x09, 0xe0, 0x14, 0x56, 0xcc, 0x14, 0xdb, 0x8e, 0x37, 0xfd, 0x84, 0x21,
+  0x9d, 0x5a, 0x6f, 0xd3, 0x0c, 0xd0, 0x16, 0x55, 0x8b, 0x50, 0xa3, 0x66,
+  0x62, 0x61, 0x98, 0xdf, 0x58, 0x17, 0x34, 0xc3, 0x6b, 0x17, 0x11, 0xcf,
+  0x51, 0x44, 0x88, 0x04, 0x94, 0x00, 0x0a, 0x0e, 0xb9, 0x13, 0x8d, 0x81,
+  0xf4, 0x40, 0x76, 0x59, 0x44, 0xb7, 0xec, 0x5d, 0xd2, 0xfb, 0x3e, 0x0b,
+  0x1b, 0xfc, 0xfd, 0x7f, 0x70, 0xda, 0xe6, 0x07, 0xfb, 0xe4, 0xef, 0xd2,
+  0xe5, 0x4f, 0xf3, 0x1e, 0x02, 0xe8, 0x9a, 0x9e, 0xf2, 0x6f, 0x0f, 0xcf,
+  0xbe, 0x3a, 0x3c, 0x3b, 0x39, 0x07, 0x3f, 0x30, 0x73, 0x57, 0x4c, 0xeb,
+  0x37, 0x59, 0x39, 0xca, 0xca, 0x42, 0xcb, 0x68, 0xd9, 0x5f, 0xcf, 0xb6,
+  0xbe, 0x3e, 0x3f, 0xdf, 0x3f, 0x3d, 0x72, 0x85, 0x6a, 0x5c, 0x02, 0x99,
+  0xa8, 0x48, 0x73, 0x49, 0x71, 0xe4, 0xf9, 0xdb, 0x2b, 0x44, 0x17, 0xe3,
+  0x1b, 0x09, 0x2c, 0x8e, 0x7c, 0xd2, 0x66, 0x57, 0x67, 0x67, 0xb4, 0xe6,
+  0x15, 0x72, 0xc3, 0x06, 0x04, 0x15, 0x82, 0xcd, 0x0b, 0x2a, 0x3c, 0xfb,
+  0x02, 0xfa, 0x2e, 0x02, 0xef, 0xa6, 0x1c, 0x0d, 0x88, 0xda, 0x6f, 0xac,
+  0x6e, 0xb3, 0xe4, 0x41, 0x10, 0xab, 0x94, 0x00, 0x69, 0x6f, 0x6b, 0x20,
+  0x99, 0x2e, 0xaf, 0xb7, 0x6e, 0xf8, 0x7c, 0x70, 0x11, 0x95, 0xe9, 0x50,
+  0xb8, 0xbb, 0x1c, 0x28, 0x8b, 0x7a, 0x65, 0x16, 0xfb, 0x10, 0x38, 0x05,
+  0xf5, 0xe6, 0x2a, 0x1f, 0x8a, 0xbd, 0x8b, 0x3e, 0x79, 0xea, 0x50, 0xba,
+  0xc2, 0x32, 0xe2, 0x97, 0x24, 0x80, 0x2f, 0xee, 0x26, 0x7a, 0x89, 0x00,
+  0xa4, 0x7a, 0x2e, 0xee, 0x09, 0xe1, 0xe1, 0x6d, 0x07, 0x15, 0x57, 0x67,
+  0x44, 0xc2, 0x86, 0x86, 0xa3, 0x27, 0xa3, 0x69, 0x3a, 0xbf, 0xc1, 0x6d,
+  0x86, 0xfb, 0x89, 0x55, 0x4e, 0xc3, 0x9e, 0xe2, 0xaa, 0x99, 0xf0, 0x47,
+  0x2a, 0x1c, 0x04, 0x84, 0xc0, 0x29, 0x33, 0xb7, 0x7b, 0xb1, 0xe5, 0x3b,
+  0x88, 0xad, 0xc0, 0xf3, 0x86, 0xe3, 0xe4, 0x17, 0x81, 0x4d, 0x47, 0x87,
+  0xc7, 0x74, 0x31, 0xb9, 0x24, 0x13, 0xa8, 0xe8, 0xd9, 0x94, 0x4d, 0xc1,
+  0x16, 0x11, 0x24, 0x79, 0x95, 0x39, 0x18, 0x99, 0x70, 0x0f, 0xc3, 0x4f,
+  0x87, 0xff, 0x08, 0xe4, 0x82, 0xf4, 0xd1, 0xca, 0x55, 0x19, 0x51, 0xce,
+  0x2d, 0x4c, 0x0c, 0xe0, 0xa0, 0xbe, 0xe8, 0x48, 0x58, 0xfe, 0x46, 0xc3,
+  0xed, 0x0e, 0x7c, 0x3c, 0x90, 0xab, 0x07, 0x26, 0x83, 0xf0, 0x62, 0xa9,
+  0xf3, 0x30, 0x36, 0xb2, 0x5b, 0x56, 0x6e, 0x93, 0xbc, 0xde, 0x65, 0x04,
+  0x10, 0x4c, 0xb3, 0x89, 0xfa, 0x3b, 0x1c, 0x1c, 0x90, 0x85, 0x2c, 0x37,
+  0xc3, 0x84, 0x6d, 0xe0, 0x12, 0x0d, 0xc0, 0xc6, 0xdb, 0x69, 0x6d, 0x4e,
+  0x43, 0x84, 0xb8, 0xea, 0x0d, 0x5c, 0x4f, 0xc0, 0x72, 0xca, 0x06, 0x52,
+  0x6d, 0x18, 0x9d, 0x2b, 0x88, 0x15, 0xb0, 0x0d, 0x4a, 0xbe, 0x06, 0xb4,
+  0x18, 0x27, 0xdf, 0x0e, 0xde, 0xf1, 0x75, 0x51, 0x0c, 0x46, 0x4b, 0xe8,
+  0x65, 0x41, 0x9d, 0x2e, 0xc9, 0xe1, 0x24, 0x75, 0x4d, 0xc0, 0xd4, 0xf0,
+  0x3d, 0xfb, 0xa3, 0x90, 0x1d, 0x2f, 0x2e, 0x2a, 0xa4, 0x4b, 0x36, 0x81,
+  0x76, 0x1c, 0xbc, 0x8a, 0xe4, 0x20, 0xf8, 0x02, 0xc2, 0x6e, 0x82, 0xba,
+  0xc9, 0x2e, 0x5a, 0x70, 0xae, 0x55, 0x5e, 0xe1, 0x59, 0x69, 0x46, 0x5c,
+  0xd7, 0x0e, 0xef, 0xfe, 0x02, 0x62, 0x42, 0xa6, 0x28, 0xf0, 0x16, 0x4a,
+  0x6d, 0x89, 0x1b, 0xb7, 0x35, 0x57, 0x96, 0x12, 0x64, 0x88, 0x74, 0x2a,
+  0x65, 0x3a, 0x56, 0x5e, 0x25, 0x72, 0x98, 0xea, 0x8b, 0x8b, 0x3f, 0x9f,
+  0x1e, 0xbe, 0xb2, 0x37, 0x1f, 0xda, 0x33, 0x01, 0x4c, 0x43, 0xcc, 0x4c,
+  0xa6, 0x00, 0xa5, 0x41, 0x6d, 0x6c, 0x22, 0xb2, 0x41, 0x6d, 0xbe, 0x7c,
+  0xe9, 0x66, 0x90, 0xfc, 0xf0, 0xfa, 0xe8, 0xfc, 0xf4, 0xf8, 0xe4, 0xe0,
+  0xd5, 0xcb, 0x1f, 0x8c, 0x25, 0x7f, 0xc1, 0x2e, 0x02, 0x91, 0xd3, 0xdc,
+  0x67, 0x1e, 0xd0, 0x41, 0xdf, 0x7b, 0x77, 0xf8, 0xfd, 0x07, 0xd2, 0x0e,
+  0x5e, 0x31, 0xac, 0x7b, 0xff, 0x36, 0x9d, 0xea, 0x4b, 0xac, 0x62, 0x75,
+  0xc8, 0x76, 0xc3, 0x26, 0x02, 0x5f, 0x7b, 0x61, 0x5d, 0x79, 0x52, 0x9f,
+  0xa7, 0x70, 0x6f, 0x61, 0x74, 0x41, 0x25, 0xaa, 0xb4, 0x91, 0x56, 0xdb,
+  0x51, 0x4c, 0xd8, 0x5f, 0xff, 0xbd, 0x5a, 0x62, 0x2a, 0x39, 0x84, 0x20,
+  0xf4, 0xcc, 0x23, 0x6e, 0x55, 0xbf, 0xf1, 0xf1, 0xbc, 0x0a, 0x9f, 0x5c,
+  0x72, 0x00, 0x8b, 0xc3, 0x9f, 0xd4, 0x0a, 0xd5, 0xf0, 0x79, 0x2b, 0x48,
+  0xa5, 0x22, 0x2f, 0x71, 0x08, 0xad, 0x45, 0xd3, 0x1b, 0x1f, 0x53, 0x11,
+  0xc6, 0x8d, 0x25, 0xb5, 0x5a, 0xb9, 0x28, 0xc8, 0x73, 0x7a, 0x78, 0x76,
+  0x7e, 0x74, 0x7e, 0xc1, 0x6a, 0x94, 0x16, 0x6e, 0x54, 0x1b, 0xb4, 0x55,
+  0xd5, 0x04, 0x66, 0x43, 0x13, 0x6f, 0x34, 0x2c, 0x16, 0xd2, 0x38, 0xd1,
+  0x8e, 0xcd, 0x35, 0x93, 0x38, 0xf9, 0x06, 0x90, 0xcc, 0x50, 0x16, 0x44,
+  0x05, 0x35, 0x37, 0xbd, 0xb4, 0x03, 0x5c, 0x28, 0x69, 0xb4, 0x6a, 0x66,
+  0xa0, 0xde, 0x0d, 0x76, 0x67, 0x9a, 0x8f, 0x82, 0x4a, 0xd9, 0x4d, 0x17,
+  0x32, 0x47, 0x27, 0x28, 0x42, 0x47, 0x78, 0x84, 0xcc, 0x1e, 0xee, 0x33,
+  0xa3, 0xb5, 0x96, 0xaf, 0x5e, 0x6b, 0x9a, 0xd5, 0x18, 0xe6, 0xaf, 0x3a,
+  0x45, 0x15, 0xca, 0x49, 0x58, 0xb3, 0x1c, 0x9f, 0x06, 0x41, 0xa8, 0x0a,
+  0xfa, 0x04, 0xbc, 0x5a, 0x65, 0xd9, 0xcc, 0x94, 0x73, 0xc9, 0x44, 0x63,
+  0x43, 0x0b, 0x49, 0x2d, 0xc8, 0xac, 0x47, 0x9c, 0x90, 0xce, 0x2c, 0x12,
+  0x41, 0x54, 0x74, 0xbc, 0xe2, 0x14, 0x36, 0x20, 0x6b, 0x4d, 0x58, 0xde,
+  0x82, 0x05, 0x2e, 0xec, 0xcc, 0xae, 0x53, 0x5e, 0xc1, 0xd1, 0x32, 0xac,
+  0x04, 0xe7, 0x46, 0x2f, 0x45, 0x49, 0xb0, 0xf0, 0x88, 0x90, 0x4c, 0x4b,
+  0x40, 0x57, 0xd6, 0x8a, 0x14, 0x6f, 0x8a, 0x8f, 0x86, 0x3b, 0x0e, 0x9b,
+  0x20, 0x3e, 0x46, 0x97, 0x56, 0xad, 0xf4, 0xa1, 0x15, 0x0d, 0x4a, 0x47,
+  0x32, 0xf9, 0x96, 0x99, 0xc5, 0x2d, 0x89, 0x99, 0xa1, 0x62, 0x87, 0xc3,
+  0x7c, 0xec, 0x2e, 0x63, 0x4e, 0x3a, 0x62, 0xff, 0x62, 0xa9, 0x00, 0x49,
+  0xc4, 0xfe, 0xd8, 0xb2, 0x8c, 0x7a, 0x93, 0x28, 0xc4, 0xcc, 0x5e, 0x37,
+  0x03, 0xcf, 0xf3, 0x61, 0xdc, 0xb2, 0xdc, 0x01, 0x59, 0x89, 0x79, 0xfd,
+  0x5e, 0x3b, 0x74, 0x09, 0xf2, 0xb6, 0x59, 0x7d, 0xc9, 0xb7, 0x4a, 0x91,
+  0xde, 0x63, 0x76, 0xdd, 0x20, 0x4d, 0xb4, 0xd2, 0xe4, 0x5b, 0xe7, 0x9e,
+  0x06, 0xc3, 0x6b, 0x14, 0xdd, 0xe5, 0xd9, 0x35, 0x5c, 0x83, 0x24, 0x5f,
+  0x2e, 0x50, 0x41, 0x69, 0xac, 0x10, 0xf2, 0x08, 0xda, 0x75, 0x0d, 0xda,
+  0x25, 0xe2, 0x17, 0x8b, 0x56, 0xf5, 0xed, 0xfb, 0xe3, 0x8b, 0xa3, 0xd3,
+  0xd0, 0xfd, 0x98, 0x7c, 0x7f, 0x74, 0xf1, 0x0d, 0x49, 0xed, 0xe7, 0x47,
+  0xef, 0xbe, 0x3e, 0x66, 0x1f, 0xcf, 0xdb, 0xb7, 0xfb, 0xef, 0x18, 0x5d,
+  0xe0, 0x1d, 0x22, 0x1b, 0xf7, 0xa1, 0x38, 0x30, 0x3b, 0xa2, 0x25, 0x66,
+  0xda, 0xe1, 0xbc, 0xf3, 0x7e, 0xec, 0x6a, 0x68, 0x1d, 0x3f, 0x29, 0xaa,
+  0x3c, 0x6f, 0x2e, 0xd2, 0x1a, 0x4a, 0x64, 0x43, 0x33, 0xb8, 0x67, 0xc3,
+  0x0e, 0x8e, 0x2d, 0x2b, 0x5b, 0xbc, 0xd0, 0x6d, 0xec, 0x78, 0xe4, 0x38,
+  0x8a, 0x84, 0x0e, 0x37, 0xba, 0xdc, 0xdd, 0xde, 0x7d, 0x81, 0x1d, 0x75,
+  0xc8, 0xb3, 0xd0, 0x63, 0x48, 0x66, 0x9a, 0xab, 0x5e, 0x23, 0xf7, 0x65,
+  0x33, 0xe7, 0x80, 0x7a, 0xc4, 0x90, 0x10, 0x47, 0x50, 0x78, 0x8b, 0x20,
+  0x6b, 0x9c, 0xac, 0x34, 0x9f, 0x1d, 0x87, 0x17, 0xea, 0xb0, 0x51, 0x72,
+  0xcc, 0xc2, 0x03, 0xaf, 0x8a, 0xcc, 0x9f, 0xdc, 0xc1, 0x89, 0x35, 0x63,
+  0xe6, 0x5f, 0xa8, 0x61, 0x72, 0xb9, 0x0c, 0x98, 0xaf, 0x0d, 0x68, 0x4b,
+  0x36, 0x5d, 0x99, 0x21, 0x35, 0x9f, 0xed, 0x89, 0x58, 0xe9, 0xb0, 0x95,
+  0xad, 0x3a, 0x1f, 0x35, 0x67, 0x2d, 0x6b, 0x28, 0x0a, 0xe2, 0xb1, 0x35,
+  0xad, 0x49, 0xe7, 0x0c, 0x6e, 0x69, 0x8f, 0x35, 0xb2, 0xb2, 0xe5, 0xbe,
+  0x3b, 0x31, 0xd3, 0x9e, 0xa5, 0xb5, 0xb9, 0xba, 0x6f, 0xde, 0x73, 0x8a,
+  0xca, 0x6a, 0x45, 0x31, 0xcc, 0x3e, 0x66, 0xec, 0xe4, 0xe4, 0x5f, 0xff,
+  0xb2, 0xb8, 0x0a, 0x33, 0xde, 0xa4, 0xae, 0xf4, 0xa2, 0x6b, 0x67, 0x15,
+  0xc8, 0x59, 0xc4, 0x22, 0xad, 0x65, 0xd7, 0x18, 0x81, 0x16, 0xa8, 0xdb,
+  0x59, 0xd5, 0xa1, 0x7e, 0xbf, 0x1b, 0x7f, 0xbf, 0x2b, 0x66, 0xc7, 0xa3,
+  0xd3, 0xdb, 0xe7, 0x0e, 0x00, 0x55, 0xf2, 0xb8, 0x43, 0xf1, 0xcd, 0x84,
+  0x02, 0xa6, 0x30, 0x7e, 0x54, 0xee, 0x9c, 0x54, 0x78, 0xa2, 0xd8, 0xfe,
+  0x39, 0x82, 0x6c, 0x59, 0x22, 0x3f, 0x15, 0x8f, 0xc0, 0x4c, 0x2c, 0x61,
+  0xbf, 0x08, 0xb2, 0x03, 0x9f, 0xe2, 0xeb, 0x8a, 0x1a, 0xa4, 0xef, 0x9f,
+  0xba, 0x58, 0x7c, 0xcf, 0xd3, 0x50, 0xa3, 0x4d, 0xb3, 0xa1, 0x06, 0xf9,
+  0xe2, 0xd6, 0x8a, 0xfc, 0xd2, 0xaf, 0xcf, 0x5d, 0x7d, 0x9e, 0xaa, 0xe1,
+  0xa3, 0x6a, 0x80, 0x0d, 0x1b, 0xf3, 0xc7, 0xe0, 0x10, 0x16, 0xc9, 0x9c,
+  0xc1, 0x2b, 0x19, 0xad, 0x71, 0x65, 0xcd, 0x80, 0xec, 0xa0, 0x4a, 0x29,
+  0x0c, 0xcc, 0x53, 0x64, 0xc6, 0x82, 0x1f, 0x05, 0xcc, 0x25, 0x04, 0xfa,
+  0xd7, 0x5d, 0xff, 0x71, 0x77, 0x7b, 0x7b, 0x67, 0x6f, 0xe7, 0xf3, 0x17,
+  0xdb, 0x7b, 0x3b, 0x3b, 0x3b, 0xbb, 0x7b, 0x3b, 0x7b, 0x7b, 0xbb, 0xdb,
+  0x3f, 0x6f, 0xb1, 0xfd, 0xe8, 0x36, 0xcf, 0xee, 0xcc, 0x31, 0x25, 0xb9,
+  0x78, 0x20, 0x6b, 0x29, 0xd6, 0xae, 0x1a, 0xbc, 0xea, 0xb9, 0x26, 0xf9,
+  0x38, 0x54, 0x09, 0x09, 0x99, 0x17, 0x04, 0xb9, 0x85, 0xcf, 0x34, 0xc5,
+  0x19, 0x0c, 0x50, 0xae, 0x31, 0xaa, 0xbf, 0x2e, 0x79, 0xa6, 0x23, 0x16,
+  0x07, 0x20, 0xd3, 0x54, 0x2e, 0xaf, 0xef, 0x6a, 0x5a, 0x8c, 0x46, 0xc8,
+  0x5c, 0x70, 0xa9, 0xad, 0xc3, 0x84, 0xa1, 0x54, 0x6f, 0x84, 0x24, 0xd4,
+  0x73, 0x80, 0xa0, 0x42, 0x39, 0xe8, 0x7e, 0x75, 0x44, 0xf0, 0xd2, 0x40,
+  0xea, 0x71, 0xc1, 0x65, 0x05, 0x26, 0xcc, 0x94, 0x68, 0x91, 0x4a, 0x97,
+  0xf2, 0x92, 0x5c, 0x66, 0x9f, 0x6f, 0xef, 0xed, 0x71, 0xe5, 0x8f, 0xdf,
+  0xef, 0xf4, 0x35, 0x1e, 0x34, 0x0c, 0x72, 0xef, 0xbb, 0xeb, 0x49, 0xda,
+  0x60, 0xf5, 0x23, 0x9c, 0xe7, 0x7c, 0x39, 0xcb, 0x4a, 0x52, 0x44, 0xb8,
+  0x76, 0x2c, 0x02, 0x22, 0x61, 0xf4, 0x16, 0x88, 0x35, 0x00, 0xb2, 0xb4,
+  0x82, 0xf1, 0xf9, 0x46, 0x10, 0xa8, 0x58, 0x97, 0x84, 0x2e, 0x70, 0x41,
+  0x7e, 0x8a, 0xae, 0x6d, 0x54, 0xbf, 0x81, 0x1d, 0x5f, 0x52, 0x59, 0x24,
+  0x89, 0x47, 0xee, 0x5b, 0xe5, 0x0c, 0x38, 0x5c, 0x73, 0xa9, 0x68, 0xca,
+  0x8f, 0x8b, 0x0c, 0x0f, 0x8b, 0x49, 0x20, 0xdc, 0x6a, 0xfe, 0xce, 0x8f,
+  0xc1, 0x64, 0x77, 0x9f, 0xed, 0xfc, 0x2c, 0xe1, 0x8a, 0x7c, 0x20, 0xfc,
+  0xaa, 0x69, 0x35, 0xb8, 0x49, 0x98, 0xa1, 0x61, 0x84, 0xb4, 0x91, 0x0d,
+  0xaf, 0x86, 0x26, 0x55, 0xa8, 0xb5, 0xb1, 0x1f, 0x06, 0x8d, 0x0b, 0x4c,
+  0xb9, 0xd4, 0x29, 0x86, 0x9e, 0x66, 0x06, 0x25, 0x33, 0x08, 0x8b, 0x31,
+  0xb3, 0x51, 0xd6, 0x87, 0x6e, 0x98, 0xc3, 0x8b, 0x7d, 0xba, 0x3c, 0xbe,
+  0x8d, 0x15, 0xfd, 0xb7, 0x19, 0x69, 0xe5, 0xbc, 0xd9, 0x1b, 0x38, 0x0f,
+  0xb7, 0x0e, 0x1c, 0x98, 0xd7, 0xee, 0x69, 0xb2, 0xc1, 0x3e, 0x8b, 0x67,
+  0x9f, 0x3f, 0x7b, 0xba, 0x29, 0x95, 0x18, 0xe4, 0xb5, 0x8c, 0xf3, 0x43,
+  0x60, 0x95, 0x54, 0x70, 0x1a, 0x36, 0x27, 0x3b, 0x96, 0xf4, 0xfe, 0xec,
+  0x48, 0x8e, 0xf4, 0xb5, 0x60, 0x08, 0x88, 0xd2, 0xdb, 0x06, 0x93, 0xc3,
+  0x7d, 0x1b, 0x08, 0x19, 0xb3, 0x9c, 0x81, 0x0e, 0x91, 0x7b, 0xcd, 0x17,
+  0xa3, 0xcb, 0xfd, 0xc7, 0x0d, 0x4b, 0x07, 0xb4, 0x40, 0x7d, 0x42, 0x2d,
+  0xfb, 0x84, 0xc1, 0x00, 0x19, 0x91, 0x81, 0x59, 0x95, 0xce, 0x9c, 0x06,
+  0xc6, 0x7a, 0x90, 0xf0, 0x23, 0xe1, 0xfe, 0x2d, 0x30, 0xee, 0x4d, 0xf1,
+  0xf8, 0x43, 0x28, 0x64, 0x32, 0xa4, 0x07, 0x2d, 0x74, 0x94, 0x47, 0xdc,
+  0xc8, 0x46, 0xf3, 0xd2, 0x66, 0x80, 0xe9, 0x64, 0x70, 0x2e, 0xca, 0x8a,
+  0xdc, 0x12, 0x8a, 0x3b, 0xbb, 0x86, 0x65, 0x31, 0x6f, 0x98, 0x7c, 0x34,
+  0x97, 0x1e, 0x39, 0xed, 0x08, 0x39, 0x9e, 0xd1, 0x75, 0x54, 0xde, 0xab,
+  0x84, 0x0d, 0x35, 0xc1, 0x95, 0x53, 0x6b, 0x05, 0x04, 0x08, 0x6a, 0x44,
+  0x18, 0x49, 0xef, 0x40, 0x53, 0x4c, 0x69, 0x6e, 0x0c, 0xa0, 0xc1, 0xf6,
+  0x07, 0x33, 0xfb, 0x2a, 0x88, 0x97, 0x09, 0xd3, 0xcb, 0xec, 0x77, 0x7b,
+  0x2e, 0x08, 0xa5, 0x4c, 0xdb, 0x13, 0x5b, 0x31, 0x34, 0x01, 0xd4, 0x44,
+  0xf8, 0x94, 0xd3, 0x7e, 0x36, 0x30, 0x92, 0xad, 0xad, 0xcd, 0x15, 0xa3,
+  0xd1, 0xaf, 0xbb, 0x7a, 0x3f, 0x05, 0x26, 0x49, 0x90, 0xd1, 0x49, 0x7b,
+  0xde, 0x6c, 0x9c, 0x97, 0x36, 0xaf, 0x78, 0x27, 0x27, 0x1a, 0x17, 0x2b,
+  0x66, 0x54, 0x53, 0xaf, 0x64, 0xf0, 0xc6, 0xbc, 0x9a, 0x93, 0xd0, 0x50,
+  0x1c, 0xc3, 0x88, 0x92, 0xa2, 0xd2, 0xe2, 0xde, 0x1c, 0x26, 0xfb, 0x4c,
+  0x0d, 0x8d, 0x8e, 0x83, 0x21, 0x9b, 0x3d, 0xd7, 0x60, 0xcf, 0x4d, 0x88,
+  0x75, 0xe6, 0xbc, 0x7e, 0xf0, 0xa5, 0x89, 0x79, 0x06, 0x09, 0xe0, 0x8c,
+  0xbd, 0xa3, 0x4c, 0xe0, 0x4f, 0x1c, 0xe7, 0x0c, 0xe0, 0x8c, 0xf3, 0x79,
+  0xa3, 0x4e, 0xa8, 0x36, 0x02, 0x47, 0xb7, 0x9b, 0x04, 0x90, 0x12, 0x4b,
+  0x43, 0xe0, 0x0d, 0x6b, 0x07, 0x02, 0x81, 0x40, 0x83, 0xda, 0x45, 0xb0,
+  0x76, 0x44, 0x2c, 0xde, 0xd6, 0x91, 0x90, 0x57, 0x63, 0x3d, 0xfa, 0x42,
+  0xf1, 0x12, 0xc4, 0x20, 0xf1, 0xb6, 0x74, 0x48, 0x98, 0x61, 0xec, 0x1f,
+  0x1d, 0x73, 0x54, 0xdc, 0x31, 0xa9, 0x78, 0xe7, 0x26, 0x2a, 0x21, 0x4a,
+  0x14, 0xf1, 0x7a, 0xf3, 0x9c, 0xc5, 0xf5, 0xbe, 0xab, 0x37, 0x62, 0xc9,
+  0x52, 0xd0, 0x5b, 0xd8, 0xb9, 0x27, 0xaa, 0xbf, 0x62, 0x04, 0xd2, 0x6e,
+  0x91, 0xbc, 0x54, 0x89, 0xd1, 0x16, 0xf8, 0xbb, 0x8c, 0x4c, 0x0f, 0x47,
+  0x2a, 0x54, 0x6a, 0x61, 0xd3, 0x28, 0x77, 0x54, 0x66, 0xd3, 0xec, 0x56,
+  0xad, 0xab, 0x82, 0x66, 0xfa, 0xb5, 0xfa, 0x30, 0xa5, 0xde, 0x69, 0xed,
+  0x5d, 0xb1, 0x0d, 0x37, 0x29, 0xf7, 0xb9, 0x25, 0x98, 0x30, 0x1e, 0xea,
+  0x83, 0xbb, 0xf7, 0x10, 0xfc, 0xe6, 0x32, 0xe6, 0xf7, 0x06, 0xac, 0xe3,
+  0x6a, 0x68, 0xeb, 0xfb, 0x4a, 0xd1, 0x1c, 0xda, 0xb1, 0xe2, 0x62, 0x2b,
+  0xb4, 0x8a, 0x79, 0x62, 0x7c, 0xef, 0x1b, 0x48, 0xb2, 0x78, 0x0c, 0xf8,
+  0xe2, 0xe9, 0xb3, 0xa1, 0x56, 0x2a, 0xc0, 0x93, 0x42, 0xc6, 0xe5, 0x30,
+  0xfa, 0x92, 0x38, 0x0a, 0xda, 0x28, 0xa6, 0xf4, 0x27, 0xc2, 0xa9, 0x24,
+  0xc0, 0x92, 0x9e, 0x65, 0x90, 0xd7, 0x20, 0xa2, 0x95, 0xfe, 0x94, 0x64,
+  0x08, 0xfd, 0x0b, 0x4d, 0x95, 0x4b, 0x60, 0x09, 0xf7, 0xe5, 0x32, 0x64,
+  0xa7, 0x63, 0x3d, 0x1e, 0xba, 0xd1, 0xab, 0xcf, 0x5f, 0xc6, 0xff, 0xda,
+  0x5c, 0xd2, 0x26, 0x86, 0x14, 0xa5, 0xad, 0xae, 0xec, 0xc2, 0x48, 0x0a,
+  0x1c, 0x7e, 0xb5, 0x64, 0x67, 0x98, 0x2b, 0xdf, 0xc3, 0xa3, 0x98, 0xf1,
+  0x55, 0x94, 0x49, 0x2d, 0x51, 0xd7, 0x38, 0x6b, 0x74, 0x4b, 0xda, 0x5d,
+  0x69, 0xfd, 0xb8, 0xb8, 0xe3, 0x42, 0xa8, 0x97, 0x97, 0xf9, 0x98, 0xab,
+  0xdb, 0x78, 0xcc, 0x60, 0x66, 0xf1, 0xf2, 0xe0, 0xcc, 0x6a, 0x2f, 0xd1,
+  0xdc, 0x92, 0xc5, 0x72, 0x34, 0xa5, 0xbb, 0xda, 0xa2, 0xd9, 0xe9, 0x50,
+  0x61, 0x95, 0x48, 0xd9, 0x42, 0x73, 0xe2, 0xcb, 0x87, 0xbe, 0xd9, 0x8a,
+  0xa0, 0xd6, 0xea, 0xf0, 0x2c, 0x81, 0xcf, 0x50, 0x11, 0x96, 0xc3, 0x8c,
+  0x67, 0xc5, 0xdc, 0x92, 0x61, 0x96, 0x95, 0x80, 0x49, 0x5a, 0x29, 0xf9,
+  0x35, 0xf1, 0x4c, 0xe4, 0x53, 0x85, 0x6c, 0x57, 0xcd, 0x1c, 0x6f, 0x84,
+  0x93, 0x99, 0x0c, 0x16, 0xd7, 0x0b, 0xdb, 0x69, 0x93, 0x87, 0x44, 0x58,
+  0xd2, 0xf4, 0x0b, 0x9c, 0xbc, 0xd3, 0x6f, 0x4e, 0x87, 0xc9, 0x21, 0xb7,
+  0x24, 0x63, 0x52, 0x39, 0x17, 0x26, 0x1a, 0xfa, 0x8e, 0x26, 0x7b, 0xc5,
+  0xf7, 0xd7, 0x49, 0xc9, 0x7f, 0xa1, 0x35, 0xfd, 0x52, 0xac, 0xb2, 0xf8,
+  0xb6, 0xd9, 0x2b, 0x35, 0x64, 0x41, 0xd6, 0xa7, 0xf8, 0x9d, 0x8e, 0x0a,
+  0x49, 0x5f, 0x6e, 0x9b, 0x7c, 0x0f, 0x45, 0xd9, 0x80, 0xde, 0x91, 0x37,
+  0x13, 0x12, 0xca, 0x20, 0x5a, 0x2d, 0xee, 0xb1, 0x7f, 0x01, 0x6f, 0x14,
+  0xf1, 0x53, 0x1a, 0x08, 0x48, 0x4b, 0xc9, 0xcf, 0x85, 0xef, 0xc9, 0xb9,
+  0x2a, 0x05, 0x74, 0xa6, 0xcc, 0x34, 0xd8, 0xb1, 0x50, 0x2f, 0xa9, 0x18,
+  0x34, 0xaa, 0xac, 0x75, 0x5c, 0x03, 0xf5, 0xcd, 0xbe, 0x60, 0xad, 0x9b,
+  0xc7, 0x42, 0x42, 0x0b, 0x6d, 0xc1, 0x70, 0xed, 0xff, 0x06, 0xef, 0x88,
+  0xd8, 0x9f, 0x70, 0x88, 0x02, 0x00,
 };
 #define BUF_SIZE 0x10000
 static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
index 3573b05..5873adf 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #  include <fcntl.h>
 #endif
 
-#ifdef USE_SSLEAY
-#  ifdef USE_OPENSSL
-#    include <openssl/md5.h>
-#    include <openssl/sha.h>
-#  else
-#    include <md5.h>
-#    include <sha.h>
-#  endif
+#ifdef USE_OPENSSL
+#  include <openssl/md5.h>
+#  include <openssl/sha.h>
 #elif defined(USE_GNUTLS_NETTLE)
 #  include <nettle/md5.h>
 #  include <nettle/sha.h>
@@ -381,7 +376,7 @@ static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
   sha256_finish(ctx, digest);
 }
 
-#elif defined(_WIN32) && !defined(USE_SSLEAY)
+#elif defined(_WIN32) && !defined(USE_OPENSSL)
 
 static void win32_crypto_final(struct win32_crypto_hash *ctx,
                                unsigned char *digest,
@@ -626,6 +621,10 @@ static int check_hash(const char *filename,
   }
 
   result = malloc(digest_def->dparams->digest_resultlen);
+  if(!result) {
+    close(fd);
+    return -1;
+  }
   while(1) {
     unsigned char buf[4096];
     ssize_t len = read(fd, buf, sizeof(buf));
@@ -681,12 +680,17 @@ static metalink_checksum *new_metalink_checksum_from_hex_digest
   size_t i;
   size_t len = strlen(hex_digest);
   digest = malloc(len/2);
+  if(!digest)
+    return 0;
+
   for(i = 0; i < len; i += 2) {
     digest[i/2] = hex_to_uint(hex_digest+i);
   }
   chksum = malloc(sizeof(metalink_checksum));
-  chksum->digest_def = digest_def;
-  chksum->digest = digest;
+  if(chksum) {
+    chksum->digest_def = digest_def;
+    chksum->digest = digest;
+  }
   return chksum;
 }
 
@@ -694,8 +698,14 @@ static metalink_resource *new_metalink_resource(const char *url)
 {
   metalink_resource *res;
   res = malloc(sizeof(metalink_resource));
-  res->next = NULL;
-  res->url = strdup(url);
+  if(res) {
+    res->next = NULL;
+    res->url = strdup(url);
+    if(!res->url) {
+      free(res);
+      return NULL;
+    }
+  }
   return res;
 }
 
@@ -720,8 +730,15 @@ static metalinkfile *new_metalinkfile(metalink_file_t *fileinfo)
 {
   metalinkfile *f;
   f = (metalinkfile*)malloc(sizeof(metalinkfile));
+  if(!f)
+    return NULL;
+
   f->next = NULL;
   f->filename = strdup(fileinfo->name);
+  if(!f->filename) {
+    free(f);
+    return NULL;
+  }
   f->checksum = NULL;
   f->resource = NULL;
   if(fileinfo->checksums) {
@@ -822,8 +839,10 @@ int parse_metalink(struct OperationConfig *config, struct OutStruct *outs,
       url = new_getout(config);
 
     if(url) {
-      metalinkfile *mlfile;
-      mlfile = new_metalinkfile(*files);
+      metalinkfile *mlfile = new_metalinkfile(*files);
+      if(!mlfile)
+        break;
+
       if(!mlfile->checksum) {
         warnings = TRUE;
         fprintf(config->global->errors,
index 3311b55..38de977 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -38,9 +38,9 @@
  * mute (--silent) was selected.
  */
 
-void warnf(struct OperationConfig *config, const char *fmt, ...)
+void warnf(struct GlobalConfig *config, const char *fmt, ...)
 {
-  if(!config->global->mute) {
+  if(!config->mute) {
     va_list ap;
     int len;
     char *ptr;
@@ -52,7 +52,7 @@ void warnf(struct OperationConfig *config, const char *fmt, ...)
 
     ptr = print_buffer;
     while(len > 0) {
-      fputs(WARN_PREFIX, config->global->errors);
+      fputs(WARN_PREFIX, config->errors);
 
       if(len > (int)WARN_TEXTWIDTH) {
         int cut = WARN_TEXTWIDTH-1;
@@ -65,13 +65,13 @@ void warnf(struct OperationConfig *config, const char *fmt, ...)
              max text width then! */
           cut = WARN_TEXTWIDTH-1;
 
-        (void)fwrite(ptr, cut + 1, 1, config->global->errors);
-        fputs("\n", config->global->errors);
+        (void)fwrite(ptr, cut + 1, 1, config->errors);
+        fputs("\n", config->errors);
         ptr += cut+1; /* skip the space too */
         len -= cut;
       }
       else {
-        fputs(ptr, config->global->errors);
+        fputs(ptr, config->errors);
         len = 0;
       }
     }
index 1575469..bf97bfb 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,7 +23,7 @@
  ***************************************************************************/
 #include "tool_setup.h"
 
-void warnf(struct OperationConfig *config, const char *fmt, ...);
+void warnf(struct GlobalConfig *config, const char *fmt, ...);
 
 void helpf(FILE *errors, const char *fmt, ...);
 
index a21bbca..ecc0275 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -151,7 +151,7 @@ static curl_off_t vms_realfilesize(const char * name,
   int ret_stat;
   FILE * file;
 
-  file = fopen(name, "r");
+  file = fopen(name, "r"); /* VMS */
   if(file == NULL) {
     return 0;
   }
@@ -320,7 +320,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
     if(!curlx_strequal(config->headerfile, "-")) {
       FILE *newfile = fopen(config->headerfile, "wb");
       if(!newfile) {
-        warnf(config, "Failed to open %s\n", config->headerfile);
+        warnf(config->global, "Failed to open %s\n", config->headerfile);
         result = CURLE_WRITE_ERROR;
         goto quit_curl;
       }
@@ -565,7 +565,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
             Curl_safefree(storefile);
             if(result) {
               /* bad globbing */
-              warnf(config, "bad output glob!\n");
+              warnf(config->global, "bad output glob!\n");
               goto quit_urls;
             }
           }
@@ -710,7 +710,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
            * we should warn him/her.
            */
           if(config->proxyanyauth || (authbits>1)) {
-            warnf(config,
+            warnf(config->global,
                   "Using --anyauth or --proxy-anyauth with upload from stdin"
                   " involves a big risk of it not working. Use a temporary"
                   " file or a fixed auth type instead!\n");
@@ -722,7 +722,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
           set_binmode(stdin);
           if(curlx_strequal(uploadfile, ".")) {
             if(curlx_nonblock((curl_socket_t)infd, TRUE) < 0)
-              warnf(config,
+              warnf(config->global,
                     "fcntl failed on fd=%d: %s\n", infd, strerror(errno));
           }
         }
@@ -998,10 +998,6 @@ static CURLcode operate_do(struct GlobalConfig *global,
         else
           my_setopt(curl, CURLOPT_RESUME_FROM_LARGE, CURL_OFF_T_C(0));
 
-        my_setopt_str(curl, CURLOPT_SSLCERT, config->cert);
-        my_setopt_str(curl, CURLOPT_SSLCERTTYPE, config->cert_type);
-        my_setopt_str(curl, CURLOPT_SSLKEY, config->key);
-        my_setopt_str(curl, CURLOPT_SSLKEYTYPE, config->key_type);
         my_setopt_str(curl, CURLOPT_KEYPASSWD, config->key_passwd);
 
         if(built_in_protos & (CURLPROTO_SCP|CURLPROTO_SFTP)) {
@@ -1029,6 +1025,11 @@ static CURLcode operate_do(struct GlobalConfig *global,
           my_setopt_str(curl, CURLOPT_PINNEDPUBLICKEY, config->pinnedpubkey);
 
         if(curlinfo->features & CURL_VERSION_SSL) {
+          my_setopt_str(curl, CURLOPT_SSLCERT, config->cert);
+          my_setopt_str(curl, CURLOPT_SSLCERTTYPE, config->cert_type);
+          my_setopt_str(curl, CURLOPT_SSLKEY, config->key);
+          my_setopt_str(curl, CURLOPT_SSLKEYTYPE, config->key_type);
+
           if(config->insecure_ok) {
             my_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
             my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
@@ -1038,7 +1039,17 @@ static CURLcode operate_do(struct GlobalConfig *global,
             /* libcurl default is strict verifyhost -> 2L   */
             /* my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L); */
           }
+
+          if(config->verifystatus)
+            my_setopt(curl, CURLOPT_SSL_VERIFYSTATUS, 1L);
+
+          if(config->falsestart)
+            my_setopt(curl, CURLOPT_SSL_FALSESTART, 1L);
+
+          my_setopt_enum(curl, CURLOPT_SSLVERSION, config->ssl_version);
         }
+        if(config->path_as_is)
+          my_setopt(curl, CURLOPT_PATH_AS_IS, 1L);
 
         if(built_in_protos & (CURLPROTO_SCP|CURLPROTO_SFTP)) {
           if(!config->insecure_ok) {
@@ -1088,13 +1099,12 @@ static CURLcode operate_do(struct GlobalConfig *global,
         my_setopt(curl, CURLOPT_COOKIESESSION, config->cookiesession?1L:0L);
 #else
         if(config->cookie || config->cookiefile || config->cookiejar) {
-          warnf(config, "cookie option(s) used even though cookie support "
-                "is disabled!\n");
+          warnf(config->global, "cookie option(s) used even though cookie "
+                "support is disabled!\n");
           return CURLE_NOT_BUILT_IN;
         }
 #endif
 
-        my_setopt_enum(curl, CURLOPT_SSLVERSION, config->ssl_version);
         my_setopt_enum(curl, CURLOPT_TIMECONDITION, (long)config->timecond);
         my_setopt(curl, CURLOPT_TIMEVALUE, (long)config->condtime);
         my_setopt_str(curl, CURLOPT_CUSTOMREQUEST, config->customrequest);
@@ -1194,21 +1204,26 @@ static CURLcode operate_do(struct GlobalConfig *global,
           my_setopt_enum(curl, CURLOPT_FTP_SSL_CCC,
                          (long)config->ftp_ssl_ccc_mode);
 
-#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
-        {
-          /* TODO: Make this a run-time check instead of compile-time one. */
+        /* new in curl 7.19.4 */
+        if(config->socks5_gssapi_service)
+          my_setopt_str(curl, CURLOPT_SOCKS5_GSSAPI_SERVICE,
+                        config->socks5_gssapi_service);
 
-          /* new in curl 7.19.4 */
-          if(config->socks5_gssapi_service)
-            my_setopt_str(curl, CURLOPT_SOCKS5_GSSAPI_SERVICE,
-                          config->socks5_gssapi_service);
+        /* new in curl 7.19.4 */
+        if(config->socks5_gssapi_nec)
+          my_setopt_str(curl, CURLOPT_SOCKS5_GSSAPI_NEC,
+                        config->socks5_gssapi_nec);
+
+        /* new in curl 7.43.0 */
+        if(config->proxy_service_name)
+          my_setopt_str(curl, CURLOPT_PROXY_SERVICE_NAME,
+                        config->proxy_service_name);
+
+        /* new in curl 7.43.0 */
+        if(config->service_name)
+          my_setopt_str(curl, CURLOPT_SERVICE_NAME,
+                        config->service_name);
 
-          /* new in curl 7.19.4 */
-          if(config->socks5_gssapi_nec)
-            my_setopt_str(curl, CURLOPT_SOCKS5_GSSAPI_NEC,
-                          config->socks5_gssapi_nec);
-        }
-#endif
         /* curl 7.13.0 */
         my_setopt_str(curl, CURLOPT_FTP_ACCOUNT, config->ftp_account);
 
@@ -1247,8 +1262,8 @@ static CURLcode operate_do(struct GlobalConfig *global,
           my_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
           if(config->alivetime != 0) {
 #if !defined(TCP_KEEPIDLE) || !defined(TCP_KEEPINTVL)
-            warnf(config, "Keep-alive functionality somewhat crippled due to "
-                "missing support in your operating system!\n");
+            warnf(config->global, "Keep-alive functionality somewhat crippled "
+                "due to missing support in your operating system!\n");
 #endif
             my_setopt(curl, CURLOPT_TCP_KEEPIDLE, config->alivetime);
             my_setopt(curl, CURLOPT_TCP_KEEPINTVL, config->alivetime);
@@ -1312,9 +1327,13 @@ static CURLcode operate_do(struct GlobalConfig *global,
           my_setopt_str(curl, CURLOPT_GSSAPI_DELEGATION,
                         config->gssapi_delegation);
 
-        /* new in 7.25.0 */
-        if(config->ssl_allow_beast)
-          my_setopt(curl, CURLOPT_SSL_OPTIONS, (long)CURLSSLOPT_ALLOW_BEAST);
+        /* new in 7.25.0 and 7.44.0 */
+        {
+          long mask = (config->ssl_allow_beast ? CURLSSLOPT_ALLOW_BEAST : 0) |
+                      (config->ssl_no_revoke ? CURLSSLOPT_NO_REVOKE : 0);
+          if(mask)
+            my_setopt_bitmask(curl, CURLOPT_SSL_OPTIONS, mask);
+        }
 
         if(config->mail_auth)
           my_setopt_str(curl, CURLOPT_MAIL_AUTH, config->mail_auth);
@@ -1378,6 +1397,18 @@ static CURLcode operate_do(struct GlobalConfig *global,
 #endif
           result = curl_easy_perform(curl);
 
+          if(!result && !outs.stream && !outs.bytes) {
+            /* we have received no data despite the transfer was successful
+               ==> force cration of an empty output file (if an output file
+               was specified) */
+            long cond_unmet = 0L;
+            /* do not create (or even overwrite) the file in case we get no
+               data because of unmet condition */
+            curl_easy_getinfo(curl, CURLINFO_CONDITION_UNMET, &cond_unmet);
+            if(!cond_unmet && !tool_create_output_file(&outs))
+              result = CURLE_WRITE_ERROR;
+          }
+
           if(outs.is_cd_filename && outs.stream && !global->mute &&
              outs.filename)
             printf("curl: Saved to filename '%s'\n", outs.filename);
@@ -1451,7 +1482,8 @@ static CURLcode operate_do(struct GlobalConfig *global,
               static const char * const m[]={
                 NULL, "timeout", "HTTP error", "FTP error"
               };
-              warnf(config, "Transient problem: %s "
+
+              warnf(config->global, "Transient problem: %s "
                     "Will retry in %ld seconds. "
                     "%ld retries left.\n",
                     m[retry], retry_sleep/1000L, retry_numretries);
@@ -1463,7 +1495,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
                 if(retry_sleep > RETRY_SLEEP_MAX)
                   retry_sleep = RETRY_SLEEP_MAX;
               }
-              if(outs.bytes && outs.filename) {
+              if(outs.bytes && outs.filename && outs.stream) {
                 /* We have written data to a output file, we truncate file
                  */
                 if(!global->mute)
@@ -1594,7 +1626,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
         if(!result && config->xattr && outs.fopened && outs.stream) {
           int rc = fwrite_xattr(curl, fileno(outs.stream));
           if(rc)
-            warnf(config, "Error setting extended attributes: %s\n",
+            warnf(config->global, "Error setting extended attributes: %s\n",
                   strerror(errno));
         }
 
@@ -1853,9 +1885,6 @@ CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[])
         /* Cleanup the libcurl source output */
         easysrc_cleanup();
 
-        /* set current back to first so that isn't NULL */
-        config->current = config->first;
-
         /* Dump the libcurl code if previously enabled */
         dumpeasysrc(config);
 #endif
index 0e05184..d4b96e7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -331,7 +331,7 @@ long proto2num(struct OperationConfig *config, long *val, const char *str)
          if no protocols are allowed */
       if(action == set)
         *val = 0;
-      warnf(config, "unrecognized protocol '%s'\n", token);
+      warnf(config->global, "unrecognized protocol '%s'\n", token);
     }
   }
   Curl_safefree(buffer);
@@ -449,7 +449,10 @@ int ftpfilemethod(struct OperationConfig *config, const char *str)
     return CURLFTPMETHOD_NOCWD;
   if(curlx_raw_equal("multicwd", str))
     return CURLFTPMETHOD_MULTICWD;
-  warnf(config, "unrecognized ftp file method '%s', using default\n", str);
+
+  warnf(config->global, "unrecognized ftp file method '%s', using default\n",
+        str);
+
   return CURLFTPMETHOD_MULTICWD;
 }
 
@@ -459,7 +462,10 @@ int ftpcccmethod(struct OperationConfig *config, const char *str)
     return CURLFTPSSL_CCC_PASSIVE;
   if(curlx_raw_equal("active", str))
     return CURLFTPSSL_CCC_ACTIVE;
-  warnf(config, "unrecognized ftp CCC method '%s', using default\n", str);
+
+  warnf(config->global, "unrecognized ftp CCC method '%s', using default\n",
+        str);
+
   return CURLFTPSSL_CCC_PASSIVE;
 }
 
@@ -471,7 +477,10 @@ long delegation(struct OperationConfig *config, char *str)
     return CURLGSSAPI_DELEGATION_POLICY_FLAG;
   if(curlx_raw_equal("always", str))
     return CURLGSSAPI_DELEGATION_FLAG;
-  warnf(config, "unrecognized delegation method '%s', using none\n", str);
+
+  warnf(config->global, "unrecognized delegation method '%s', using none\n",
+        str);
+
   return CURLGSSAPI_DELEGATION_NONE;
 }
 
index c5d390b..39b43ee 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -69,7 +69,7 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
         /* Check if the file exists - if not, try CURLRC in the same
          * directory as our executable
          */
-        file = fopen(filebuffer, "r");
+        file = fopen(filebuffer, FOPEN_READTEXT);
         if(file != NULL) {
           fclose(file);
           filename = filebuffer;
@@ -114,8 +114,8 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
 #endif
   }
 
-  if(strcmp(filename,"-"))
-    file = fopen(filename, "r");
+  if(strcmp(filename, "-"))
+    file = fopen(filename, FOPEN_READTEXT);
   else
     file = stdin;
 
@@ -187,24 +187,27 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
         param = line; /* parameter starts here */
         while(*line && !ISSPACE(*line))
           line++;
-        *line = '\0'; /* zero terminate */
 
-        /* to detect mistakes better, see if there's data following */
-        line++;
-        /* pass all spaces */
-        while(*line && ISSPACE(*line))
-          line++;
+        if(*line) {
+          *line = '\0'; /* zero terminate */
 
-        switch(*line) {
-        case '\0':
-        case '\r':
-        case '\n':
-        case '#': /* comment */
-          break;
-        default:
-          warnf(operation, "%s:%d: warning: '%s' uses unquoted white space in"
-                " the line that may cause side-effects!\n",
-                filename, lineno, option);
+          /* to detect mistakes better, see if there's data following */
+          line++;
+          /* pass all spaces */
+          while(*line && ISSPACE(*line))
+            line++;
+
+          switch(*line) {
+          case '\0':
+          case '\r':
+          case '\n':
+          case '#': /* comment */
+            break;
+          default:
+            warnf(operation->global, "%s:%d: warning: '%s' uses unquoted "
+                  "white space in the line that may cause side-effects!\n",
+                  filename, lineno, option);
+          }
         }
       }
 
@@ -261,7 +264,7 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
            res != PARAM_VERSION_INFO_REQUESTED &&
            res != PARAM_ENGINES_REQUESTED) {
           const char *reason = param2text(res);
-          warnf(operation, "%s:%d: warning: '%s' %s\n",
+          warnf(operation->global, "%s:%d: warning: '%s' %s\n",
                 filename, lineno, option, reason);
         }
       }
index a53fdc8..7eb64b0 100644 (file)
@@ -107,6 +107,12 @@ const NameValue setopt_nv_CURLUSESSL[] = {
   NVEND,
 };
 
+const NameValueUnsigned setopt_nv_CURLSSLOPT[] = {
+  NV(CURLSSLOPT_ALLOW_BEAST),
+  NV(CURLSSLOPT_NO_REVOKE),
+  NVEND,
+};
+
 const NameValue setopt_nv_CURL_NETRC[] = {
   NV(CURL_NETRC_IGNORED),
   NV(CURL_NETRC_OPTIONAL),
index fcba94c..b32adf9 100644 (file)
@@ -52,6 +52,7 @@ extern const NameValue setopt_nv_CURL_SSLVERSION[];
 extern const NameValue setopt_nv_CURL_TIMECOND[];
 extern const NameValue setopt_nv_CURLFTPSSL_CCC[];
 extern const NameValue setopt_nv_CURLUSESSL[];
+extern const NameValueUnsigned setopt_nv_CURLSSLOPT[];
 extern const NameValue setopt_nv_CURL_NETRC[];
 extern const NameValue setopt_nv_CURLPROTO[];
 extern const NameValueUnsigned setopt_nv_CURLAUTH[];
@@ -63,6 +64,7 @@ extern const NameValueUnsigned setopt_nv_CURLAUTH[];
 #define setopt_nv_CURLOPT_TIMECONDITION setopt_nv_CURL_TIMECOND
 #define setopt_nv_CURLOPT_FTP_SSL_CCC setopt_nv_CURLFTPSSL_CCC
 #define setopt_nv_CURLOPT_USE_SSL setopt_nv_CURLUSESSL
+#define setopt_nv_CURLOPT_SSL_OPTIONS setopt_nv_CURLSSLOPT
 #define setopt_nv_CURLOPT_NETRC setopt_nv_CURL_NETRC
 #define setopt_nv_CURLOPT_PROTOCOLS setopt_nv_CURLPROTO
 #define setopt_nv_CURLOPT_REDIR_PROTOCOLS setopt_nv_CURLPROTO
index 965675c..a0bbe88 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -39,7 +39,7 @@ char *strdup(const char *str)
   if(!newstr)
     return (char *)NULL;
 
-  memcpy(newstr,str,(len+1)*sizeof(char));
+  memcpy(newstr, str, (len+1)*sizeof(char));
 
   return newstr;
 
index b6d5591..1337252 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -21,9 +21,9 @@
  ***************************************************************************/
 #include "tool_setup.h"
 
-#define _MPRINTF_REPLACE /* we want curl-functions instead of native ones */
-#include <curl/mprintf.h>
-
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
 #include "tool_urlglob.h"
 #include "tool_vms.h"
 
@@ -196,7 +196,7 @@ static CURLcode glob_range(URLGlob *glob, char **patternp,
       char *endp;
       unsigned long lstep;
       errno = 0;
-      lstep = strtoul(&pattern[3], &endp, 10);
+      lstep = strtoul(&pattern[4], &endp, 10);
       if(errno || (*endp != ']'))
         step = -1;
       else {
@@ -212,7 +212,7 @@ static CURLcode glob_range(URLGlob *glob, char **patternp,
     *posp += (pattern - *patternp);
 
     if((rc != 2) || (min_c >= max_c) || ((max_c - min_c) > ('z' - 'a')) ||
-       (step < 0) )
+       (step <= 0) )
       /* the pattern is not well-formed */
       return GLOBERROR("bad range", *posp, CURLE_URL_MALFORMAT);
 
@@ -222,7 +222,8 @@ static CURLcode glob_range(URLGlob *glob, char **patternp,
     pat->content.CharRange.max_c = max_c;
 
     if(multiply(amount, (pat->content.CharRange.max_c -
-                         pat->content.CharRange.min_c + 1)))
+                          pat->content.CharRange.min_c) /
+                         pat->content.CharRange.step + 1) )
       return GLOBERROR("range overflow", *posp, CURLE_URL_MALFORMAT);
   }
   else if(ISDIGIT(*pattern)) {
@@ -276,7 +277,8 @@ static CURLcode glob_range(URLGlob *glob, char **patternp,
 
     *posp += (pattern - *patternp);
 
-    if(!endp || (min_n > max_n) || (step_n > (max_n - min_n)))
+    if(!endp || (min_n > max_n) || (step_n > (max_n - min_n)) ||
+       (step_n <= 0) )
       /* the pattern is not well-formed */
       return GLOBERROR("bad range", *posp, CURLE_URL_MALFORMAT);
 
@@ -287,7 +289,8 @@ static CURLcode glob_range(URLGlob *glob, char **patternp,
     pat->content.NumRange.step = step_n;
 
     if(multiply(amount, (pat->content.NumRange.max_n -
-                         pat->content.NumRange.min_n + 1)))
+                         pat->content.NumRange.min_n) /
+                        pat->content.NumRange.step + 1) )
       return GLOBERROR("range overflow", *posp, CURLE_URL_MALFORMAT);
   }
   else
@@ -666,4 +669,3 @@ CURLcode glob_match_url(char **result, char *filename, URLGlob *glob)
   *result = target;
   return CURLE_OK;
 }
-
index 7a9ec59..62c1abd 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -51,7 +51,7 @@ typedef struct {
       int padlength;
       unsigned long ptr_n;
       unsigned long step;
-    } NumRange ;
+    } NumRange;
   } content;
 } URLPattern;
 
index 3627edc..2502ce7 100644 (file)
@@ -25,7 +25,7 @@
 
 #define CURL_NAME "curl"
 #define CURL_COPYRIGHT LIBCURL_COPYRIGHT
-#define CURL_VERSION "7.40.0"
+#define CURL_VERSION "7.44.0"
 #define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
 #define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
 #define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
index a9462d0..b28f35a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #  include <kernel.h>
 #endif
 
-#define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
-
 #include "tool_writeenv.h"
-
 #include "memdebug.h" /* keep this as LAST include */
 
 static const struct
index f29d1ac..63db90c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  ***************************************************************************/
 #include "tool_setup.h"
-
-#define _MPRINTF_REPLACE /* we want curl-functions instead of native ones */
-#include <curl/mprintf.h>
-
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
 #include "tool_cfgable.h"
 #include "tool_writeout.h"
 
diff --git a/test-driver b/test-driver
new file mode 100755 (executable)
index 0000000..d306056
--- /dev/null
@@ -0,0 +1,139 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2013-07-13.22; # UTC
+
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--]
+              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+   *) break;;
+  esac
+  shift
+done
+
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+  usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+  usage_error "missing argument"
+fi
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='\e[0;31m' # Red.
+  grn='\e[0;32m' # Green.
+  lgn='\e[1;32m' # Light green.
+  blu='\e[1;34m' # Blue.
+  mgn='\e[0;35m' # Magenta.
+  std='\e[m'     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  estatus=1
+fi
+
+case $estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
index c234c22..20ff64a 100644 (file)
@@ -122,7 +122,7 @@ DELAY [command] [secs]
  - Delay responding to this command for the given time
 RETRWEIRDO
  - Enable the "weirdo" RETR case when multiple response lines appear at once
-   when a file is transfered
+   when a file is transferred
 RETRNOSIZE
  - Make sure the RETR response doesn't contain the size of the file
 NOSAVE
@@ -211,8 +211,11 @@ crypto
 debug
 getrlimit
 GnuTLS
+GSS-API
+http2
 idn
 ipv6
+Kerberos
 large_file
 libz
 Metalink
@@ -220,17 +223,15 @@ NSS
 NTLM
 OpenSSL
 socks
+SPNEGO
 SSL
 SSLpinning
+SSPI
 TLS-SRP
 TrackMemory
 unittest
-http2
-SSPI
-GSS-API
-Kerberos
-SPNEGO
 unix-sockets
+WinSSL
 
 as well as each protocol that curl supports.  A protocol only needs to be
 specified if it is different from the server (useful when the server
@@ -290,7 +291,7 @@ If there's no test number found above, the HTTP test server will use the
 number following the last dot in the given hostname (made so that a CONNECT
 can still pass on test number) so that "foo.bar.123" gets treated as test case
 123. Alternatively, if an IPv6 address is provided to CONNECT, the last
-hexadecimal group in the address will be used as the test numer! For example
+hexadecimal group in the address will be used as the test number! For example
 the address "[1234::ff]" would be treated as test case 255.
 
 Set type="perl" to write the test case as a perl script. It implies that
@@ -340,7 +341,7 @@ Available substitute variables include:
 %HTTPTLSPORT  - Port number of the HTTP TLS server
 %IMAP6PORT - IPv6 port number of the IMAP server
 %IMAPPORT  - Port number of the IMAP server
-%POP36PORT - IPv6 ort number of the POP3 server
+%POP36PORT - IPv6 port number of the POP3 server
 %POP3PORT  - Port number of the POP3 server
 %PROXYPORT - Port number of the HTTP proxy
 %PWD       - Current directory
index ca69709..eac455a 100644 (file)
@@ -27,7 +27,7 @@ EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl getpart.pm \
  FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl valgrind.pm ftp.pm   \
  sshserver.pl sshhelp.pm testcurl.1 runtests.1 $(HTMLPAGES) $(PDFPAGES) \
  serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl \
- CMakeLists.txt mem-include-scan.pl valgrind.supp http_pipe.py
+ CMakeLists.txt mem-include-scan.pl valgrind.supp http_pipe.py extern-scan.pl
 
 DISTCLEANFILES = configurehelp.pm
 
index c97f116..589c606 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 #
 ###########################################################################
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -100,8 +110,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = tests
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -122,7 +130,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -181,6 +190,7 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -264,7 +274,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -317,6 +327,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -333,7 +344,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -399,7 +409,7 @@ EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl getpart.pm \
  FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl valgrind.pm ftp.pm   \
  sshserver.pl sshhelp.pm testcurl.1 runtests.1 $(HTMLPAGES) $(PDFPAGES) \
  serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl \
- CMakeLists.txt mem-include-scan.pl valgrind.supp http_pipe.py
+ CMakeLists.txt mem-include-scan.pl valgrind.supp http_pipe.py extern-scan.pl
 
 DISTCLEANFILES = configurehelp.pm
 @BUILD_UNITTESTS_FALSE@BUILD_UNIT = 
@@ -437,7 +447,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign tests/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -734,6 +743,8 @@ uninstall-am:
        mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
        ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 curl:
        @cd $(top_builddir) && $(MAKE)
index a8b8adc..ae8ff25 100644 (file)
@@ -100,7 +100,9 @@ The cURL Test Suite
   (like "./runtests.pl 3 4" to test 3 and 4 only). It also supports test case
   ranges with 'to', as in "./runtests 3 to 9" which runs the seven tests from
   3 to 9. Any test numbers starting with ! are disabled, as are any test
-  numbers found in the file data/DISABLED (one per line).
+  numbers found in the files data/DISABLED or data/DISABLED.local (one per
+  line). The latter is meant for local temporary disables and will be ignored
+  by git.
 
   When -s is not present, each successful test will display on one line the
   test number and description and on the next line a set of flags, the test
@@ -203,25 +205,26 @@ The cURL Test Suite
  2.1 Test case numbering
 
      1   -  99   HTTP
-     100 - 199   FTP*
-     200 - 299   FILE*
+     100 - 199   FTP
+     200 - 299   FILE
      300 - 399   HTTPS
      400 - 499   FTPS
      500 - 599   libcurl source code tests, not using the curl command tool
      600 - 699   SCP/SFTP
      700 - 799   SOCKS4 (even numbers) and SOCK5 (odd numbers)
-     800 - 899   POP3, IMAP, SMTP
-     1000 - 1299 miscellaneous*
-     1300 - 1399 unit tests*
-     1400 - 1499 miscellaneous*
+     800 - 849   IMAP
+     850 - 899   POP3
+     900 - 999   SMTP
+     1000 - 1299 miscellaneous
+     1300 - 1399 unit tests
+     1400 - 1499 miscellaneous
      1500 - 1599 libcurl source code tests, not using the curl command tool
                  (same as 5xx)
-     2000 - x    multiple sequential protocols per test case*
+     1600 - 1699 unit tests
+     2000 - x    multiple sequential protocols per test case
 
-  Since 30-apr-2003, there's nothing in the system that requires us to keep
-  within these number series, and those sections marked with * actually
-  contain tests for a variety of protocols. Each test case now specifies its
-  own server requirements, independent of test number.
+  There's nothing in the system that *requires* us to keep within these number
+  series.
 
 3. Write tests
 
index 8bcbc18..d3ec4d3 100644 (file)
@@ -1,42 +1,41 @@
 Certificate:
     Data:
         Version: 3 (0x2)
-        Serial Number:
-            0b:98:94:f5:ab:a6
-        Signature Algorithm: sha1WithRSAEncryption
+        Serial Number: 14269504311616 (0xcfa60bc5140)
+    Signature Algorithm: sha1WithRSAEncryption
         Issuer:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
-            commonName                = Nothern Nowhere Trust Anchor
+            commonName                = Northern Nowhere Trust Anchor
         Validity
-            Not Before: May 27 21:36:46 2010 GMT
-            Not After : Oct 30 21:36:46 2026 GMT
+            Not Before: Mar 21 15:07:11 2015 GMT
+            Not After : Aug 24 15:07:11 2031 GMT
         Subject:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
-            commonName                = Nothern Nowhere Trust Anchor
+            commonName                = Northern Nowhere Trust Anchor
         Subject Public Key Info:
             Public Key Algorithm: rsaEncryption
                 Public-Key: (2048 bit)
                 Modulus:
-                    00:c1:a9:0a:ef:76:06:7d:fe:78:3a:f1:0e:40:6d:
-                    c2:5b:ae:8f:8d:7f:f0:d5:89:9e:42:2a:f0:17:94:
-                    d9:2e:67:c7:2d:01:1c:95:a3:b1:a6:86:d4:12:3c:
-                    47:3a:70:e6:7b:1f:11:06:d3:73:ae:df:ca:24:19:
-                    03:e4:62:0a:eb:67:d4:dc:ef:9d:2d:e0:82:77:fe:
-                    2a:30:5a:fb:57:e5:b8:4f:36:52:4c:2f:57:ad:12:
-                    6a:94:3e:e4:48:a7:ad:a5:c0:3a:d0:4e:00:99:88:
-                    8f:bd:4a:70:be:3b:5b:6b:ff:5e:6f:29:6d:0c:a7:
-                    55:4a:e2:43:e7:49:0f:99:54:59:68:81:34:d8:a9:
-                    fb:c8:0d:14:5a:40:cb:70:1e:f5:3b:c0:42:39:06:
-                    f9:63:ad:d9:29:14:53:af:42:10:1d:18:95:b6:15:
-                    8a:d8:41:d8:37:31:0a:97:5a:1b:10:90:ac:1d:ff:
-                    6e:71:33:6b:7e:88:18:20:ed:be:35:ff:e7:69:48:
-                    05:c0:78:2e:04:46:f4:c2:8d:4d:70:6e:42:fa:93:
-                    eb:ce:12:3b:d1:f5:ce:3f:29:5c:8c:bd:59:83:e4:
-                    a1:c1:3c:8e:3e:38:55:f3:99:18:b0:df:f6:74:c9:
-                    8e:28:f4:38:0d:45:20:d6:db:c0:73:a2:e6:8c:6e:
-                    98:9f
+                    00:e1:4c:d9:74:1a:a4:a3:42:57:a4:7a:2e:74:02:
+                    08:49:6a:6a:1d:db:de:c3:43:d6:48:60:12:30:ed:
+                    d6:6e:74:16:81:16:4e:50:b9:6c:b9:36:0d:19:a4:
+                    f7:85:99:40:46:26:46:33:86:ce:0c:27:71:e4:8f:
+                    0f:b4:3a:99:6d:af:78:48:b7:cb:c4:d3:60:7d:d0:
+                    17:6f:23:bc:89:c0:bc:16:b8:94:f0:b2:10:8d:c8:
+                    e0:35:97:ed:8f:c6:db:9b:cd:aa:f6:8c:45:dc:0f:
+                    ee:a0:78:12:be:f6:7d:f4:f7:b6:8c:4e:e5:7d:32:
+                    e8:f7:f7:1e:04:46:9e:08:cd:cb:ec:e2:9a:c3:35:
+                    3f:ce:a1:01:e3:10:0a:ec:d9:ab:13:09:eb:e6:39:
+                    6b:92:30:c7:08:bd:8a:32:ef:0b:b2:61:6f:11:43:
+                    95:cf:31:ea:19:01:cc:1a:6d:d2:d5:57:35:da:c0:
+                    ae:46:39:d3:33:ed:f8:c0:1e:ad:3d:68:6f:a8:53:
+                    24:ac:d6:f9:dd:2b:51:50:77:e4:b7:5d:ad:48:80:
+                    5d:65:57:e5:eb:07:82:7d:cb:72:4f:06:6a:34:d4:
+                    38:c8:6b:ed:8a:3a:68:5e:35:e3:78:14:da:5d:86:
+                    9f:e5:d4:1c:dd:90:c2:7c:a2:00:d4:95:65:04:85:
+                    ff:83
                 Exponent: 65537 (0x10001)
         X509v3 extensions:
             X509v3 Basic Constraints: critical
@@ -44,42 +43,42 @@ Certificate:
             X509v3 Key Usage: critical
                 Certificate Sign, CRL Sign
             X509v3 Subject Key Identifier: 
-                AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+                12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
     Signature Algorithm: sha1WithRSAEncryption
-        86:1f:9d:dd:45:11:c8:6b:f1:97:1a:f0:25:b2:0c:f7:1f:58:
-        c4:6a:a5:56:07:32:cb:2d:7a:8c:ae:47:1e:7d:e7:73:6c:3b:
-        96:1e:75:b4:e5:89:05:a7:7e:b6:52:56:5a:e2:6b:38:e4:18:
-        3c:64:6f:be:bd:d3:01:76:b4:83:7f:7a:1e:9c:cb:40:1b:9a:
-        dd:43:cb:9a:db:8a:f8:76:50:ab:ad:85:7f:cf:3a:6f:4b:e2:
-        27:b0:8c:a9:0a:e0:d8:45:00:05:5e:29:ab:a0:8a:78:e5:09:
-        89:48:8a:0d:42:49:1e:ad:c2:85:2f:29:9d:af:2e:c8:ef:b9:
-        dc:74:33:eb:e9:45:e9:a2:b3:00:ba:76:0b:74:59:c9:a8:96:
-        4c:f3:cd:9b:34:5a:4a:87:b2:6a:52:74:5b:be:f3:81:f8:32:
-        d0:1f:c9:cc:9f:8a:6a:eb:6e:f3:6d:2c:54:20:86:f6:87:62:
-        c0:ed:55:03:9d:97:a9:5a:ae:39:a0:7e:e4:a6:95:e9:26:19:
-        91:e6:0f:b6:18:f7:49:6c:a7:ce:fd:c1:04:c2:f9:27:27:4c:
-        59:e9:bf:7a:f6:65:a0:d9:a0:71:a6:54:c6:6f:9a:5d:23:19:
-        57:49:59:2c:06:91:3e:28:9b:c1:6f:f2:2d:9a:24:a7:0b:da:
-        cd:cc:f3:bc
+         d4:d0:22:19:78:2e:2e:1d:83:c6:79:89:c1:a8:23:43:4e:86:
+         76:16:31:bd:b7:c0:44:2c:b9:2c:79:99:2f:02:48:33:1e:a7:
+         d7:0e:d9:f1:cb:ed:39:1a:34:b3:50:af:c9:8d:64:bf:ff:72:
+         1b:1d:e0:5d:40:3b:b5:00:7c:d1:78:ff:45:ee:d9:05:3f:32:
+         f6:cd:f4:d3:79:58:d8:44:94:65:f5:c3:a9:5d:d8:13:d9:57:
+         e7:13:18:fa:f3:72:0b:cf:a3:4a:f4:6e:5e:74:30:3c:cb:76:
+         28:f9:44:9a:ba:3e:b7:3e:01:79:3e:cb:5c:df:5a:d4:6c:34:
+         aa:bd:c0:6d:25:85:e5:28:f6:15:e1:9d:af:a7:f7:a7:6c:2a:
+         1d:1d:93:1e:89:71:66:c7:0b:e4:ce:36:c1:21:c4:73:5d:2b:
+         24:a9:3d:26:df:1c:e8:60:69:e3:82:98:c3:5b:91:9e:da:bd:
+         27:ee:e0:fd:64:ea:7d:35:91:fd:5e:1e:33:82:24:39:7b:49:
+         af:23:05:fc:6e:53:7e:07:69:f4:e7:e3:1f:f0:1c:59:87:4c:
+         b6:74:c9:60:ed:f5:ab:a0:31:8a:05:d4:64:9f:1e:16:b6:9f:
+         f8:7e:0d:ac:b7:d9:16:b9:b3:bc:0b:03:6b:24:e9:46:81:dc:
+         d8:52:63:75
 -----BEGIN CERTIFICATE-----
-MIIDkDCCAnigAwIBAgIGC5iU9aumMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDkjCCAnqgAwIBAgIGDPpgvFFAMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
 Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzY0NloXDTI2MTAzMDIxMzY0NlowZzELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-JTAjBgNVBAMMHE5vdGhlcm4gTm93aGVyZSBUcnVzdCBBbmNob3IwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBqQrvdgZ9/ng68Q5AbcJbro+Nf/DViZ5C
-KvAXlNkuZ8ctARyVo7GmhtQSPEc6cOZ7HxEG03Ou38okGQPkYgrrZ9Tc750t4IJ3
-/iowWvtX5bhPNlJML1etEmqUPuRIp62lwDrQTgCZiI+9SnC+O1tr/15vKW0Mp1VK
-4kPnSQ+ZVFlogTTYqfvIDRRaQMtwHvU7wEI5BvljrdkpFFOvQhAdGJW2FYrYQdg3
-MQqXWhsQkKwd/25xM2t+iBgg7b41/+dpSAXAeC4ERvTCjU1wbkL6k+vOEjvR9c4/
-KVyMvVmD5KHBPI4+OFXzmRiw3/Z0yY4o9DgNRSDW28BzouaMbpifAgMBAAGjQjBA
-MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBStPuI5
-B7hcqiaQlEwmaSGD4k42lDANBgkqhkiG9w0BAQUFAAOCAQEAhh+d3UURyGvxlxrw
-JbIM9x9YxGqlVgcyyy16jK5HHn3nc2w7lh51tOWJBad+tlJWWuJrOOQYPGRvvr3T
-AXa0g396HpzLQBua3UPLmtuK+HZQq62Ff886b0viJ7CMqQrg2EUABV4pq6CKeOUJ
-iUiKDUJJHq3ChS8pna8uyO+53HQz6+lF6aKzALp2C3RZyaiWTPPNmzRaSoeyalJ0
-W77zgfgy0B/JzJ+Kautu820sVCCG9odiwO1VA52XqVquOaB+5KaV6SYZkeYPthj3
-SWynzv3BBML5JydMWem/evZloNmgcaZUxm+aXSMZV0lZLAaRPiibwW/yLZokpwva
-zczzvA==
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0zMTA4MjQxNTA3MTFaMGgxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjCCASIwDQYJ
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBAOFM2XQapKNCV6R6LnQCCElqah3b3sND
+1khgEjDt1m50FoEWTlC5bLk2DRmk94WZQEYmRjOGzgwnceSPD7Q6mW2veEi3y8TT
+YH3QF28jvInAvBa4lPCyEI3I4DWX7Y/G25vNqvaMRdwP7qB4Er72ffT3toxO5X0y
+6Pf3HgRGngjNy+zimsM1P86hAeMQCuzZqxMJ6+Y5a5Iwxwi9ijLvC7JhbxFDlc8x
+6hkBzBpt0tVXNdrArkY50zPt+MAerT1ob6hTJKzW+d0rUVB35LddrUiAXWVX5esH
+gn3Lck8GajTUOMhr7Yo6aF4143gU2l2Gn+XUHN2QwnyiANSVZQSF/4MCAwEAAaNC
+MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLK
+uktGBKd1iizoDlSUvBJlpnvOMA0GCSqGSIb3DQEBBQUAA4IBAQDU0CIZeC4uHYPG
+eYnBqCNDToZ2FjG9t8BELLkseZkvAkgzHqfXDtnxy+05GjSzUK/JjWS//3IbHeBd
+QDu1AHzReP9F7tkFPzL2zfTTeVjYRJRl9cOpXdgT2VfnExj683ILz6NK9G5edDA8
+y3Yo+USauj63PgF5Pstc31rUbDSqvcBtJYXlKPYV4Z2vp/enbCodHZMeiXFmxwvk
+zjbBIcRzXSskqT0m3xzoYGnjgpjDW5Ge2r0n7uD9ZOp9NZH9Xh4zgiQ5e0mvIwX8
+blN+B2n05+Mf8BxZh0y2dMlg7fWroDGKBdRknx4Wtp/4fg2st9kWubO8CwNrJOlG
+gdzYUmN1
 -----END CERTIFICATE-----
index 8bcbc18..d3ec4d3 100644 (file)
@@ -1,42 +1,41 @@
 Certificate:
     Data:
         Version: 3 (0x2)
-        Serial Number:
-            0b:98:94:f5:ab:a6
-        Signature Algorithm: sha1WithRSAEncryption
+        Serial Number: 14269504311616 (0xcfa60bc5140)
+    Signature Algorithm: sha1WithRSAEncryption
         Issuer:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
-            commonName                = Nothern Nowhere Trust Anchor
+            commonName                = Northern Nowhere Trust Anchor
         Validity
-            Not Before: May 27 21:36:46 2010 GMT
-            Not After : Oct 30 21:36:46 2026 GMT
+            Not Before: Mar 21 15:07:11 2015 GMT
+            Not After : Aug 24 15:07:11 2031 GMT
         Subject:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
-            commonName                = Nothern Nowhere Trust Anchor
+            commonName                = Northern Nowhere Trust Anchor
         Subject Public Key Info:
             Public Key Algorithm: rsaEncryption
                 Public-Key: (2048 bit)
                 Modulus:
-                    00:c1:a9:0a:ef:76:06:7d:fe:78:3a:f1:0e:40:6d:
-                    c2:5b:ae:8f:8d:7f:f0:d5:89:9e:42:2a:f0:17:94:
-                    d9:2e:67:c7:2d:01:1c:95:a3:b1:a6:86:d4:12:3c:
-                    47:3a:70:e6:7b:1f:11:06:d3:73:ae:df:ca:24:19:
-                    03:e4:62:0a:eb:67:d4:dc:ef:9d:2d:e0:82:77:fe:
-                    2a:30:5a:fb:57:e5:b8:4f:36:52:4c:2f:57:ad:12:
-                    6a:94:3e:e4:48:a7:ad:a5:c0:3a:d0:4e:00:99:88:
-                    8f:bd:4a:70:be:3b:5b:6b:ff:5e:6f:29:6d:0c:a7:
-                    55:4a:e2:43:e7:49:0f:99:54:59:68:81:34:d8:a9:
-                    fb:c8:0d:14:5a:40:cb:70:1e:f5:3b:c0:42:39:06:
-                    f9:63:ad:d9:29:14:53:af:42:10:1d:18:95:b6:15:
-                    8a:d8:41:d8:37:31:0a:97:5a:1b:10:90:ac:1d:ff:
-                    6e:71:33:6b:7e:88:18:20:ed:be:35:ff:e7:69:48:
-                    05:c0:78:2e:04:46:f4:c2:8d:4d:70:6e:42:fa:93:
-                    eb:ce:12:3b:d1:f5:ce:3f:29:5c:8c:bd:59:83:e4:
-                    a1:c1:3c:8e:3e:38:55:f3:99:18:b0:df:f6:74:c9:
-                    8e:28:f4:38:0d:45:20:d6:db:c0:73:a2:e6:8c:6e:
-                    98:9f
+                    00:e1:4c:d9:74:1a:a4:a3:42:57:a4:7a:2e:74:02:
+                    08:49:6a:6a:1d:db:de:c3:43:d6:48:60:12:30:ed:
+                    d6:6e:74:16:81:16:4e:50:b9:6c:b9:36:0d:19:a4:
+                    f7:85:99:40:46:26:46:33:86:ce:0c:27:71:e4:8f:
+                    0f:b4:3a:99:6d:af:78:48:b7:cb:c4:d3:60:7d:d0:
+                    17:6f:23:bc:89:c0:bc:16:b8:94:f0:b2:10:8d:c8:
+                    e0:35:97:ed:8f:c6:db:9b:cd:aa:f6:8c:45:dc:0f:
+                    ee:a0:78:12:be:f6:7d:f4:f7:b6:8c:4e:e5:7d:32:
+                    e8:f7:f7:1e:04:46:9e:08:cd:cb:ec:e2:9a:c3:35:
+                    3f:ce:a1:01:e3:10:0a:ec:d9:ab:13:09:eb:e6:39:
+                    6b:92:30:c7:08:bd:8a:32:ef:0b:b2:61:6f:11:43:
+                    95:cf:31:ea:19:01:cc:1a:6d:d2:d5:57:35:da:c0:
+                    ae:46:39:d3:33:ed:f8:c0:1e:ad:3d:68:6f:a8:53:
+                    24:ac:d6:f9:dd:2b:51:50:77:e4:b7:5d:ad:48:80:
+                    5d:65:57:e5:eb:07:82:7d:cb:72:4f:06:6a:34:d4:
+                    38:c8:6b:ed:8a:3a:68:5e:35:e3:78:14:da:5d:86:
+                    9f:e5:d4:1c:dd:90:c2:7c:a2:00:d4:95:65:04:85:
+                    ff:83
                 Exponent: 65537 (0x10001)
         X509v3 extensions:
             X509v3 Basic Constraints: critical
@@ -44,42 +43,42 @@ Certificate:
             X509v3 Key Usage: critical
                 Certificate Sign, CRL Sign
             X509v3 Subject Key Identifier: 
-                AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+                12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
     Signature Algorithm: sha1WithRSAEncryption
-        86:1f:9d:dd:45:11:c8:6b:f1:97:1a:f0:25:b2:0c:f7:1f:58:
-        c4:6a:a5:56:07:32:cb:2d:7a:8c:ae:47:1e:7d:e7:73:6c:3b:
-        96:1e:75:b4:e5:89:05:a7:7e:b6:52:56:5a:e2:6b:38:e4:18:
-        3c:64:6f:be:bd:d3:01:76:b4:83:7f:7a:1e:9c:cb:40:1b:9a:
-        dd:43:cb:9a:db:8a:f8:76:50:ab:ad:85:7f:cf:3a:6f:4b:e2:
-        27:b0:8c:a9:0a:e0:d8:45:00:05:5e:29:ab:a0:8a:78:e5:09:
-        89:48:8a:0d:42:49:1e:ad:c2:85:2f:29:9d:af:2e:c8:ef:b9:
-        dc:74:33:eb:e9:45:e9:a2:b3:00:ba:76:0b:74:59:c9:a8:96:
-        4c:f3:cd:9b:34:5a:4a:87:b2:6a:52:74:5b:be:f3:81:f8:32:
-        d0:1f:c9:cc:9f:8a:6a:eb:6e:f3:6d:2c:54:20:86:f6:87:62:
-        c0:ed:55:03:9d:97:a9:5a:ae:39:a0:7e:e4:a6:95:e9:26:19:
-        91:e6:0f:b6:18:f7:49:6c:a7:ce:fd:c1:04:c2:f9:27:27:4c:
-        59:e9:bf:7a:f6:65:a0:d9:a0:71:a6:54:c6:6f:9a:5d:23:19:
-        57:49:59:2c:06:91:3e:28:9b:c1:6f:f2:2d:9a:24:a7:0b:da:
-        cd:cc:f3:bc
+         d4:d0:22:19:78:2e:2e:1d:83:c6:79:89:c1:a8:23:43:4e:86:
+         76:16:31:bd:b7:c0:44:2c:b9:2c:79:99:2f:02:48:33:1e:a7:
+         d7:0e:d9:f1:cb:ed:39:1a:34:b3:50:af:c9:8d:64:bf:ff:72:
+         1b:1d:e0:5d:40:3b:b5:00:7c:d1:78:ff:45:ee:d9:05:3f:32:
+         f6:cd:f4:d3:79:58:d8:44:94:65:f5:c3:a9:5d:d8:13:d9:57:
+         e7:13:18:fa:f3:72:0b:cf:a3:4a:f4:6e:5e:74:30:3c:cb:76:
+         28:f9:44:9a:ba:3e:b7:3e:01:79:3e:cb:5c:df:5a:d4:6c:34:
+         aa:bd:c0:6d:25:85:e5:28:f6:15:e1:9d:af:a7:f7:a7:6c:2a:
+         1d:1d:93:1e:89:71:66:c7:0b:e4:ce:36:c1:21:c4:73:5d:2b:
+         24:a9:3d:26:df:1c:e8:60:69:e3:82:98:c3:5b:91:9e:da:bd:
+         27:ee:e0:fd:64:ea:7d:35:91:fd:5e:1e:33:82:24:39:7b:49:
+         af:23:05:fc:6e:53:7e:07:69:f4:e7:e3:1f:f0:1c:59:87:4c:
+         b6:74:c9:60:ed:f5:ab:a0:31:8a:05:d4:64:9f:1e:16:b6:9f:
+         f8:7e:0d:ac:b7:d9:16:b9:b3:bc:0b:03:6b:24:e9:46:81:dc:
+         d8:52:63:75
 -----BEGIN CERTIFICATE-----
-MIIDkDCCAnigAwIBAgIGC5iU9aumMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDkjCCAnqgAwIBAgIGDPpgvFFAMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
 Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzY0NloXDTI2MTAzMDIxMzY0NlowZzELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-JTAjBgNVBAMMHE5vdGhlcm4gTm93aGVyZSBUcnVzdCBBbmNob3IwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBqQrvdgZ9/ng68Q5AbcJbro+Nf/DViZ5C
-KvAXlNkuZ8ctARyVo7GmhtQSPEc6cOZ7HxEG03Ou38okGQPkYgrrZ9Tc750t4IJ3
-/iowWvtX5bhPNlJML1etEmqUPuRIp62lwDrQTgCZiI+9SnC+O1tr/15vKW0Mp1VK
-4kPnSQ+ZVFlogTTYqfvIDRRaQMtwHvU7wEI5BvljrdkpFFOvQhAdGJW2FYrYQdg3
-MQqXWhsQkKwd/25xM2t+iBgg7b41/+dpSAXAeC4ERvTCjU1wbkL6k+vOEjvR9c4/
-KVyMvVmD5KHBPI4+OFXzmRiw3/Z0yY4o9DgNRSDW28BzouaMbpifAgMBAAGjQjBA
-MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBStPuI5
-B7hcqiaQlEwmaSGD4k42lDANBgkqhkiG9w0BAQUFAAOCAQEAhh+d3UURyGvxlxrw
-JbIM9x9YxGqlVgcyyy16jK5HHn3nc2w7lh51tOWJBad+tlJWWuJrOOQYPGRvvr3T
-AXa0g396HpzLQBua3UPLmtuK+HZQq62Ff886b0viJ7CMqQrg2EUABV4pq6CKeOUJ
-iUiKDUJJHq3ChS8pna8uyO+53HQz6+lF6aKzALp2C3RZyaiWTPPNmzRaSoeyalJ0
-W77zgfgy0B/JzJ+Kautu820sVCCG9odiwO1VA52XqVquOaB+5KaV6SYZkeYPthj3
-SWynzv3BBML5JydMWem/evZloNmgcaZUxm+aXSMZV0lZLAaRPiibwW/yLZokpwva
-zczzvA==
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0zMTA4MjQxNTA3MTFaMGgxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjCCASIwDQYJ
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBAOFM2XQapKNCV6R6LnQCCElqah3b3sND
+1khgEjDt1m50FoEWTlC5bLk2DRmk94WZQEYmRjOGzgwnceSPD7Q6mW2veEi3y8TT
+YH3QF28jvInAvBa4lPCyEI3I4DWX7Y/G25vNqvaMRdwP7qB4Er72ffT3toxO5X0y
+6Pf3HgRGngjNy+zimsM1P86hAeMQCuzZqxMJ6+Y5a5Iwxwi9ijLvC7JhbxFDlc8x
+6hkBzBpt0tVXNdrArkY50zPt+MAerT1ob6hTJKzW+d0rUVB35LddrUiAXWVX5esH
+gn3Lck8GajTUOMhr7Yo6aF4143gU2l2Gn+XUHN2QwnyiANSVZQSF/4MCAwEAAaNC
+MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLK
+uktGBKd1iizoDlSUvBJlpnvOMA0GCSqGSIb3DQEBBQUAA4IBAQDU0CIZeC4uHYPG
+eYnBqCNDToZ2FjG9t8BELLkseZkvAkgzHqfXDtnxy+05GjSzUK/JjWS//3IbHeBd
+QDu1AHzReP9F7tkFPzL2zfTTeVjYRJRl9cOpXdgT2VfnExj683ILz6NK9G5edDA8
+y3Yo+USauj63PgF5Pstc31rUbDSqvcBtJYXlKPYV4Z2vp/enbCodHZMeiXFmxwvk
+zjbBIcRzXSskqT0m3xzoYGnjgpjDW5Ge2r0n7uD9ZOp9NZH9Xh4zgiQ5e0mvIwX8
+blN+B2n05+Mf8BxZh0y2dMlg7fWroDGKBdRknx4Wtp/4fg2st9kWubO8CwNrJOlG
+gdzYUmN1
 -----END CERTIFICATE-----
index 2df94f5..7d5e300 100644 (file)
@@ -1,17 +1,17 @@
 -----BEGIN CERTIFICATE REQUEST-----
-MIICrDCCAZQCAQAwZzELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB
-cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJTAjBgNVBAMMHE5vdGhlcm4g
-Tm93aGVyZSBUcnVzdCBBbmNob3IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
-AoIBAQDBqQrvdgZ9/ng68Q5AbcJbro+Nf/DViZ5CKvAXlNkuZ8ctARyVo7GmhtQS
-PEc6cOZ7HxEG03Ou38okGQPkYgrrZ9Tc750t4IJ3/iowWvtX5bhPNlJML1etEmqU
-PuRIp62lwDrQTgCZiI+9SnC+O1tr/15vKW0Mp1VK4kPnSQ+ZVFlogTTYqfvIDRRa
-QMtwHvU7wEI5BvljrdkpFFOvQhAdGJW2FYrYQdg3MQqXWhsQkKwd/25xM2t+iBgg
-7b41/+dpSAXAeC4ERvTCjU1wbkL6k+vOEjvR9c4/KVyMvVmD5KHBPI4+OFXzmRiw
-3/Z0yY4o9DgNRSDW28BzouaMbpifAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEA
-eFMy55kFke/e9mrGloRUh1o8dxmzSiVwVCw5DTZQzTFNAMSOZXIId8k2IeHSUd84
-ZyJ1UNyJn2EFcwgaYaMtvZ8xMWR2W0C7lBvOOcjvWmiGze9F2Z5XMQzL8cjkK4jW
-RKIq9b0W6TC8lLO5F2eJpW6BoTQ8cBCDiVIDlCm7xZxPRjHowuyM0Tpewq2PltC1
-p8DbQipZWl5LPaHBSZSmIuUgOBU9porH/Vn0oWXxYfts59103VJY5YKkdz0PiqqA
-5kWYCMFDZyL+nZ2aIol4r8nXkN9MuPOU12aHqPGcDlaGS2i5zfm2Ywsg110k+NCk
-AmqhjnrQjvJhif3rGO4+qw==
+MIICrTCCAZUCAQAwaDELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB
+cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJjAkBgNVBAMMHU5vcnRoZXJu
+IE5vd2hlcmUgVHJ1c3QgQW5jaG9yMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEA4UzZdBqko0JXpHoudAIISWpqHdvew0PWSGASMO3WbnQWgRZOULlsuTYN
+GaT3hZlARiZGM4bODCdx5I8PtDqZba94SLfLxNNgfdAXbyO8icC8FriU8LIQjcjg
+NZftj8bbm82q9oxF3A/uoHgSvvZ99Pe2jE7lfTLo9/ceBEaeCM3L7OKawzU/zqEB
+4xAK7NmrEwnr5jlrkjDHCL2KMu8LsmFvEUOVzzHqGQHMGm3S1Vc12sCuRjnTM+34
+wB6tPWhvqFMkrNb53StRUHfkt12tSIBdZVfl6weCfctyTwZqNNQ4yGvtijpoXjXj
+eBTaXYaf5dQc3ZDCfKIA1JVlBIX/gwIDAQABoAAwDQYJKoZIhvcNAQELBQADggEB
+ANpolqnyNQ2zhqURf1ImBOTKLqN77neGe01rdkMrQfNP+ZSr5pxcoOZgMjUGrhyQ
+C6RWexcjwMFvr+16bsEyiBgw/PxTziw6ozvJZkDVQanKZet9+6o8P6AzfjOfwIiU
+8OkLYDaNJ0M807fTNFWdt/yDY1WNfNAxIX3gMMJ1dRvvLvgIJVE4RRAaW/pEMHky
+sQTfExs99Xooqh3E6CWyR1bVHWuid0a02LcD2Q0bKTBmi3xyBjEaq3vXxS6j1fDs
+aWpwznwuuX+J7K+MHYJH9DQIg/QY6rQzxokZ92wJGFdzL3m+kou6++OAPu1plpTL
+im5n/e87gdjerEJgCqoP4S8=
 -----END CERTIFICATE REQUEST-----
index 1eaf424..3f4ec7b 100644 (file)
Binary files a/tests/certs/EdelCurlRoot-ca.der and b/tests/certs/EdelCurlRoot-ca.der differ
index 9a1303a..bf46d1e 100644 (file)
@@ -1,27 +1,27 @@
 -----BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAwakK73YGff54OvEOQG3CW66PjX/w1YmeQirwF5TZLmfHLQEc
-laOxpobUEjxHOnDmex8RBtNzrt/KJBkD5GIK62fU3O+dLeCCd/4qMFr7V+W4TzZS
-TC9XrRJqlD7kSKetpcA60E4AmYiPvUpwvjtba/9ebyltDKdVSuJD50kPmVRZaIE0
-2Kn7yA0UWkDLcB71O8BCOQb5Y63ZKRRTr0IQHRiVthWK2EHYNzEKl1obEJCsHf9u
-cTNrfogYIO2+Nf/naUgFwHguBEb0wo1NcG5C+pPrzhI70fXOPylcjL1Zg+ShwTyO
-PjhV85kYsN/2dMmOKPQ4DUUg1tvAc6LmjG6YnwIDAQABAoIBAEQculXigwIJYCwK
-4GJUuEkaqi6wUvonvtuy0mLY3VHu+iSgAXe37SGOxkPro3mwf7/J+2kVMdjNqQDt
-M2s9+G03Ray3MecS0ZB2ekwrk78kcqCZkHRvKj0a/xVI0W2kW/SyGX1uEdPuLe/7
-oI+nvM3NMV+TiGEs8Vi3H/7WuX/JiEpBFNtgKqlT1ZdTblj+igrAT30on9FBfOyo
-NtkxIL7YY1TAZ7YjdpZWrAAyo7gBjXAmeslnJ9IHzKPBsuSXQ4A7JjGOAGyv3INi
-D8mwoa/8pNaZTxFCCRnvezA3JvVa4gWigZtb0JX5Z+H1nERZWoJq4Cj4kMa3ERuC
-iyVXijECgYEA4q5bkQTrQ7liRCrNETmbVspmbuBc6XaAFrYwbrxlzvl2nyumCgKg
-GaPeP2Skh5nPz+1x1EXmYAqXsAfLoE4z6kk1D1Ws4FWxxaAuwlWTmoJ2HXl2dcbR
-f0HLgQ/oswYtNVaP7HASmEf5Y3DeGLDrojh1aOE8kq/MpBHsO28qTA0CgYEA2rVV
-eTfj4VV5tpVlfiU5D947qIERVwIQ+FW8Epokwct1VgUeWwXMQFJFX6KWQdkB+Ktj
-vknBSrN+VmwBMMhuUTpMxvaZFL5UCyLUUt2K8azNDdg9FcfH8dSZnnNoo8aH9k6A
-v5gFk+QQ7VgGVBeLv22PG1zknj4SsGZhzx9H0FsCgYB/8uq8cIpbL8jHsWEO1/VW
-h+hJrVrEbJ7gMvYjizPsH+NU9M5D2DeGQXixT52O7MLgGqalqs7eZxw3wC6vzXSA
-SdIpVbK+7Z/qbP/3sVYfYIRLHsQ+tnqJ2hmEP/aZFmNuN+4FBz13tyiNeKfkR/i5
-GCUtjfUi1xgrg/JTmevGAQKBgQC9QEh0Gj7gj9xAeEpYu9ECwCUTjIv6pFkW6ulR
-l3zTDUG9a7R2wy+ZQReyx7gJxsSD75rh4GSYRXW/RrpJAkcjlrU1PdH9Nyz2be8Y
-vYgr1IGjx0gkfrmvs24yxF75ySOBqTCTmfLJpIJZPuBLCAzvWtiIrvtNSx1U82MT
-nVfBHQKBgDJZQmr5lqdo5Zv/VP+w+VtxeX2oCgw7Mn56TW4IzDEL6ly+sKNNs+Ji
-pp/c2XYw24o7318yV70oWVWscay1SOjK7RdoCat590iuTGMSYyY8pMkgK+QuDqDe
-1Hhyb0iPorMS5wZXx/TROS4+4GOIHLAtZOZ8B+20tczp7HGqUIK1
+MIIEpAIBAAKCAQEA4UzZdBqko0JXpHoudAIISWpqHdvew0PWSGASMO3WbnQWgRZO
+ULlsuTYNGaT3hZlARiZGM4bODCdx5I8PtDqZba94SLfLxNNgfdAXbyO8icC8FriU
+8LIQjcjgNZftj8bbm82q9oxF3A/uoHgSvvZ99Pe2jE7lfTLo9/ceBEaeCM3L7OKa
+wzU/zqEB4xAK7NmrEwnr5jlrkjDHCL2KMu8LsmFvEUOVzzHqGQHMGm3S1Vc12sCu
+RjnTM+34wB6tPWhvqFMkrNb53StRUHfkt12tSIBdZVfl6weCfctyTwZqNNQ4yGvt
+ijpoXjXjeBTaXYaf5dQc3ZDCfKIA1JVlBIX/gwIDAQABAoIBAQDGGcWGgjrLVnUr
+qUcZOARDUW9XK9IWjZpn7xlvrmECo8552Lwp3LDNtcoVB2mhLhxG0jad7eVU6IYL
+ewNK7M+lk0lHX1yrh1Trq0I/tgN8eFyp+cj0Tw2hLcR/O0RmTGsi9tdhi/uNQPEI
+ZivNf31HHVyEyIae7FnOVpotFk6022EElQd8F8GeeKpo9pQs8sHAVOUVC8Mf2sr+
+bFyo9nzU0XkSay72ozU9O5Iw2d5aVrN5f3NS+JG9OpzvouNwkaAMOUsLVvZlUTqY
+0ve5CY2rB3D72h4GJfM2aHi8hwj56yBOsyIhBSXNYJM8nXKEbJaK5ulVv/a7KKTk
+KzSdk/mJAoGBAPXPLLJgx0mZKXNXqSvSsvgVzcpLrJh8figoF4rMzq8+5bN9Y6KU
+Lvb2ODIm/oGCIiGDdFTYqBJ0/EpauaAJgdzIwYnMZXmVB97pmwni9KrDPDwWTOqS
+3Yzh0t4C8DAgwZE4X6Ad/fmn7V06dfJZZJynL9exPp8RF7ptJ2yOnlbdAoGBAOqk
+AfRWuPGeZL9rFkd45+j03MDHglE2xKhsbRobHANItHo7r26D/Ov7QkM+lGlqdrNg
+tTPPtHs50Ek+Sb0X31/Fj45IqQroxctpbZAaJchVl88tvKXA8fkk14a9GLiow3Bk
+UGA5DFRmsIMXEengzRJoxcHAbbciGWdeSneH49nfAoGAVMypHcyXU8Ob8ieuu+iP
+R1i2SvC6VUy1dQMHxCGNuBVZxwcd5Ut7vEUK8/pR2LndLnScIF0x9lQXaUtNOHGv
+NEypv/EcnMoWEgfDLbD3OSXrVMtYs6ABAIYzadXXqLLUNFYfXyyZnpQZJg1x/S5r
+sENZFO8XrGaIKg9YB3JYG50CgYBUQweMpmQOKNKHRz6d9hZaOyzXcg4jeiaPUTiw
+6lFaAI8HYk2yw2VdnUKDgYKshJYR/sWz0IBAzFc3Jk42wM7vxrOx5fgGuebmEHtP
+B4TP96TnusYHRE3hKdDYSyoIjlp5Dx0qIPKDkMkMmolNUvRyCvwRgzgjTvSOgXb+
+i+dQQwKBgQCKn04xYbhkMOiHxNP/DUf6+XmV1V7KbpjIySychbxcTKCV98c9q491
+YjF8FJgi2JdV5XOHWaKti2Qg/tYz7CBtqkQdeNjtfKkOUA8ZyZeiNZdPIza9tzmr
+t6mCthH1oT3jyiddhSYxyfUBW3olPhBPj8YBblmq1QHE8y2j3CNjvw==
 -----END RSA PRIVATE KEY-----
index 4c53ef5..d0eff48 100644 (file)
@@ -10,7 +10,7 @@ countryName_value            = NN
 organizationName              = "Organization Name"
 organizationName_value     = Edel Curl Arctic Illudium Research Cloud
 commonName                      = "Common Name"
-commonName_value              = Nothern Nowhere Trust Anchor 
+commonName_value              = Northern Nowhere Trust Anchor
 [ x509v3 ]
 basicConstraints = critical,CA:true
 keyUsage        = critical,keyCertSign,cRLSign
index ddb5c9f..bd0bbbb 100644 (file)
@@ -23,23 +23,26 @@ AUTOMAKE_OPTIONS = foreign
 
 SUBDIRS = scripts
 
-CERTFILES = \
-  EdelCurlRoot-ca.cacert \
+CERTCONFIGS = \
+  EdelCurlRoot-ca.prm \
   EdelCurlRoot-ca.cnf \
+  Server-localhost-sv.prm \
+  Server-localhost.nn-sv.prm \
+  Server-localhost0h-sv.prm
+
+GENERATEDCERTS = \
+  EdelCurlRoot-ca.cacert \
   EdelCurlRoot-ca.crt \
   EdelCurlRoot-ca.csr \
   EdelCurlRoot-ca.der \
   EdelCurlRoot-ca.key \
-  EdelCurlRoot-ca.prm \
   Server-localhost-sv.crl \
   Server-localhost-sv.crt \
   Server-localhost-sv.csr \
   Server-localhost-sv.der \
   Server-localhost-sv.dhp \
   Server-localhost-sv.key \
-  Server-localhost-sv.p12 \
   Server-localhost-sv.pem \
-  Server-localhost-sv.prm \
   Server-localhost-sv.pub.der \
   Server-localhost-sv.pub.pem \
   Server-localhost.nn-sv.crl \
@@ -49,7 +52,6 @@ CERTFILES = \
   Server-localhost.nn-sv.dhp \
   Server-localhost.nn-sv.key \
   Server-localhost.nn-sv.pem \
-  Server-localhost.nn-sv.prm \
   Server-localhost.nn-sv.pub.der \
   Server-localhost.nn-sv.pub.pem \
   Server-localhost0h-sv.crl \
@@ -58,9 +60,7 @@ CERTFILES = \
   Server-localhost0h-sv.der \
   Server-localhost0h-sv.dhp \
   Server-localhost0h-sv.key \
-  Server-localhost0h-sv.p12 \
   Server-localhost0h-sv.pem \
-  Server-localhost0h-sv.prm \
   Server-localhost0h-sv.pub.der \
   Server-localhost0h-sv.pub.pem
 
@@ -68,5 +68,24 @@ SRPFILES = \
   srp-verifier-conf \
   srp-verifier-db
 
-EXTRA_DIST = $(CERTFILES) $(SRPFILES)
+EXTRA_DIST = $(CERTCONFIGS) $(GENERATEDCERTS) $(SRPFILES)
+
+# Rebuild the certificates
+
+clean-certs:
+       cd $(srcdir); rm -f $(GENERATEDCERTS)
+
+build-certs: $(srcdir)/EdelCurlRoot-ca.cacert $(srcdir)/Server-localhost-sv.pem \
+       $(srcdir)/Server-localhost.nn-sv.pem $(srcdir)/Server-localhost0h-sv.pem
+
+$(srcdir)/EdelCurlRoot-ca.cacert:
+       cd $(srcdir); scripts/genroot.sh EdelCurlRoot
+
+$(srcdir)/Server-localhost-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+       cd $(srcdir); scripts/genserv.sh Server-localhost EdelCurlRoot
+
+$(srcdir)/Server-localhost.nn-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+       cd $(srcdir); scripts/genserv.sh Server-localhost.nn EdelCurlRoot
 
+$(srcdir)/Server-localhost0h-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+       cd $(srcdir); scripts/genserv.sh Server-localhost0h EdelCurlRoot
index 0610cae..f4c8f0a 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = tests/certs
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -160,6 +169,7 @@ am__define_uniq_tagged_files = \
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -243,7 +253,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -296,6 +306,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -312,7 +323,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -396,23 +406,26 @@ top_srcdir = @top_srcdir@
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign
 SUBDIRS = scripts
-CERTFILES = \
-  EdelCurlRoot-ca.cacert \
+CERTCONFIGS = \
+  EdelCurlRoot-ca.prm \
   EdelCurlRoot-ca.cnf \
+  Server-localhost-sv.prm \
+  Server-localhost.nn-sv.prm \
+  Server-localhost0h-sv.prm
+
+GENERATEDCERTS = \
+  EdelCurlRoot-ca.cacert \
   EdelCurlRoot-ca.crt \
   EdelCurlRoot-ca.csr \
   EdelCurlRoot-ca.der \
   EdelCurlRoot-ca.key \
-  EdelCurlRoot-ca.prm \
   Server-localhost-sv.crl \
   Server-localhost-sv.crt \
   Server-localhost-sv.csr \
   Server-localhost-sv.der \
   Server-localhost-sv.dhp \
   Server-localhost-sv.key \
-  Server-localhost-sv.p12 \
   Server-localhost-sv.pem \
-  Server-localhost-sv.prm \
   Server-localhost-sv.pub.der \
   Server-localhost-sv.pub.pem \
   Server-localhost.nn-sv.crl \
@@ -422,7 +435,6 @@ CERTFILES = \
   Server-localhost.nn-sv.dhp \
   Server-localhost.nn-sv.key \
   Server-localhost.nn-sv.pem \
-  Server-localhost.nn-sv.prm \
   Server-localhost.nn-sv.pub.der \
   Server-localhost.nn-sv.pub.pem \
   Server-localhost0h-sv.crl \
@@ -431,9 +443,7 @@ CERTFILES = \
   Server-localhost0h-sv.der \
   Server-localhost0h-sv.dhp \
   Server-localhost0h-sv.key \
-  Server-localhost0h-sv.p12 \
   Server-localhost0h-sv.pem \
-  Server-localhost0h-sv.prm \
   Server-localhost0h-sv.pub.der \
   Server-localhost0h-sv.pub.pem
 
@@ -441,7 +451,7 @@ SRPFILES = \
   srp-verifier-conf \
   srp-verifier-db
 
-EXTRA_DIST = $(CERTFILES) $(SRPFILES)
+EXTRA_DIST = $(CERTCONFIGS) $(GENERATEDCERTS) $(SRPFILES)
 all: all-recursive
 
 .SUFFIXES:
@@ -457,7 +467,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/certs/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign tests/certs/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -752,6 +761,28 @@ uninstall-am:
        mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
        ps ps-am tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
+
+# Rebuild the certificates
+
+clean-certs:
+       cd $(srcdir); rm -f $(GENERATEDCERTS)
+
+build-certs: $(srcdir)/EdelCurlRoot-ca.cacert $(srcdir)/Server-localhost-sv.pem \
+       $(srcdir)/Server-localhost.nn-sv.pem $(srcdir)/Server-localhost0h-sv.pem
+
+$(srcdir)/EdelCurlRoot-ca.cacert:
+       cd $(srcdir); scripts/genroot.sh EdelCurlRoot
+
+$(srcdir)/Server-localhost-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+       cd $(srcdir); scripts/genserv.sh Server-localhost EdelCurlRoot
+
+$(srcdir)/Server-localhost.nn-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+       cd $(srcdir); scripts/genserv.sh Server-localhost.nn EdelCurlRoot
+
+$(srcdir)/Server-localhost0h-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+       cd $(srcdir); scripts/genserv.sh Server-localhost0h EdelCurlRoot
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 804655d..3e75229 100644 (file)
@@ -1,12 +1,21 @@
 -----BEGIN X509 CRL-----
-MIIB2zCBxAIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJOTjExMC8GA1UE
-CgwoRWRlbCBDdXJsIEFyY3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDElMCMG
-A1UEAwwcTm90aGVybiBOb3doZXJlIFRydXN0IEFuY2hvchcNMTAwNTI3MjEzNzEx
-WhcNMTAwNjI2MjEzNzExWjAZMBcCBguYlPl8ahcNMTAwNTI3MjEzNzExWqAOMAww
-CgYDVR0UBAMCAQEwDQYJKoZIhvcNAQEFBQADggEBAFuPZJ/cNNCeAzkSxVvPPPRX
-Wsv9T6Dt61C5Fmq9eSNN2kRf7/dq5A5nqTIlHbXXiLdj3UqNhUHXe2oA1UpbdHz9
-0JlfwWm1Y/gMr1fh1n0oFebEtCuOgDRpd07Uiz8AqOUBykDNDUlMvVwR9raHL8hj
-NRwzugsfIxl0CvLLqrBpUWMxW3qemk4cWW39yrDdZgKo6eOZAOR3FQYlLIrw6Jcr
-Kmm0PjdcJIfRgJvNysgyx1dIIKe7QXvFTR/QzdHWIWTkiYIW7wUKSzSICvDCr094
-eo3nr3n9BtOqT61Z1m6FGCP6Mm0wFl6xLTCNd6ygfFo7pcAdWlUsdBgKzics0Kc=
+MIIDbzCCAlcCAQEwDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCTk4xMTAvBgNV
+BAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJjAk
+BgNVBAMMHU5vcnRoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yFw0xNTAzMjExNTA3
+MTFaFw0xNTA0MjAxNTA3MTFaMIIBqTAXAgYM+ly45CIXDTE1MDMyMTEzMTQ1N1ow
+FwIGDPpcwXH8Fw0xNTAzMjExMzE1NTNaMBcCBgz6XO7ujBcNMTUwMzIxMTMyMDUx
+WjAXAgYM+lzu7p0XDTE1MDMyMTEzMjA1MVowFwIGDPpc7u6uFw0xNTAzMjExMzIw
+NTFaMBcCBgz6XZyD1RcNMTUwMzIxMTMzOTQ5WjAXAgYM+l4OXa8XDTE1MDMyMTEz
+NTIxNVowFwIGDPpeJlPZFw0xNTAzMjExMzU0NTJaMBcCBgz6XiZT6hcNMTUwMzIx
+MTM1NDUyWjAXAgYM+l4mU/sXDTE1MDMyMTEzNTQ1MlowFwIGDPpemKKEFw0xNTAz
+MjExNDA3MjFaMBcCBgz6XpiilRcNMTUwMzIxMTQwNzIxWjAXAgYM+l6YoqYXDTE1
+MDMyMTE0MDcyMVowFwIGDPpffssxFw0xNTAzMjExNDMyMzBaMBcCBgz6X37yUxcN
+MTUwMzIxMTQzMjMxWjAXAgYM+l9+8mYXDTE1MDMyMTE0MzIzMVowFwIGDPpgvFFL
+Fw0xNTAzMjExNTA3MTFaoA4wDDAKBgNVHRQEAwIBATANBgkqhkiG9w0BAQUFAAOC
+AQEAllslrhWUoq49PC+KQghVDAeFREP3pKPUlSebVVR8PCtCKrFtc53dUaTl8qhK
+1wOLodr80lfr2kEgzTEDt2CfXryl3orLPeMWe0OWTBsPbuwj+d7m3uq4B43laqJn
+JM5ebRvzHWMJkVNkwiXiadPTW5ZMUqu2Bs97rdcjklUrEcamf9aMLqb6sPGtU4EO
+o/GxGW2eypYwncFmzAc5W3NDRePGPhN5rUDfqm5Id4T9FKmGcNmI7qlLQi+jp23F
+V6RvrqANIemopQQ4kYGy7pzilDYm6+R+fPCIh2H/0eqCDY8NdjygXtWW+pJ58axV
+MPZ2mFPcH5UHiqmi8kRstnA8KQ==
 -----END X509 CRL-----
index 9a3d944..abf6924 100644 (file)
@@ -1,16 +1,15 @@
 Certificate:
     Data:
         Version: 3 (0x2)
-        Serial Number:
-            0b:98:94:f9:7c:6a
-        Signature Algorithm: sha1WithRSAEncryption
+        Serial Number: 14269504311627 (0xcfa60bc514b)
+    Signature Algorithm: sha1WithRSAEncryption
         Issuer:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
-            commonName                = Nothern Nowhere Trust Anchor
+            commonName                = Northern Nowhere Trust Anchor
         Validity
-            Not Before: May 27 21:37:11 2010 GMT
-            Not After : Aug 13 21:37:11 2018 GMT
+            Not Before: Mar 21 15:07:11 2015 GMT
+            Not After : Jun  7 15:07:11 2023 GMT
         Subject:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
@@ -19,63 +18,63 @@ Certificate:
             Public Key Algorithm: rsaEncryption
                 Public-Key: (1024 bit)
                 Modulus:
-                    00:b0:27:79:26:2c:b9:e4:d1:81:0a:09:d2:76:fe:
-                    9a:e1:05:68:01:b3:72:77:97:38:e4:60:1c:71:9d:
-                    99:f7:26:7b:21:b5:6d:aa:9f:14:76:07:6c:a4:2a:
-                    2d:7d:ee:f6:6f:8a:58:c4:93:de:fe:a1:25:0f:ff:
-                    57:49:c0:d9:94:d9:07:79:bf:8c:6d:fa:f1:18:82:
-                    67:a0:3f:d7:31:03:82:ec:b9:39:69:07:ec:ec:93:
-                    17:5b:1a:72:91:93:b2:6b:98:66:63:fe:61:29:e7:
-                    ad:86:0e:04:ba:bf:8b:55:57:61:a5:4a:f6:ca:e7:
-                    c6:d1:b8:65:42:ab:67:64:17
+                    00:ba:5f:4b:69:74:31:99:4d:f4:b4:b7:2a:65:b8:
+                    b7:31:c1:38:cf:36:37:bb:5e:18:e3:52:1f:52:aa:
+                    5a:25:2f:0c:66:88:32:b0:ef:b2:2c:90:38:5e:6e:
+                    6f:0e:e4:3b:3f:f0:2e:f1:7a:3d:5e:c3:64:86:3f:
+                    68:b7:cf:0b:b3:ea:0a:ca:94:16:d4:2b:6a:02:e3:
+                    a1:b3:c7:d1:d0:06:b8:ff:df:dc:e0:32:2a:e7:dd:
+                    62:cc:71:c4:e8:cf:9d:de:5c:75:69:9d:b6:ce:e2:
+                    42:d8:a7:bd:50:54:78:2d:55:67:7f:00:7b:8f:9c:
+                    11:d1:9e:ce:be:1e:fe:cf:37
                 Exponent: 65537 (0x10001)
         X509v3 extensions:
             X509v3 Subject Alternative Name: 
                 DNS:localhost
             X509v3 Key Usage: 
-                Key Encipherment
+                Digital Signature, Key Encipherment, Key Agreement
             X509v3 Extended Key Usage: 
                 TLS Web Server Authentication
             X509v3 Subject Key Identifier: 
-                BC:69:86:84:70:3A:AD:DE:08:2A:70:C6:3B:47:8C:11:3F:E0:9A:6D
+                7E:42:8D:AC:2E:93:AD:4C:E0:09:AC:C6:08:F1:82:E0:B7:B7:C6:7F
             X509v3 Authority Key Identifier: 
-                keyid:AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
 
-            X509v3 Basic Constraints: critical
+            X509v3 Basic Constraints: 
                 CA:FALSE
     Signature Algorithm: sha1WithRSAEncryption
-        7b:f0:b0:a0:d9:d0:91:38:9b:fe:cf:78:c8:d6:30:5d:87:9d:
-        b3:b9:6e:8b:5a:73:74:93:cb:30:49:d1:00:79:9d:5a:c2:71:
-        a3:93:5f:de:d3:5a:0c:fb:6d:41:83:89:1b:4f:0d:1c:65:0c:
-        1a:0c:0f:96:79:62:90:e1:74:04:dd:c6:d8:cf:0f:5f:0f:28:
-        87:d7:86:56:90:b4:d0:88:80:f1:a7:cd:fd:0b:13:58:bb:6d:
-        e6:ab:44:f6:9b:d6:cc:c7:db:3d:3a:90:c4:20:72:f4:38:38:
-        c0:ef:80:1d:60:3f:4e:30:40:11:56:29:70:aa:17:91:90:5f:
-        70:0b:89:51:af:17:a8:ed:20:4e:76:bb:cf:a8:88:9a:25:0f:
-        3a:96:26:17:50:2a:af:f3:8b:21:9c:cf:ff:f9:20:fc:fe:c0:
-        37:95:c7:cd:0d:7a:53:d9:26:12:38:2c:f6:03:95:1b:da:d0:
-        08:f7:32:91:07:a7:35:0c:14:00:44:c7:43:fb:23:2e:14:44:
-        e6:ee:a9:c9:20:37:09:b8:ae:21:4f:4b:b7:86:4d:e3:41:84:
-        15:4e:1a:29:00:03:a8:92:99:3c:75:ea:43:0f:e3:2b:f7:17:
-        b1:1b:87:80:04:d3:a7:73:b1:5e:85:38:7d:89:01:16:19:f6:
-        c4:e1:1b:75
+         00:fe:c4:fc:4b:28:b8:bc:39:8c:6f:f1:72:d3:76:da:28:27:
+         e2:97:94:bb:ad:2f:91:c4:db:df:33:4b:48:4e:97:5b:4c:4c:
+         be:fc:e4:b7:19:5c:b8:83:6e:ef:2c:b0:d5:7c:fc:0d:cb:7e:
+         29:ed:fd:4d:ef:05:1c:89:15:31:78:9b:18:29:d3:37:83:c7:
+         39:f4:78:27:b7:00:75:d1:fb:f0:29:88:79:e4:e9:a7:d4:65:
+         04:bf:d5:a1:dc:05:b2:17:c4:a9:da:61:10:22:5f:8f:50:fc:
+         1f:ab:f6:39:dd:ab:35:a6:94:54:63:5c:6d:25:f0:dc:3a:0a:
+         70:4e:49:ef:be:fa:2c:0a:cd:ce:a6:2d:26:cd:f8:24:89:77:
+         2c:ea:6e:19:b6:5c:8c:1a:08:ea:a8:9f:2c:1b:c7:fc:13:6c:
+         fe:a7:90:08:e5:98:83:30:52:86:ac:83:0b:cb:25:92:21:94:
+         80:13:d7:e8:d0:42:56:83:55:d3:09:9b:e8:c5:96:82:15:64:
+         6b:83:77:eb:99:e5:52:dc:1b:36:29:a0:c9:da:8b:d3:0d:77:
+         24:f2:c3:df:2e:c4:93:e0:34:47:a9:9b:54:d3:75:d5:c7:de:
+         88:a1:ef:7b:40:2f:dc:e9:28:8c:69:be:eb:71:4a:c2:30:50:
+         99:36:52:69
 -----BEGIN CERTIFICATE-----
-MIIDQTCCAimgAwIBAgIGC5iU+XxqMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDPzCCAiegAwIBAgIGDPpgvFFLMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
 Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzcxMVoXDTE4MDgxMzIxMzcxMVowVDELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-EjAQBgNVBAMMCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-sCd5Jiy55NGBCgnSdv6a4QVoAbNyd5c45GAccZ2Z9yZ7IbVtqp8UdgdspCotfe72
-b4pYxJPe/qElD/9XScDZlNkHeb+MbfrxGIJnoD/XMQOC7Lk5aQfs7JMXWxpykZOy
-a5hmY/5hKeethg4Eur+LVVdhpUr2yufG0bhlQqtnZBcCAwEAAaOBiTCBhjAUBgNV
-HREEDTALgglsb2NhbGhvc3QwCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoGCCsGAQUF
-BwMBMB0GA1UdDgQWBBS8aYaEcDqt3ggqcMY7R4wRP+CabTAfBgNVHSMEGDAWgBSt
-PuI5B7hcqiaQlEwmaSGD4k42lDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBQUA
-A4IBAQB78LCg2dCROJv+z3jI1jBdh52zuW6LWnN0k8swSdEAeZ1awnGjk1/e01oM
-+21Bg4kbTw0cZQwaDA+WeWKQ4XQE3cbYzw9fDyiH14ZWkLTQiIDxp839CxNYu23m
-q0T2m9bMx9s9OpDEIHL0ODjA74AdYD9OMEARVilwqheRkF9wC4lRrxeo7SBOdrvP
-qIiaJQ86liYXUCqv84shnM//+SD8/sA3lcfNDXpT2SYSOCz2A5Ub2tAI9zKRB6c1
-DBQARMdD+yMuFETm7qnJIDcJuK4hT0u3hk3jQYQVThopAAOokpk8depDD+Mr9xex
-G4eABNOnc7FehTh9iQEWGfbE4Rt1
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFQxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRIwEAYDVQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
+ALpfS2l0MZlN9LS3KmW4tzHBOM82N7teGONSH1KqWiUvDGaIMrDvsiyQOF5ubw7k
+Oz/wLvF6PV7DZIY/aLfPC7PqCsqUFtQragLjobPH0dAGuP/f3OAyKufdYsxxxOjP
+nd5cdWmdts7iQtinvVBUeC1VZ38Ae4+cEdGezr4e/s83AgMBAAGjgYYwgYMwFAYD
+VR0RBA0wC4IJbG9jYWxob3N0MAsGA1UdDwQEAwIDqDATBgNVHSUEDDAKBggrBgEF
+BQcDATAdBgNVHQ4EFgQUfkKNrC6TrUzgCazGCPGC4Le3xn8wHwYDVR0jBBgwFoAU
+Esq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOC
+AQEAAP7E/EsouLw5jG/xctN22ign4peUu60vkcTb3zNLSE6XW0xMvvzktxlcuINu
+7yyw1Xz8Dct+Ke39Te8FHIkVMXibGCnTN4PHOfR4J7cAddH78CmIeeTpp9RlBL/V
+odwFshfEqdphECJfj1D8H6v2Od2rNaaUVGNcbSXw3DoKcE5J7776LArNzqYtJs34
+JIl3LOpuGbZcjBoI6qifLBvH/BNs/qeQCOWYgzBShqyDC8slkiGUgBPX6NBCVoNV
+0wmb6MWWghVka4N365nlUtwbNimgydqL0w13JPLD3y7Ek+A0R6mbVNN11cfeiKHv
+e0Av3OkojGm+63FKwjBQmTZSaQ==
 -----END CERTIFICATE-----
index a8773f5..f919409 100644 (file)
@@ -1,11 +1,11 @@
 -----BEGIN CERTIFICATE REQUEST-----
 MIIBkzCB/QIBADBUMQswCQYDVQQGEwJOTjExMC8GA1UECgwoRWRlbCBDdXJsIEFy
 Y3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDESMBAGA1UEAwwJbG9jYWxob3N0
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwJ3kmLLnk0YEKCdJ2/prhBWgB
-s3J3lzjkYBxxnZn3JnshtW2qnxR2B2ykKi197vZviljEk97+oSUP/1dJwNmU2Qd5
-v4xt+vEYgmegP9cxA4LsuTlpB+zskxdbGnKRk7JrmGZj/mEp562GDgS6v4tVV2Gl
-SvbK58bRuGVCq2dkFwIDAQABoAAwDQYJKoZIhvcNAQELBQADgYEAlIivGkhU8iph
-eZQAaiwakIwPx1TPA3+Dl4tbStTr3Ludd8rjZMGPRXKU+wjvfhCmDlyk90yOun2C
-lPIT8W/ibXNgRF1vz+eFofjM0hZtNPOX4G18wwD5y0OTr7obyqJPKAZsJZh6L3YE
-aARr27RCoFv92hFwVr181wAU+bVCekA=
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6X0tpdDGZTfS0typluLcxwTjP
+Nje7XhjjUh9SqlolLwxmiDKw77IskDhebm8O5Ds/8C7xej1ew2SGP2i3zwuz6grK
+lBbUK2oC46Gzx9HQBrj/39zgMirn3WLMccToz53eXHVpnbbO4kLYp71QVHgtVWd/
+AHuPnBHRns6+Hv7PNwIDAQABoAAwDQYJKoZIhvcNAQELBQADgYEAsJ+ypJAE5YiR
+A1niVNXKoqXmIQsXGJv9BA39AjT+cdqvdd+WTKCaZ9QXucDArhG9B9Dp66bfSgvT
+WVz6F85ju5HQekZrS2ZxdR1+muWAFE/vDgi22QwTysXvTWUfsqBQ0ZGEmdzyPJJq
+7AGzbAWx8JDhgGg2jStvQJBLhtYxhoY=
 -----END CERTIFICATE REQUEST-----
index 766cf53..b76db9d 100644 (file)
Binary files a/tests/certs/Server-localhost-sv.der and b/tests/certs/Server-localhost-sv.der differ
index b61c28b..e69de29 100644 (file)
@@ -1,5 +0,0 @@
------BEGIN DH PARAMETERS-----
-MIGHAoGBAP5mA7oYimErFUulbvNC8V0HwyB62NCj6TZb6YXJwElCksQc8RyHnkrY
-9Wx2+lduFqHjUWalgVF7Gma7CfR/pt+fiU6Jn2vWR2v7KT6hYeRKsJrONJlth+NK
-V7/d4zyvleJ/VSp0TuuSxmMMQ6hG3i5YhSGXyCh4h0pl4Wu/hdVTAgEC
------END DH PARAMETERS-----
index 8ade26a..3540179 100644 (file)
@@ -1,15 +1,15 @@
 -----BEGIN RSA PRIVATE KEY-----
-MIICXQIBAAKBgQCwJ3kmLLnk0YEKCdJ2/prhBWgBs3J3lzjkYBxxnZn3JnshtW2q
-nxR2B2ykKi197vZviljEk97+oSUP/1dJwNmU2Qd5v4xt+vEYgmegP9cxA4LsuTlp
-B+zskxdbGnKRk7JrmGZj/mEp562GDgS6v4tVV2GlSvbK58bRuGVCq2dkFwIDAQAB
-AoGBAKa0JHWZHC9MiSa71t5f4qiTGjOJ5AkDJocR4bkv4dZAJ4TmEqvGsnFkY08U
-z0p/i95Q+eLG4eDtFYsHJU8Z343odktK99BUJzkDzqWT9RMzJ5Ykx6LbldJyW5NN
-IwvhDuW3rq8fbCMr+NGe9chc1Rg2lrfeEJDwjki/drBQs7zpAkEA3R6QEcuST7Gq
-JzjfU9uLD2tHLYZFNzS4dm4PvwC2aK7OdEOm7VkXFwUyP97QjwPV7fabrQ2QjwGg
-ek+nVEdH9QJBAMvxFickez9eqgiMfZbfY8t5I+Dxz69ZVGsPvl/6xhiUvgxjREM7
-EnScf86HwlBnteoUtMptAKu7Dbq5inPbkFsCQCV8FuRNZGJKNhQsGf/3Sd21S/21
-s2omb9bz1YuFrWaVq74d8eBup/FpGhmlxilYdx2+Hqn5kLYNiozxj+ZDpzkCQQC8
-7VJAYKNsSR3rXXra0Yd5b3e1Y02qe26g36zU7VOmYeTNRQhv38FxFamwgkOYiPsV
-Jql0/RWqAVburAN+4OARAkB9FwUtKyhs7FM4N9bXi+c8m42hkBv+dSim534tPijS
-UCcCONLEQTv4yjlCOwTKMVDoajkWH1A2e7psTmIR+zwc
+MIICXgIBAAKBgQC6X0tpdDGZTfS0typluLcxwTjPNje7XhjjUh9SqlolLwxmiDKw
+77IskDhebm8O5Ds/8C7xej1ew2SGP2i3zwuz6grKlBbUK2oC46Gzx9HQBrj/39zg
+Mirn3WLMccToz53eXHVpnbbO4kLYp71QVHgtVWd/AHuPnBHRns6+Hv7PNwIDAQAB
+AoGBAJdWRGVIPfJP1BJe3eWl3dRgI2JXk1/pY+pLSDYXMIYbM0Wa+RamPRdksPE1
+WadM+zPLNENP0L+/iERe/wiq7sNxKQLwH5eE3tUxC+iC8GO6gQ2zHaWVNu3R79CM
+t8YZhlmG2o+xC4CGYzuITgPE16m24CYauLZHO/YVDzG6yNApAkEA6K0db5bZmIaU
+TJW/jEnPJSubDx8kE1YncTOAKaAeoJwaaSfFphVKNGNrZHu3jBhKFgVNBNxGUWrW
+0pIkDrb3hQJBAM0N7+ghZ/7vaOoKqYHQI2z8SgPsUjQjmubCBALe/Ys3kg9PPpyz
+umJSAOYjC4X1dSlkAkciJqRS0Y6uKgSH4osCQQCVIWftft1GsnNYxt43t5MKOvGu
+doIz1pN/LcgmZddbj9IptfErqxedjl9lzxnstCDADnO3+ssjIfxAiKSNvd3VAkA3
+3yFMTbXpZ9BdXPRc05qjeoasVPr9C+qMD7dKFPpesZCRrVTxG6OgYJmwG0JriLsY
+wRBB05NV2N8SknAOdfwLAkEAw5Hqxc/Xlh6xhy9tBdJXDtuptV10mg6EbO98x9/7
+gyuAArSguhXna+aRqjLRelCwVB9f9aZ1XVoDKWVCsnfCbQ==
 -----END RSA PRIVATE KEY-----
diff --git a/tests/certs/Server-localhost-sv.p12 b/tests/certs/Server-localhost-sv.p12
deleted file mode 100644 (file)
index d7b8441..0000000
Binary files a/tests/certs/Server-localhost-sv.p12 and /dev/null differ
index 86b48b3..6ef1fd5 100644 (file)
@@ -1,11 +1,11 @@
 extensions = x509v3
 [ x509v3 ]
 subjectAltName = DNS:localhost
-keyUsage       = keyEncipherment
+keyUsage       = keyEncipherment,digitalSignature,keyAgreement
 extendedKeyUsage = serverAuth
 subjectKeyIdentifier = hash
 authorityKeyIdentifier = keyid
-basicConstraints = critical,CA:false
+basicConstraints = CA:false
 [ req ]
 default_bits                    = 1024
 distinguished_name              = req_DN
@@ -24,33 +24,32 @@ commonName_value              = localhost
 # the certficate
 # some dhparam
 -----BEGIN RSA PRIVATE KEY-----
-MIICXQIBAAKBgQCwJ3kmLLnk0YEKCdJ2/prhBWgBs3J3lzjkYBxxnZn3JnshtW2q
-nxR2B2ykKi197vZviljEk97+oSUP/1dJwNmU2Qd5v4xt+vEYgmegP9cxA4LsuTlp
-B+zskxdbGnKRk7JrmGZj/mEp562GDgS6v4tVV2GlSvbK58bRuGVCq2dkFwIDAQAB
-AoGBAKa0JHWZHC9MiSa71t5f4qiTGjOJ5AkDJocR4bkv4dZAJ4TmEqvGsnFkY08U
-z0p/i95Q+eLG4eDtFYsHJU8Z343odktK99BUJzkDzqWT9RMzJ5Ykx6LbldJyW5NN
-IwvhDuW3rq8fbCMr+NGe9chc1Rg2lrfeEJDwjki/drBQs7zpAkEA3R6QEcuST7Gq
-JzjfU9uLD2tHLYZFNzS4dm4PvwC2aK7OdEOm7VkXFwUyP97QjwPV7fabrQ2QjwGg
-ek+nVEdH9QJBAMvxFickez9eqgiMfZbfY8t5I+Dxz69ZVGsPvl/6xhiUvgxjREM7
-EnScf86HwlBnteoUtMptAKu7Dbq5inPbkFsCQCV8FuRNZGJKNhQsGf/3Sd21S/21
-s2omb9bz1YuFrWaVq74d8eBup/FpGhmlxilYdx2+Hqn5kLYNiozxj+ZDpzkCQQC8
-7VJAYKNsSR3rXXra0Yd5b3e1Y02qe26g36zU7VOmYeTNRQhv38FxFamwgkOYiPsV
-Jql0/RWqAVburAN+4OARAkB9FwUtKyhs7FM4N9bXi+c8m42hkBv+dSim534tPijS
-UCcCONLEQTv4yjlCOwTKMVDoajkWH1A2e7psTmIR+zwc
+MIICXgIBAAKBgQC6X0tpdDGZTfS0typluLcxwTjPNje7XhjjUh9SqlolLwxmiDKw
+77IskDhebm8O5Ds/8C7xej1ew2SGP2i3zwuz6grKlBbUK2oC46Gzx9HQBrj/39zg
+Mirn3WLMccToz53eXHVpnbbO4kLYp71QVHgtVWd/AHuPnBHRns6+Hv7PNwIDAQAB
+AoGBAJdWRGVIPfJP1BJe3eWl3dRgI2JXk1/pY+pLSDYXMIYbM0Wa+RamPRdksPE1
+WadM+zPLNENP0L+/iERe/wiq7sNxKQLwH5eE3tUxC+iC8GO6gQ2zHaWVNu3R79CM
+t8YZhlmG2o+xC4CGYzuITgPE16m24CYauLZHO/YVDzG6yNApAkEA6K0db5bZmIaU
+TJW/jEnPJSubDx8kE1YncTOAKaAeoJwaaSfFphVKNGNrZHu3jBhKFgVNBNxGUWrW
+0pIkDrb3hQJBAM0N7+ghZ/7vaOoKqYHQI2z8SgPsUjQjmubCBALe/Ys3kg9PPpyz
+umJSAOYjC4X1dSlkAkciJqRS0Y6uKgSH4osCQQCVIWftft1GsnNYxt43t5MKOvGu
+doIz1pN/LcgmZddbj9IptfErqxedjl9lzxnstCDADnO3+ssjIfxAiKSNvd3VAkA3
+3yFMTbXpZ9BdXPRc05qjeoasVPr9C+qMD7dKFPpesZCRrVTxG6OgYJmwG0JriLsY
+wRBB05NV2N8SknAOdfwLAkEAw5Hqxc/Xlh6xhy9tBdJXDtuptV10mg6EbO98x9/7
+gyuAArSguhXna+aRqjLRelCwVB9f9aZ1XVoDKWVCsnfCbQ==
 -----END RSA PRIVATE KEY-----
 Certificate:
     Data:
         Version: 3 (0x2)
-        Serial Number:
-            0b:98:94:f9:7c:6a
-        Signature Algorithm: sha1WithRSAEncryption
+        Serial Number: 14269504311627 (0xcfa60bc514b)
+    Signature Algorithm: sha1WithRSAEncryption
         Issuer:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
-            commonName                = Nothern Nowhere Trust Anchor
+            commonName                = Northern Nowhere Trust Anchor
         Validity
-            Not Before: May 27 21:37:11 2010 GMT
-            Not After : Aug 13 21:37:11 2018 GMT
+            Not Before: Mar 21 15:07:11 2015 GMT
+            Not After : Jun  7 15:07:11 2023 GMT
         Subject:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
@@ -59,68 +58,63 @@ Certificate:
             Public Key Algorithm: rsaEncryption
                 Public-Key: (1024 bit)
                 Modulus:
-                    00:b0:27:79:26:2c:b9:e4:d1:81:0a:09:d2:76:fe:
-                    9a:e1:05:68:01:b3:72:77:97:38:e4:60:1c:71:9d:
-                    99:f7:26:7b:21:b5:6d:aa:9f:14:76:07:6c:a4:2a:
-                    2d:7d:ee:f6:6f:8a:58:c4:93:de:fe:a1:25:0f:ff:
-                    57:49:c0:d9:94:d9:07:79:bf:8c:6d:fa:f1:18:82:
-                    67:a0:3f:d7:31:03:82:ec:b9:39:69:07:ec:ec:93:
-                    17:5b:1a:72:91:93:b2:6b:98:66:63:fe:61:29:e7:
-                    ad:86:0e:04:ba:bf:8b:55:57:61:a5:4a:f6:ca:e7:
-                    c6:d1:b8:65:42:ab:67:64:17
+                    00:ba:5f:4b:69:74:31:99:4d:f4:b4:b7:2a:65:b8:
+                    b7:31:c1:38:cf:36:37:bb:5e:18:e3:52:1f:52:aa:
+                    5a:25:2f:0c:66:88:32:b0:ef:b2:2c:90:38:5e:6e:
+                    6f:0e:e4:3b:3f:f0:2e:f1:7a:3d:5e:c3:64:86:3f:
+                    68:b7:cf:0b:b3:ea:0a:ca:94:16:d4:2b:6a:02:e3:
+                    a1:b3:c7:d1:d0:06:b8:ff:df:dc:e0:32:2a:e7:dd:
+                    62:cc:71:c4:e8:cf:9d:de:5c:75:69:9d:b6:ce:e2:
+                    42:d8:a7:bd:50:54:78:2d:55:67:7f:00:7b:8f:9c:
+                    11:d1:9e:ce:be:1e:fe:cf:37
                 Exponent: 65537 (0x10001)
         X509v3 extensions:
             X509v3 Subject Alternative Name: 
                 DNS:localhost
             X509v3 Key Usage: 
-                Key Encipherment
+                Digital Signature, Key Encipherment, Key Agreement
             X509v3 Extended Key Usage: 
                 TLS Web Server Authentication
             X509v3 Subject Key Identifier: 
-                BC:69:86:84:70:3A:AD:DE:08:2A:70:C6:3B:47:8C:11:3F:E0:9A:6D
+                7E:42:8D:AC:2E:93:AD:4C:E0:09:AC:C6:08:F1:82:E0:B7:B7:C6:7F
             X509v3 Authority Key Identifier: 
-                keyid:AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
 
-            X509v3 Basic Constraints: critical
+            X509v3 Basic Constraints: 
                 CA:FALSE
     Signature Algorithm: sha1WithRSAEncryption
-        7b:f0:b0:a0:d9:d0:91:38:9b:fe:cf:78:c8:d6:30:5d:87:9d:
-        b3:b9:6e:8b:5a:73:74:93:cb:30:49:d1:00:79:9d:5a:c2:71:
-        a3:93:5f:de:d3:5a:0c:fb:6d:41:83:89:1b:4f:0d:1c:65:0c:
-        1a:0c:0f:96:79:62:90:e1:74:04:dd:c6:d8:cf:0f:5f:0f:28:
-        87:d7:86:56:90:b4:d0:88:80:f1:a7:cd:fd:0b:13:58:bb:6d:
-        e6:ab:44:f6:9b:d6:cc:c7:db:3d:3a:90:c4:20:72:f4:38:38:
-        c0:ef:80:1d:60:3f:4e:30:40:11:56:29:70:aa:17:91:90:5f:
-        70:0b:89:51:af:17:a8:ed:20:4e:76:bb:cf:a8:88:9a:25:0f:
-        3a:96:26:17:50:2a:af:f3:8b:21:9c:cf:ff:f9:20:fc:fe:c0:
-        37:95:c7:cd:0d:7a:53:d9:26:12:38:2c:f6:03:95:1b:da:d0:
-        08:f7:32:91:07:a7:35:0c:14:00:44:c7:43:fb:23:2e:14:44:
-        e6:ee:a9:c9:20:37:09:b8:ae:21:4f:4b:b7:86:4d:e3:41:84:
-        15:4e:1a:29:00:03:a8:92:99:3c:75:ea:43:0f:e3:2b:f7:17:
-        b1:1b:87:80:04:d3:a7:73:b1:5e:85:38:7d:89:01:16:19:f6:
-        c4:e1:1b:75
+         00:fe:c4:fc:4b:28:b8:bc:39:8c:6f:f1:72:d3:76:da:28:27:
+         e2:97:94:bb:ad:2f:91:c4:db:df:33:4b:48:4e:97:5b:4c:4c:
+         be:fc:e4:b7:19:5c:b8:83:6e:ef:2c:b0:d5:7c:fc:0d:cb:7e:
+         29:ed:fd:4d:ef:05:1c:89:15:31:78:9b:18:29:d3:37:83:c7:
+         39:f4:78:27:b7:00:75:d1:fb:f0:29:88:79:e4:e9:a7:d4:65:
+         04:bf:d5:a1:dc:05:b2:17:c4:a9:da:61:10:22:5f:8f:50:fc:
+         1f:ab:f6:39:dd:ab:35:a6:94:54:63:5c:6d:25:f0:dc:3a:0a:
+         70:4e:49:ef:be:fa:2c:0a:cd:ce:a6:2d:26:cd:f8:24:89:77:
+         2c:ea:6e:19:b6:5c:8c:1a:08:ea:a8:9f:2c:1b:c7:fc:13:6c:
+         fe:a7:90:08:e5:98:83:30:52:86:ac:83:0b:cb:25:92:21:94:
+         80:13:d7:e8:d0:42:56:83:55:d3:09:9b:e8:c5:96:82:15:64:
+         6b:83:77:eb:99:e5:52:dc:1b:36:29:a0:c9:da:8b:d3:0d:77:
+         24:f2:c3:df:2e:c4:93:e0:34:47:a9:9b:54:d3:75:d5:c7:de:
+         88:a1:ef:7b:40:2f:dc:e9:28:8c:69:be:eb:71:4a:c2:30:50:
+         99:36:52:69
 -----BEGIN CERTIFICATE-----
-MIIDQTCCAimgAwIBAgIGC5iU+XxqMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDPzCCAiegAwIBAgIGDPpgvFFLMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
 Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzcxMVoXDTE4MDgxMzIxMzcxMVowVDELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-EjAQBgNVBAMMCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-sCd5Jiy55NGBCgnSdv6a4QVoAbNyd5c45GAccZ2Z9yZ7IbVtqp8UdgdspCotfe72
-b4pYxJPe/qElD/9XScDZlNkHeb+MbfrxGIJnoD/XMQOC7Lk5aQfs7JMXWxpykZOy
-a5hmY/5hKeethg4Eur+LVVdhpUr2yufG0bhlQqtnZBcCAwEAAaOBiTCBhjAUBgNV
-HREEDTALgglsb2NhbGhvc3QwCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoGCCsGAQUF
-BwMBMB0GA1UdDgQWBBS8aYaEcDqt3ggqcMY7R4wRP+CabTAfBgNVHSMEGDAWgBSt
-PuI5B7hcqiaQlEwmaSGD4k42lDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBQUA
-A4IBAQB78LCg2dCROJv+z3jI1jBdh52zuW6LWnN0k8swSdEAeZ1awnGjk1/e01oM
-+21Bg4kbTw0cZQwaDA+WeWKQ4XQE3cbYzw9fDyiH14ZWkLTQiIDxp839CxNYu23m
-q0T2m9bMx9s9OpDEIHL0ODjA74AdYD9OMEARVilwqheRkF9wC4lRrxeo7SBOdrvP
-qIiaJQ86liYXUCqv84shnM//+SD8/sA3lcfNDXpT2SYSOCz2A5Ub2tAI9zKRB6c1
-DBQARMdD+yMuFETm7qnJIDcJuK4hT0u3hk3jQYQVThopAAOokpk8depDD+Mr9xex
-G4eABNOnc7FehTh9iQEWGfbE4Rt1
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFQxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRIwEAYDVQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
+ALpfS2l0MZlN9LS3KmW4tzHBOM82N7teGONSH1KqWiUvDGaIMrDvsiyQOF5ubw7k
+Oz/wLvF6PV7DZIY/aLfPC7PqCsqUFtQragLjobPH0dAGuP/f3OAyKufdYsxxxOjP
+nd5cdWmdts7iQtinvVBUeC1VZ38Ae4+cEdGezr4e/s83AgMBAAGjgYYwgYMwFAYD
+VR0RBA0wC4IJbG9jYWxob3N0MAsGA1UdDwQEAwIDqDATBgNVHSUEDDAKBggrBgEF
+BQcDATAdBgNVHQ4EFgQUfkKNrC6TrUzgCazGCPGC4Le3xn8wHwYDVR0jBBgwFoAU
+Esq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOC
+AQEAAP7E/EsouLw5jG/xctN22ign4peUu60vkcTb3zNLSE6XW0xMvvzktxlcuINu
+7yyw1Xz8Dct+Ke39Te8FHIkVMXibGCnTN4PHOfR4J7cAddH78CmIeeTpp9RlBL/V
+odwFshfEqdphECJfj1D8H6v2Od2rNaaUVGNcbSXw3DoKcE5J7776LArNzqYtJs34
+JIl3LOpuGbZcjBoI6qifLBvH/BNs/qeQCOWYgzBShqyDC8slkiGUgBPX6NBCVoNV
+0wmb6MWWghVka4N365nlUtwbNimgydqL0w13JPLD3y7Ek+A0R6mbVNN11cfeiKHv
+e0Av3OkojGm+63FKwjBQmTZSaQ==
 -----END CERTIFICATE-----
------BEGIN DH PARAMETERS-----
-MIGHAoGBAP5mA7oYimErFUulbvNC8V0HwyB62NCj6TZb6YXJwElCksQc8RyHnkrY
-9Wx2+lduFqHjUWalgVF7Gma7CfR/pt+fiU6Jn2vWR2v7KT6hYeRKsJrONJlth+NK
-V7/d4zyvleJ/VSp0TuuSxmMMQ6hG3i5YhSGXyCh4h0pl4Wu/hdVTAgEC
------END DH PARAMETERS-----
index 6351025..97e64ce 100644 (file)
@@ -1,11 +1,11 @@
 extensions = x509v3
 [ x509v3 ]
 subjectAltName = DNS:localhost
-keyUsage       = keyEncipherment
+keyUsage       = keyEncipherment,digitalSignature,keyAgreement
 extendedKeyUsage = serverAuth
 subjectKeyIdentifier = hash
 authorityKeyIdentifier = keyid
-basicConstraints = critical,CA:false
+basicConstraints = CA:false
 [ req ]
 default_bits                    = 1024
 distinguished_name              = req_DN
index 7e89b51..e954839 100644 (file)
Binary files a/tests/certs/Server-localhost-sv.pub.der and b/tests/certs/Server-localhost-sv.pub.der differ
index 2384643..d119616 100644 (file)
@@ -1,6 +1,6 @@
 -----BEGIN PUBLIC KEY-----
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwJ3kmLLnk0YEKCdJ2/prhBWgB
-s3J3lzjkYBxxnZn3JnshtW2qnxR2B2ykKi197vZviljEk97+oSUP/1dJwNmU2Qd5
-v4xt+vEYgmegP9cxA4LsuTlpB+zskxdbGnKRk7JrmGZj/mEp562GDgS6v4tVV2Gl
-SvbK58bRuGVCq2dkFwIDAQAB
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6X0tpdDGZTfS0typluLcxwTjP
+Nje7XhjjUh9SqlolLwxmiDKw77IskDhebm8O5Ds/8C7xej1ew2SGP2i3zwuz6grK
+lBbUK2oC46Gzx9HQBrj/39zgMirn3WLMccToz53eXHVpnbbO4kLYp71QVHgtVWd/
+AHuPnBHRns6+Hv7PNwIDAQAB
 -----END PUBLIC KEY-----
index db40831..0676f73 100644 (file)
@@ -1,13 +1,21 @@
 -----BEGIN X509 CRL-----
-MIIB9DCB3QIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJOTjExMC8GA1UE
-CgwoRWRlbCBDdXJsIEFyY3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDElMCMG
-A1UEAwwcTm90aGVybiBOb3doZXJlIFRydXN0IEFuY2hvchcNMTAwNTI3MjEzNzI0
-WhcNMTAwNjI2MjEzNzI0WjAyMBcCBguYlPl8ahcNMTAwNTI3MjEzNzExWjAXAgYL
-mJT7eF8XDTEwMDUyNzIxMzcyNFqgDjAMMAoGA1UdFAQDAgEBMA0GCSqGSIb3DQEB
-BQUAA4IBAQCo8mBpkZqiYWJMkJsZ1qqqOqVRne4iWhPOJSDGDgxoCTA4RgN1sQUv
-/MxO2LgSEyo9GopCpgWlhig+wzQmYCUf7HDw8sLzClUG4XUKRSW2Uq6q5BF5fwIu
-vHksi/RIPdcMx/+3dGIFeoccZZd5o7xgryGySAN6wHy6lY7LeeW7acpaDU43D7yi
-wQipBczrlH/jJDy6ja5FFBrAvvyRc4zC2X1/Rh3f0vNqnX9PLC524HxRmasCKYM8
-vgcPbvJ7Z/HRGOYRu9vTp5X0+lPPj24WE8vX3AZdjyI6qpinHzrsYen/qs6c0v3k
-FKYuzuVlUAy+5aZDhx+GHr+KW+y2T/ol
+MIIDiDCCAnACAQEwDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCTk4xMTAvBgNV
+BAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJjAk
+BgNVBAMMHU5vcnRoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yFw0xNTAzMjExNTA3
+MTFaFw0xNTA0MjAxNTA3MTFaMIIBwjAXAgYM+ly45CIXDTE1MDMyMTEzMTQ1N1ow
+FwIGDPpcwXH8Fw0xNTAzMjExMzE1NTNaMBcCBgz6XO7ujBcNMTUwMzIxMTMyMDUx
+WjAXAgYM+lzu7p0XDTE1MDMyMTEzMjA1MVowFwIGDPpc7u6uFw0xNTAzMjExMzIw
+NTFaMBcCBgz6XZyD1RcNMTUwMzIxMTMzOTQ5WjAXAgYM+l4OXa8XDTE1MDMyMTEz
+NTIxNVowFwIGDPpeJlPZFw0xNTAzMjExMzU0NTJaMBcCBgz6XiZT6hcNMTUwMzIx
+MTM1NDUyWjAXAgYM+l4mU/sXDTE1MDMyMTEzNTQ1MlowFwIGDPpemKKEFw0xNTAz
+MjExNDA3MjFaMBcCBgz6XpiilRcNMTUwMzIxMTQwNzIxWjAXAgYM+l6YoqYXDTE1
+MDMyMTE0MDcyMVowFwIGDPpffssxFw0xNTAzMjExNDMyMzBaMBcCBgz6X37yUxcN
+MTUwMzIxMTQzMjMxWjAXAgYM+l9+8mYXDTE1MDMyMTE0MzIzMVowFwIGDPpgvFFL
+Fw0xNTAzMjExNTA3MTFaMBcCBgz6YLxRXBcNMTUwMzIxMTUwNzExWqAOMAwwCgYD
+VR0UBAMCAQEwDQYJKoZIhvcNAQEFBQADggEBANd1Fp3lPmLALcGvEB4kB4Uo6vhM
+ZWcAUE96oerpW0OnZ6v7o8ghLvs/pJfIoD+7hV3RuAgUUBqv2N8VTaL2IYarom/H
+CK78oLrIwwej/7K1pIfG53bJuaYyim5Lpl/YzGwhdC2vO2kBXHC1gVj5hN3uM/2A
++cFPTDMsDU7szGq1bHObEKumXXzG5LfwGJGaHNGdvglV7zKthRjk/plYKE4/F0Ah
+jRQys6crClCKC5vug1GbzKbQue/Pbw1e3Rm/e0DVeOCREdvcHat43SIPf5yUYLsz
+b7P7pIOIoSgiIgEdbmj2pi1xdtxrYRyJJk0H7XQJHDehkyZsy6l62mKam/E=
 -----END X509 CRL-----
index 722aeeb..69bd40d 100644 (file)
@@ -1,16 +1,15 @@
 Certificate:
     Data:
         Version: 3 (0x2)
-        Serial Number:
-            0b:98:94:fb:78:5f
-        Signature Algorithm: sha1WithRSAEncryption
+        Serial Number: 14269504311644 (0xcfa60bc515c)
+    Signature Algorithm: sha1WithRSAEncryption
         Issuer:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
-            commonName                = Nothern Nowhere Trust Anchor
+            commonName                = Northern Nowhere Trust Anchor
         Validity
-            Not Before: May 27 21:37:24 2010 GMT
-            Not After : Aug 13 21:37:24 2018 GMT
+            Not Before: Mar 21 15:07:11 2015 GMT
+            Not After : Jun  7 15:07:11 2023 GMT
         Subject:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
@@ -19,63 +18,63 @@ Certificate:
             Public Key Algorithm: rsaEncryption
                 Public-Key: (1024 bit)
                 Modulus:
-                    00:d3:d4:4e:db:63:5c:3f:3a:3a:5e:38:09:94:e6:
-                    4d:70:9d:0d:af:49:e6:82:5d:07:b7:f5:cd:a0:df:
-                    af:71:f1:cf:bf:d5:9a:bd:af:7c:78:5d:55:3f:14:
-                    bd:bb:2c:0e:73:9d:d6:82:9a:d5:e6:f6:21:5d:08:
-                    92:a2:71:5f:80:5f:5c:ce:f0:c2:37:37:79:0f:4d:
-                    3d:d4:f2:80:6d:47:36:45:d1:d2:8b:7a:2e:12:71:
-                    4b:47:86:f5:8c:99:af:e7:0e:cf:b5:c9:4d:7a:75:
-                    f7:b2:74:0c:41:e3:ab:bb:2c:9d:6f:54:08:13:5a:
-                    3a:ef:7c:27:f7:3f:0b:0b:71
+                    00:ac:cc:11:70:74:29:ed:7b:00:44:8a:c0:47:03:
+                    50:9d:6f:51:b7:c9:7b:dd:7e:ee:29:67:5b:91:9b:
+                    c7:c5:e6:9d:59:3e:6b:33:25:b7:7c:39:7c:84:79:
+                    dd:15:98:e7:27:63:93:10:3a:3a:40:a0:dd:d0:1e:
+                    6e:60:f4:1e:a4:f7:1e:0a:0b:84:44:77:e7:05:16:
+                    39:aa:de:bd:1e:c7:bc:c9:e1:4e:8c:86:1c:3f:d6:
+                    cd:e3:f2:68:02:5b:17:53:49:51:29:a8:89:f3:d0:
+                    e1:5e:71:07:9f:15:47:08:40:e9:ac:49:e4:21:ac:
+                    65:29:09:ca:a2:dc:9e:ab:89
                 Exponent: 65537 (0x10001)
         X509v3 extensions:
             X509v3 Subject Alternative Name: 
                 DNS:localhost.nn
             X509v3 Key Usage: 
-                Key Encipherment
+                Digital Signature, Key Encipherment, Key Agreement
             X509v3 Extended Key Usage: 
                 TLS Web Server Authentication
             X509v3 Subject Key Identifier: 
-                81:26:F9:75:CC:9C:2D:3C:36:64:68:41:F7:07:3C:66:86:E5:4A:C1
+                12:AF:44:46:B1:04:69:61:64:83:39:A2:BD:5D:97:2B:F4:1D:D4:6C
             X509v3 Authority Key Identifier: 
-                keyid:AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
 
-            X509v3 Basic Constraints: critical
+            X509v3 Basic Constraints: 
                 CA:FALSE
     Signature Algorithm: sha1WithRSAEncryption
-        65:05:8c:48:14:58:8c:1a:d4:95:67:1c:29:52:ed:5a:6e:14:
-        41:bc:2b:16:20:c4:89:3a:6e:cb:c1:ff:ab:61:79:5f:ce:27:
-        93:3c:ff:29:7a:25:68:00:27:04:f3:68:17:30:f0:fd:ff:09:
-        0e:15:2a:25:b1:45:18:93:ab:12:8e:0c:13:11:9a:b8:a4:75:
-        d0:17:1b:ca:f2:66:6b:73:15:dd:8b:bb:34:d6:70:dc:34:1b:
-        e7:7a:30:ea:50:50:2f:88:67:b3:f8:b3:55:62:44:7e:3e:df:
-        59:4f:a8:57:83:40:9f:bf:52:bf:fd:2c:18:6e:bd:0c:41:b7:
-        78:1c:9b:fa:c4:ff:c3:2b:46:a4:8f:0c:19:a7:3d:75:81:29:
-        6b:cf:07:f0:1d:65:d4:0e:19:51:87:92:a8:3d:7e:80:04:84:
-        ad:5e:4e:b6:ef:9a:02:c3:84:95:ec:c3:e8:a1:69:1f:42:cb:
-        da:63:1a:35:6f:d0:ba:62:9e:73:36:63:58:0f:cc:25:c8:59:
-        73:df:3b:c2:b9:5a:da:3d:e1:3f:0a:1f:0f:41:c4:88:2d:92:
-        06:88:d4:54:81:e1:12:57:53:ab:6b:f8:c8:90:3e:30:4c:f5:
-        72:cf:f0:d4:18:70:c1:78:85:30:9c:fe:94:f4:1b:c2:6c:14:
-        49:7a:0e:27
+         44:54:d7:d7:75:14:60:a5:1a:1d:1e:a9:dc:6f:b1:b1:d8:13:
+         e2:10:22:9a:f5:ca:b6:38:3c:d9:ac:2e:dc:ce:38:bc:cc:38:
+         a1:cc:a8:9c:73:37:f9:b6:a8:42:87:d9:80:21:45:81:43:9d:
+         73:3c:67:cf:cd:c5:c3:91:df:60:6b:6d:69:f9:be:a1:92:cc:
+         5d:ea:bc:67:f3:c7:bc:ea:41:d1:11:7b:e3:f1:b8:a7:8d:9a:
+         d0:23:6c:df:0e:2a:35:98:50:c1:a6:8b:d2:07:aa:a6:2f:cb:
+         98:a9:a3:8d:a0:8c:87:ab:ec:e1:c5:0b:25:e2:e9:a9:08:13:
+         30:86:1b:e5:b6:ac:03:85:35:0c:9a:5d:5b:82:c4:04:6a:05:
+         4c:f3:f7:b3:b5:ac:92:3b:46:71:a8:7f:54:c7:96:37:dc:38:
+         2c:a2:18:23:10:00:de:f8:21:40:52:99:94:ad:b2:b6:e5:87:
+         8e:29:0b:3b:b3:8a:52:67:54:dc:0a:e9:75:60:33:ff:13:9a:
+         61:a4:15:0c:d0:6f:de:0d:06:23:a8:44:ad:f0:68:60:93:6b:
+         75:06:24:5b:47:9a:b9:3a:ef:d9:4f:df:31:d5:65:3a:e2:94:
+         03:be:88:94:49:7c:6a:d0:da:c0:d0:62:81:f5:61:50:96:5a:
+         d0:ee:22:39
 -----BEGIN CERTIFICATE-----
-MIIDRzCCAi+gAwIBAgIGC5iU+3hfMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDRTCCAi2gAwIBAgIGDPpgvFFcMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
 Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzcyNFoXDTE4MDgxMzIxMzcyNFowVzELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-FTATBgNVBAMMDGxvY2FsaG9zdC5ubjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
-gYEA09RO22NcPzo6XjgJlOZNcJ0Nr0nmgl0Ht/XNoN+vcfHPv9Wava98eF1VPxS9
-uywOc53WgprV5vYhXQiSonFfgF9czvDCNzd5D0091PKAbUc2RdHSi3ouEnFLR4b1
-jJmv5w7PtclNenX3snQMQeOruyydb1QIE1o673wn9z8LC3ECAwEAAaOBjDCBiTAX
-BgNVHREEEDAOggxsb2NhbGhvc3Qubm4wCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoG
-CCsGAQUFBwMBMB0GA1UdDgQWBBSBJvl1zJwtPDZkaEH3BzxmhuVKwTAfBgNVHSME
-GDAWgBStPuI5B7hcqiaQlEwmaSGD4k42lDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3
-DQEBBQUAA4IBAQBlBYxIFFiMGtSVZxwpUu1abhRBvCsWIMSJOm7Lwf+rYXlfzieT
-PP8peiVoACcE82gXMPD9/wkOFSolsUUYk6sSjgwTEZq4pHXQFxvK8mZrcxXdi7s0
-1nDcNBvnejDqUFAviGez+LNVYkR+Pt9ZT6hXg0Cfv1K//SwYbr0MQbd4HJv6xP/D
-K0akjwwZpz11gSlrzwfwHWXUDhlRh5KoPX6ABIStXk6275oCw4SV7MPooWkfQsva
-Yxo1b9C6Yp5zNmNYD8wlyFlz3zvCuVraPeE/Ch8PQcSILZIGiNRUgeESV1Ora/jI
-kD4wTPVyz/DUGHDBeIUwnP6U9BvCbBRJeg4n
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFcxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
+AoGBAKzMEXB0Ke17AESKwEcDUJ1vUbfJe91+7ilnW5Gbx8XmnVk+azMlt3w5fIR5
+3RWY5ydjkxA6OkCg3dAebmD0HqT3HgoLhER35wUWOarevR7HvMnhToyGHD/WzePy
+aAJbF1NJUSmoifPQ4V5xB58VRwhA6axJ5CGsZSkJyqLcnquJAgMBAAGjgYkwgYYw
+FwYDVR0RBBAwDoIMbG9jYWxob3N0Lm5uMAsGA1UdDwQEAwIDqDATBgNVHSUEDDAK
+BggrBgEFBQcDATAdBgNVHQ4EFgQUEq9ERrEEaWFkgzmivV2XK/Qd1GwwHwYDVR0j
+BBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADANBgkqhkiG9w0B
+AQUFAAOCAQEARFTX13UUYKUaHR6p3G+xsdgT4hAimvXKtjg82awu3M44vMw4ocyo
+nHM3+baoQofZgCFFgUOdczxnz83Fw5HfYGttafm+oZLMXeq8Z/PHvOpB0RF74/G4
+p42a0CNs3w4qNZhQwaaL0geqpi/LmKmjjaCMh6vs4cULJeLpqQgTMIYb5basA4U1
+DJpdW4LEBGoFTPP3s7WskjtGcah/VMeWN9w4LKIYIxAA3vghQFKZlK2ytuWHjikL
+O7OKUmdU3ArpdWAz/xOaYaQVDNBv3g0GI6hErfBoYJNrdQYkW0eauTrv2U/fMdVl
+OuKUA76IlEl8atDawNBigfVhUJZa0O4iOQ==
 -----END CERTIFICATE-----
index 6424343..7f2fa77 100644 (file)
@@ -1,11 +1,11 @@
 -----BEGIN CERTIFICATE REQUEST-----
 MIIBlzCCAQACAQAwVzELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB
 cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxFTATBgNVBAMMDGxvY2FsaG9z
-dC5ubjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA09RO22NcPzo6XjgJlOZN
-cJ0Nr0nmgl0Ht/XNoN+vcfHPv9Wava98eF1VPxS9uywOc53WgprV5vYhXQiSonFf
-gF9czvDCNzd5D0091PKAbUc2RdHSi3ouEnFLR4b1jJmv5w7PtclNenX3snQMQeOr
-uyydb1QIE1o673wn9z8LC3ECAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4GBAM5PenDC
-AtDhzdVKrX6DcJINWck5XFEnvWQksSYU7iDeiQVycQxR+LYKGZiy04u+9C+MN7eq
-JmHAIi+88r7/ZaGJLujqSUOJn8ocZ+vwhJOwh2XBhhLaCjIW/H05g0aNlk80Ye6m
-OA9DCIZUINF0lDQaJCpKXxwNVcz4Rifp5/9T
+dC5ubjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArMwRcHQp7XsARIrARwNQ
+nW9Rt8l73X7uKWdbkZvHxeadWT5rMyW3fDl8hHndFZjnJ2OTEDo6QKDd0B5uYPQe
+pPceCguERHfnBRY5qt69Hse8yeFOjIYcP9bN4/JoAlsXU0lRKaiJ89DhXnEHnxVH
+CEDprEnkIaxlKQnKotyeq4kCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4GBADnob1ds
+8MytEcgSZdkgP4iQ2L+aPXTPBqTThaV7Zto1mAhwG/D6rTiGq6t+IlZQNoDdZPp3
+r1WDQJj6ed54xUY4Im4m1Np8oURamt5NJMKURDbv0xOQHW8EOoN+F8rfKyu2Hk1O
+hJulv+cBz75yi3+LVu+IEuSFQIQUZiy6V+Il
 -----END CERTIFICATE REQUEST-----
index 08cf02f..9bb4ff3 100644 (file)
Binary files a/tests/certs/Server-localhost.nn-sv.der and b/tests/certs/Server-localhost.nn-sv.der differ
index 5d54840..e69de29 100644 (file)
@@ -1,5 +0,0 @@
------BEGIN DH PARAMETERS-----
-MIGHAoGBAPrtEVPhZfEczB9JnWXbln79YnTh/V6ehXMWe414wyn/VT1ow25sLEev
-H2+eT84aDp5e+TfBSFjA6or96/lyQvsgAE+cE6f6uuw9ApVG2MK+BCn4snxHBb6G
-LFQf+9qHZ4BEkpBL60p1fkGu8BM1wXGXEaeYhgGumNA9fm5YJrl7AgEC
------END DH PARAMETERS-----
index bf1cc7e..6a75071 100644 (file)
@@ -1,15 +1,15 @@
 -----BEGIN RSA PRIVATE KEY-----
-MIICXgIBAAKBgQDT1E7bY1w/OjpeOAmU5k1wnQ2vSeaCXQe39c2g369x8c+/1Zq9
-r3x4XVU/FL27LA5zndaCmtXm9iFdCJKicV+AX1zO8MI3N3kPTT3U8oBtRzZF0dKL
-ei4ScUtHhvWMma/nDs+1yU16dfeydAxB46u7LJ1vVAgTWjrvfCf3PwsLcQIDAQAB
-AoGBALr1HQxAq8AaMj3KE5rZkOudkeBtxwaz+QYB6hTcl8pnc8aKTmKwKZlKNtzP
-/4zdG3wriJII+lU4UsX7tP+uNGxKxALrDQRuBPyi8XQfUT1nJth6qkp8g3V/ixfE
-Yah3od9dL3+xsOH28RKKUC5kjmnNupO9KQZ6/CyYfUHAEG+pAkEA+PP+7FIvpPQ+
-7bbG4IIqn7QKVxGbtaFY8pdLnsUkrnIqwEIbZoU12iEKm5qMoXNv30GknXrvxU53
-tdIZU5Z28wJBANnTTMb/jac+Q1SaqmWQnrpcmvuPZ/8xRM6xeSJh+MDpK768WpYe
-nivHvinQjQZBQmNM3IPYbJ33nTAdJylmFQsCQQCn4crATPAKOheRsJdO4RijWAM9
-EgfCJUtZVMPPDr0c0qqXujzGFwDo1y1TH5bEbZc8pATBmhzFHpRFzaf8oVQXAkAX
-Hch5GefDhuUIVn2c17MwneFIrxhfSbA+qzDqyDDo8BXXYQ/P/KHWjZUNxPciYcyU
-0zRXvaERRpTk5UMhrpavAkEAy4ZyhH1UViuWsmTQaRjc5mDs8aXkd2y85A7jnfWA
-8r7CL+sOe4TU1/CVyJf2FJaqHfD/GG6fqqeFoHuaqwTyiw==
+MIICXQIBAAKBgQCszBFwdCntewBEisBHA1Cdb1G3yXvdfu4pZ1uRm8fF5p1ZPmsz
+Jbd8OXyEed0VmOcnY5MQOjpAoN3QHm5g9B6k9x4KC4REd+cFFjmq3r0ex7zJ4U6M
+hhw/1s3j8mgCWxdTSVEpqInz0OFecQefFUcIQOmsSeQhrGUpCcqi3J6riQIDAQAB
+AoGAK7nYD+TVV0rw3mdeEJo+JBivTRqnRX2BNuj4uvf4rZOV7adl6SN6Mu05HSzZ
+TUXL+KOx60FQzFnox2lr9QzRU/LelLQ3H9fgVTVmGUCEAoDVRoWas8XlYGZsiHZ/
+yJn+9Z3yQYpufSb0LQiSt73sgrTNPu50gMxe/ZSAbSscyyECQQDV8juKzWmizlTh
++wVs/pihE0+BX1BRCsezs7FCdDEWle3XidBtYlYyUIm5wx6v8xM/F7Q/nwgymOnV
+A62PtfyjAkEAzsM3DsuJ9dG5n+EPTH3kDdfr0eYy76XPYz4HK8/FgiKPWy55BRCH
+biLcbDAe06olJiCzEvwggFigthrIqj0t4wJBALDTUi74c3SiADn+FI/vJQsMQMv2
+kRVKSZ/WxozcJ645IKjiOKgPfJp9QjeMcxKNXrzoxItIz6eyBqGONqbujO0CQQCh
+b6azdJR5TJEklfL+BGVlsas8rgIjP1FX6Xxr5sQNwbIwvW5cV/WGNs3n4wKOvZBX
+3rwzHIy76XdB+FOpKC+FAkBDVbicC19LE6+tBzOyx4uTEm3N7N8vh566VaOpok02
+Io7F/WYL7WSCXAtvmueWV+FJyVUMN1f2nWfWqaEXP2ag
 -----END RSA PRIVATE KEY-----
index b5c2531..b3712f7 100644 (file)
@@ -1,11 +1,11 @@
 extensions = x509v3
 [ x509v3 ]
 subjectAltName = DNS:localhost.nn
-keyUsage       = keyEncipherment
+keyUsage       = keyEncipherment,digitalSignature,keyAgreement
 extendedKeyUsage = serverAuth
 subjectKeyIdentifier = hash
 authorityKeyIdentifier = keyid
-basicConstraints = critical,CA:false
+basicConstraints = CA:false
 [ req ]
 default_bits                    = 1024
 distinguished_name              = req_DN
@@ -24,33 +24,32 @@ commonName_value              = localhost.nn
 # the certficate
 # some dhparam
 -----BEGIN RSA PRIVATE KEY-----
-MIICXgIBAAKBgQDT1E7bY1w/OjpeOAmU5k1wnQ2vSeaCXQe39c2g369x8c+/1Zq9
-r3x4XVU/FL27LA5zndaCmtXm9iFdCJKicV+AX1zO8MI3N3kPTT3U8oBtRzZF0dKL
-ei4ScUtHhvWMma/nDs+1yU16dfeydAxB46u7LJ1vVAgTWjrvfCf3PwsLcQIDAQAB
-AoGBALr1HQxAq8AaMj3KE5rZkOudkeBtxwaz+QYB6hTcl8pnc8aKTmKwKZlKNtzP
-/4zdG3wriJII+lU4UsX7tP+uNGxKxALrDQRuBPyi8XQfUT1nJth6qkp8g3V/ixfE
-Yah3od9dL3+xsOH28RKKUC5kjmnNupO9KQZ6/CyYfUHAEG+pAkEA+PP+7FIvpPQ+
-7bbG4IIqn7QKVxGbtaFY8pdLnsUkrnIqwEIbZoU12iEKm5qMoXNv30GknXrvxU53
-tdIZU5Z28wJBANnTTMb/jac+Q1SaqmWQnrpcmvuPZ/8xRM6xeSJh+MDpK768WpYe
-nivHvinQjQZBQmNM3IPYbJ33nTAdJylmFQsCQQCn4crATPAKOheRsJdO4RijWAM9
-EgfCJUtZVMPPDr0c0qqXujzGFwDo1y1TH5bEbZc8pATBmhzFHpRFzaf8oVQXAkAX
-Hch5GefDhuUIVn2c17MwneFIrxhfSbA+qzDqyDDo8BXXYQ/P/KHWjZUNxPciYcyU
-0zRXvaERRpTk5UMhrpavAkEAy4ZyhH1UViuWsmTQaRjc5mDs8aXkd2y85A7jnfWA
-8r7CL+sOe4TU1/CVyJf2FJaqHfD/GG6fqqeFoHuaqwTyiw==
+MIICXQIBAAKBgQCszBFwdCntewBEisBHA1Cdb1G3yXvdfu4pZ1uRm8fF5p1ZPmsz
+Jbd8OXyEed0VmOcnY5MQOjpAoN3QHm5g9B6k9x4KC4REd+cFFjmq3r0ex7zJ4U6M
+hhw/1s3j8mgCWxdTSVEpqInz0OFecQefFUcIQOmsSeQhrGUpCcqi3J6riQIDAQAB
+AoGAK7nYD+TVV0rw3mdeEJo+JBivTRqnRX2BNuj4uvf4rZOV7adl6SN6Mu05HSzZ
+TUXL+KOx60FQzFnox2lr9QzRU/LelLQ3H9fgVTVmGUCEAoDVRoWas8XlYGZsiHZ/
+yJn+9Z3yQYpufSb0LQiSt73sgrTNPu50gMxe/ZSAbSscyyECQQDV8juKzWmizlTh
++wVs/pihE0+BX1BRCsezs7FCdDEWle3XidBtYlYyUIm5wx6v8xM/F7Q/nwgymOnV
+A62PtfyjAkEAzsM3DsuJ9dG5n+EPTH3kDdfr0eYy76XPYz4HK8/FgiKPWy55BRCH
+biLcbDAe06olJiCzEvwggFigthrIqj0t4wJBALDTUi74c3SiADn+FI/vJQsMQMv2
+kRVKSZ/WxozcJ645IKjiOKgPfJp9QjeMcxKNXrzoxItIz6eyBqGONqbujO0CQQCh
+b6azdJR5TJEklfL+BGVlsas8rgIjP1FX6Xxr5sQNwbIwvW5cV/WGNs3n4wKOvZBX
+3rwzHIy76XdB+FOpKC+FAkBDVbicC19LE6+tBzOyx4uTEm3N7N8vh566VaOpok02
+Io7F/WYL7WSCXAtvmueWV+FJyVUMN1f2nWfWqaEXP2ag
 -----END RSA PRIVATE KEY-----
 Certificate:
     Data:
         Version: 3 (0x2)
-        Serial Number:
-            0b:98:94:fb:78:5f
-        Signature Algorithm: sha1WithRSAEncryption
+        Serial Number: 14269504311644 (0xcfa60bc515c)
+    Signature Algorithm: sha1WithRSAEncryption
         Issuer:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
-            commonName                = Nothern Nowhere Trust Anchor
+            commonName                = Northern Nowhere Trust Anchor
         Validity
-            Not Before: May 27 21:37:24 2010 GMT
-            Not After : Aug 13 21:37:24 2018 GMT
+            Not Before: Mar 21 15:07:11 2015 GMT
+            Not After : Jun  7 15:07:11 2023 GMT
         Subject:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
@@ -59,68 +58,63 @@ Certificate:
             Public Key Algorithm: rsaEncryption
                 Public-Key: (1024 bit)
                 Modulus:
-                    00:d3:d4:4e:db:63:5c:3f:3a:3a:5e:38:09:94:e6:
-                    4d:70:9d:0d:af:49:e6:82:5d:07:b7:f5:cd:a0:df:
-                    af:71:f1:cf:bf:d5:9a:bd:af:7c:78:5d:55:3f:14:
-                    bd:bb:2c:0e:73:9d:d6:82:9a:d5:e6:f6:21:5d:08:
-                    92:a2:71:5f:80:5f:5c:ce:f0:c2:37:37:79:0f:4d:
-                    3d:d4:f2:80:6d:47:36:45:d1:d2:8b:7a:2e:12:71:
-                    4b:47:86:f5:8c:99:af:e7:0e:cf:b5:c9:4d:7a:75:
-                    f7:b2:74:0c:41:e3:ab:bb:2c:9d:6f:54:08:13:5a:
-                    3a:ef:7c:27:f7:3f:0b:0b:71
+                    00:ac:cc:11:70:74:29:ed:7b:00:44:8a:c0:47:03:
+                    50:9d:6f:51:b7:c9:7b:dd:7e:ee:29:67:5b:91:9b:
+                    c7:c5:e6:9d:59:3e:6b:33:25:b7:7c:39:7c:84:79:
+                    dd:15:98:e7:27:63:93:10:3a:3a:40:a0:dd:d0:1e:
+                    6e:60:f4:1e:a4:f7:1e:0a:0b:84:44:77:e7:05:16:
+                    39:aa:de:bd:1e:c7:bc:c9:e1:4e:8c:86:1c:3f:d6:
+                    cd:e3:f2:68:02:5b:17:53:49:51:29:a8:89:f3:d0:
+                    e1:5e:71:07:9f:15:47:08:40:e9:ac:49:e4:21:ac:
+                    65:29:09:ca:a2:dc:9e:ab:89
                 Exponent: 65537 (0x10001)
         X509v3 extensions:
             X509v3 Subject Alternative Name: 
                 DNS:localhost.nn
             X509v3 Key Usage: 
-                Key Encipherment
+                Digital Signature, Key Encipherment, Key Agreement
             X509v3 Extended Key Usage: 
                 TLS Web Server Authentication
             X509v3 Subject Key Identifier: 
-                81:26:F9:75:CC:9C:2D:3C:36:64:68:41:F7:07:3C:66:86:E5:4A:C1
+                12:AF:44:46:B1:04:69:61:64:83:39:A2:BD:5D:97:2B:F4:1D:D4:6C
             X509v3 Authority Key Identifier: 
-                keyid:AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
 
-            X509v3 Basic Constraints: critical
+            X509v3 Basic Constraints: 
                 CA:FALSE
     Signature Algorithm: sha1WithRSAEncryption
-        65:05:8c:48:14:58:8c:1a:d4:95:67:1c:29:52:ed:5a:6e:14:
-        41:bc:2b:16:20:c4:89:3a:6e:cb:c1:ff:ab:61:79:5f:ce:27:
-        93:3c:ff:29:7a:25:68:00:27:04:f3:68:17:30:f0:fd:ff:09:
-        0e:15:2a:25:b1:45:18:93:ab:12:8e:0c:13:11:9a:b8:a4:75:
-        d0:17:1b:ca:f2:66:6b:73:15:dd:8b:bb:34:d6:70:dc:34:1b:
-        e7:7a:30:ea:50:50:2f:88:67:b3:f8:b3:55:62:44:7e:3e:df:
-        59:4f:a8:57:83:40:9f:bf:52:bf:fd:2c:18:6e:bd:0c:41:b7:
-        78:1c:9b:fa:c4:ff:c3:2b:46:a4:8f:0c:19:a7:3d:75:81:29:
-        6b:cf:07:f0:1d:65:d4:0e:19:51:87:92:a8:3d:7e:80:04:84:
-        ad:5e:4e:b6:ef:9a:02:c3:84:95:ec:c3:e8:a1:69:1f:42:cb:
-        da:63:1a:35:6f:d0:ba:62:9e:73:36:63:58:0f:cc:25:c8:59:
-        73:df:3b:c2:b9:5a:da:3d:e1:3f:0a:1f:0f:41:c4:88:2d:92:
-        06:88:d4:54:81:e1:12:57:53:ab:6b:f8:c8:90:3e:30:4c:f5:
-        72:cf:f0:d4:18:70:c1:78:85:30:9c:fe:94:f4:1b:c2:6c:14:
-        49:7a:0e:27
+         44:54:d7:d7:75:14:60:a5:1a:1d:1e:a9:dc:6f:b1:b1:d8:13:
+         e2:10:22:9a:f5:ca:b6:38:3c:d9:ac:2e:dc:ce:38:bc:cc:38:
+         a1:cc:a8:9c:73:37:f9:b6:a8:42:87:d9:80:21:45:81:43:9d:
+         73:3c:67:cf:cd:c5:c3:91:df:60:6b:6d:69:f9:be:a1:92:cc:
+         5d:ea:bc:67:f3:c7:bc:ea:41:d1:11:7b:e3:f1:b8:a7:8d:9a:
+         d0:23:6c:df:0e:2a:35:98:50:c1:a6:8b:d2:07:aa:a6:2f:cb:
+         98:a9:a3:8d:a0:8c:87:ab:ec:e1:c5:0b:25:e2:e9:a9:08:13:
+         30:86:1b:e5:b6:ac:03:85:35:0c:9a:5d:5b:82:c4:04:6a:05:
+         4c:f3:f7:b3:b5:ac:92:3b:46:71:a8:7f:54:c7:96:37:dc:38:
+         2c:a2:18:23:10:00:de:f8:21:40:52:99:94:ad:b2:b6:e5:87:
+         8e:29:0b:3b:b3:8a:52:67:54:dc:0a:e9:75:60:33:ff:13:9a:
+         61:a4:15:0c:d0:6f:de:0d:06:23:a8:44:ad:f0:68:60:93:6b:
+         75:06:24:5b:47:9a:b9:3a:ef:d9:4f:df:31:d5:65:3a:e2:94:
+         03:be:88:94:49:7c:6a:d0:da:c0:d0:62:81:f5:61:50:96:5a:
+         d0:ee:22:39
 -----BEGIN CERTIFICATE-----
-MIIDRzCCAi+gAwIBAgIGC5iU+3hfMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDRTCCAi2gAwIBAgIGDPpgvFFcMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
 Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzcyNFoXDTE4MDgxMzIxMzcyNFowVzELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-FTATBgNVBAMMDGxvY2FsaG9zdC5ubjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
-gYEA09RO22NcPzo6XjgJlOZNcJ0Nr0nmgl0Ht/XNoN+vcfHPv9Wava98eF1VPxS9
-uywOc53WgprV5vYhXQiSonFfgF9czvDCNzd5D0091PKAbUc2RdHSi3ouEnFLR4b1
-jJmv5w7PtclNenX3snQMQeOruyydb1QIE1o673wn9z8LC3ECAwEAAaOBjDCBiTAX
-BgNVHREEEDAOggxsb2NhbGhvc3Qubm4wCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoG
-CCsGAQUFBwMBMB0GA1UdDgQWBBSBJvl1zJwtPDZkaEH3BzxmhuVKwTAfBgNVHSME
-GDAWgBStPuI5B7hcqiaQlEwmaSGD4k42lDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3
-DQEBBQUAA4IBAQBlBYxIFFiMGtSVZxwpUu1abhRBvCsWIMSJOm7Lwf+rYXlfzieT
-PP8peiVoACcE82gXMPD9/wkOFSolsUUYk6sSjgwTEZq4pHXQFxvK8mZrcxXdi7s0
-1nDcNBvnejDqUFAviGez+LNVYkR+Pt9ZT6hXg0Cfv1K//SwYbr0MQbd4HJv6xP/D
-K0akjwwZpz11gSlrzwfwHWXUDhlRh5KoPX6ABIStXk6275oCw4SV7MPooWkfQsva
-Yxo1b9C6Yp5zNmNYD8wlyFlz3zvCuVraPeE/Ch8PQcSILZIGiNRUgeESV1Ora/jI
-kD4wTPVyz/DUGHDBeIUwnP6U9BvCbBRJeg4n
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFcxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
+AoGBAKzMEXB0Ke17AESKwEcDUJ1vUbfJe91+7ilnW5Gbx8XmnVk+azMlt3w5fIR5
+3RWY5ydjkxA6OkCg3dAebmD0HqT3HgoLhER35wUWOarevR7HvMnhToyGHD/WzePy
+aAJbF1NJUSmoifPQ4V5xB58VRwhA6axJ5CGsZSkJyqLcnquJAgMBAAGjgYkwgYYw
+FwYDVR0RBBAwDoIMbG9jYWxob3N0Lm5uMAsGA1UdDwQEAwIDqDATBgNVHSUEDDAK
+BggrBgEFBQcDATAdBgNVHQ4EFgQUEq9ERrEEaWFkgzmivV2XK/Qd1GwwHwYDVR0j
+BBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADANBgkqhkiG9w0B
+AQUFAAOCAQEARFTX13UUYKUaHR6p3G+xsdgT4hAimvXKtjg82awu3M44vMw4ocyo
+nHM3+baoQofZgCFFgUOdczxnz83Fw5HfYGttafm+oZLMXeq8Z/PHvOpB0RF74/G4
+p42a0CNs3w4qNZhQwaaL0geqpi/LmKmjjaCMh6vs4cULJeLpqQgTMIYb5basA4U1
+DJpdW4LEBGoFTPP3s7WskjtGcah/VMeWN9w4LKIYIxAA3vghQFKZlK2ytuWHjikL
+O7OKUmdU3ArpdWAz/xOaYaQVDNBv3g0GI6hErfBoYJNrdQYkW0eauTrv2U/fMdVl
+OuKUA76IlEl8atDawNBigfVhUJZa0O4iOQ==
 -----END CERTIFICATE-----
------BEGIN DH PARAMETERS-----
-MIGHAoGBAPrtEVPhZfEczB9JnWXbln79YnTh/V6ehXMWe414wyn/VT1ow25sLEev
-H2+eT84aDp5e+TfBSFjA6or96/lyQvsgAE+cE6f6uuw9ApVG2MK+BCn4snxHBb6G
-LFQf+9qHZ4BEkpBL60p1fkGu8BM1wXGXEaeYhgGumNA9fm5YJrl7AgEC
------END DH PARAMETERS-----
index e515ea1..399e38a 100644 (file)
@@ -1,11 +1,11 @@
 extensions = x509v3
 [ x509v3 ]
 subjectAltName = DNS:localhost.nn
-keyUsage       = keyEncipherment
+keyUsage       = keyEncipherment,digitalSignature,keyAgreement
 extendedKeyUsage = serverAuth
 subjectKeyIdentifier = hash
 authorityKeyIdentifier = keyid
-basicConstraints = critical,CA:false
+basicConstraints = CA:false
 [ req ]
 default_bits                    = 1024
 distinguished_name              = req_DN
index b67ab96..68b64eb 100644 (file)
Binary files a/tests/certs/Server-localhost.nn-sv.pub.der and b/tests/certs/Server-localhost.nn-sv.pub.der differ
index 3131e95..a59a0e6 100644 (file)
@@ -1,6 +1,6 @@
 -----BEGIN PUBLIC KEY-----
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDT1E7bY1w/OjpeOAmU5k1wnQ2v
-SeaCXQe39c2g369x8c+/1Zq9r3x4XVU/FL27LA5zndaCmtXm9iFdCJKicV+AX1zO
-8MI3N3kPTT3U8oBtRzZF0dKLei4ScUtHhvWMma/nDs+1yU16dfeydAxB46u7LJ1v
-VAgTWjrvfCf3PwsLcQIDAQAB
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCszBFwdCntewBEisBHA1Cdb1G3
+yXvdfu4pZ1uRm8fF5p1ZPmszJbd8OXyEed0VmOcnY5MQOjpAoN3QHm5g9B6k9x4K
+C4REd+cFFjmq3r0ex7zJ4U6Mhhw/1s3j8mgCWxdTSVEpqInz0OFecQefFUcIQOms
+SeQhrGUpCcqi3J6riQIDAQAB
 -----END PUBLIC KEY-----
index 87a1859..319af89 100644 (file)
@@ -1,14 +1,22 @@
 -----BEGIN X509 CRL-----
-MIICDTCB9gIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJOTjExMC8GA1UE
-CgwoRWRlbCBDdXJsIEFyY3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDElMCMG
-A1UEAwwcTm90aGVybiBOb3doZXJlIFRydXN0IEFuY2hvchcNMTAwNTI3MjEzNzU0
-WhcNMTAwNjI2MjEzNzU0WjBLMBcCBguYlPl8ahcNMTAwNTI3MjEzNzExWjAXAgYL
-mJT7eF8XDTEwMDUyNzIxMzcyNFowFwIGC5iVAAx+Fw0xMDA1MjcyMTM3NTRaoA4w
-DDAKBgNVHRQEAwIBATANBgkqhkiG9w0BAQUFAAOCAQEAWBL4VhArwJkUv91oyMIo
-xyyRmVl+1oY5IjEpLGd+mNIgqXuljQmbp8cS8A+jWinJPOWZqvsHa+mLCl4OuwhP
-JbAtIQ22OQRaVqWRuguG2T1sh3Dd7a1GcupIGKc/zgnY45D4pY4UNZv+KmY3bF0S
-83zn6YoQtBTzF9y2Nq5R0UTdxl6+j5swpo1ttvQPz40yqIlmjmW/llkaD4UBaegl
-zSxmnR5xCjAR7nYm+HyWW9SLSWGptUOd32B9TPJPLDhJa9lfBb8H9l5k7kx9ECJG
-LyujleeXIucfqOgE2cB0zCjExqrGWRp8ZgEWfpdSkDEpXBCDo88TA3dIr2f3Zxwp
-QA==
+MIIDoTCCAokCAQEwDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCTk4xMTAvBgNV
+BAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJjAk
+BgNVBAMMHU5vcnRoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yFw0xNTAzMjExNTA3
+MTFaFw0xNTA0MjAxNTA3MTFaMIIB2zAXAgYM+ly45CIXDTE1MDMyMTEzMTQ1N1ow
+FwIGDPpcwXH8Fw0xNTAzMjExMzE1NTNaMBcCBgz6XO7ujBcNMTUwMzIxMTMyMDUx
+WjAXAgYM+lzu7p0XDTE1MDMyMTEzMjA1MVowFwIGDPpc7u6uFw0xNTAzMjExMzIw
+NTFaMBcCBgz6XZyD1RcNMTUwMzIxMTMzOTQ5WjAXAgYM+l4OXa8XDTE1MDMyMTEz
+NTIxNVowFwIGDPpeJlPZFw0xNTAzMjExMzU0NTJaMBcCBgz6XiZT6hcNMTUwMzIx
+MTM1NDUyWjAXAgYM+l4mU/sXDTE1MDMyMTEzNTQ1MlowFwIGDPpemKKEFw0xNTAz
+MjExNDA3MjFaMBcCBgz6XpiilRcNMTUwMzIxMTQwNzIxWjAXAgYM+l6YoqYXDTE1
+MDMyMTE0MDcyMVowFwIGDPpffssxFw0xNTAzMjExNDMyMzBaMBcCBgz6X37yUxcN
+MTUwMzIxMTQzMjMxWjAXAgYM+l9+8mYXDTE1MDMyMTE0MzIzMVowFwIGDPpgvFFL
+Fw0xNTAzMjExNTA3MTFaMBcCBgz6YLxRXBcNMTUwMzIxMTUwNzExWjAXAgYM+mC8
+UW4XDTE1MDMyMTE1MDcxMVqgDjAMMAoGA1UdFAQDAgEBMA0GCSqGSIb3DQEBBQUA
+A4IBAQDER99gBe9w8a9X1pQQnzC87kYnW7R0K8wFr4KqCYP0De8tKxhCGrXaoQDK
+AvHQcT3RpCR5PAK5J1InxlCumJJjvo39OLTsaCbSyoynmAMGCXS0earSL83biquG
+jJ29ROXukT3fGE6HO+cKAaHyHeJa6OZEibmCvCls/YvvQTW2jlceOZmi22AL3jYN
+w6UVHRpbHDHupF5YxhwFG1GVTOd9cuik8CqVxPkOfIxeQbEV+qEiDWzjyy2aU3X7
+dLhZE47P5tYgb8nIsXb5PATqiK9vdv4EOyVKiiCmyFemrGGU7MqbTtTjJVB9nS2R
+QMWLS24xr3IcHt7FOX1w8UF/GXiP
 -----END X509 CRL-----
index 0dcb5df..b00859a 100644 (file)
@@ -1,16 +1,15 @@
 Certificate:
     Data:
         Version: 3 (0x2)
-        Serial Number:
-            0b:98:95:00:0c:7e
-        Signature Algorithm: sha1WithRSAEncryption
+        Serial Number: 14269504311662 (0xcfa60bc516e)
+    Signature Algorithm: sha1WithRSAEncryption
         Issuer:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
-            commonName                = Nothern Nowhere Trust Anchor
+            commonName                = Northern Nowhere Trust Anchor
         Validity
-            Not Before: May 27 21:37:54 2010 GMT
-            Not After : Aug 13 21:37:54 2018 GMT
+            Not Before: Mar 21 15:07:11 2015 GMT
+            Not After : Jun  7 15:07:11 2023 GMT
         Subject:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
@@ -19,63 +18,63 @@ Certificate:
             Public Key Algorithm: rsaEncryption
                 Public-Key: (1024 bit)
                 Modulus:
-                    00:cc:a9:91:2b:22:e8:90:2b:e5:4c:dc:ae:6d:da:
-                    4c:f3:32:cc:a5:68:67:5a:3b:b9:86:a3:95:88:3e:
-                    e8:63:c3:ed:00:60:19:03:2b:5d:5b:56:8a:da:21:
-                    5e:71:5c:d1:e3:de:51:18:c1:17:14:b1:33:90:00:
-                    5c:9a:e5:73:0b:a8:88:9c:d0:0b:54:bc:ea:3a:39:
-                    dd:f6:65:81:4b:29:99:4c:71:d3:f7:69:7f:80:e8:
-                    e8:6d:61:41:83:87:eb:ac:2c:bd:0f:eb:1b:fd:a2:
-                    37:97:6d:31:56:ba:4b:51:dd:b1:01:eb:89:f8:25:
-                    de:5b:a3:e5:b2:3f:4c:77:53
+                    00:e3:c7:52:fb:7d:02:b1:a7:0b:4c:2d:a6:2a:b0:
+                    57:6b:5e:0b:f9:9e:4b:e7:d0:ac:55:43:47:fa:b1:
+                    e0:fc:b0:63:30:84:31:f5:95:44:90:9a:b7:22:01:
+                    6f:c7:17:16:be:5a:19:ee:47:35:90:a5:5e:27:ba:
+                    86:47:3b:c5:63:d2:f2:c6:a1:db:ac:be:b1:2f:4c:
+                    c2:98:86:19:72:d5:f9:12:45:09:bc:23:e2:00:eb:
+                    4d:ba:99:71:b5:4a:fb:49:8c:4d:f3:0b:4e:cf:48:
+                    7b:c8:06:37:92:35:ff:bb:4f:ea:98:af:13:ac:a8:
+                    cd:9f:a7:e0:78:db:15:bc:3b
                 Exponent: 65537 (0x10001)
         X509v3 extensions:
             X509v3 Subject Alternative Name: 
                 DNS:localhost
             X509v3 Key Usage: 
-                Key Encipherment
+                Digital Signature, Key Encipherment, Key Agreement
             X509v3 Extended Key Usage: 
                 TLS Web Server Authentication
             X509v3 Subject Key Identifier: 
-                3B:2B:84:0D:23:3C:46:F9:9B:E5:C2:FA:B7:30:E7:AC:E3:ED:09:C3
+                23:D7:CE:D8:B2:D0:F8:8E:3C:82:26:6C:F1:F5:2A:8A:48:90:58:66
             X509v3 Authority Key Identifier: 
-                keyid:AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
 
-            X509v3 Basic Constraints: critical
+            X509v3 Basic Constraints: 
                 CA:FALSE
     Signature Algorithm: sha1WithRSAEncryption
-        a2:fa:61:4e:c0:10:1f:f8:38:2c:fd:a6:74:85:df:8e:ee:41:
-        90:a1:d7:c9:32:65:5d:61:d5:13:51:3b:11:1c:7b:01:06:70:
-        9f:93:52:54:15:bd:93:3a:f8:40:e3:e2:ab:01:96:fb:73:c5:
-        42:2c:ad:ce:e8:52:57:db:b6:15:90:75:e3:e5:75:99:b0:83:
-        ed:b0:fc:f2:d0:d9:3d:68:1c:d9:b4:cd:a1:a9:40:19:44:46:
-        14:8b:11:6e:2e:1c:65:85:73:45:f0:8b:4f:ea:01:2d:61:0f:
-        ae:0d:70:0c:d3:3c:1c:1f:24:66:a3:0b:62:d1:87:1e:8e:96:
-        f6:43:cf:1c:24:e7:94:d0:7e:b0:ee:1b:6f:14:1f:04:35:e8:
-        fc:3c:c8:9e:e3:6e:0e:4c:7d:a9:23:97:2d:6e:b1:4d:e3:05:
-        1b:ce:86:2f:2f:b3:c9:60:47:58:ac:ea:4c:cb:c2:7b:0f:08:
-        b8:a7:90:e7:22:32:70:f6:09:3e:f9:54:94:b0:37:50:22:60:
-        49:1c:84:9e:1a:22:0c:3e:a9:16:7c:5e:b1:50:13:6b:82:14:
-        d3:8a:3d:4d:ed:18:ca:40:59:d6:b9:72:9f:64:e5:0b:e7:a6:
-        b8:ee:29:b5:6a:ec:82:b2:94:56:36:e3:87:b3:07:aa:69:b8:
-        2c:ef:0c:14
+         28:b9:77:ea:4a:8d:d6:a5:fb:72:5b:d6:cd:60:40:33:56:bf:
+         dd:23:ff:bf:e8:2e:10:cd:30:ab:24:a4:43:d8:98:71:e3:59:
+         66:3e:38:bd:b8:fb:19:1a:13:8f:a1:c8:39:93:b5:83:8d:62:
+         52:a9:7a:5b:0d:69:47:40:5c:51:4c:3a:be:a7:c9:5f:7b:93:
+         49:20:59:23:30:7c:d9:4a:dd:29:2c:ed:96:fd:cb:b8:13:ff:
+         36:2c:27:ce:28:c3:a6:d0:d8:ba:8c:38:9f:78:ff:54:c7:76:
+         05:37:47:f5:d3:55:9c:2c:12:41:81:14:ca:48:a2:b7:6d:05:
+         49:2b:c5:f5:7b:63:6d:6f:cd:3f:f4:8d:74:51:07:ff:e1:40:
+         d5:96:60:d8:c8:38:5a:15:f9:c5:fd:e1:5e:a3:02:95:90:4b:
+         fc:8a:42:de:72:31:72:3d:dd:a2:df:19:42:c8:fa:a8:77:11:
+         67:e6:64:8c:d0:fd:45:fd:f0:49:8c:e1:85:e6:f5:1f:47:c6:
+         ae:f2:70:c3:e8:99:d0:cd:9d:88:6b:33:ba:b9:65:3d:f4:b1:
+         f4:d0:3c:76:9c:18:9e:9e:c8:62:29:43:8e:f7:2f:2c:12:37:
+         39:02:26:4e:4b:b0:14:30:80:bb:2d:cc:fc:93:dc:c9:8b:c0:
+         69:12:71:36
 -----BEGIN CERTIFICATE-----
-MIIDQzCCAiugAwIBAgIGC5iVAAx+MA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDQTCCAimgAwIBAgIGDPpgvFFuMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
 Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzc1NFoXDTE4MDgxMzIxMzc1NFowVDELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-EjAQBgNVBAMMCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-zKmRKyLokCvlTNyubdpM8zLMpWhnWju5hqOViD7oY8PtAGAZAytdW1aK2iFecVzR
-495RGMEXFLEzkABcmuVzC6iInNALVLzqOjnd9mWBSymZTHHT92l/gOjobWFBg4fr
-rCy9D+sb/aI3l20xVrpLUd2xAeuJ+CXeW6Plsj9Md1MCAwEAAaOBizCBiDAWBgNV
-HREEDzANggtsb2NhbGhvc3QAaDALBgNVHQ8EBAMCBSAwEwYDVR0lBAwwCgYIKwYB
-BQUHAwEwHQYDVR0OBBYEFDsrhA0jPEb5m+XC+rcw56zj7QnDMB8GA1UdIwQYMBaA
-FK0+4jkHuFyqJpCUTCZpIYPiTjaUMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEF
-BQADggEBAKL6YU7AEB/4OCz9pnSF347uQZCh18kyZV1h1RNROxEcewEGcJ+TUlQV
-vZM6+EDj4qsBlvtzxUIsrc7oUlfbthWQdePldZmwg+2w/PLQ2T1oHNm0zaGpQBlE
-RhSLEW4uHGWFc0Xwi0/qAS1hD64NcAzTPBwfJGajC2LRhx6OlvZDzxwk55TQfrDu
-G28UHwQ16Pw8yJ7jbg5Mfakjly1usU3jBRvOhi8vs8lgR1is6kzLwnsPCLinkOci
-MnD2CT75VJSwN1AiYEkchJ4aIgw+qRZ8XrFQE2uCFNOKPU3tGMpAWda5cp9k5Qvn
-prjuKbVq7IKylFY244ezB6ppuCzvDBQ=
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFQxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRIwEAYDVQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
+AOPHUvt9ArGnC0wtpiqwV2teC/meS+fQrFVDR/qx4PywYzCEMfWVRJCatyIBb8cX
+Fr5aGe5HNZClXie6hkc7xWPS8sah26y+sS9MwpiGGXLV+RJFCbwj4gDrTbqZcbVK
++0mMTfMLTs9Ie8gGN5I1/7tP6pivE6yozZ+n4HjbFbw7AgMBAAGjgYgwgYUwFgYD
+VR0RBA8wDYILbG9jYWxob3N0AGgwCwYDVR0PBAQDAgOoMBMGA1UdJQQMMAoGCCsG
+AQUFBwMBMB0GA1UdDgQWBBQj187YstD4jjyCJmzx9SqKSJBYZjAfBgNVHSMEGDAW
+gBQSyrpLRgSndYos6A5UlLwSZaZ7zjAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBBQUA
+A4IBAQAouXfqSo3WpftyW9bNYEAzVr/dI/+/6C4QzTCrJKRD2Jhx41lmPji9uPsZ
+GhOPocg5k7WDjWJSqXpbDWlHQFxRTDq+p8lfe5NJIFkjMHzZSt0pLO2W/cu4E/82
+LCfOKMOm0Ni6jDifeP9Ux3YFN0f101WcLBJBgRTKSKK3bQVJK8X1e2Ntb80/9I10
+UQf/4UDVlmDYyDhaFfnF/eFeowKVkEv8ikLecjFyPd2i3xlCyPqodxFn5mSM0P1F
+/fBJjOGF5vUfR8au8nDD6JnQzZ2IazO6uWU99LH00Dx2nBienshiKUOO9y8sEjc5
+AiZOS7AUMIC7Lcz8k9zJi8BpEnE2
 -----END CERTIFICATE-----
index edf776f..d075157 100644 (file)
@@ -1,11 +1,11 @@
 -----BEGIN CERTIFICATE REQUEST-----
 MIIBkzCB/QIBADBUMQswCQYDVQQGEwJOTjExMC8GA1UECgwoRWRlbCBDdXJsIEFy
 Y3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDESMBAGA1UEAwwJbG9jYWxob3N0
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMqZErIuiQK+VM3K5t2kzzMsyl
-aGdaO7mGo5WIPuhjw+0AYBkDK11bVoraIV5xXNHj3lEYwRcUsTOQAFya5XMLqIic
-0AtUvOo6Od32ZYFLKZlMcdP3aX+A6OhtYUGDh+usLL0P6xv9ojeXbTFWuktR3bEB
-64n4Jd5bo+WyP0x3UwIDAQABoAAwDQYJKoZIhvcNAQELBQADgYEAPor+2apn3kPJ
-ZdjyyT/iXETRTrN87PuBaujcV+oVeVSWW+YgGUzDHi+RkEKTxWdz3leW2goE41X9
-2D/n66ASQGs1x8wXwIMIX83MjkWtjqdfcrJVi1l6T7NjzZt6EyJdvreRntCUu8zc
-J5tK3rl/tIeudKUE2COc0Ngu9JUB1j8=
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjx1L7fQKxpwtMLaYqsFdrXgv5
+nkvn0KxVQ0f6seD8sGMwhDH1lUSQmrciAW/HFxa+WhnuRzWQpV4nuoZHO8Vj0vLG
+odusvrEvTMKYhhly1fkSRQm8I+IA6026mXG1SvtJjE3zC07PSHvIBjeSNf+7T+qY
+rxOsqM2fp+B42xW8OwIDAQABoAAwDQYJKoZIhvcNAQELBQADgYEAC6NxWuiENuj/
+oPsopZy/tVZzbioXZP/S9ECCbdgy33bg9zKwQYLeHOSgXxJzES+RhJwQCliFV17j
+jM1CH7heggwkPAx5KelyZ20DeoeaYOi/xv7TjozrZ+EkmivHKBJi3+qNjNYH0ul9
+HhQBO5+sSDAGLMkWL/nAfYKbf/8KSvA=
 -----END CERTIFICATE REQUEST-----
index 14be0ba..93642f4 100644 (file)
Binary files a/tests/certs/Server-localhost0h-sv.der and b/tests/certs/Server-localhost0h-sv.der differ
index 99e6107..e69de29 100644 (file)
@@ -1,5 +0,0 @@
------BEGIN DH PARAMETERS-----
-MIGHAoGBAL/3hRxvWX+Mdyu/aBPU1JeeA5sg4nXtA7B24eCql9Tq53Lks1/HJ5B+
-xSapGAFd+22xhBsNkJihf74oiPEVr9nNoLjFV/DZe259+JYgs+pBTFN+Cp13ALUi
-CeZxX2mlxlstD1SBRTKgxA/j4ttR1Chn8knn+RVdFE9YFKCYPyLrAgEC
------END DH PARAMETERS-----
index 95c4666..5fcc9c5 100644 (file)
@@ -1,15 +1,15 @@
 -----BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDMqZErIuiQK+VM3K5t2kzzMsylaGdaO7mGo5WIPuhjw+0AYBkD
-K11bVoraIV5xXNHj3lEYwRcUsTOQAFya5XMLqIic0AtUvOo6Od32ZYFLKZlMcdP3
-aX+A6OhtYUGDh+usLL0P6xv9ojeXbTFWuktR3bEB64n4Jd5bo+WyP0x3UwIDAQAB
-AoGAGT+OBilPUYHoztumtSyqM5J/xqQjo/EcSSzjJKTGHJCuK06vp0FxSfRaOuDE
-+u09g4QIsyoXA9l8h/ZTdlR6Jax5nc+iRFs/21isrgKAsZYj4DghjgXJ9LWGHXnb
-7xstVFkFBGnOaeY7dVr54907TYUQwtJg4fk7Vror05gb1qECQQDykAxr2D/CxLk9
-RjWDi/P6JnfF0ZxZzCe0yATvuZ89+rpWQ5uxEJDq5FqwW4QXX+0G2aWDv64YExPS
-JmWQTlojAkEA2AAHDv2KBWFcXeTlWnKZTdzUOniE8PzS5zipi2ssiqXScrj9NX2U
-yCCOkv/42blPXBKbaVnfWBEhtj7pQxHJEQJBAOTvXjnfVXafs/IINPPegLyF2B/G
-EZqTXJp8+mPEP28BGSPYFbdN2mlIc+vlxEtHh3AitdweatNgFiIPiWZk/R8CQEIf
-EAoYtw2alknv7f3YIvHg7d7QUfHrkyxQ/iW9sy7mQBv6YRjkzozM2phJX4ZW4eJP
-l9+SMXqmE+nULFfps+ECQFVkjPDF065x++Fh3BVtNJ0goYStTJM6IcmYKflap+Ux
-cORZUWJ8tvDavlSSwQQYK8kOVTINC6iFwwEQ41HlYLE=
+MIICXAIBAAKBgQDjx1L7fQKxpwtMLaYqsFdrXgv5nkvn0KxVQ0f6seD8sGMwhDH1
+lUSQmrciAW/HFxa+WhnuRzWQpV4nuoZHO8Vj0vLGodusvrEvTMKYhhly1fkSRQm8
+I+IA6026mXG1SvtJjE3zC07PSHvIBjeSNf+7T+qYrxOsqM2fp+B42xW8OwIDAQAB
+AoGAHdkk2qfLDpShOl5RBA8PpZYxY4iG0d3ad2HVsNhWb0Z9+QGZumDRF1Hu5Zni
+l+hCprcP5tWWA1poODSNHBCNEQRYZcHrfZlh+sDiV6ZmexBg7x9D5azyRbn20vr1
+79UxmisRxnDQQHCfOmgZtgs1EZXnFOs0OotoZAHFr+GLtQECQQD+R2TaWMCEPKJc
+IswGBqLGL8cyy+v2d5Glt5l+xzb/KCdY9cbOR/B9wq//0Nvqyiq1I1jUBVw9NJi/
+eBx/OYxhAkEA5VIC6uMpIck0Qxpbj7/H3k2pBf1HROgmLEq+cVLFgY62CIpTgleO
+SAzTmn0vDXir0jQHJn+JTokvn0PxyNquGwJBAJW+77rSl5WIq8j8yRAnakayrmnQ
+w8ZjBggExsVthorfV8TBAPJMVWmKdOF/W3O62UnRZid+fKKize28S3P1LSECQDF8
+3FJSSWsYH6YnhwDjkz9fJQ281eeB7dL7IlQUV7kY0iHPsCvdtz/HPNcHEuNmWjYX
+sj9VoI0JP/Sv1frRbmcCQDPaeWowPGf1Xtj0oTSlA6KQsKZPO7t15nivgX/AnZWQ
+01l8q6GPHeYwyG/caD3BZwAavsVLg9nhKx0lf0wExM0=
 -----END RSA PRIVATE KEY-----
diff --git a/tests/certs/Server-localhost0h-sv.p12 b/tests/certs/Server-localhost0h-sv.p12
deleted file mode 100644 (file)
index 82e03c7..0000000
Binary files a/tests/certs/Server-localhost0h-sv.p12 and /dev/null differ
index 45be9c3..a953370 100644 (file)
@@ -2,11 +2,11 @@ extensions = x509v3
 [ x509v3 ]
 #subjectAltName = DNS:localhost\0h
 subjectAltName = DER:30:0d:82:0b:6c:6f:63:61:6c:68:6f:73:74:00:68
-keyUsage       = keyEncipherment
+keyUsage       = keyEncipherment,digitalSignature,keyAgreement
 extendedKeyUsage = serverAuth
 subjectKeyIdentifier = hash
 authorityKeyIdentifier = keyid
-basicConstraints = critical,CA:false
+basicConstraints = CA:false
 [ req ]
 default_bits                    = 1024
 distinguished_name              = req_DN
@@ -25,33 +25,32 @@ commonName_value              = localhost
 # the certificate
 # some dhparam
 -----BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDMqZErIuiQK+VM3K5t2kzzMsylaGdaO7mGo5WIPuhjw+0AYBkD
-K11bVoraIV5xXNHj3lEYwRcUsTOQAFya5XMLqIic0AtUvOo6Od32ZYFLKZlMcdP3
-aX+A6OhtYUGDh+usLL0P6xv9ojeXbTFWuktR3bEB64n4Jd5bo+WyP0x3UwIDAQAB
-AoGAGT+OBilPUYHoztumtSyqM5J/xqQjo/EcSSzjJKTGHJCuK06vp0FxSfRaOuDE
-+u09g4QIsyoXA9l8h/ZTdlR6Jax5nc+iRFs/21isrgKAsZYj4DghjgXJ9LWGHXnb
-7xstVFkFBGnOaeY7dVr54907TYUQwtJg4fk7Vror05gb1qECQQDykAxr2D/CxLk9
-RjWDi/P6JnfF0ZxZzCe0yATvuZ89+rpWQ5uxEJDq5FqwW4QXX+0G2aWDv64YExPS
-JmWQTlojAkEA2AAHDv2KBWFcXeTlWnKZTdzUOniE8PzS5zipi2ssiqXScrj9NX2U
-yCCOkv/42blPXBKbaVnfWBEhtj7pQxHJEQJBAOTvXjnfVXafs/IINPPegLyF2B/G
-EZqTXJp8+mPEP28BGSPYFbdN2mlIc+vlxEtHh3AitdweatNgFiIPiWZk/R8CQEIf
-EAoYtw2alknv7f3YIvHg7d7QUfHrkyxQ/iW9sy7mQBv6YRjkzozM2phJX4ZW4eJP
-l9+SMXqmE+nULFfps+ECQFVkjPDF065x++Fh3BVtNJ0goYStTJM6IcmYKflap+Ux
-cORZUWJ8tvDavlSSwQQYK8kOVTINC6iFwwEQ41HlYLE=
+MIICXAIBAAKBgQDjx1L7fQKxpwtMLaYqsFdrXgv5nkvn0KxVQ0f6seD8sGMwhDH1
+lUSQmrciAW/HFxa+WhnuRzWQpV4nuoZHO8Vj0vLGodusvrEvTMKYhhly1fkSRQm8
+I+IA6026mXG1SvtJjE3zC07PSHvIBjeSNf+7T+qYrxOsqM2fp+B42xW8OwIDAQAB
+AoGAHdkk2qfLDpShOl5RBA8PpZYxY4iG0d3ad2HVsNhWb0Z9+QGZumDRF1Hu5Zni
+l+hCprcP5tWWA1poODSNHBCNEQRYZcHrfZlh+sDiV6ZmexBg7x9D5azyRbn20vr1
+79UxmisRxnDQQHCfOmgZtgs1EZXnFOs0OotoZAHFr+GLtQECQQD+R2TaWMCEPKJc
+IswGBqLGL8cyy+v2d5Glt5l+xzb/KCdY9cbOR/B9wq//0Nvqyiq1I1jUBVw9NJi/
+eBx/OYxhAkEA5VIC6uMpIck0Qxpbj7/H3k2pBf1HROgmLEq+cVLFgY62CIpTgleO
+SAzTmn0vDXir0jQHJn+JTokvn0PxyNquGwJBAJW+77rSl5WIq8j8yRAnakayrmnQ
+w8ZjBggExsVthorfV8TBAPJMVWmKdOF/W3O62UnRZid+fKKize28S3P1LSECQDF8
+3FJSSWsYH6YnhwDjkz9fJQ281eeB7dL7IlQUV7kY0iHPsCvdtz/HPNcHEuNmWjYX
+sj9VoI0JP/Sv1frRbmcCQDPaeWowPGf1Xtj0oTSlA6KQsKZPO7t15nivgX/AnZWQ
+01l8q6GPHeYwyG/caD3BZwAavsVLg9nhKx0lf0wExM0=
 -----END RSA PRIVATE KEY-----
 Certificate:
     Data:
         Version: 3 (0x2)
-        Serial Number:
-            0b:98:95:00:0c:7e
-        Signature Algorithm: sha1WithRSAEncryption
+        Serial Number: 14269504311662 (0xcfa60bc516e)
+    Signature Algorithm: sha1WithRSAEncryption
         Issuer:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
-            commonName                = Nothern Nowhere Trust Anchor
+            commonName                = Northern Nowhere Trust Anchor
         Validity
-            Not Before: May 27 21:37:54 2010 GMT
-            Not After : Aug 13 21:37:54 2018 GMT
+            Not Before: Mar 21 15:07:11 2015 GMT
+            Not After : Jun  7 15:07:11 2023 GMT
         Subject:
             countryName               = NN
             organizationName          = Edel Curl Arctic Illudium Research Cloud
@@ -60,68 +59,63 @@ Certificate:
             Public Key Algorithm: rsaEncryption
                 Public-Key: (1024 bit)
                 Modulus:
-                    00:cc:a9:91:2b:22:e8:90:2b:e5:4c:dc:ae:6d:da:
-                    4c:f3:32:cc:a5:68:67:5a:3b:b9:86:a3:95:88:3e:
-                    e8:63:c3:ed:00:60:19:03:2b:5d:5b:56:8a:da:21:
-                    5e:71:5c:d1:e3:de:51:18:c1:17:14:b1:33:90:00:
-                    5c:9a:e5:73:0b:a8:88:9c:d0:0b:54:bc:ea:3a:39:
-                    dd:f6:65:81:4b:29:99:4c:71:d3:f7:69:7f:80:e8:
-                    e8:6d:61:41:83:87:eb:ac:2c:bd:0f:eb:1b:fd:a2:
-                    37:97:6d:31:56:ba:4b:51:dd:b1:01:eb:89:f8:25:
-                    de:5b:a3:e5:b2:3f:4c:77:53
+                    00:e3:c7:52:fb:7d:02:b1:a7:0b:4c:2d:a6:2a:b0:
+                    57:6b:5e:0b:f9:9e:4b:e7:d0:ac:55:43:47:fa:b1:
+                    e0:fc:b0:63:30:84:31:f5:95:44:90:9a:b7:22:01:
+                    6f:c7:17:16:be:5a:19:ee:47:35:90:a5:5e:27:ba:
+                    86:47:3b:c5:63:d2:f2:c6:a1:db:ac:be:b1:2f:4c:
+                    c2:98:86:19:72:d5:f9:12:45:09:bc:23:e2:00:eb:
+                    4d:ba:99:71:b5:4a:fb:49:8c:4d:f3:0b:4e:cf:48:
+                    7b:c8:06:37:92:35:ff:bb:4f:ea:98:af:13:ac:a8:
+                    cd:9f:a7:e0:78:db:15:bc:3b
                 Exponent: 65537 (0x10001)
         X509v3 extensions:
             X509v3 Subject Alternative Name: 
                 DNS:localhost
             X509v3 Key Usage: 
-                Key Encipherment
+                Digital Signature, Key Encipherment, Key Agreement
             X509v3 Extended Key Usage: 
                 TLS Web Server Authentication
             X509v3 Subject Key Identifier: 
-                3B:2B:84:0D:23:3C:46:F9:9B:E5:C2:FA:B7:30:E7:AC:E3:ED:09:C3
+                23:D7:CE:D8:B2:D0:F8:8E:3C:82:26:6C:F1:F5:2A:8A:48:90:58:66
             X509v3 Authority Key Identifier: 
-                keyid:AD:3E:E2:39:07:B8:5C:AA:26:90:94:4C:26:69:21:83:E2:4E:36:94
+                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
 
-            X509v3 Basic Constraints: critical
+            X509v3 Basic Constraints: 
                 CA:FALSE
     Signature Algorithm: sha1WithRSAEncryption
-        a2:fa:61:4e:c0:10:1f:f8:38:2c:fd:a6:74:85:df:8e:ee:41:
-        90:a1:d7:c9:32:65:5d:61:d5:13:51:3b:11:1c:7b:01:06:70:
-        9f:93:52:54:15:bd:93:3a:f8:40:e3:e2:ab:01:96:fb:73:c5:
-        42:2c:ad:ce:e8:52:57:db:b6:15:90:75:e3:e5:75:99:b0:83:
-        ed:b0:fc:f2:d0:d9:3d:68:1c:d9:b4:cd:a1:a9:40:19:44:46:
-        14:8b:11:6e:2e:1c:65:85:73:45:f0:8b:4f:ea:01:2d:61:0f:
-        ae:0d:70:0c:d3:3c:1c:1f:24:66:a3:0b:62:d1:87:1e:8e:96:
-        f6:43:cf:1c:24:e7:94:d0:7e:b0:ee:1b:6f:14:1f:04:35:e8:
-        fc:3c:c8:9e:e3:6e:0e:4c:7d:a9:23:97:2d:6e:b1:4d:e3:05:
-        1b:ce:86:2f:2f:b3:c9:60:47:58:ac:ea:4c:cb:c2:7b:0f:08:
-        b8:a7:90:e7:22:32:70:f6:09:3e:f9:54:94:b0:37:50:22:60:
-        49:1c:84:9e:1a:22:0c:3e:a9:16:7c:5e:b1:50:13:6b:82:14:
-        d3:8a:3d:4d:ed:18:ca:40:59:d6:b9:72:9f:64:e5:0b:e7:a6:
-        b8:ee:29:b5:6a:ec:82:b2:94:56:36:e3:87:b3:07:aa:69:b8:
-        2c:ef:0c:14
+         28:b9:77:ea:4a:8d:d6:a5:fb:72:5b:d6:cd:60:40:33:56:bf:
+         dd:23:ff:bf:e8:2e:10:cd:30:ab:24:a4:43:d8:98:71:e3:59:
+         66:3e:38:bd:b8:fb:19:1a:13:8f:a1:c8:39:93:b5:83:8d:62:
+         52:a9:7a:5b:0d:69:47:40:5c:51:4c:3a:be:a7:c9:5f:7b:93:
+         49:20:59:23:30:7c:d9:4a:dd:29:2c:ed:96:fd:cb:b8:13:ff:
+         36:2c:27:ce:28:c3:a6:d0:d8:ba:8c:38:9f:78:ff:54:c7:76:
+         05:37:47:f5:d3:55:9c:2c:12:41:81:14:ca:48:a2:b7:6d:05:
+         49:2b:c5:f5:7b:63:6d:6f:cd:3f:f4:8d:74:51:07:ff:e1:40:
+         d5:96:60:d8:c8:38:5a:15:f9:c5:fd:e1:5e:a3:02:95:90:4b:
+         fc:8a:42:de:72:31:72:3d:dd:a2:df:19:42:c8:fa:a8:77:11:
+         67:e6:64:8c:d0:fd:45:fd:f0:49:8c:e1:85:e6:f5:1f:47:c6:
+         ae:f2:70:c3:e8:99:d0:cd:9d:88:6b:33:ba:b9:65:3d:f4:b1:
+         f4:d0:3c:76:9c:18:9e:9e:c8:62:29:43:8e:f7:2f:2c:12:37:
+         39:02:26:4e:4b:b0:14:30:80:bb:2d:cc:fc:93:dc:c9:8b:c0:
+         69:12:71:36
 -----BEGIN CERTIFICATE-----
-MIIDQzCCAiugAwIBAgIGC5iVAAx+MA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT
+MIIDQTCCAimgAwIBAgIGDPpgvFFuMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
 Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
-IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X
-DTEwMDUyNzIxMzc1NFoXDTE4MDgxMzIxMzc1NFowVDELMAkGA1UEBhMCTk4xMTAv
-BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx
-EjAQBgNVBAMMCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-zKmRKyLokCvlTNyubdpM8zLMpWhnWju5hqOViD7oY8PtAGAZAytdW1aK2iFecVzR
-495RGMEXFLEzkABcmuVzC6iInNALVLzqOjnd9mWBSymZTHHT92l/gOjobWFBg4fr
-rCy9D+sb/aI3l20xVrpLUd2xAeuJ+CXeW6Plsj9Md1MCAwEAAaOBizCBiDAWBgNV
-HREEDzANggtsb2NhbGhvc3QAaDALBgNVHQ8EBAMCBSAwEwYDVR0lBAwwCgYIKwYB
-BQUHAwEwHQYDVR0OBBYEFDsrhA0jPEb5m+XC+rcw56zj7QnDMB8GA1UdIwQYMBaA
-FK0+4jkHuFyqJpCUTCZpIYPiTjaUMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEF
-BQADggEBAKL6YU7AEB/4OCz9pnSF347uQZCh18kyZV1h1RNROxEcewEGcJ+TUlQV
-vZM6+EDj4qsBlvtzxUIsrc7oUlfbthWQdePldZmwg+2w/PLQ2T1oHNm0zaGpQBlE
-RhSLEW4uHGWFc0Xwi0/qAS1hD64NcAzTPBwfJGajC2LRhx6OlvZDzxwk55TQfrDu
-G28UHwQ16Pw8yJ7jbg5Mfakjly1usU3jBRvOhi8vs8lgR1is6kzLwnsPCLinkOci
-MnD2CT75VJSwN1AiYEkchJ4aIgw+qRZ8XrFQE2uCFNOKPU3tGMpAWda5cp9k5Qvn
-prjuKbVq7IKylFY244ezB6ppuCzvDBQ=
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFQxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRIwEAYDVQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
+AOPHUvt9ArGnC0wtpiqwV2teC/meS+fQrFVDR/qx4PywYzCEMfWVRJCatyIBb8cX
+Fr5aGe5HNZClXie6hkc7xWPS8sah26y+sS9MwpiGGXLV+RJFCbwj4gDrTbqZcbVK
++0mMTfMLTs9Ie8gGN5I1/7tP6pivE6yozZ+n4HjbFbw7AgMBAAGjgYgwgYUwFgYD
+VR0RBA8wDYILbG9jYWxob3N0AGgwCwYDVR0PBAQDAgOoMBMGA1UdJQQMMAoGCCsG
+AQUFBwMBMB0GA1UdDgQWBBQj187YstD4jjyCJmzx9SqKSJBYZjAfBgNVHSMEGDAW
+gBQSyrpLRgSndYos6A5UlLwSZaZ7zjAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBBQUA
+A4IBAQAouXfqSo3WpftyW9bNYEAzVr/dI/+/6C4QzTCrJKRD2Jhx41lmPji9uPsZ
+GhOPocg5k7WDjWJSqXpbDWlHQFxRTDq+p8lfe5NJIFkjMHzZSt0pLO2W/cu4E/82
+LCfOKMOm0Ni6jDifeP9Ux3YFN0f101WcLBJBgRTKSKK3bQVJK8X1e2Ntb80/9I10
+UQf/4UDVlmDYyDhaFfnF/eFeowKVkEv8ikLecjFyPd2i3xlCyPqodxFn5mSM0P1F
+/fBJjOGF5vUfR8au8nDD6JnQzZ2IazO6uWU99LH00Dx2nBienshiKUOO9y8sEjc5
+AiZOS7AUMIC7Lcz8k9zJi8BpEnE2
 -----END CERTIFICATE-----
------BEGIN DH PARAMETERS-----
-MIGHAoGBAL/3hRxvWX+Mdyu/aBPU1JeeA5sg4nXtA7B24eCql9Tq53Lks1/HJ5B+
-xSapGAFd+22xhBsNkJihf74oiPEVr9nNoLjFV/DZe259+JYgs+pBTFN+Cp13ALUi
-CeZxX2mlxlstD1SBRTKgxA/j4ttR1Chn8knn+RVdFE9YFKCYPyLrAgEC
------END DH PARAMETERS-----
index 5e8944b..619d825 100644 (file)
@@ -2,11 +2,11 @@ extensions = x509v3
 [ x509v3 ]
 #subjectAltName = DNS:localhost\0h
 subjectAltName = DER:30:0d:82:0b:6c:6f:63:61:6c:68:6f:73:74:00:68
-keyUsage       = keyEncipherment
+keyUsage       = keyEncipherment,digitalSignature,keyAgreement
 extendedKeyUsage = serverAuth
 subjectKeyIdentifier = hash
 authorityKeyIdentifier = keyid
-basicConstraints = critical,CA:false
+basicConstraints = CA:false
 [ req ]
 default_bits                    = 1024
 distinguished_name              = req_DN
index 2b071d3..1b079f4 100644 (file)
Binary files a/tests/certs/Server-localhost0h-sv.pub.der and b/tests/certs/Server-localhost0h-sv.pub.der differ
index c403ac5..c34cc77 100644 (file)
@@ -1,6 +1,6 @@
 -----BEGIN PUBLIC KEY-----
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMqZErIuiQK+VM3K5t2kzzMsyl
-aGdaO7mGo5WIPuhjw+0AYBkDK11bVoraIV5xXNHj3lEYwRcUsTOQAFya5XMLqIic
-0AtUvOo6Od32ZYFLKZlMcdP3aX+A6OhtYUGDh+usLL0P6xv9ojeXbTFWuktR3bEB
-64n4Jd5bo+WyP0x3UwIDAQAB
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjx1L7fQKxpwtMLaYqsFdrXgv5
+nkvn0KxVQ0f6seD8sGMwhDH1lUSQmrciAW/HFxa+WhnuRzWQpV4nuoZHO8Vj0vLG
+odusvrEvTMKYhhly1fkSRQm8I+IA6026mXG1SvtJjE3zC07PSHvIBjeSNf+7T+qY
+rxOsqM2fp+B42xW8OwIDAQAB
 -----END PUBLIC KEY-----
index c899d70..0c9cb7c 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -78,8 +88,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = tests/certs/scripts
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -100,7 +108,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -125,6 +134,7 @@ am__can_run_installinfo = \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -183,7 +193,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -236,6 +246,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -252,7 +263,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -355,7 +365,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/certs/scripts/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign tests/certs/scripts/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -530,6 +539,8 @@ uninstall-am:
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 6ac1388..4d2118a 100755 (executable)
@@ -50,15 +50,15 @@ echo "openssl x509 -set_serial $SERIAL -extfile $PREFIX-ca.prm -days $DURATION -
 
 $OPENSSL x509  -set_serial $SERIAL -extfile $PREFIX-ca.prm -days $DURATION -req -signkey $PREFIX-ca.key -in $PREFIX-ca.csr -out $PREFIX-$SERIAL-ca.cacert -sha1
 
-echo "openssl x509 -text -hash -out $PREFIX-ca.cacert -in $PREFIX-$SERIAL-ca.cacert -nameopt multiline"
-$OPENSSL x509 -text -hash -out $PREFIX-ca.cacert -in $PREFIX-$SERIAL-ca.cacert -nameopt multiline
+echo "openssl x509 -text -in $PREFIX-$SERIAL-ca.cacert -nameopt multiline > $PREFIX-ca.cacert "
+$OPENSSL x509 -text -in $PREFIX-$SERIAL-ca.cacert -nameopt multiline > $PREFIX-ca.cacert
 
 echo "openssl x509 -in $PREFIX-ca.cacert -outform der -out $PREFIX-ca.der "
 $OPENSSL x509 -in $PREFIX-ca.cacert -outform der -out $PREFIX-ca.der
 
-echo "openssl x509 -in $PREFIX-ca.cacert -text -out $PREFIX-ca.crt -nameopt multiline"
+echo "openssl x509 -in $PREFIX-ca.cacert -text -nameopt multiline > $PREFIX-ca.crt "
 
-$OPENSSL x509 -in $PREFIX-ca.cacert -text -out $PREFIX-ca.crt -nameopt multiline
+$OPENSSL x509 -in $PREFIX-ca.cacert -text -nameopt multiline > $PREFIX-ca.crt
 
 echo "openssl x509 -noout -text -in $PREFIX-ca.cacert -nameopt multiline"
 $OPENSSL x509 -noout -text -in $PREFIX-ca.cacert -nameopt multiline
index 80876ec..e7845c5 100755 (executable)
@@ -81,9 +81,9 @@ $OPENSSL rsa -in $PREFIX-sv.key -pubout -outform DER -out $PREFIX-sv.pub.der
 echo "openssl rsa -in $PREFIX-sv.key -pubout -outform PEM -out $PREFIX-sv.pub.pem"
 $OPENSSL rsa -in $PREFIX-sv.key -pubout -outform PEM -out $PREFIX-sv.pub.pem
 
-echo "openssl x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION  -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -out $PREFIX-sv.crt -text -nameopt multiline -sha1"
+echo "openssl x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION  -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -text -nameopt multiline -sha1 > $PREFIX-sv.crt "
 
-$OPENSSL x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION  -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -out $PREFIX-sv.crt -text -nameopt multiline -sha1
+$OPENSSL x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION  -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -text -nameopt multiline -sha1 > $PREFIX-sv.crt
 
 if [ "$P12." = YES. ] ; then
 
diff --git a/tests/data/CMakeLists.txt b/tests/data/CMakeLists.txt
new file mode 100644 (file)
index 0000000..dec92e5
--- /dev/null
@@ -0,0 +1,7 @@
+# Loads 'TESTCASES' from for the 'make show' target in runtests.pl
+transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
+include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
+
+# Prints all available test cases. Do not quote TESTCASES, it must be displayed
+# as a space-separated string rather than comma-separated (a list in CMake).
+add_custom_target(show COMMAND echo ${TESTCASES})
index a4b281f..4ec0364 100644 (file)
@@ -5,7 +5,7 @@ test:
 # TESTCASES are taken from Makefile.inc
 include Makefile.inc
 
-EXTRA_DIST = $(TESTCASES) DISABLED
+EXTRA_DIST = $(TESTCASES) DISABLED CMakeLists.txt
 
 filecheck:
        @mkdir test-place; \
index 99229d9..25917d6 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 #
 ###########################################################################
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -99,8 +109,6 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
-       $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs
 subdir = tests/data
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
@@ -122,7 +130,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -147,6 +156,7 @@ am__can_run_installinfo = \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -205,7 +215,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -258,6 +268,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -274,7 +285,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -401,18 +411,20 @@ test800 test801 test802 test803 test804 test805 test806 test807 test808 \
 test809 test810 test811 test812 test813 test814 test815 test816 test817 \
 test818 test819 test820 test821 test822 test823 test824 test825 test826 \
 test827 test828 test829 test830 test831 test832 test833 test834 test835 \
-test836 \
+test836 test837 test838 test839 test840 \
 \
 test850 test851 test852 test853 test854 test855 test856 test857 test858 \
 test859 test860 test861 test862 test863 test864 test865 test866 test867 \
 test868 test869 test870 test871 test872 test873 test874 test875 test876 \
-test877 test878 test879 test880 test881 test882 \
+test877 test878 test879 test880 test881 test882 test883 test884 test885 \
+test886 \
 \
 test900 test901 test902 test903 test904 test905 test906 test907 test908 \
 test909 test910 test911 test912 test913 test914 test915 test916 test917 \
 test918 test919 test920 test921 test922 test923 test924 test925 test926 \
 test927 test928 test929 test930 test931 test932 test933 test934 test935 \
-test936 test937 test938 test939 test940 test941 \
+test936 test937 test938 test939 test940 test941 test942 test943 test944 \
+test945 \
 \
 test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
 test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
@@ -430,14 +442,14 @@ test1096 test1097 test1098 test1099 test1100 test1101 test1102 test1103 \
 test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
 test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
 test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
-test1128 test1129 test1130 test1131 test1132 test1133 test1134 \
+test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
 \
 test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
 test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
 test1216 test1217 test1218 test1219 \
 test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
 test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
-test1236 test1237 test1238 test1239 test1240 \
+test1236 test1237 test1238 test1239 test1240 test1241 \
 \
 test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
 test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
@@ -455,8 +467,8 @@ test1396 test1397 test1398 \
 \
 test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 \
 test1408 test1409 test1410 test1411 test1412 test1413 test1414 test1415 \
-test1416 test1417 test1418 test1419 test1420 \
-\
+test1416 test1417 test1418 test1419 test1420 test1421 test1422 test1423 \
+test1424 \
 test1428 test1429 test1430 test1431 test1432 test1433 test1434 test1435 \
 test1436 \
 \
@@ -466,7 +478,9 @@ test1516 \
 \
 test1520 \
 \
-test1525 test1526 test1527 test1528 test1529 \
+test1525 test1526 test1527 test1528 test1529 test1530 test1531 \
+\
+test1600 test1601 test1602 \
 \
 test1800 test1801 \
 \
@@ -476,11 +490,12 @@ test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
 test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
 test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
 test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
-test2032 test2033 test2034 test2035 test2036 test2037 test2038
+test2032 test2033 test2034 test2035 test2036 test2037 test2038 test2039 \
+test2040 test2041 test2042 test2043
 
 
 # TESTCASES are taken from Makefile.inc
-EXTRA_DIST = $(TESTCASES) DISABLED
+EXTRA_DIST = $(TESTCASES) DISABLED CMakeLists.txt
 all: all-am
 
 .SUFFIXES:
@@ -496,7 +511,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/data/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign tests/data/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -505,7 +519,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -671,6 +685,8 @@ uninstall-am:
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 iall:
 install:
 test:
index 6467ca0..f39db40 100644 (file)
@@ -86,18 +86,20 @@ test800 test801 test802 test803 test804 test805 test806 test807 test808 \
 test809 test810 test811 test812 test813 test814 test815 test816 test817 \
 test818 test819 test820 test821 test822 test823 test824 test825 test826 \
 test827 test828 test829 test830 test831 test832 test833 test834 test835 \
-test836 \
+test836 test837 test838 test839 test840 \
 \
 test850 test851 test852 test853 test854 test855 test856 test857 test858 \
 test859 test860 test861 test862 test863 test864 test865 test866 test867 \
 test868 test869 test870 test871 test872 test873 test874 test875 test876 \
-test877 test878 test879 test880 test881 test882 \
+test877 test878 test879 test880 test881 test882 test883 test884 test885 \
+test886 \
 \
 test900 test901 test902 test903 test904 test905 test906 test907 test908 \
 test909 test910 test911 test912 test913 test914 test915 test916 test917 \
 test918 test919 test920 test921 test922 test923 test924 test925 test926 \
 test927 test928 test929 test930 test931 test932 test933 test934 test935 \
-test936 test937 test938 test939 test940 test941 \
+test936 test937 test938 test939 test940 test941 test942 test943 test944 \
+test945 \
 \
 test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
 test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
@@ -115,14 +117,14 @@ test1096 test1097 test1098 test1099 test1100 test1101 test1102 test1103 \
 test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
 test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
 test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
-test1128 test1129 test1130 test1131 test1132 test1133 test1134 \
+test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
 \
 test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
 test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
 test1216 test1217 test1218 test1219 \
 test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
 test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
-test1236 test1237 test1238 test1239 test1240 \
+test1236 test1237 test1238 test1239 test1240 test1241 \
 \
 test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
 test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
@@ -140,8 +142,8 @@ test1396 test1397 test1398 \
 \
 test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 \
 test1408 test1409 test1410 test1411 test1412 test1413 test1414 test1415 \
-test1416 test1417 test1418 test1419 test1420 \
-\
+test1416 test1417 test1418 test1419 test1420 test1421 test1422 test1423 \
+test1424 \
 test1428 test1429 test1430 test1431 test1432 test1433 test1434 test1435 \
 test1436 \
 \
@@ -151,7 +153,9 @@ test1516 \
 \
 test1520 \
 \
-test1525 test1526 test1527 test1528 test1529 \
+test1525 test1526 test1527 test1528 test1529 test1530 test1531 \
+\
+test1600 test1601 test1602 \
 \
 test1800 test1801 \
 \
@@ -161,4 +165,5 @@ test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
 test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
 test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
 test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
-test2032 test2033 test2034 test2035 test2036 test2037 test2038
+test2032 test2033 test2034 test2035 test2036 test2037 test2038 test2039 \
+test2040 test2041 test2042 test2043
index 4adbd89..91b1320 100644 (file)
@@ -85,17 +85,17 @@ test
 </strip>
 <protocol>
 GET http://%HOSTIP:%HTTPPORT/1001 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Content-Range: bytes 2-4/5\r
 User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 0\r
 \r
 GET http://%HOSTIP:%HTTPPORT/1001 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1001", response="6af4d89c952f4dd4cc215a6878dc499d"\r
 Content-Range: bytes 2-4/5\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 3\r
index 4c3bf16..83cce6e 100644 (file)
@@ -84,17 +84,17 @@ test
 </strip>
 <protocol>
 GET http://%HOSTIP:%HTTPPORT/1002.upload1 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Content-Range: bytes 2-4/5\r
 User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 0\r
 \r
 GET http://%HOSTIP:%HTTPPORT/1002.upload1 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1002.upload1", response="198aa9b6acb4b0c71d02a197a5e41f54"\r
 Content-Range: bytes 2-4/5\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 3\r
@@ -102,10 +102,10 @@ Expect: 100-continue
 \r
 st
 GET http://%HOSTIP:%HTTPPORT/1002.upload2 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1002.upload2", response="d711f0d2042786d930de635ba0d1a1d0"\r
 Content-Range: bytes 2-4/5\r
 User-Agent: curl/7.16.1\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 3\r
index a0f215d..5a8ed4c 100644 (file)
@@ -94,9 +94,9 @@ a second line
 line three
 four is the number of lines
 PUT /1030 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1030", response="01cb59db1ddaac246b072d5f5f0716d9"\r
 User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 85\r
 Expect: 100-continue\r
index 5691864..b0b6834 100644 (file)
@@ -47,8 +47,8 @@ HTTP HEAD with --range
 </strip>
 <protocol>
 HEAD /1032 HTTP/1.1\r
-Range: bytes=1-3\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=1-3\r
 Accept: */*\r
 \r
 </protocol>
index 2466e70..e21ed81 100644 (file)
@@ -70,8 +70,8 @@ http://%HOSTIP:%HTTPPORT/1040 -C -
 </strip>
 <protocol>
 GET /1040 HTTP/1.1\r
-Range: bytes=100-\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=100-\r
 Accept: */*\r
 \r
 </protocol>
index c0d23c6..c77d616 100644 (file)
@@ -57,8 +57,8 @@ http://%HOSTIP:%HTTPPORT/1041 -Tlog/test1041.txt -C -
 # it can skip part of the file or not.  Instead, it sends the entire file.
 <protocol>
 PUT /1041 HTTP/1.1\r
-Content-Range: bytes 0-99/100\r
 Host: %HOSTIP:%HTTPPORT\r
+Content-Range: bytes 0-99/100\r
 Accept: */*\r
 Content-Length: 100\r
 Expect: 100-continue\r
index f9a2255..dfebaa1 100644 (file)
@@ -85,8 +85,8 @@ http://%HOSTIP:%HTTPPORT/1042 -C 200
 </strip>
 <protocol>
 GET /1042 HTTP/1.1\r
-Range: bytes=200-\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=200-\r
 Accept: */*\r
 \r
 </protocol>
index f9bd105..4ab4987 100644 (file)
@@ -75,8 +75,8 @@ http://%HOSTIP:%HTTPPORT/1043 -C -
 </strip>
 <protocol>
 GET /1043 HTTP/1.1\r
-Range: bytes=40-\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=40-\r
 Accept: */*\r
 \r
 </protocol>
index 0731778..4eb34da 100644 (file)
@@ -44,8 +44,8 @@ http://%HOSTIP:%HTTPPORT/want/1058 -r -101
 </strip>
 <protocol>
 GET /want/1058 HTTP/1.1\r
-Range: bytes=-101\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=-101\r
 Accept: */*\r
 \r
 </protocol>
index d338e2c..4352e61 100644 (file)
@@ -100,8 +100,8 @@ a second line
 line three
 four is the number of lines
 PUT /1071 HTTP/1.0\r
-Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1071", response="df4cef6b52a30e65d472dd848d2055a1"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1071", response="df4cef6b52a30e65d472dd848d2055a1"\r
 Accept: */*\r
 Content-Length: 85\r
 \r
index 5b8f186..4b30c59 100644 (file)
@@ -79,8 +79,8 @@ a second line
 line three
 four is the number of lines
 PUT /1075 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 Content-Length: 85\r
 Expect: 100-continue\r
index 24cd20d..ac7b899 100644 (file)
@@ -67,8 +67,8 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /1079 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1079", response="e340c7cdca0950462070f46ee139e9f7"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1079", response="e340c7cdca0950462070f46ee139e9f7"\r
 Accept: */*\r
 \r
 </protocol>
index d3bec0c..d228976 100644 (file)
@@ -95,8 +95,8 @@ Accept: */*
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://first.host.it.is/we/want/that/page/10871000 HTTP/1.1\r
-Authorization: Basic aWFtOm15c2VsZg==\r
 Host: first.host.it.is\r
+Authorization: Basic aWFtOm15c2VsZg==\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 13e7d03..a807ce9 100644 (file)
@@ -96,14 +96,14 @@ Accept: */*
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://first.host.it.is/we/want/that/page/10881000 HTTP/1.1\r
-Authorization: Basic aWFtOm15c2VsZg==\r
 Host: first.host.it.is\r
+Authorization: Basic aWFtOm15c2VsZg==\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://goto.second.host.now/10881002 HTTP/1.1\r
-Authorization: Basic aWFtOm15c2VsZg==\r
 Host: goto.second.host.now\r
+Authorization: Basic aWFtOm15c2VsZg==\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index a442120..6bfe54f 100644 (file)
@@ -74,9 +74,9 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /1095 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="test \"this\" realm!!", nonce="1053604145", uri="/1095", response="a1c7931ece9e8617bae2715045e4f49f"\r
 User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index 10fa25d..cd61691 100644 (file)
@@ -93,24 +93,24 @@ chkhostname curlhost
 </strip>
 <protocol>
 POST /1100 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 0\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST /1100 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 18\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 stuff to send awayGET /1100 HTTP/1.1\r
-User-Agent: curl/7.19.5-CVS (i686-pc-linux-gnu) libcurl/7.19.5-CVS GnuTLS/2.6.6 zlib/1.2.3.3 c-ares/1.6.1-CVS libidn/1.14 libssh2/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/7.19.5-CVS (i686-pc-linux-gnu) libcurl/7.19.5-CVS GnuTLS/2.6.6 zlib/1.2.3.3 c-ares/1.6.1-CVS libidn/1.14 libssh2/1.1\r
 Accept: */*\r
 \r
 </protocol>
index 63887c4..75c6619 100644 (file)
@@ -45,8 +45,8 @@ http://user:secret@%HOSTIP:%HTTPPORT/gimme/1101
 </strip>
 <protocol>
 GET /gimme/1101 HTTP/1.1\r
-Authorization: Basic dXNlcjpzZWNyZXQ=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dXNlcjpzZWNyZXQ=\r
 Accept: */*\r
 \r
 </protocol>
index 5b69611..963f1ef 100644 (file)
@@ -73,13 +73,13 @@ partial body
 </strip>
 <protocol>
 GET /want/1117 HTTP/1.1\r
-Range: bytes=10-22\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=10-22\r
 Accept: */*\r
 \r
 GET /wantmore/11170001 HTTP/1.1\r
-Range: bytes=10-22\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=10-22\r
 Accept: */*\r
 \r
 </protocol>
index e704e05..405066f 100644 (file)
@@ -39,10 +39,8 @@ HTTP multiple provided Host: headers
 </strip>
 <protocol>
 GET /1121 HTTP/1.1\r
-Accept: */*\r
 Host: host1\r
-Host: host2\r
-Host: host3\r
+Accept: */*\r
 \r
 </protocol>
 </verify>
index f8db6eb..e290b53 100644 (file)
@@ -50,13 +50,13 @@ http://%HOSTIP:%HTTPPORT/1134 -u user1:password1 --next http://%HOSTIP:%HTTPPORT
 </strip>
 <protocol>
 GET /1134 HTTP/1.1\r
-Authorization: Basic dXNlcjE6cGFzc3dvcmQx\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dXNlcjE6cGFzc3dvcmQx\r
 Accept: */*\r
 \r
 GET /11340001 HTTP/1.1\r
-Authorization: Basic MnVzZXI6cGFzc3dvcmQy\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic MnVzZXI6cGFzc3dvcmQy\r
 Accept: */*\r
 \r
 [DISCONNECT]
diff --git a/tests/data/test1135 b/tests/data/test1135
new file mode 100644 (file)
index 0000000..960aade
--- /dev/null
@@ -0,0 +1,95 @@
+<testcase>
+<info>
+<keywords>
+source analysis
+CURL_EXTERN
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+
+# The VMS and OS/400 builds extract the CURL_EXTERN protos and use in
+# the build. We break binary compatibility by changing order. Only add
+# new entries last or bump the SONAME.
+# 
+ <name>
+Verify CURL_EXTERN order
+ </name>
+
+<command type="perl">
+%SRCDIR/extern-scan.pl %SRCDIR/..
+</command>
+</client>
+
+<verify>
+<stdout>
+CURL_EXTERN int (curl_strequal)(const char *s1, const char *s2);
+CURL_EXTERN int (curl_strnequal)(const char *s1, const char *s2, size_t n);
+CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost,
+CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg,
+CURL_EXTERN void curl_formfree(struct curl_httppost *form);
+CURL_EXTERN char *curl_getenv(const char *variable);
+CURL_EXTERN char *curl_version(void);
+CURL_EXTERN char *curl_easy_escape(CURL *handle,
+CURL_EXTERN char *curl_escape(const char *string,
+CURL_EXTERN char *curl_easy_unescape(CURL *handle,
+CURL_EXTERN char *curl_unescape(const char *string,
+CURL_EXTERN void curl_free(void *p);
+CURL_EXTERN CURLcode curl_global_init(long flags);
+CURL_EXTERN CURLcode curl_global_init_mem(long flags,
+CURL_EXTERN void curl_global_cleanup(void);
+CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *,
+CURL_EXTERN void curl_slist_free_all(struct curl_slist *);
+CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused);
+CURL_EXTERN CURLSH *curl_share_init(void);
+CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...);
+CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *);
+CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion);
+CURL_EXTERN const char *curl_easy_strerror(CURLcode);
+CURL_EXTERN const char *curl_share_strerror(CURLSHcode);
+CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);
+CURL_EXTERN CURL *curl_easy_init(void);
+CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);
+CURL_EXTERN CURLcode curl_easy_perform(CURL *curl);
+CURL_EXTERN void curl_easy_cleanup(CURL *curl);
+CURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...);
+CURL_EXTERN CURL* curl_easy_duphandle(CURL *curl);
+CURL_EXTERN void curl_easy_reset(CURL *curl);
+CURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen,
+CURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer,
+CURL_EXTERN int curl_mprintf(const char *format, ...);
+CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...);
+CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...);
+CURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength,
+CURL_EXTERN int curl_mvprintf(const char *format, va_list args);
+CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args);
+CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args);
+CURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength,
+CURL_EXTERN char *curl_maprintf(const char *format, ...);
+CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
+CURL_EXTERN CURLM *curl_multi_init(void);
+CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
+CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
+CURL_EXTERN const char *curl_multi_strerror(CURLMcode);
+CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,
+CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
+CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h,
+CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h,
+</stdout>
+</verify>
+
+</testcase>
index 95b891a..06dbdf5 100644 (file)
@@ -47,8 +47,8 @@ http://%HOSTIP:%HTTPPORT/want/12 -r 100-200
 </strip>
 <protocol>
 GET /want/12 HTTP/1.1\r
-Range: bytes=100-200\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=100-200\r
 Accept: */*\r
 \r
 </protocol>
index 02502fb..d2f06b6 100644 (file)
@@ -70,8 +70,8 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /1204 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 \r
 </protocol>
index 3fd8fdd..a50601f 100644 (file)
@@ -42,8 +42,8 @@ http://user:secret@%HOSTIP:%HTTPPORT/ulion/1212 --socks5 non-existing-host.haxx.
 </strip>
 <protocol>
 GET /ulion/1212 HTTP/1.1\r
-Authorization: Basic dXNlcjpzZWNyZXQ=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dXNlcjpzZWNyZXQ=\r
 Accept: */*\r
 \r
 </protocol>
index d49f71f..f8c52a9 100644 (file)
@@ -88,16 +88,16 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET http://%HOSTIP:%HTTPPORT/1215 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.30.0-DEV\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://%HOSTIP:%HTTPPORT/1215 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.30.0-DEV\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 77e7e8c..225ba3c 100644 (file)
@@ -74,8 +74,8 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /1229 HTTP/1.1\r
-Authorization: Digest username="\\user\"", realm="testrealm", nonce="1053604145", uri="/1229", response="f2694d426040712584c156d3de72b8d6"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="\\user\"", realm="testrealm", nonce="1053604145", uri="/1229", response="f2694d426040712584c156d3de72b8d6"\r
 Accept: */*\r
 \r
 </protocol>
index 68f023d..21da17d 100644 (file)
@@ -38,8 +38,8 @@ URL with 1000+ letter user name + password
 </strip>
 <protocol>
 GET /1237 HTTP/1.1\r
-Authorization: Basic QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTpCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkI=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTpCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkI=\r
 Accept: */*\r
 \r
 </protocol>
diff --git a/tests/data/test1241 b/tests/data/test1241
new file mode 100644 (file)
index 0000000..aaa5688
--- /dev/null
@@ -0,0 +1,64 @@
+<testcase>
+<info>
+# verify that dotdot removal can be disabled!
+<keywords>
+HTTP
+HTTP GET
+HTTP proxy
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Content-Length: 6
+Connection: close
+
+-foo-
+</data>
+
+<data1>
+HTTP/1.1 200 OK
+Content-Length: 7
+Connection: close
+
+-cool-
+</data1>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP _without_ dotdot removal
+ </name>
+ <command>
+--path-as-is --proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1241:8990/../../hej/but/who/../1241?stupid=me/../1241#soo/../1241 http://test.remote.haxx.se.1241:8990/../../hej/but/who/../12410001#/../12410001
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET http://test.remote.haxx.se.1241:8990/../../hej/but/who/../1241?stupid=me/../1241 HTTP/1.1\r
+Host: test.remote.haxx.se.1241:8990\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+\r
+GET http://test.remote.haxx.se.1241:8990/../../hej/but/who/../12410001 HTTP/1.1\r
+Host: test.remote.haxx.se.1241:8990\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+\r
+</protocol>
+</verify>
+</testcase>
index 827b1a0..6e6d9c1 100644 (file)
@@ -43,6 +43,7 @@ FTP (optional .netrc; no user/pass) dir list PASV
 # the following two lines were created while testing curl
 machine %HOSTIP login user1 password passwd1
 machine %HOSTIP login user2 password passwd2
+default login userdef password passwddef
 </file>
 </client>
 
index 840f3c5..9ffe0d5 100644 (file)
@@ -91,15 +91,15 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /1310 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAA\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /1310 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAE8AAAAYABgAZwAAAAAAAABAAAAACAAIAEAAAAAHAAcASAAAAAAAAAAAAAAAggEAAHRlc3R1c2VyVU5LTk9XTlpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOQ==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index 6896856..3299df4 100644 (file)
@@ -78,8 +78,8 @@ Accept: */*
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://z.x.com/1331 HTTP/1.1\r
-Proxy-Authorization: Basic bXluYW1lOm15cGFzc3dvcmQ=\r
 Host: z.x.com\r
+Proxy-Authorization: Basic bXluYW1lOm15cGFzc3dvcmQ=\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Cookie: proxycookie=weirdo\r
index e709c8e..d10cac2 100644 (file)
@@ -43,9 +43,9 @@ http://%HOSTIP:%HTTPPORT/we/want/1401 --libcurl log/test1401.c --basic -u fake:u
 </strip>
 <protocol>
 GET /we/want/1401 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 User-Agent: stripped\r
 Authorization: Basic ZmFrZTp1c2Vy\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Cookie: chocolate=chip\r
 X-Files: Mulder\r
index 971aac8..ae63290 100644 (file)
@@ -102,15 +102,15 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /1412 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1412", response="0390dbe89e31adca0413d11f91f30e7f"\r
 User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /14120001 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/14120001", response="0085df91870374c8bf4e94415e7fbf8e"\r
 User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index de133af..b3a2f23 100644 (file)
@@ -93,13 +93,13 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /1418 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/1418", response="986238b7e0077754944c966f56d9bc77"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/1418", response="986238b7e0077754944c966f56d9bc77"\r
 Accept: */*\r
 \r
 GET /14180003 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/14180003", response="1c6390a67bac3283a9b023402f3b3540"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/14180003", response="1c6390a67bac3283a9b023402f3b3540"\r
 Accept: */*\r
 \r
 [DISCONNECT]
diff --git a/tests/data/test1421 b/tests/data/test1421
new file mode 100644 (file)
index 0000000..6c59b21
--- /dev/null
@@ -0,0 +1,72 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP proxy
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Uknown-header: blrub
+Content-Length: 6
+
+-foo-
+</data>
+
+<servercmd>
+connection-monitor
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+Re-using HTTP proxy connection for two different host names
+ </name>
+ <command>
+--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1421:8990/ http://different.remote.haxx.se.1421:8990
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+HTTP/1.1 200 OK
+Uknown-header: blrub
+Content-Length: 6
+
+-foo-
+HTTP/1.1 200 OK
+Uknown-header: blrub
+Content-Length: 6
+
+-foo-
+</stdout>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET http://test.remote.haxx.se.1421:8990/ HTTP/1.1\r
+Host: test.remote.haxx.se.1421:8990\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+\r
+GET http://different.remote.haxx.se.1421:8990/ HTTP/1.1\r
+Host: different.remote.haxx.se.1421:8990\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+\r
+[DISCONNECT]
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1422 b/tests/data/test1422
new file mode 100644 (file)
index 0000000..9b436cc
--- /dev/null
@@ -0,0 +1,63 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+-J
+</keywords>
+</info>
+
+#
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 0\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1422; charset=funny; option=strange\r
+\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+# this relies on the debug feature to allow us to set directory to store the
+# -O and -J output in, using the CURL_TESTDIR variable
+<features>
+debug
+</features>
+<server>
+http
+</server>
+<name>
+HTTP GET with -O -J and Content-Disposition (empty file)
+</name>
+<setenv>
+CURL_TESTDIR=%PWD/log
+</setenv>
+<command option="no-output,no-include">
+http://%HOSTIP:%HTTPPORT/1422 -J -O file://%PWD/log/name1422
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1422 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+
+<file1 name="log/name1422">
+</file1>
+
+</verify>
+</testcase>
diff --git a/tests/data/test1423 b/tests/data/test1423
new file mode 100644 (file)
index 0000000..908ff8c
--- /dev/null
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 0\r
+Connection: close\r
+Content-Type: text/html\r
+\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+file
+</server>
+<name>
+HTTP GET -o fname without Content-Disposition (empty file)
+</name>
+<command option="no-output,no-include">
+http://%HOSTIP:%HTTPPORT/1423 -o log/outfile1423 file://%PWD/log/outfile1423
+</command>
+<postcheck>
+perl %SRCDIR/libtest/notexists.pl log/1423
+</postcheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1423 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+
+<file1 name="log/outfile1423">
+</file1>
+
+</verify>
+</testcase>
diff --git a/tests/data/test1424 b/tests/data/test1424
new file mode 100644 (file)
index 0000000..17bc46a
--- /dev/null
@@ -0,0 +1,76 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+If-Modified-Since
+-z
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 1990 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+<datacheck>
+HTTP/1.1 200 OK
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 1990 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+HTTP GET -o fname without Content-Disposition (unmet time condition)
+</name>
+<file name="log/outfile1424">
+original contents
+</file>
+<command option="no-output,no-include">
+http://%HOSTIP:%HTTPPORT/1424 -z "dec 12 11:00:00 1999 GMT" -o log/outfile1424
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1424 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+If-Modified-Since: Sun, 12 Dec 1999 11:00:00 GMT\r
+\r
+</protocol>
+
+<file1 name="log/outfile1424">
+original contents
+</file1>
+
+</verify>
+</testcase>
index f976569..59041ec 100644 (file)
@@ -62,17 +62,17 @@ http://test.1428:%HTTPPORT/we/want/that/page/1428 -p -x %HOSTIP:%PROXYPORT --use
 </strip>
 <proxy>
 CONNECT test.1428:%HTTPPORT HTTP/1.1\r
-User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3\r
 Host: test.1428:%HTTPPORT\r
+User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3\r
 Proxy-Connection: Keep-Alive\r
 header-type: proxy\r
 \r
 </proxy>
 <protocol>
 GET /we/want/that/page/1428 HTTP/1.1\r
+Host: test.1428:%HTTPPORT\r
 Authorization: Basic aWFtOm15OjtzZWxm\r
 User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3\r
-Host: test.1428:%HTTPPORT\r
 Accept: */*\r
 header-type: server\r
 \r
index fba104b..0b33bb9 100644 (file)
@@ -81,8 +81,8 @@ http://%HOSTIP:%HTTPPORT/1434 -C 100
 </strip>
 <protocol>
 GET /1434 HTTP/1.1\r
-Range: bytes=100-\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=100-\r
 Accept: */*\r
 \r
 </protocol>
index f846fd0..69c5835 100644 (file)
@@ -87,15 +87,15 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /150 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /150 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index fdf6c7d..2767f60 100644 (file)
@@ -3,6 +3,7 @@
 <keywords>
 HTTP
 verbose logs
+flaky
 </keywords>
 </info>
 
index 4a63f18..8abb96f 100644 (file)
@@ -7,16 +7,20 @@ PROGRESSFUNCTION
 
 # Server-side
 <reply>
+<data nocheck="yes">
+HTTP/1.1 204 PARTIAL\r
+X-Comment: partial response to keep the client waiting\r
+</data>
+<postcmd>
+wait 10
+</postcmd>
 </reply>
 
 # Client-side
 <client>
 <server>
-none
-</server>
-<features>
 http
-</features>
+</server>
 <tool>
 lib1513
 </tool>
@@ -26,7 +30,7 @@ return failure immediately from progress callback
 
 # this server/host won't be used for real
  <command>
-http://localhost/1513
+http://%HOSTIP:%HTTPPORT/1513
 </command>
 </client>
 
index ee4887a..e8d5279 100644 (file)
@@ -45,7 +45,7 @@ http-proxy
 lib1527
 </tool>
  <name>
-Check same headers are generated without CURLOPT_PROXYHEADER
+Check same headers are generated with CURLOPT_HEADEROPT == CURLHEADER_UNIFIED
  </name>
  <command>
  http://the.old.moo.1527:%HTTPPORT/1527 %HOSTIP:%PROXYPORT
index 89560f8..fc1d812 100644 (file)
@@ -86,21 +86,21 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /1530001 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1530001", response="f4f83139396995bac665f24a1f1055c7"\r
 User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /1530002 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1530002", response="f84511b014fdd0ba6494f42871079c32"\r
 User-Agent: curl/7.11.0-CVS (i686-pc-linux-gnu) libcurl/7.11.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /1530002 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="testrealm", nonce="999999", uri="/1530002", cnonce="MTA4MzIy", nc="00000001", qop="auth", response="25291c357671604a16c0242f56721c07", algorithm="MD5"\r
 User-Agent: curl/7.11.0-CVS (i686-pc-linux-gnu) libcurl/7.11.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
diff --git a/tests/data/test1530 b/tests/data/test1530
new file mode 100644 (file)
index 0000000..8372d29
--- /dev/null
@@ -0,0 +1,30 @@
+<testcase>
+<info>
+<keywords>
+CURLOPT_OPENSOCKETFUNCTION
+</keywords>
+</info>
+
+<client>
+<server>
+none
+</server>
+<features>
+http
+</features>
+<tool>
+lib1530
+</tool>
+ <name>
+CURLOPT_OPENSOCKETFUNCTION returns bad socket
+ </name>
+</client>
+
+# it should be detected and an error should be reported
+<verify>
+# 7 == CURLE_COULDNT_CONNECT
+<errorcode>
+7
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test1531 b/tests/data/test1531
new file mode 100644 (file)
index 0000000..d58deb6
Binary files /dev/null and b/tests/data/test1531 differ
index aa7989e..3d693f4 100644 (file)
@@ -93,9 +93,9 @@ Content-Length: 85
 Expect: 100-continue\r
 \r
 PUT /154 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/154", response="b71551e12d1c456e47d8388ecb2edeca"\r
 User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 85\r
 Expect: 100-continue\r
index 4e0870a..46f890f 100644 (file)
@@ -118,15 +118,15 @@ Content-Length: 85
 Expect: 100-continue\r
 \r
 PUT /155 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 Content-Length: 0\r
 \r
 PUT /155 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 85\r
 Expect: 100-continue\r
index e05ceef..5a06217 100644 (file)
@@ -21,34 +21,20 @@ Server: Microsoft-IIS/5.0
 Content-Type: text/html; charset=iso-8859-1\r
 Content-Length: 34\r
 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==\r
+Connection: close\r
 \r
 This is not the real page either!
 </data1001>
 
-# This is supposed to be returned when the server gets the second
-# Authorization: NTLM line passed-in from the client
-<data1002>
-HTTP/1.1 200 Things are fine in server land swsclose\r
-Server: Microsoft-IIS/5.0\r
-Content-Type: text/html; charset=iso-8859-1\r
-Content-Length: 32\r
-\r
-Finally, this is the real page!
-</data1002>
-
 <datacheck>
 HTTP/1.1 401 Now gimme that second request of crap\r
 Server: Microsoft-IIS/5.0\r
 Content-Type: text/html; charset=iso-8859-1\r
 Content-Length: 34\r
 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==\r
+Connection: close\r
 \r
-HTTP/1.1 200 Things are fine in server land swsclose\r
-Server: Microsoft-IIS/5.0\r
-Content-Type: text/html; charset=iso-8859-1\r
-Content-Length: 32\r
-\r
-Finally, this is the real page!
+This is not the real page either!
 </datacheck>
 
 </reply>
@@ -64,7 +50,7 @@ debug
 http
 </server>
  <name>
-HTTP with NTLM authorization when talking HTTP/1.0
+HTTP with NTLM authorization when talking HTTP/1.0 (known to fail)
  </name>
  <setenv>
 # we force our own host name, in order to make the test machine independent
@@ -87,15 +73,9 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /159 HTTP/1.0\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
-Accept: */*\r
-\r
-GET /159 HTTP/1.0\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index 98539be..5cbde59 100644 (file)
@@ -42,8 +42,8 @@ HTTP with proxy authorization
 </strip>
 <protocol>
 GET http://we.want.that.site.com/16 HTTP/1.1\r
-Proxy-Authorization: Basic ZmFrZUB1c2VyOqenp2xvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZw==\r
 Host: we.want.that.site.com\r
+Proxy-Authorization: Basic ZmFrZUB1c2VyOqenp2xvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZw==\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
diff --git a/tests/data/test1600 b/tests/data/test1600
new file mode 100644 (file)
index 0000000..8804074
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+<info>
+<keywords>
+unittest
+NTLM
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+unittest
+NTLM
+</features>
+ <name>
+NTLM unit tests
+ </name>
+<tool>
+unit1600
+</tool>
+</client>
+
+</testcase>
diff --git a/tests/data/test1601 b/tests/data/test1601
new file mode 100644 (file)
index 0000000..125493b
--- /dev/null
@@ -0,0 +1,26 @@
+<testcase>
+<info>
+<keywords>
+unittest
+MD5
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+unittest
+</features>
+ <name>
+MD5 unit tests
+ </name>
+<tool>
+unit1601
+</tool>
+</client>
+
+</testcase>
diff --git a/tests/data/test1602 b/tests/data/test1602
new file mode 100644 (file)
index 0000000..4717058
--- /dev/null
@@ -0,0 +1,26 @@
+<testcase>
+<info>
+<keywords>
+unittest
+hash
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+unittest
+</features>
+ <name>
+Internal hash create/add/destroy testing, exercising clean functions
+ </name>
+<tool>
+unit1602
+</tool>
+</client>
+
+</testcase>
index 828c2a5..ee2f40a 100644 (file)
@@ -47,9 +47,9 @@ http://%HOSTIP:%HTTPPORT/162 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:b
 </strip>
 <protocol>
 GET http://%HOSTIP:%HTTPPORT/162 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled)\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 227bd71..9240611 100644 (file)
@@ -59,8 +59,8 @@ http://%HOSTIP:%HTTPPORT/want/164 -r 0-10,12-15
 </strip>
 <protocol>
 GET /want/164 HTTP/1.1\r
-Range: bytes=0-10,12-15\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=0-10,12-15\r
 Accept: */*\r
 \r
 </protocol>
index 550803a..0b14996 100644 (file)
@@ -61,17 +61,17 @@ http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://%HOSTIP:%
 </strip>
 <protocol>
 GET http://data.from.server.requiring.digest.hohoho.com/167 HTTP/1.1\r
+Host: data.from.server.requiring.digest.hohoho.com\r
 Proxy-Authorization: Basic Zm9vOmJhcg==\r
 User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b zlib/1.1.4 c-ares/1.2.0 libidn/0.4.3\r
-Host: data.from.server.requiring.digest.hohoho.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://data.from.server.requiring.digest.hohoho.com/167 HTTP/1.1\r
+Host: data.from.server.requiring.digest.hohoho.com\r
 Proxy-Authorization: Basic Zm9vOmJhcg==\r
 Authorization: Digest username="digest", realm="weirdorealm", nonce="12345", uri="/167", response="13c7c02a252cbe1c46d8669898a3be26"\r
 User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b zlib/1.1.4 c-ares/1.2.0 libidn/0.4.3\r
-Host: data.from.server.requiring.digest.hohoho.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index e46b726..20e0b6d 100644 (file)
@@ -75,23 +75,23 @@ http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://%HOSTIP:%
 </strip>
 <protocol>
 GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1\r
-User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b zlib/1.1.4 c-ares/1.2.0 libidn/0.4.3\r
 Host: data.from.server.requiring.digest.hohoho.com\r
+User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b zlib/1.1.4 c-ares/1.2.0 libidn/0.4.3\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1\r
+Host: data.from.server.requiring.digest.hohoho.com\r
 Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/168", response="fb8608e00ad9239a3dedb14bc8575976"\r
 User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b zlib/1.1.4 c-ares/1.2.0 libidn/0.4.3\r
-Host: data.from.server.requiring.digest.hohoho.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1\r
+Host: data.from.server.requiring.digest.hohoho.com\r
 Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/168", response="fb8608e00ad9239a3dedb14bc8575976"\r
 Authorization: Digest username="digest", realm="realmweirdo", nonce="123456", uri="/168", response="ca87f2d768a231e2d637a55698d5c416"\r
 User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.3\r
-Host: data.from.server.requiring.digest.hohoho.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index f236a89..73ca9bd 100644 (file)
@@ -104,23 +104,23 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1\r
+Host: data.from.server.requiring.digest.hohoho.com\r
 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.3\r
-Host: data.from.server.requiring.digest.hohoho.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1\r
+Host: data.from.server.requiring.digest.hohoho.com\r
 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.3\r
-Host: data.from.server.requiring.digest.hohoho.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1\r
+Host: data.from.server.requiring.digest.hohoho.com\r
 Authorization: Digest username="digest", realm="r e a l m", nonce="abcdef", uri="/169", response="95d48591985a03c4b49cb962aa7bd3e6"\r
 User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.3\r
-Host: data.from.server.requiring.digest.hohoho.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 259580b..de03c1d 100644 (file)
@@ -45,8 +45,8 @@ request MOOO
 <verify>
 <protocol>
 MOOO /that.site.com/17 HTTP/1.1\r
-User-Agent: agent007 license to drill  \r
 Host: %HOSTIP:%HTTPPORT\r
+User-Agent: agent007 license to drill  \r
 Accept: */*\r
 \r
 </protocol>
index f0e596b..8ce7774 100644 (file)
@@ -36,9 +36,9 @@ http://a.galaxy.far.far.away/170 --proxy http://%HOSTIP:%HTTPPORT --proxy-user f
 </strip>
 <protocol>
 POST http://a.galaxy.far.far.away/170 HTTP/1.1\r
+Host: a.galaxy.far.far.away\r
 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 libidn/0.4.3\r
-Host: a.galaxy.far.far.away\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 0\r
index ffff82c..73c53ca 100644 (file)
@@ -68,16 +68,16 @@ http://%HOSTIP:%HTTPPORT/176 -u auser:apasswd --ntlm -d "junkelijunk"
 </strip>
 <protocol nonewline="yes">
 POST /176 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 0\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST /176 HTTP/1.1\r
-User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6\r
 Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6\r
 Accept: */*\r
 Content-Length: 11\r
 Content-Type: application/x-www-form-urlencoded\r
index 3e069f5..0aedfed 100644 (file)
@@ -23,7 +23,6 @@ lies!
 
 <datacheck>
 HTTP/1.1 101 Switching!
-
 </datacheck>
 
 # listen to the upgrade request!
@@ -62,5 +61,9 @@ Upgrade: %H2CVER
 HTTP2-Settings: AAMAAABkAAQAAP__\r
 \r
 </protocol>
+# CURLE_HTTP2: Send failure: Broken pipe
+<errorcode>
+16
+</errorcode>
 </verify>
 </testcase>
index e42a393..8b09dde 100644 (file)
@@ -59,10 +59,10 @@ http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.st
 </strip>
 <protocol>
 GET http://deathstar.another.galaxy/184 HTTP/1.1\r
+Host: another.visitor.stay.a.while.stay.foreeeeeever\r
 User-Agent: curl/7.12.2-CVS (i686-pc-linux-gnu) libcurl/7.12.2-CVS OpenSSL/0.9.6b zlib/1.1.4 libidn/0.4.6\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
-Host: another.visitor.stay.a.while.stay.foreeeeeever\r
 \r
 GET http://yet.another.host/184 HTTP/1.1\r
 Host: yet.another.host\r
index 01a66f6..298dd49 100644 (file)
@@ -59,15 +59,15 @@ http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.st
 </strip>
 <protocol>
 GET http://deathstar.another.galaxy/185 HTTP/1.1\r
+Host: another.visitor.stay.a.while.stay.foreeeeeever\r
 User-Agent: curl/7.12.2-CVS (i686-pc-linux-gnu) libcurl/7.12.2-CVS OpenSSL/0.9.6b zlib/1.1.4 libidn/0.4.6\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
-Host: another.visitor.stay.a.while.stay.foreeeeeever\r
 \r
 GET http://deathstar.another.galaxy/go/west/185 HTTP/1.1\r
+Host: another.visitor.stay.a.while.stay.foreeeeeever\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
-Host: another.visitor.stay.a.while.stay.foreeeeeever\r
 \r
 </protocol>
 
index 0303544..a23a2a1 100644 (file)
@@ -62,15 +62,15 @@ http://%HOSTIP:%HTTPPORT/188 -C 50 -L
 </strip>
 <protocol>
 GET /188 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Range: bytes=50-\r
 User-Agent: curl/7.6 (sparc-sun-solaris2.7) libcurl 7.6-pre4 (SSL 0.9.6) (krb4 enabled)\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /188 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Range: bytes=50-\r
 User-Agent: curl/7.12.2-CVS (i686-pc-linux-gnu) libcurl/7.12.2-CVS OpenSSL/0.9.7d zlib/1.2.1.2 libidn/0.5.2\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index deb6e89..f82b4ad 100644 (file)
@@ -56,15 +56,15 @@ http://%HOSTIP:%HTTPPORT/189 -C 50 -L
 </strip>
 <protocol>
 GET /189 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Range: bytes=50-\r
 User-Agent: curl/7.6 (sparc-sun-solaris2.7) libcurl 7.6-pre4 (SSL 0.9.6) (krb4 enabled)\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /189 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Range: bytes=50-\r
 User-Agent: curl/7.12.2-CVS (i686-pc-linux-gnu) libcurl/7.12.2-CVS OpenSSL/0.9.7d zlib/1.2.1.2 libidn/0.5.2\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index 555b486..533ed55 100644 (file)
@@ -48,11 +48,11 @@ http://%HOSTIP:%HTTPPIPEPORT/
 <file name="log/urls.txt">
 0 1k.txt
 1000 connection_close.txt
-0 1k.txt
-0 1k.txt
-0 1k.txt
-0 1k.txt
-0 1k.txt
+1 1k.txt
+2 1k.txt
+3 1k.txt
+4 1k.txt
+5 1k.txt
 </file>
 </client>
 
index 26f7f17..730446f 100644 (file)
@@ -60,8 +60,8 @@ http://%HOSTIP:%HTTPPORT/want/194 -C 87 --fail
 </strip>
 <protocol>
 GET /want/194 HTTP/1.1\r
-Range: bytes=87-\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=87-\r
 Accept: */*\r
 \r
 </protocol>
index 22b4f18..9f9c506 100644 (file)
@@ -41,8 +41,8 @@ HTTP GET with user and password
 </strip>
 <protocol>
 GET /2 HTTP/1.1\r
-Authorization: Basic ZmFrZTp1c2Vy\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic ZmFrZTp1c2Vy\r
 Accept: */*\r
 \r
 </protocol>
index 9b04ff3..382b6cb 100644 (file)
@@ -133,28 +133,28 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /20230100 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Accept: */*\r
 \r
 GET /20230200 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 \r
 GET /20230300 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Accept: */*\r
 \r
 GET /20230400 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Accept: */*\r
 \r
 GET /20230500 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 \r
 </protocol>
index 9c155a2..cd06b7c 100644 (file)
@@ -147,28 +147,28 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /20240100 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Accept: */*\r
 \r
 GET /20240200 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20240200", response="ed646c565f79e2dd9fa37cb5a621213c"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20240200", response="ed646c565f79e2dd9fa37cb5a621213c"\r
 Accept: */*\r
 \r
 GET /20240300 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Accept: */*\r
 \r
 GET /20240400 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20240400", response="9741ced8caacc6124770187b36f007c5"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20240400", response="9741ced8caacc6124770187b36f007c5"\r
 Accept: */*\r
 \r
 GET /20240500 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/20240500", response="5bc77ec8c2d443b27a1b55f1fd8fbb13"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/20240500", response="5bc77ec8c2d443b27a1b55f1fd8fbb13"\r
 Accept: */*\r
 \r
 </protocol>
index 03b6b14..1eae482 100644 (file)
@@ -228,43 +228,43 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /20250100 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Accept: */*\r
 \r
 GET /20250200 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20250200 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20250300 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Accept: */*\r
 \r
 GET /20250400 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20250400 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20250500 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20250500 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 </protocol>
index b1d2341..afbd4f3 100644 (file)
@@ -187,13 +187,13 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /20260100 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20260100", response="5f992a2e761ab926256419f7c685f85b"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20260100", response="5f992a2e761ab926256419f7c685f85b"\r
 Accept: */*\r
 \r
 GET /20260200 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 \r
 GET /20260300 HTTP/1.1\r
@@ -201,18 +201,18 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /20260300 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/20260300", response="132242e602882251929be93228c830ae"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/20260300", response="132242e602882251929be93228c830ae"\r
 Accept: */*\r
 \r
 GET /20260400 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Accept: */*\r
 \r
 GET /20260500 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 \r
 </protocol>
index e9a62d6..3302a15 100644 (file)
@@ -210,13 +210,13 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /20270100 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20270100", response="f7fd60eefaff5225971bf9b3d80d6ba6"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20270100", response="f7fd60eefaff5225971bf9b3d80d6ba6"\r
 Accept: */*\r
 \r
 GET /20270200 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20270200", response="785ca3ef511999f7e9c178195f5b388c"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20270200", response="785ca3ef511999f7e9c178195f5b388c"\r
 Accept: */*\r
 \r
 GET /20270300 HTTP/1.1\r
@@ -224,23 +224,23 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /20270300 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="4", uri="/20270300", response="4c735d2360fd6848e7cb32a11ae3612b"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="4", uri="/20270300", response="4c735d2360fd6848e7cb32a11ae3612b"\r
 Accept: */*\r
 \r
 GET /20270400 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20270400", response="f5906785511fb60a2af8b1cd53008ead"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20270400", response="f5906785511fb60a2af8b1cd53008ead"\r
 Accept: */*\r
 \r
 GET /20270400 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20270400", response="f5906785511fb60a2af8b1cd53008ead"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20270400", response="f5906785511fb60a2af8b1cd53008ead"\r
 Accept: */*\r
 \r
 GET /20270500 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="7", uri="/20270500", response="8ef4d935fd964a46c3965c0863b52cf1"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="7", uri="/20270500", response="8ef4d935fd964a46c3965c0863b52cf1"\r
 Accept: */*\r
 \r
 </protocol>
index 2a03836..1ae1fae 100644 (file)
@@ -268,18 +268,18 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /20280100 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20280100", response="53c80666f5e3a4a55f92a66aaf0078bb"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20280100", response="53c80666f5e3a4a55f92a66aaf0078bb"\r
 Accept: */*\r
 \r
 GET /20280200 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20280200 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20280300 HTTP/1.1\r
@@ -287,28 +287,28 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /20280300 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="4", uri="/20280300", response="1aa5d90da9803ca12d04b24e0f19476e"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="4", uri="/20280300", response="1aa5d90da9803ca12d04b24e0f19476e"\r
 Accept: */*\r
 \r
 GET /20280400 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20280400 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20280500 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20280500 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 </protocol>
index 7c697e3..42866a3 100644 (file)
@@ -201,38 +201,38 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /20290100 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20290100 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20290200 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 \r
 GET /20290300 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20290300 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20290400 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz\r
 Accept: */*\r
 \r
 GET /20290500 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 \r
 </protocol>
index a80c15e..5c2754c 100644 (file)
@@ -253,43 +253,43 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /20300100 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20300100 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20300200 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20300200", response="2f2d784ba53a0a307758a90e98d25c27"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/20300200", response="2f2d784ba53a0a307758a90e98d25c27"\r
 Accept: */*\r
 \r
 GET /20300300 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20300300 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20300400 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20300400", response="d6262e9147db08c62ff2f53b515861e8"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20300400", response="d6262e9147db08c62ff2f53b515861e8"\r
 Accept: */*\r
 \r
 GET /20300400 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20300400", response="d6262e9147db08c62ff2f53b515861e8"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/20300400", response="d6262e9147db08c62ff2f53b515861e8"\r
 Accept: */*\r
 \r
 GET /20300500 HTTP/1.1\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="7", uri="/20300500", response="198757e61163a779cf24ed4c49c1ad7d"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="7", uri="/20300500", response="198757e61163a779cf24ed4c49c1ad7d"\r
 Accept: */*\r
 \r
 </protocol>
index 0df841b..bd5aa07 100644 (file)
@@ -267,53 +267,53 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /20310100 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20310100 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20310200 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20310200 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20310300 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20310300 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20310400 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20310400 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20310500 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20310500 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 </protocol>
index 23f44e6..f708665 100644 (file)
@@ -123,23 +123,23 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /20320100 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Host: 127.0.0.1:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 \r
 GET /20320100 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Host: 127.0.0.1:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 \r
 GET /20320200 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: 127.0.0.1:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20320200 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Host: 127.0.0.1:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 </protocol>
index aacbe5e..6c41700 100644 (file)
@@ -124,23 +124,23 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /20320100 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Host: 127.0.0.1:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 \r
 GET /20320100 HTTP/1.1\r
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Host: 127.0.0.1:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 \r
 GET /20320200 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Host: 127.0.0.1:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20320200 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Host: 127.0.0.1:%HTTPPORT\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 </protocol>
diff --git a/tests/data/test2039 b/tests/data/test2039
new file mode 100644 (file)
index 0000000..1595ded
--- /dev/null
@@ -0,0 +1,63 @@
+<testcase>
+<info>
+<keywords>
+FTP
+EPSV
+LIST
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+# When doing LIST, we get the default list output hard-coded in the test
+# FTP server
+<datacheck mode="text">
+total 20
+drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
+drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
+drwxr-xr-x   2 98       98           512 May  2  1996 .NeXT
+-r--r--r--   1 0        1             35 Jul 16  1996 README
+lrwxrwxrwx   1 0        1              7 Dec  9  1999 bin -> usr/bin
+dr-xr-xr-x   2 0        1            512 Oct  1  1997 dev
+drwxrwxrwx   2 98       98           512 May 29 16:04 download.html
+dr-xr-xr-x   2 0        1            512 Nov 30  1995 etc
+drwxrwxrwx   2 98       1            512 Oct 30 14:33 pub
+dr-xr-xr-x   5 0        1            512 Oct  1  1997 usr
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+ftp
+</server>
+ <name>
+FTP (optional .netrc with 'default' override; no user/pass) dir list PASV
+ </name>
+ <command>
+--netrc-optional --netrc-file log/netrc2039 ftp://%HOSTIP:%FTPPORT/
+</command>
+<file name="log/netrc2039" >
+# the following two lines were created while testing curl
+default login userdef password passwddef
+machine %HOSTIP login user1 password passwd1
+machine %HOSTIP login user2 password passwd2
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+USER userdef\r
+PASS passwddef\r
+PWD\r
+EPSV\r
+TYPE A\r
+LIST\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test2040 b/tests/data/test2040
new file mode 100644 (file)
index 0000000..ac60017
--- /dev/null
@@ -0,0 +1,69 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP Basic auth
+</keywords>
+</info>
+# Server-side
+<reply>
+
+<!-- First request has Basic auth, right password -->
+<data100>
+HTTP/1.1 200 Things are fine in server land
+Server: Microsoft-IIS/5.0
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 32
+
+Finally, this is the real page!
+</data100>
+
+<!-- Second request with Basic auth disabled -->
+<data200>
+HTTP/1.1 401 Sorry wrong password (2)
+Server: Microsoft-IIS/5.0
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 29
+WWW-Authenticate: Basic realm="testrealm"
+
+This is a bad password page!
+</data200>
+
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+HTTP Basic authorization, then without authorization
+</name>
+<command option="no-output,no-include">
+-u testuser:testpass http://%HOSTIP:%HTTPPORT/20400100 --next --no-basic http://%HOSTIP:%HTTPPORT/20400200
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /20400100 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
+Accept: */*\r
+\r
+GET /20400200 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+<stdout>
+Finally, this is the real page!
+This is a bad password page!
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test2041 b/tests/data/test2041
new file mode 100644 (file)
index 0000000..dcad2fd
--- /dev/null
@@ -0,0 +1,58 @@
+<testcase>
+<info>
+<keywords>
+HTTPS
+HTTP GET
+PEM certificate
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 7
+
+MooMoo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+SSL
+SSLpinning
+</features>
+<server>
+https Server-localhost-sv.pem
+</server>
+ <name>
+simple HTTPS GET with base64-sha256 public key pinning
+ </name>
+ <command>
+--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey sha256//pyh+fICi9M8MFEZvherIT0cs3MN+cXNGoU9Giwyx1so= https://localhost:%HTTPSPORT/2041
+</command>
+# Ensure that we're running on localhost because we're checking the host name
+<precheck>
+perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /2041 HTTP/1.1\r
+Host: localhost:%HTTPSPORT\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test2042 b/tests/data/test2042
new file mode 100644 (file)
index 0000000..2181e53
--- /dev/null
@@ -0,0 +1,44 @@
+<testcase>
+<info>
+<keywords>
+HTTPS
+HTTP GET
+PEM certificate
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+SSL
+SSLpinning
+</features>
+<server>
+https Server-localhost-sv.pem
+</server>
+ <name>
+HTTPS wrong base64-sha256 pinnedpubkey but right CN
+ </name>
+ <command>
+--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey sha256//bSIggTf+ikMG0CtmDlpMVBd7yi7H1md4URogRPqerso= https://localhost:%HTTPSPORT/2042
+</command>
+# Ensure that we're running on localhost because we're checking the host name
+<precheck>
+perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+90
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test2043 b/tests/data/test2043
new file mode 100644 (file)
index 0000000..7a91f5b
--- /dev/null
@@ -0,0 +1,33 @@
+<testcase>
+<info>
+<keywords>
+HTTPS
+HTTP GET
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<features>
+WinSSL
+</features>
+<server>
+none
+</server>
+ <name>
+Disable certificate revocation checks
+ </name>
+ <command>
+--ssl-no-revoke -I https://revoked.grc.com/
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
index a7a99b9..afb2566 100644 (file)
@@ -54,8 +54,8 @@ the
 </strip>
 <protocol>
 PUT ftp://daniel:mysecret@host.com/we/want/208 HTTP/1.1\r
-Authorization: Basic ZGFuaWVsOm15c2VjcmV0\r
 Host: host.com:21\r
+Authorization: Basic ZGFuaWVsOm15c2VjcmV0\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 78\r
index d165da9..b631e52 100644 (file)
@@ -77,15 +77,15 @@ http://first.host.it.is/we/want/that/page/233 -x %HOSTIP:%HTTPPORT --user iam:my
 </strip>
 <protocol>
 GET http://first.host.it.is/we/want/that/page/233 HTTP/1.1\r
+Host: first.host.it.is\r
 Proxy-Authorization: Basic dGVzdGluZzp0aGlz\r
 Authorization: Basic aWFtOm15c2VsZg==\r
-Host: first.host.it.is\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://goto.second.host.now/2330002 HTTP/1.1\r
-Proxy-Authorization: Basic dGVzdGluZzp0aGlz\r
 Host: goto.second.host.now\r
+Proxy-Authorization: Basic dGVzdGluZzp0aGlz\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index d8c7081..1d2e05b 100644 (file)
@@ -79,16 +79,16 @@ http://first.host.it.is/we/want/that/page/234 -x %HOSTIP:%HTTPPORT --user iam:my
 </strip>
 <protocol>
 GET http://first.host.it.is/we/want/that/page/234 HTTP/1.1\r
+Host: first.host.it.is\r
 Proxy-Authorization: Basic dGVzdGluZzp0aGlz\r
 Authorization: Basic aWFtOm15c2VsZg==\r
-Host: first.host.it.is\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://goto.second.host.now/2340002 HTTP/1.1\r
+Host: goto.second.host.now\r
 Proxy-Authorization: Basic dGVzdGluZzp0aGlz\r
 Authorization: Basic aWFtOm15c2VsZg==\r
-Host: goto.second.host.now\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 89ccaef..6b92f07 100644 (file)
@@ -79,18 +79,18 @@ chkhostname curlhost
 </strip>
 <protocol nonewline="yes">
 POST http://%HOSTIP:%HTTPPORT/239 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 0\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://%HOSTIP:%HTTPPORT/239 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 6\r
index 01d40bd..9457c58 100644 (file)
@@ -45,8 +45,8 @@ HTTP-IPv6 GET with username+password in URL
 </strip>
 <protocol>
 GET /242 HTTP/1.1\r
-Authorization: Basic Zm9vYmFyOmJhcmZvbw==\r
 Host: %HOST6IP:%HTTP6PORT\r
+Authorization: Basic Zm9vYmFyOmJhcmZvbw==\r
 Accept: */*\r
 \r
 </protocol>
index 0ac4222..3496055 100644 (file)
@@ -100,26 +100,26 @@ chkhostname curlhost
 </strip>
 <protocol nonewline="yes">
 POST http://%HOSTIP:%HTTPPORT/243 HTTP/1.1\r
-User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 6\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 postitPOST http://%HOSTIP:%HTTPPORT/243 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 0\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://%HOSTIP:%HTTPPORT/243 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 6\r
index 02a2772..cbb5ee3 100644 (file)
@@ -68,16 +68,16 @@ http://%HOSTIP:%HTTPPORT/245 -u auser:apasswd --digest -d "junkelijunk"
 </strip>
 <protocol nonewline="yes">
 POST /245 HTTP/1.1\r
-User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6\r
 Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6\r
 Accept: */*\r
 Content-Length: 0\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST /245 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/245", response="379a439b1737ba257c1d2f103914b18b"\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 11\r
 Content-Type: application/x-www-form-urlencoded\r
index cfa31db..acf47da 100644 (file)
@@ -78,16 +78,16 @@ http://%HOSTIP:%HTTPPORT/246 -u auser:apasswd --digest -d "junkelijunk"
 </strip>
 <protocol nonewline="yes">
 POST /246 HTTP/1.1\r
-User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6\r
 Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6\r
 Accept: */*\r
 Content-Length: 0\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST /246 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/246", response="761e6fc9a760c39d587092e8d840e740"\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 11\r
 Content-Type: application/x-www-form-urlencoded\r
index 5f8323b..2b96ecf 100644 (file)
@@ -47,9 +47,9 @@ download on.
 </strip>
 <protocol>
 GET http://%HOSTIP:%HTTPPORT/want/256 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Proxy-Authorization: Basic ZGFuaWVsOnN0ZW5iZXJn\r
 Range: bytes=78-\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 45642d5..502448d 100644 (file)
@@ -88,22 +88,22 @@ machine anotherone.com login user2 password passwd2
 </strip>
 <protocol>
 GET http://supersite.com/want/257 HTTP/1.1\r
+Host: supersite.com\r
 Authorization: Basic dXNlcjE6cGFzc3dkMQ==\r
 User-Agent: curl/7.14.0-CVS (i686-pc-linux-gnu) libcurl/7.14.0-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: supersite.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://anotherone.com/2570002 HTTP/1.1\r
+Host: anotherone.com\r
 Authorization: Basic dXNlcjI6cGFzc3dkMg==\r
 User-Agent: curl/7.14.0-CVS (i686-pc-linux-gnu) libcurl/7.14.0-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
-Host: anotherone.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://athird.com/2570003 HTTP/1.1\r
-User-Agent: curl/7.14.0-CVS (i686-pc-linux-gnu) libcurl/7.14.0-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
 Host: athird.com\r
+User-Agent: curl/7.14.0-CVS (i686-pc-linux-gnu) libcurl/7.14.0-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 1173707..98c3401 100644 (file)
@@ -80,8 +80,8 @@ bar
 </strip>
 <protocol>
 POST http://remotehost:54321/we/want/258 HTTP/1.1\r
-User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: remotehost:54321\r
+User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 409\r
@@ -105,9 +105,9 @@ bar
 \r
 ------------------------------7c633d5c27ce--\r
 POST http://remotehost:54321/we/want/258 HTTP/1.1\r
+Host: remotehost:54321\r
 User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Proxy-Authorization: Digest username="uuuser", realm="many secrets", nonce="911", uri="/we/want/258", response="2501654ca391f0b5c8c12a1da77e34cd"\r
-Host: remotehost:54321\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 409\r
index d4a8227..9532887 100644 (file)
@@ -76,8 +76,8 @@ bar
 </strip>
 <protocol>
 POST http://remotehost:54321/we/want/259 HTTP/1.1\r
-User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: remotehost:54321\r
+User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 409\r
@@ -102,9 +102,9 @@ bar
 \r
 ------------------------------7c633d5c27ce--\r
 POST http://remotehost:54321/we/want/259 HTTP/1.1\r
+Host: remotehost:54321\r
 User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Proxy-Authorization: Digest username="uuuser", realm="many secrets", nonce="911", uri="/we/want/259", response="b479994d13e60f3aa192a67c5892ddc5"\r
-Host: remotehost:54321\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 409\r
index 3cfb4d8..f4d171a 100644 (file)
@@ -39,8 +39,8 @@ http://we.want.that.site.com/264 -x http://f%61ke:user@%HOSTIP:%HTTPPORT
 </strip>
 <protocol>
 GET http://we.want.that.site.com/264 HTTP/1.1\r
-Proxy-Authorization: Basic ZmFrZTp1c2Vy\r
 Host: we.want.that.site.com\r
+Proxy-Authorization: Basic ZmFrZTp1c2Vy\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index ea4a9cf..7cc8375 100644 (file)
@@ -86,9 +86,9 @@ chkhostname curlhost
 </strip>
 <protocol nonewline="yes">
 POST /267 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Header1: yes\r
 Header2: no\r
@@ -96,9 +96,9 @@ Content-Length: 0
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST /267 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Header1: yes\r
 Header2: no\r
index c8010d9..ce0be33 100644 (file)
@@ -74,9 +74,9 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /273 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/273", response="576ae57b1db0039f8c0de43ef58e49e3"\r
 User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index ac54e25..802c4bb 100644 (file)
@@ -74,13 +74,13 @@ Proxy-Connection: Keep-Alive
 </proxy>
 <protocol>
 GET /we/want/that/page/275 HTTP/1.1\r
-Authorization: Basic aWFtOm15c2VsZg==\r
 Host: remotesite.com.275:%HTTPPORT\r
+Authorization: Basic aWFtOm15c2VsZg==\r
 Accept: */*\r
 \r
 GET /we/want/that/page/275 HTTP/1.1\r
-Authorization: Basic aWFtOm15c2VsZg==\r
 Host: remotesite.com.275:%HTTPPORT\r
+Authorization: Basic aWFtOm15c2VsZg==\r
 Accept: */*\r
 \r
 </protocol>
index 6c57822..3112264 100644 (file)
@@ -39,8 +39,8 @@ http://we.want.that.site.com/278 -x http://f%61ke:@%HOSTIP:%HTTPPORT
 </strip>
 <protocol>
 GET http://we.want.that.site.com/278 HTTP/1.1\r
-Proxy-Authorization: Basic ZmFrZTo=\r
 Host: we.want.that.site.com\r
+Proxy-Authorization: Basic ZmFrZTo=\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 5a1938c..47f8b68 100644 (file)
@@ -40,8 +40,8 @@ http://we.want.that.site.com/279 -x http://f%61ke@%HOSTIP:%HTTPPORT
 </strip>
 <protocol>
 GET http://we.want.that.site.com/279 HTTP/1.1\r
-Proxy-Authorization: Basic ZmFrZTo=\r
 Host: we.want.that.site.com\r
+Proxy-Authorization: Basic ZmFrZTo=\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index ec4dfeb..6772e22 100644 (file)
@@ -28,7 +28,7 @@ http
 HTTP proxy CONNECT with custom User-Agent header
  </name>
  <command>
-http://test.remote.example.com.287:%HTTPPORT/path/287 -H "User-Agent: looser/2007" --proxy http://%HOSTIP:%HTTPPORT --proxytunnel
+http://test.remote.example.com.287:%HTTPPORT/path/287 -H "User-Agent: looser/2015" --proxy http://%HOSTIP:%HTTPPORT --proxytunnel --proxy-header "User-Agent: looser/2007"
 </command>
 </client>
 
index a557a14..4daaea4 100644 (file)
@@ -43,8 +43,8 @@ FTP over HTTP proxy with user:pass not in url
 </strip>
 <protocol>
 GET ftp://michal:aybabtu@host.com/we/want/299 HTTP/1.1\r
-Authorization: Basic bWljaGFsOmF5YmFidHU=\r
 Host: host.com:21\r
+Authorization: Basic bWljaGFsOmF5YmFidHU=\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 2167b2a..0fe2764 100644 (file)
@@ -48,8 +48,8 @@ HTTP POST with auth and contents but with content-length set to 0
 </strip>
 <protocol nonewline="yes">
 POST /3 HTTP/1.1\r
-Authorization: Basic ZmFrZTotdXNlcg==\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic ZmFrZTotdXNlcg==\r
 Accept: */*\r
 Content-Length: 37\r
 Content-Type: application/x-www-form-urlencoded\r
index d5974ce..c404695 100644 (file)
@@ -45,8 +45,8 @@ HTTPS GET with user and password
 </strip>
 <protocol>
 GET /301 HTTP/1.1\r
-Authorization: Basic ZmFrZTp1c2Vy\r
 Host: %HOSTIP:%HTTPSPORT\r
+Authorization: Basic ZmFrZTp1c2Vy\r
 Accept: */*\r
 \r
 </protocol>
index dfcac04..7cf556c 100644 (file)
@@ -53,6 +53,10 @@ Set-Cookie: test2=yes; domain=se; expires=Sat Feb 2 11:56:27 GMT 2030
 Set-Cookie: magic=yessir; path=/silly/; HttpOnly\r
 Set-Cookie: blexp=yesyes; domain=127.0.0.1; domain=127.0.0.1; expiry=totally bad;\r
 Set-Cookie: partialip=nono; domain=.0.0.1;\r
+Set-Cookie: withspaces=  yes  within and around    ;\r
+Set-Cookie: withspaces2 =before equals;\r
+Set-Cookie: prespace=  yes before;\r
+Set-Cookie: securewithspace=after    ; secure =\r
 \r
 boo
 </data>
@@ -124,6 +128,10 @@ Accept: */*
 127.0.0.1      FALSE   /we/want/       FALSE   2054030187      nodomain        value
 #HttpOnly_127.0.0.1    FALSE   /silly/ FALSE   0       magic   yessir
 127.0.0.1      FALSE   /we/want/       FALSE   0       blexp   yesyes
+127.0.0.1      FALSE   /we/want/       FALSE   0       withspaces      yes  within and around
+127.0.0.1      FALSE   /we/want/       FALSE   0       withspaces2     before equals
+127.0.0.1      FALSE   /we/want/       FALSE   0       prespace        yes before
+127.0.0.1      FALSE   /we/want/       TRUE    0       securewithspace after
 </file>
 </verify>
 </testcase>
index 8f6df05..4b6f833 100644 (file)
@@ -28,8 +28,8 @@ Content-type: text/html
 <TR><TD>Cipher</TD><TD>AES-NNN-CBC</TD></TR>
 <TR><TD>MAC</TD><TD>SHA1</TD></TR>
 <TR><TD>Ciphersuite</TD><TD>SRP_SHA_AES_NNN_CBC_SHA1</TD></TR></p></TABLE>
-<hr><P>Your HTTP header was:<PRE>User-Agent: curl/7.21.4-DEV (x86_64-apple-darwin10.5.0) libcurl/7.21.4-DEV GnuTLS/2.10.4 zlib/1.2.5 libidn/1.19\r
-Host: localhost:9011\r
+<hr><P>Your HTTP header was:<PRE>Host: localhost:9011\r
+User-Agent: curl-test-suite\r
 Accept: */*\r
 \r
 </PRE></P>
@@ -50,7 +50,7 @@ TLS-SRP
 simple TLS-SRP HTTPS GET, check user in response
  </name>
 <command>
---insecure --tlsauthtype SRP --tlsuser jsmith --tlspassword abc https://%HOSTIP:%HTTPTLSPORT
+--insecure --tlsauthtype SRP --tlsuser jsmith --tlspassword abc -A curl-test-suite https://%HOSTIP:%HTTPTLSPORT
 </command>
 </client>
 
@@ -77,8 +77,8 @@ Content-type: text/html
 <TR><TD>Cipher</TD><TD>AES-NNN-CBC</TD></TR>
 <TR><TD>MAC</TD><TD>SHA1</TD></TR>
 <TR><TD>Ciphersuite</TD><TD>SRP_SHA_AES_NNN_CBC_SHA1</TD></TR></p></TABLE>
-<PRE>
-Host: %HOSTIP:%HTTPTLSPORT\r
+<hr><P>Your HTTP header was:<PRE>Host: %HOSTIP:%HTTPTLSPORT\r
+User-Agent: curl-test-suite\r
 Accept: */*\r
 \r
 </PRE></P>
@@ -87,7 +87,6 @@ Accept: */*
 </file>
 <stripfile>
 s/^<p>Session ID:.*//
-s/^<hr><P>Your HTTP header was:<PRE>.*/<PRE>/
 s/Protocol version:.*[0-9]//
 s/GNUTLS/GnuTLS/
 s/(AES[-_])\d\d\d([-_]CBC)/$1NNN$2/
index 9b86cd3..9f7c31f 100644 (file)
@@ -47,9 +47,9 @@ http://%HOSTIP:%HTTPPORT/33 -Tlog/test33.txt -C 50
 </strip>
 <protocol>
 PUT /33 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Content-Range: bytes 50-99/100\r
 User-Agent: curl/7.6 (sparc-sun-solaris2.7) libcurl 7.6-pre4 (SSL 0.9.6) (krb4 enabled)\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 50\r
 Expect: 100-continue\r
index 7515586..848150a 100644 (file)
@@ -46,8 +46,8 @@ download on.
 </strip>
 <protocol>
 GET /want/38 HTTP/1.1\r
-Range: bytes=78-\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=78-\r
 Accept: */*\r
 \r
 </protocol>
index b6f8f83..b6ebe80 100644 (file)
@@ -51,8 +51,8 @@ TZ=GMT
 
 www.fake.come  FALSE   /       FALSE   1022144953      cookiecliente   si
 www.loser.com  FALSE   /       FALSE   1139150993      UID     99
-%HOSTIP        FALSE   /       FALSE   1439150993      mooo    indeed
-#HttpOnly_%HOSTIP      FALSE   /want   FALSE   1439150993      mooo2   indeed2
+%HOSTIP        FALSE   /       FALSE   1739150993      mooo    indeed
+#HttpOnly_%HOSTIP      FALSE   /want   FALSE   1739150993      mooo2   indeed2
 %HOSTIP        FALSE   /want   FALSE   0       empty   
 </file>
 </client>
@@ -76,8 +76,8 @@ Cookie: empty=; mooo2=indeed2; mooo=indeed
 
 www.fake.come  FALSE   /       FALSE   1022144953      cookiecliente   si
 www.loser.com  FALSE   /       FALSE   1139150993      UID     99
-%HOSTIP        FALSE   /       FALSE   1439150993      mooo    indeed
-#HttpOnly_%HOSTIP      FALSE   /want   FALSE   1439150993      mooo2   indeed2
+%HOSTIP        FALSE   /       FALSE   1739150993      mooo    indeed
+#HttpOnly_%HOSTIP      FALSE   /want   FALSE   1739150993      mooo2   indeed2
 %HOSTIP        FALSE   /want   FALSE   0       empty   
 %HOSTIP        FALSE   /       FALSE   2054030187      ckyPersistent   permanent
 %HOSTIP        FALSE   /       FALSE   0       ckySession      temporary
index ea31483..e8dc21e 100644 (file)
@@ -77,8 +77,8 @@ Proxy-Connection: Keep-Alive
 </proxy>
 <protocol>
 GET /503 HTTP/1.1\r
-Authorization: Basic dGVzdDppbmc=\r
 Host: machine.503:%HTTPPORT\r
+Authorization: Basic dGVzdDppbmc=\r
 Accept: */*\r
 \r
 [DISCONNECT]
index b8ca9ab..9760560 100644 (file)
@@ -64,13 +64,13 @@ http://%HOSTIP:%HTTPPORT/519
 <verify>
 <protocol>
 GET /519 HTTP/1.1\r
-Authorization: Basic bW9uc3Rlcjp1bmRlcmJlZA==\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic bW9uc3Rlcjp1bmRlcmJlZA==\r
 Accept: */*\r
 \r
 GET /519 HTTP/1.1\r
-Authorization: Basic YW5vdGhlcm1vbnN0ZXI6aW53YXJkcm9iZQ==\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic YW5vdGhlcm1vbnN0ZXI6aW53YXJkcm9iZQ==\r
 Accept: */*\r
 \r
 </protocol>
index 56d1f3b..89a0dbf 100644 (file)
@@ -48,8 +48,8 @@ http://%HOSTIP/522 %HTTPPORT
 </strip>
 <protocol>
 GET /522 HTTP/1.1\r
-Authorization: Basic eHh4Onl5eQ==\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic eHh4Onl5eQ==\r
 Accept: */*\r
 \r
 </protocol>
index 7d3db38..9abe0ed 100644 (file)
@@ -51,8 +51,8 @@ http://www.example.com:999/523 http://%HOSTIP:%HTTPPORT
 </strip>
 <protocol>
 GET HTTP://www.example.com:19999/523 HTTP/1.1\r
-Authorization: Basic eHh4Onl5eQ==\r
 Host: www.example.com:19999\r
+Authorization: Basic eHh4Onl5eQ==\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index a2f7364..8decaea 100644 (file)
@@ -76,21 +76,21 @@ http://test.remote.example.com/path/540 http://%HOSTIP:%HTTPPORT silly:person cu
 </strip>
 <protocol>
 GET http://test.remote.example.com/path/540 HTTP/1.1\r
+Host: custom.set.host.name\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
-Host: custom.set.host.name\r
 \r
 GET http://test.remote.example.com/path/540 HTTP/1.1\r
+Host: custom.set.host.name\r
 Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261"\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
-Host: custom.set.host.name\r
 \r
 GET http://test.remote.example.com/path/540 HTTP/1.1\r
+Host: custom.set.host.name\r
 Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261"\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
-Host: custom.set.host.name\r
 \r
 </protocol>
 </verify>
index f4802e2..cee22c6 100644 (file)
@@ -103,8 +103,8 @@ chkhostname curlhost
 </strip>
 <protocol>
 POST http://test.remote.example.com/path/547 HTTP/1.1\r
-User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: test.remote.example.com\r
+User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 36\r
@@ -112,18 +112,18 @@ Content-Type: application/x-www-form-urlencoded
 \r
 this is the blurb we want to upload
 POST http://test.remote.example.com/path/547 HTTP/1.1\r
+Host: test.remote.example.com\r
 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: test.remote.example.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 0\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://test.remote.example.com/path/547 HTTP/1.1\r
+Host: test.remote.example.com\r
 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: test.remote.example.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 36\r
index 54f242f..34cf5e2 100644 (file)
@@ -103,8 +103,8 @@ chkhostname curlhost
 </strip>
 <protocol>
 POST http://test.remote.example.com/path/548 HTTP/1.1\r
-User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: test.remote.example.com\r
+User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 36\r
@@ -112,18 +112,18 @@ Content-Type: application/x-www-form-urlencoded
 \r
 this is the blurb we want to upload
 POST http://test.remote.example.com/path/548 HTTP/1.1\r
+Host: test.remote.example.com\r
 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: test.remote.example.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 0\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://test.remote.example.com/path/548 HTTP/1.1\r
+Host: test.remote.example.com\r
 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: test.remote.example.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 36\r
index 5776303..ed6aee2 100644 (file)
@@ -87,8 +87,8 @@ Content-Type: application/x-www-form-urlencoded
 \r
 this is the blurb we want to upload
 POST http://test.remote.example.com/path/551 HTTP/1.1\r
-Proxy-Authorization: Digest username="s1lly", realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", uri="/path/551", response="3325240726fbdaf1e61f3a0dd40b930c"\r
 Host: test.remote.example.com\r
+Proxy-Authorization: Digest username="s1lly", realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", uri="/path/551", response="3325240726fbdaf1e61f3a0dd40b930c"\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 36\r
index 61de9fe..b44ca34 100644 (file)
Binary files a/tests/data/test552 and b/tests/data/test552 differ
index c802fea..0f3bb07 100644 (file)
@@ -112,8 +112,8 @@ s/^(this is the blurb we want to upload)\r\n/$1\n/ if($has_charconv)
 </strippart>
 <protocol>
 POST http://test.remote.example.com/path/555 HTTP/1.1\r
-User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: test.remote.example.com\r
+User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 36\r
@@ -121,18 +121,18 @@ Content-Type: application/x-www-form-urlencoded
 \r
 this is the blurb we want to upload
 POST http://test.remote.example.com/path/555 HTTP/1.1\r
+Host: test.remote.example.com\r
 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: test.remote.example.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 0\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://test.remote.example.com/path/555 HTTP/1.1\r
+Host: test.remote.example.com\r
 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: test.remote.example.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 36\r
index a97b365..f221981 100644 (file)
@@ -46,8 +46,8 @@ header "Transfer-Encoding: chunked"
 <verify>
 <protocol>
 POST /that.site.com/56 HTTP/1.1\r
-User-Agent: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
 Host: %HOSTIP:%HTTPPORT\r
+User-Agent: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
 Accept: */*\r
 Transfer-Encoding: chunked\r
 Content-Type: application/x-www-form-urlencoded\r
index 90fa4d1..6e215a2 100644 (file)
@@ -86,8 +86,8 @@ Content-Type: application/x-www-form-urlencoded
 0\r
 \r
 POST /565 HTTP/1.1\r
-Authorization: Digest username="foo", realm="testrealm", nonce="1053604144", uri="/565", response="877424f750af047634dbd94f9933217b"\r
 Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="foo", realm="testrealm", nonce="1053604144", uri="/565", response="877424f750af047634dbd94f9933217b"\r
 Accept: */*\r
 Transfer-Encoding: chunked\r
 Content-Type: application/x-www-form-urlencoded\r
index 0712c16..55ea4f0 100644 (file)
@@ -101,22 +101,22 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET http://test.remote.example.com/path/590 HTTP/1.1\r
-User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: test.remote.example.com\r
+User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://test.remote.example.com/path/590 HTTP/1.1\r
+Host: test.remote.example.com\r
 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: test.remote.example.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://test.remote.example.com/path/590 HTTP/1.1\r
+Host: test.remote.example.com\r
 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAAAgACAPYAAAAIAAgA+AAAAAAAAAAAAAAABoKBAB3Hr6SDn3NDNkgebbaP88ExMjM0MjIzNFIW4N7aYT44bAIg1jt2blUBAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAbWVjdXJsaG9zdA==\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
-Host: test.remote.example.com\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 11a0dbc..89b8e6f 100644 (file)
@@ -65,8 +65,8 @@ http://%HOSTIP:%HTTPPORT/598
 <verify>
 <protocol>
 GET /598 HTTP/1.1\r
-User-Agent: the-moo agent next generation\r
 Host: %HOSTIP:%HTTPPORT\r
+User-Agent: the-moo agent next generation\r
 Accept: */*\r
 Referer: http://example.com/the-moo\r
 Cookie: name=moo\r
index e6dbbb9..abc9789 100644 (file)
@@ -56,8 +56,8 @@ http://%HOSTIP:%HTTPPORT/we/want/61 -c log/jar61.txt -H "Host: www.host.foo.com"
 </strip>
 <protocol>
 GET /we/want/61 HTTP/1.1\r
-Accept: */*\r
 Host: www.host.foo.com\r
+Accept: */*\r
 \r
 </protocol>
 <file name="log/jar61.txt" mode="text">
index 2e5d1db..51b8870 100644 (file)
@@ -51,14 +51,14 @@ http://%HOSTIP:%HTTPPORT/we/want/62 http://%HOSTIP:%HTTPPORT/we/want?hoge=fuga -
 </strip>
 <protocol>
 GET /we/want/62 HTTP/1.1\r
+Host: www.host.foo.com\r
 Accept: */*\r
 Cookie: test2=yes; test=yes\r
-Host: www.host.foo.com\r
 \r
 GET /we/want?hoge=fuga HTTP/1.1\r
+Host: www.host.foo.com\r
 Accept: */*\r
 Cookie: test2=yes; test=yes\r
-Host: www.host.foo.com\r
 \r
 </protocol>
 </verify>
index 66ed1d8..ccc19dd 100644 (file)
@@ -42,8 +42,8 @@ http://we.want.that.site.com/63
 </strip>
 <protocol>
 GET http://we.want.that.site.com/63 HTTP/1.1\r
-Proxy-Authorization: Basic ZmFrZTp1c2Vy\r
 Host: we.want.that.site.com\r
+Proxy-Authorization: Basic ZmFrZTp1c2Vy\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 7a2e3d0..804a6fa 100644 (file)
@@ -74,9 +74,9 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /64 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/64", response="c55f7f30d83d774a3d2dcacf725abaca"\r
 User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index 001d598..f0b9742 100644 (file)
@@ -74,9 +74,9 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /65 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="testrealm", nonce="2053604145", uri="/65", response="66d68d3251f1839576ba7c766cf9205b"\r
 User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index 58d35e6..b343111 100644 (file)
@@ -86,15 +86,15 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /67 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /67 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index 92a915b..acd710f 100644 (file)
@@ -85,15 +85,15 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /68 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /68 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index 50603b0..887a460 100644 (file)
@@ -102,20 +102,20 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /69 HTTP/1.1\r
-User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Accept: */*\r
 \r
 GET /69 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /69 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index 74f70e1..9057d6a 100644 (file)
@@ -73,14 +73,14 @@ http://%HOSTIP:%HTTPPORT/70 -u testuser:testpass --anyauth
 </strip>
 <protocol>
 GET /70 HTTP/1.1\r
-User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Accept: */*\r
 \r
 GET /70 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604199", uri="/70", response="2c9a6f00af0d86497b177b90e90c688a"\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index b90e19c..8e3adaa 100644 (file)
@@ -72,14 +72,14 @@ http://%HOSTIP:%HTTPPORT/72 -u testuser:testpass --anyauth
 </strip>
 <protocol>
 GET /72 HTTP/1.1\r
-User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Accept: */*\r
 \r
 GET /72 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604199", uri="/72", response="9fcd1330377365a09bbcb33b2cbb25bd"\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index d60ee62..a23546d 100644 (file)
@@ -40,8 +40,8 @@ http://%HOSTIP:%HTTPPORT/we/want/73 -c log/jar73.txt -H "Host: host.NOT_DISCLOSE
 </strip>
 <protocol>
 GET /we/want/73 HTTP/1.1\r
-Accept: */*\r
 Host: host.NOT_DISCLOSED.se\r
+Accept: */*\r
 \r
 </protocol>
 <file name="log/jar73.txt" mode="text">
index 16805ca..147a6aa 100644 (file)
@@ -73,9 +73,9 @@ Proxy-Connection: Keep-Alive
 </proxy>
 <protocol>
 GET /we/want/that/page/80 HTTP/1.1\r
+Host: test.80:%HTTPPORT\r
 Authorization: Basic aWFtOm15c2VsZg==\r
 User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3\r
-Host: test.80:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index ff258ed..dc054d2 100644 (file)
@@ -85,16 +85,16 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET http://%HOSTIP:%HTTPPORT/81 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://%HOSTIP:%HTTPPORT/81 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 9e800bb..8b58f75 100644 (file)
@@ -45,9 +45,9 @@ http://%HOSTIP:%HTTPPORT/82 --proxy-user testuser:testpass -x http://%HOSTIP:%HT
 </strip>
 <protocol>
 GET http://%HOSTIP:%HTTPPORT/82 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Proxy-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index e00a288..120bcc6 100644 (file)
@@ -62,16 +62,16 @@ http://test.83:%HTTPPORT/we/want/that/page/83 -p -x %HOSTIP:%PROXYPORT --user 'i
 </strip>
 <proxy>
 CONNECT test.83:%HTTPPORT HTTP/1.1\r
-User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3\r
 Host: test.83:%HTTPPORT\r
+User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3\r
 Proxy-Connection: Keep-Alive\r
 \r
 </proxy>
 <protocol>
 GET /we/want/that/page/83 HTTP/1.1\r
+Host: test.83:%HTTPPORT\r
 Authorization: Basic aWFtOm15OjtzZWxm\r
 User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3\r
-Host: test.83:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
diff --git a/tests/data/test837 b/tests/data/test837
new file mode 100644 (file)
index 0000000..d597463
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH EXTERNAL
+RFC4422
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTHENTICATE +
+REPLY dXNlcg== A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP external authentication
+ </name>
+ <command>
+'imap://user;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/837/;UID=1'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE EXTERNAL\r
+dXNlcg==\r
+A003 SELECT 837\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test838 b/tests/data/test838
new file mode 100644 (file)
index 0000000..da2d28d
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH EXTERNAL
+RFC4422
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTHENTICATE +
+REPLY = A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP external authentication without credentials
+ </name>
+ <command>
+'imap://;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/838/;UID=1'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE EXTERNAL\r
+=\r
+A003 SELECT 838\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test839 b/tests/data/test839
new file mode 100644 (file)
index 0000000..2a544c1
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH EXTERNAL
+SASL-IR
+RFC4422
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+CAPA SASL-IR
+REPLY AUTHENTICATE A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP external authentication with initial response
+ </name>
+ <command>
+'imap://user;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/839/;UID=1'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE EXTERNAL dXNlcg==\r
+A003 SELECT 839\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
index 4dbf164..629dae2 100644 (file)
@@ -43,9 +43,9 @@ http://%HOSTIP:%HTTPPORT/we/want/that/page/84 -x %HOSTIP:%HTTPPORT --user iam:my
 </strip>
 <protocol>
 GET http://%HOSTIP:%HTTPPORT/we/want/that/page/84 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Basic aWFtOm15c2VsZg==\r
 User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
diff --git a/tests/data/test840 b/tests/data/test840
new file mode 100644 (file)
index 0000000..eaf1aee
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH EXTERNAL
+SASL-IR
+RFC4422
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+CAPA SASL-IR
+REPLY AUTHENTICATE A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP external authentication with initial response without credentials
+ </name>
+ <command>
+'imap://;AUTH=EXTERNAL@%HOSTIP:%IMAPPORT/840/;UID=1'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE EXTERNAL =\r
+A003 SELECT 840\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
index a5d1a3b..cb5e6e0 100644 (file)
@@ -46,10 +46,10 @@ http://%HOSTIP:%HTTPPORT/we/want/that/page/85 -x %HOSTIP:%HTTPPORT --user iam:my
 </strip>
 <protocol>
 GET http://%HOSTIP:%HTTPPORT/we/want/that/page/85 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Proxy-Authorization: Basic dGVzdGluZzp0aGlz\r
 Authorization: Basic aWFtOm15c2VsZg==\r
 User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 253b420..e2d019c 100644 (file)
@@ -85,9 +85,9 @@ Accept: */*
 Content-Length: 0\r
 \r
 PUT /88 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/88", response="78a49fa53d0c228778297687d4168e71"\r
 User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 85\r
 Expect: 100-continue\r
diff --git a/tests/data/test883 b/tests/data/test883
new file mode 100644 (file)
index 0000000..5d5a756
--- /dev/null
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH EXTERNAL
+RFC1734
+RFC4422
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH +
+REPLY dXNlcg== +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 external authentication
+ </name>
+ <command>
+'pop3://user;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/883'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH EXTERNAL\r
+dXNlcg==\r
+RETR 883\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test884 b/tests/data/test884
new file mode 100644 (file)
index 0000000..34fd94d
--- /dev/null
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH EXTERNAL
+RFC1734
+RFC4422
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH +
+REPLY = +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 external authentication without credentials
+ </name>
+ <command>
+'pop3://;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/884'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH EXTERNAL\r
+=\r
+RETR 884\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test885 b/tests/data/test885
new file mode 100644 (file)
index 0000000..581e9b2
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH EXTERNAL
+SASL-IR
+RFC1734
+RFC4422
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 external authentication with initial response
+ </name>
+ <command>
+'pop3://user;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/885' --sasl-ir
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH EXTERNAL dXNlcg==\r
+RETR 885\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test886 b/tests/data/test886
new file mode 100644 (file)
index 0000000..3aca2f1
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH EXTERNAL
+SASL-IR
+RFC1734
+RFC4422
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 external authentication with initial response without credentials
+ </name>
+ <command>
+'pop3://;AUTH=EXTERNAL@%HOSTIP:%POP3PORT/886' --sasl-ir
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH EXTERNAL =\r
+RETR 886\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
index cbabe8e..c7f69a2 100644 (file)
@@ -119,27 +119,27 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /89 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /89 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /you/890010 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.10.8-pre1 (i686-pc-linux-gnu) libcurl/7.10.8-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3 GSS\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /you/890010 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBALIBPdoGahtQQ8gQ7TJrKTYzMjM0NDIzNBFnpKw8B1BLcb456sVeozgBAQAAAAAAAACAPtXesZ0BMzIzNDQyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.8-pre1 (i686-pc-linux-gnu) libcurl/7.10.8-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3 GSS\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index 90dae2c..3b1231a 100644 (file)
@@ -161,15 +161,15 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /90 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /90 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /you/900010 HTTP/1.1\r
@@ -177,15 +177,15 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /you/900010 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.10.8-pre1 (i686-pc-linux-gnu) libcurl/7.10.8-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3 GSS\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /you/900010 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBALIBPdoGahtQQ8gQ7TJrKTYzMjM0NDIzNBFnpKw8B1BLcb456sVeozgBAQAAAAAAAACAPtXesZ0BMzIzNDQyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.8-pre1 (i686-pc-linux-gnu) libcurl/7.10.8-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3 GSS\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index 26ee318..35195ad 100644 (file)
@@ -103,20 +103,20 @@ chkhostname curlhost
 </strip>
 <protocol>
 GET /91 HTTP/1.1\r
-User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Accept: */*\r
 \r
 GET /91 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /91 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAgACAD2AAAABgAGAP4AAAAIAAgABAEAAAAAAAAAAAAABoKBAI9byKoy6qyyS+1JCYN1XYoxMjM0MjIzNEYCr85trkciZ2j/7/T8MmUBAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAbXlkb21haW5teXNlbGZjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
-Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
index bf78276..1304c81 100644 (file)
@@ -45,8 +45,8 @@ http://%HOSTIP:%HTTPPORT/want/92 -C 87
 </strip>
 <protocol>
 GET /want/92 HTTP/1.1\r
-Range: bytes=87-\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=87-\r
 Accept: */*\r
 \r
 </protocol>
index 7299d34..7931d0a 100644 (file)
@@ -61,3 +61,5 @@ QUIT
 mail body\r
 .\r
 </upload>
+</verify>
+</testcase>
diff --git a/tests/data/test942 b/tests/data/test942
new file mode 100644 (file)
index 0000000..26740f7
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH EXTERNAL
+RFC4422
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH 334 EXTERNAL supported
+REPLY dXNlcg== 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP external authentication
+ </name>
+<stdin>
+mail body\r
+</stdin>
+ <command>
+'smtp://user;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/942' --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 942\r
+AUTH EXTERNAL\r
+dXNlcg==\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test943 b/tests/data/test943
new file mode 100644 (file)
index 0000000..aef2c62
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH EXTERNAL
+RFC4422
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH 334 EXTERNAL supported
+REPLY = 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP external authentication without credentials
+ </name>
+<stdin>
+mail body\r
+</stdin>
+ <command>
+'smtp://;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/943' --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 943\r
+AUTH EXTERNAL\r
+=\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test944 b/tests/data/test944
new file mode 100644 (file)
index 0000000..4b60f12
--- /dev/null
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH EXTERNAL
+SASL-IR
+RFC4422
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP external authentication with initial response
+ </name>
+<stdin>
+mail body\r
+</stdin>
+ <command>
+'smtp://user;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/944' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 944\r
+AUTH EXTERNAL dXNlcg==\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test945 b/tests/data/test945
new file mode 100644 (file)
index 0000000..3526408
--- /dev/null
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH EXTERNAL
+SASL-IR
+RFC4422
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH EXTERNAL
+REPLY AUTH 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP external authentication with initial response without credentials
+ </name>
+<stdin>
+mail body\r
+</stdin>
+ <command>
+'smtp://;AUTH=EXTERNAL@%HOSTIP:%SMTPPORT/945' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 945\r
+AUTH EXTERNAL =\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
+</verify>
+</testcase>
index 3d9a933..27044bc 100644 (file)
@@ -37,7 +37,7 @@ MEM tool_cfgable.c
 MEM tool_cfgable.c
 </file>
 <stripfile>
-$_ = '' if (($_ !~ /tool_paramhlp/) && ($_ !~ /tool_cfgable/))
+$_ = '' if ((($_ !~ /tool_paramhlp/) && ($_ !~ /tool_cfgable/)) || ($_ =~ /free\(\(nil\)\)/))
 s/:\d+.*//
 s:^(MEM )(.*/)(.*):$1$3:
 </stripfile>
index 2517002..9797600 100644 (file)
@@ -60,8 +60,8 @@ http://%HOSTIP:%HTTPPORT/99 -C 9999999999
 </strip>
 <protocol>
 GET /99 HTTP/1.1\r
-Range: bytes=9999999999-\r
 Host: %HOSTIP:%HTTPPORT\r
+Range: bytes=9999999999-\r
 Accept: */*\r
 \r
 </protocol>
diff --git a/tests/extern-scan.pl b/tests/extern-scan.pl
new file mode 100755 (executable)
index 0000000..49d0c86
--- /dev/null
@@ -0,0 +1,60 @@
+#!/usr/bin/env perl
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 2010-2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at 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.
+#
+###########################################################################
+#
+#
+
+use strict;
+use warnings;
+
+# we may get the dir root pointed out
+my $root=$ARGV[0] || ".";
+
+my @incs = (
+    "$root/include/curl/curl.h",
+    "$root/include/curl/easy.h",
+    "$root/include/curl/mprintf.h",
+    "$root/include/curl/multi.h",
+    );
+
+my $verbose=0;
+my $summary=0;
+my $misses=0;
+
+my @syms;
+my %doc;
+my %rem;
+
+sub scanheader {
+    my ($f)=@_;
+    open H, "<$f" || die;
+    while(<H>) {
+        if (/^(CURL_EXTERN.*)/) {
+            print "$1\n";
+        }
+    }
+    close H;
+}
+
+foreach my $i (@incs) {
+    scanheader($i);
+}
diff --git a/tests/libtest/CMakeLists.txt b/tests/libtest/CMakeLists.txt
new file mode 100644 (file)
index 0000000..cc9d7e1
--- /dev/null
@@ -0,0 +1,122 @@
+set(TARGET_LABEL_PREFIX "Test ")
+
+function(SETUP_TEST TEST_NAME)          # ARGN are the files in the test
+  add_executable( ${TEST_NAME} ${ARGN} )
+  string(TOUPPER ${TEST_NAME} UPPER_TEST_NAME)
+
+  include_directories(
+    ${CURL_SOURCE_DIR}/lib          # To be able to reach "curl_setup_once.h"
+    ${CURL_BINARY_DIR}/lib          # To be able to reach "curl_config.h"
+    ${CURL_BINARY_DIR}/include      # To be able to reach "curl/curlbuild.h"
+    )
+  if(USE_ARES)
+    include_directories(${CARES_INCLUDE_DIR})
+  endif()
+
+  target_link_libraries( ${TEST_NAME} libcurl ${CURL_LIBS})
+
+  set_target_properties(${TEST_NAME}
+    PROPERTIES COMPILE_DEFINITIONS ${UPPER_TEST_NAME})
+  set_target_properties(${TEST_NAME}
+    PROPERTIES PROJECT_LABEL "${TARGET_LABEL_PREFIX}${TEST_NAME}")
+
+  # Add the postfix to the executable since it is
+  # not added automatically as for modules and shared libraries
+  set_target_properties(${TEST_NAME}
+    PROPERTIES DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
+
+endfunction()
+
+
+transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
+include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake)
+
+foreach(TEST_NAME ${noinst_PROGRAMS})
+  setup_test(${TEST_NAME} ${${TEST_NAME}_SOURCES})
+endforeach()
+
+# Allows for hostname override to make tests machine independent.
+# TODO this cmake build assumes a shared build, detect static linking here!
+if(NOT WIN32)
+  add_library(hostname MODULE sethostname.c sethostname.h)
+  # Output to .libs for compatibility with autotools, the test data expects a
+  # library at (tests)/libtest/.libs/libhostname.so
+  set_target_properties(hostname PROPERTIES
+      LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/.libs)
+endif()
+
+# # files used only in some libcurl test programs
+# SET(TESTUTIL testutil.c testutil.h)
+
+# # these files are used in every single test program below
+# SET(SUPPORTFILES first.c test.h)
+
+# # These are all libcurl test programs
+# SET(noinst_PROGRAMS
+# lib500 lib501 lib502 lib503 lib504 lib505 lib506
+# lib507 lib508 lib510 lib511 lib512 lib513 lib514 lib515 lib516
+# lib517 lib518 lib519 lib520 lib521 lib523 lib524 lib525 lib526
+# #lib527
+# #lib529
+# lib530
+# #lib532
+# lib533 lib536 lib537 lib540 lib541 lib542 lib543
+# lib544
+# #lib545
+# lib547
+# #lib548
+# lib549 lib552 lib553 lib554 lib555 lib556
+# lib539 lib557
+# lib560
+# )
+
+# SET(noinst_PROGRAMS_USE_TESTUTIL
+# lib502 lib503 lib504
+# lib507
+# lib525 lib526 lib527
+# lib529
+# lib530
+# lib532
+# lib533 lib536
+# lib555
+# )
+
+# MACRO(ADD_TESTUTIL_IF_NECESSARY TEST_NAME)
+# LIST(FIND noinst_PROGRAMS_USE_TESTUTIL ${TEST_NAME} USES_TESTUTIL)
+# IF(NOT ${USES_TESTUTIL} EQUAL -1)
+# LIST(APPEND SOURCE ${TESTUTIL})               # Need TestUtil
+# ENDIF()
+# ENDMACRO()
+
+# # General case
+# FOREACH(TEST_NAME ${noinst_PROGRAMS})
+# SET(SOURCE "${TEST_NAME}.c" ${SUPPORTFILES})
+# ADD_TESTUTIL_IF_NECESSARY(${TEST_NAME})
+# SETUP_TEST(${TEST_NAME} ${SOURCE})
+# ENDFOREACH()
+
+# # Special cases
+# SET(TEST_NAME lib527)
+# SET(SOURCE "lib526.c" ${SUPPORTFILES})
+# ADD_TESTUTIL_IF_NECESSARY(${TEST_NAME})
+# SETUP_TEST(${TEST_NAME} ${SOURCE})
+
+# SET(TEST_NAME lib529)
+# SET(SOURCE "lib525.c" ${SUPPORTFILES})
+# ADD_TESTUTIL_IF_NECESSARY(${TEST_NAME})
+# SETUP_TEST(${TEST_NAME} ${SOURCE})
+
+# SET(TEST_NAME lib532)
+# SET(SOURCE "lib526.c" ${SUPPORTFILES})
+# ADD_TESTUTIL_IF_NECESSARY(${TEST_NAME})
+# SETUP_TEST(${TEST_NAME} ${SOURCE})
+
+# SET(TEST_NAME lib545)
+# SET(SOURCE "lib544.c" ${SUPPORTFILES})
+# ADD_TESTUTIL_IF_NECESSARY(${TEST_NAME})
+# SETUP_TEST(${TEST_NAME} ${SOURCE})
+
+# SET(TEST_NAME lib548)
+# SET(SOURCE "lib547.c" ${SUPPORTFILES})
+# ADD_TESTUTIL_IF_NECESSARY(${TEST_NAME})
+# SETUP_TEST(${TEST_NAME} ${SOURCE})
index 80707b1..d255b22 100644 (file)
@@ -51,7 +51,7 @@ AM_CPPFLAGS = -I$(top_builddir)/include/curl \
 endif
 
 EXTRA_DIST = test75.pl test307.pl test610.pl test613.pl test1013.pl    \
-test1022.pl Makefile.inc notexists.pl
+test1022.pl Makefile.inc notexists.pl CMakeLists.txt
 
 CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
 
@@ -62,8 +62,8 @@ if USE_EXPLICIT_LIB_DEPS
 SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
 TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
 else
-SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_LIBS@
-TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_AND_TIME_LIBS@
+SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_LIBS@ @NSS_LIBS@
+TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_AND_TIME_LIBS@ @NSS_LIBS@
 endif
 
 # Dependencies (may need to be overriden)
index bc276f5..6561963 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,9 +89,6 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
-       $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs \
-       $(top_srcdir)/depcomp
 noinst_PROGRAMS = chkhostname$(EXEEXT) libauthretry$(EXEEXT) \
        libntlmconnect$(EXEEXT) lib500$(EXEEXT) lib501$(EXEEXT) \
        lib502$(EXEEXT) lib503$(EXEEXT) lib504$(EXEEXT) \
@@ -116,7 +123,8 @@ noinst_PROGRAMS = chkhostname$(EXEEXT) libauthretry$(EXEEXT) \
        lib1512$(EXEEXT) lib1513$(EXEEXT) lib1514$(EXEEXT) \
        lib1515$(EXEEXT) lib1520$(EXEEXT) lib1525$(EXEEXT) \
        lib1526$(EXEEXT) lib1527$(EXEEXT) lib1528$(EXEEXT) \
-       lib1529$(EXEEXT) lib1900$(EXEEXT) lib2033$(EXEEXT)
+       lib1529$(EXEEXT) lib1530$(EXEEXT) lib1531$(EXEEXT) \
+       lib1900$(EXEEXT) lib2033$(EXEEXT)
 @USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
 @CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
 @CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_3 = -mimpure-text
@@ -143,7 +151,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -320,473 +329,487 @@ am_lib1529_OBJECTS = lib1529-lib1529.$(OBJEXT) $(am__objects_61) \
        $(am__objects_62) $(am__objects_63)
 lib1529_OBJECTS = $(am_lib1529_OBJECTS)
 lib1529_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_64 = lib1900-first.$(OBJEXT)
-am__objects_65 = lib1900-testutil.$(OBJEXT)
-am__objects_66 = ../../lib/lib1900-warnless.$(OBJEXT)
-am_lib1900_OBJECTS = lib1900-lib1900.$(OBJEXT) $(am__objects_64) \
+am__objects_64 = lib1530-first.$(OBJEXT)
+am__objects_65 = lib1530-testutil.$(OBJEXT)
+am__objects_66 = ../../lib/lib1530-warnless.$(OBJEXT)
+am_lib1530_OBJECTS = lib1530-lib1530.$(OBJEXT) $(am__objects_64) \
        $(am__objects_65) $(am__objects_66)
+lib1530_OBJECTS = $(am_lib1530_OBJECTS)
+lib1530_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_67 = lib1531-first.$(OBJEXT)
+am__objects_68 = lib1531-testutil.$(OBJEXT)
+am__objects_69 = ../../lib/lib1531-warnless.$(OBJEXT)
+am_lib1531_OBJECTS = lib1531-lib1531.$(OBJEXT) $(am__objects_67) \
+       $(am__objects_68) $(am__objects_69)
+lib1531_OBJECTS = $(am_lib1531_OBJECTS)
+lib1531_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_70 = lib1900-first.$(OBJEXT)
+am__objects_71 = lib1900-testutil.$(OBJEXT)
+am__objects_72 = ../../lib/lib1900-warnless.$(OBJEXT)
+am_lib1900_OBJECTS = lib1900-lib1900.$(OBJEXT) $(am__objects_70) \
+       $(am__objects_71) $(am__objects_72)
 lib1900_OBJECTS = $(am_lib1900_OBJECTS)
 lib1900_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_67 = lib2033-first.$(OBJEXT)
-am__objects_68 = lib2033-testutil.$(OBJEXT)
-am__objects_69 = ../../lib/lib2033-warnless.$(OBJEXT)
+am__objects_73 = lib2033-first.$(OBJEXT)
+am__objects_74 = lib2033-testutil.$(OBJEXT)
+am__objects_75 = ../../lib/lib2033-warnless.$(OBJEXT)
 am_lib2033_OBJECTS = lib2033-libntlmconnect.$(OBJEXT) \
-       $(am__objects_67) $(am__objects_68) $(am__objects_69)
+       $(am__objects_73) $(am__objects_74) $(am__objects_75)
 lib2033_OBJECTS = $(am_lib2033_OBJECTS)
 lib2033_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_70 = lib500-first.$(OBJEXT)
-am__objects_71 = lib500-testutil.$(OBJEXT)
-am__objects_72 = lib500-testtrace.$(OBJEXT)
-am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_70) \
-       $(am__objects_71) $(am__objects_72)
+am__objects_76 = lib500-first.$(OBJEXT)
+am__objects_77 = lib500-testutil.$(OBJEXT)
+am__objects_78 = lib500-testtrace.$(OBJEXT)
+am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_76) \
+       $(am__objects_77) $(am__objects_78)
 lib500_OBJECTS = $(am_lib500_OBJECTS)
 lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_73 = lib501-first.$(OBJEXT)
-am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_73)
+am__objects_79 = lib501-first.$(OBJEXT)
+am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_79)
 lib501_OBJECTS = $(am_lib501_OBJECTS)
 lib501_LDADD = $(LDADD)
 lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_74 = lib502-first.$(OBJEXT)
-am__objects_75 = lib502-testutil.$(OBJEXT)
-am__objects_76 = ../../lib/lib502-warnless.$(OBJEXT)
-am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_74) \
-       $(am__objects_75) $(am__objects_76)
+am__objects_80 = lib502-first.$(OBJEXT)
+am__objects_81 = lib502-testutil.$(OBJEXT)
+am__objects_82 = ../../lib/lib502-warnless.$(OBJEXT)
+am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_80) \
+       $(am__objects_81) $(am__objects_82)
 lib502_OBJECTS = $(am_lib502_OBJECTS)
 lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_77 = lib503-first.$(OBJEXT)
-am__objects_78 = lib503-testutil.$(OBJEXT)
-am__objects_79 = ../../lib/lib503-warnless.$(OBJEXT)
-am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_77) \
-       $(am__objects_78) $(am__objects_79)
+am__objects_83 = lib503-first.$(OBJEXT)
+am__objects_84 = lib503-testutil.$(OBJEXT)
+am__objects_85 = ../../lib/lib503-warnless.$(OBJEXT)
+am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_83) \
+       $(am__objects_84) $(am__objects_85)
 lib503_OBJECTS = $(am_lib503_OBJECTS)
 lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_80 = lib504-first.$(OBJEXT)
-am__objects_81 = lib504-testutil.$(OBJEXT)
-am__objects_82 = ../../lib/lib504-warnless.$(OBJEXT)
-am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_80) \
-       $(am__objects_81) $(am__objects_82)
+am__objects_86 = lib504-first.$(OBJEXT)
+am__objects_87 = lib504-testutil.$(OBJEXT)
+am__objects_88 = ../../lib/lib504-warnless.$(OBJEXT)
+am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_86) \
+       $(am__objects_87) $(am__objects_88)
 lib504_OBJECTS = $(am_lib504_OBJECTS)
 lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_83 = lib505-first.$(OBJEXT)
-am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_83)
+am__objects_89 = lib505-first.$(OBJEXT)
+am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_89)
 lib505_OBJECTS = $(am_lib505_OBJECTS)
 lib505_LDADD = $(LDADD)
 lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_84 = lib506-first.$(OBJEXT)
-am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_84)
+am__objects_90 = lib506-first.$(OBJEXT)
+am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_90)
 lib506_OBJECTS = $(am_lib506_OBJECTS)
 lib506_LDADD = $(LDADD)
 lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_85 = lib507-first.$(OBJEXT)
-am__objects_86 = lib507-testutil.$(OBJEXT)
-am__objects_87 = ../../lib/lib507-warnless.$(OBJEXT)
-am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_85) \
-       $(am__objects_86) $(am__objects_87)
+am__objects_91 = lib507-first.$(OBJEXT)
+am__objects_92 = lib507-testutil.$(OBJEXT)
+am__objects_93 = ../../lib/lib507-warnless.$(OBJEXT)
+am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_91) \
+       $(am__objects_92) $(am__objects_93)
 lib507_OBJECTS = $(am_lib507_OBJECTS)
 lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_88 = lib508-first.$(OBJEXT)
-am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_88)
+am__objects_94 = lib508-first.$(OBJEXT)
+am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_94)
 lib508_OBJECTS = $(am_lib508_OBJECTS)
 lib508_LDADD = $(LDADD)
 lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_89 = lib509-first.$(OBJEXT)
-am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_89)
+am__objects_95 = lib509-first.$(OBJEXT)
+am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_95)
 lib509_OBJECTS = $(am_lib509_OBJECTS)
 lib509_LDADD = $(LDADD)
 lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_90 = lib510-first.$(OBJEXT)
-am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_90)
+am__objects_96 = lib510-first.$(OBJEXT)
+am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_96)
 lib510_OBJECTS = $(am_lib510_OBJECTS)
 lib510_LDADD = $(LDADD)
 lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_91 = lib511-first.$(OBJEXT)
-am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_91)
+am__objects_97 = lib511-first.$(OBJEXT)
+am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_97)
 lib511_OBJECTS = $(am_lib511_OBJECTS)
 lib511_LDADD = $(LDADD)
 lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_92 = lib512-first.$(OBJEXT)
-am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_92)
+am__objects_98 = lib512-first.$(OBJEXT)
+am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_98)
 lib512_OBJECTS = $(am_lib512_OBJECTS)
 lib512_LDADD = $(LDADD)
 lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_93 = lib513-first.$(OBJEXT)
-am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_93)
+am__objects_99 = lib513-first.$(OBJEXT)
+am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_99)
 lib513_OBJECTS = $(am_lib513_OBJECTS)
 lib513_LDADD = $(LDADD)
 lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_94 = lib514-first.$(OBJEXT)
-am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_94)
+am__objects_100 = lib514-first.$(OBJEXT)
+am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_100)
 lib514_OBJECTS = $(am_lib514_OBJECTS)
 lib514_LDADD = $(LDADD)
 lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_95 = lib515-first.$(OBJEXT)
-am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_95)
+am__objects_101 = lib515-first.$(OBJEXT)
+am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_101)
 lib515_OBJECTS = $(am_lib515_OBJECTS)
 lib515_LDADD = $(LDADD)
 lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_96 = lib516-first.$(OBJEXT)
-am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_96)
+am__objects_102 = lib516-first.$(OBJEXT)
+am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_102)
 lib516_OBJECTS = $(am_lib516_OBJECTS)
 lib516_LDADD = $(LDADD)
 lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_97 = lib517-first.$(OBJEXT)
-am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_97)
+am__objects_103 = lib517-first.$(OBJEXT)
+am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_103)
 lib517_OBJECTS = $(am_lib517_OBJECTS)
 lib517_LDADD = $(LDADD)
 lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_98 = lib518-first.$(OBJEXT)
-am__objects_99 = ../../lib/lib518-warnless.$(OBJEXT)
-am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_98) \
-       $(am__objects_99)
+am__objects_104 = lib518-first.$(OBJEXT)
+am__objects_105 = ../../lib/lib518-warnless.$(OBJEXT)
+am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_104) \
+       $(am__objects_105)
 lib518_OBJECTS = $(am_lib518_OBJECTS)
 lib518_LDADD = $(LDADD)
 lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_100 = lib519-first.$(OBJEXT)
-am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_100)
+am__objects_106 = lib519-first.$(OBJEXT)
+am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_106)
 lib519_OBJECTS = $(am_lib519_OBJECTS)
 lib519_LDADD = $(LDADD)
 lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_101 = lib520-first.$(OBJEXT)
-am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_101)
+am__objects_107 = lib520-first.$(OBJEXT)
+am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_107)
 lib520_OBJECTS = $(am_lib520_OBJECTS)
 lib520_LDADD = $(LDADD)
 lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_102 = lib521-first.$(OBJEXT)
-am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_102)
+am__objects_108 = lib521-first.$(OBJEXT)
+am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_108)
 lib521_OBJECTS = $(am_lib521_OBJECTS)
 lib521_LDADD = $(LDADD)
 lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_103 = lib523-first.$(OBJEXT)
-am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_103)
+am__objects_109 = lib523-first.$(OBJEXT)
+am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_109)
 lib523_OBJECTS = $(am_lib523_OBJECTS)
 lib523_LDADD = $(LDADD)
 lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_104 = lib524-first.$(OBJEXT)
-am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_104)
+am__objects_110 = lib524-first.$(OBJEXT)
+am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_110)
 lib524_OBJECTS = $(am_lib524_OBJECTS)
 lib524_LDADD = $(LDADD)
 lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_105 = lib525-first.$(OBJEXT)
-am__objects_106 = lib525-testutil.$(OBJEXT)
-am__objects_107 = ../../lib/lib525-warnless.$(OBJEXT)
-am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_105) \
-       $(am__objects_106) $(am__objects_107)
+am__objects_111 = lib525-first.$(OBJEXT)
+am__objects_112 = lib525-testutil.$(OBJEXT)
+am__objects_113 = ../../lib/lib525-warnless.$(OBJEXT)
+am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_111) \
+       $(am__objects_112) $(am__objects_113)
 lib525_OBJECTS = $(am_lib525_OBJECTS)
 lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_108 = lib526-first.$(OBJEXT)
-am__objects_109 = lib526-testutil.$(OBJEXT)
-am__objects_110 = ../../lib/lib526-warnless.$(OBJEXT)
-am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_108) \
-       $(am__objects_109) $(am__objects_110)
+am__objects_114 = lib526-first.$(OBJEXT)
+am__objects_115 = lib526-testutil.$(OBJEXT)
+am__objects_116 = ../../lib/lib526-warnless.$(OBJEXT)
+am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_114) \
+       $(am__objects_115) $(am__objects_116)
 lib526_OBJECTS = $(am_lib526_OBJECTS)
 lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_111 = lib527-first.$(OBJEXT)
-am__objects_112 = lib527-testutil.$(OBJEXT)
-am__objects_113 = ../../lib/lib527-warnless.$(OBJEXT)
-am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_111) \
-       $(am__objects_112) $(am__objects_113)
+am__objects_117 = lib527-first.$(OBJEXT)
+am__objects_118 = lib527-testutil.$(OBJEXT)
+am__objects_119 = ../../lib/lib527-warnless.$(OBJEXT)
+am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_117) \
+       $(am__objects_118) $(am__objects_119)
 lib527_OBJECTS = $(am_lib527_OBJECTS)
 lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_114 = lib529-first.$(OBJEXT)
-am__objects_115 = lib529-testutil.$(OBJEXT)
-am__objects_116 = ../../lib/lib529-warnless.$(OBJEXT)
-am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_114) \
-       $(am__objects_115) $(am__objects_116)
+am__objects_120 = lib529-first.$(OBJEXT)
+am__objects_121 = lib529-testutil.$(OBJEXT)
+am__objects_122 = ../../lib/lib529-warnless.$(OBJEXT)
+am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_120) \
+       $(am__objects_121) $(am__objects_122)
 lib529_OBJECTS = $(am_lib529_OBJECTS)
 lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_117 = lib530-first.$(OBJEXT)
-am__objects_118 = lib530-testutil.$(OBJEXT)
-am__objects_119 = ../../lib/lib530-warnless.$(OBJEXT)
-am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_117) \
-       $(am__objects_118) $(am__objects_119)
+am__objects_123 = lib530-first.$(OBJEXT)
+am__objects_124 = lib530-testutil.$(OBJEXT)
+am__objects_125 = ../../lib/lib530-warnless.$(OBJEXT)
+am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_123) \
+       $(am__objects_124) $(am__objects_125)
 lib530_OBJECTS = $(am_lib530_OBJECTS)
 lib530_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_120 = lib532-first.$(OBJEXT)
-am__objects_121 = lib532-testutil.$(OBJEXT)
-am__objects_122 = ../../lib/lib532-warnless.$(OBJEXT)
-am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_120) \
-       $(am__objects_121) $(am__objects_122)
+am__objects_126 = lib532-first.$(OBJEXT)
+am__objects_127 = lib532-testutil.$(OBJEXT)
+am__objects_128 = ../../lib/lib532-warnless.$(OBJEXT)
+am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_126) \
+       $(am__objects_127) $(am__objects_128)
 lib532_OBJECTS = $(am_lib532_OBJECTS)
 lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_123 = lib533-first.$(OBJEXT)
-am__objects_124 = lib533-testutil.$(OBJEXT)
-am__objects_125 = ../../lib/lib533-warnless.$(OBJEXT)
-am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_123) \
-       $(am__objects_124) $(am__objects_125)
+am__objects_129 = lib533-first.$(OBJEXT)
+am__objects_130 = lib533-testutil.$(OBJEXT)
+am__objects_131 = ../../lib/lib533-warnless.$(OBJEXT)
+am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_129) \
+       $(am__objects_130) $(am__objects_131)
 lib533_OBJECTS = $(am_lib533_OBJECTS)
 lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_126 = lib536-first.$(OBJEXT)
-am__objects_127 = lib536-testutil.$(OBJEXT)
-am__objects_128 = ../../lib/lib536-warnless.$(OBJEXT)
-am_lib536_OBJECTS = lib536-lib536.$(OBJEXT) $(am__objects_126) \
-       $(am__objects_127) $(am__objects_128)
+am__objects_132 = lib536-first.$(OBJEXT)
+am__objects_133 = lib536-testutil.$(OBJEXT)
+am__objects_134 = ../../lib/lib536-warnless.$(OBJEXT)
+am_lib536_OBJECTS = lib536-lib536.$(OBJEXT) $(am__objects_132) \
+       $(am__objects_133) $(am__objects_134)
 lib536_OBJECTS = $(am_lib536_OBJECTS)
 lib536_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_129 = lib537-first.$(OBJEXT)
-am__objects_130 = ../../lib/lib537-warnless.$(OBJEXT)
-am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_129) \
-       $(am__objects_130)
+am__objects_135 = lib537-first.$(OBJEXT)
+am__objects_136 = ../../lib/lib537-warnless.$(OBJEXT)
+am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_135) \
+       $(am__objects_136)
 lib537_OBJECTS = $(am_lib537_OBJECTS)
 lib537_LDADD = $(LDADD)
 lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_131 = lib539-first.$(OBJEXT)
-am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_131)
+am__objects_137 = lib539-first.$(OBJEXT)
+am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_137)
 lib539_OBJECTS = $(am_lib539_OBJECTS)
 lib539_LDADD = $(LDADD)
 lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_132 = lib540-first.$(OBJEXT)
-am__objects_133 = lib540-testutil.$(OBJEXT)
-am__objects_134 = ../../lib/lib540-warnless.$(OBJEXT)
-am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_132) \
-       $(am__objects_133) $(am__objects_134)
+am__objects_138 = lib540-first.$(OBJEXT)
+am__objects_139 = lib540-testutil.$(OBJEXT)
+am__objects_140 = ../../lib/lib540-warnless.$(OBJEXT)
+am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_138) \
+       $(am__objects_139) $(am__objects_140)
 lib540_OBJECTS = $(am_lib540_OBJECTS)
 lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_135 = lib541-first.$(OBJEXT)
-am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_135)
+am__objects_141 = lib541-first.$(OBJEXT)
+am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_141)
 lib541_OBJECTS = $(am_lib541_OBJECTS)
 lib541_LDADD = $(LDADD)
 lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_136 = lib542-first.$(OBJEXT)
-am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_136)
+am__objects_142 = lib542-first.$(OBJEXT)
+am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_142)
 lib542_OBJECTS = $(am_lib542_OBJECTS)
 lib542_LDADD = $(LDADD)
 lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_137 = lib543-first.$(OBJEXT)
-am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_137)
+am__objects_143 = lib543-first.$(OBJEXT)
+am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_143)
 lib543_OBJECTS = $(am_lib543_OBJECTS)
 lib543_LDADD = $(LDADD)
 lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_138 = lib544-first.$(OBJEXT)
-am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_138)
+am__objects_144 = lib544-first.$(OBJEXT)
+am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_144)
 lib544_OBJECTS = $(am_lib544_OBJECTS)
 lib544_LDADD = $(LDADD)
 lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_139 = lib545-first.$(OBJEXT)
-am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_139)
+am__objects_145 = lib545-first.$(OBJEXT)
+am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_145)
 lib545_OBJECTS = $(am_lib545_OBJECTS)
 lib545_LDADD = $(LDADD)
 lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_140 = lib547-first.$(OBJEXT)
-am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_140)
+am__objects_146 = lib547-first.$(OBJEXT)
+am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_146)
 lib547_OBJECTS = $(am_lib547_OBJECTS)
 lib547_LDADD = $(LDADD)
 lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_141 = lib548-first.$(OBJEXT)
-am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_141)
+am__objects_147 = lib548-first.$(OBJEXT)
+am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_147)
 lib548_OBJECTS = $(am_lib548_OBJECTS)
 lib548_LDADD = $(LDADD)
 lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_142 = lib549-first.$(OBJEXT)
-am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_142)
+am__objects_148 = lib549-first.$(OBJEXT)
+am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_148)
 lib549_OBJECTS = $(am_lib549_OBJECTS)
 lib549_LDADD = $(LDADD)
 lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_143 = lib552-first.$(OBJEXT)
-am__objects_144 = ../../lib/lib552-warnless.$(OBJEXT)
-am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_143) \
-       $(am__objects_144)
+am__objects_149 = lib552-first.$(OBJEXT)
+am__objects_150 = ../../lib/lib552-warnless.$(OBJEXT)
+am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_149) \
+       $(am__objects_150)
 lib552_OBJECTS = $(am_lib552_OBJECTS)
 lib552_LDADD = $(LDADD)
 lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_145 = lib553-first.$(OBJEXT)
-am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_145)
+am__objects_151 = lib553-first.$(OBJEXT)
+am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_151)
 lib553_OBJECTS = $(am_lib553_OBJECTS)
 lib553_LDADD = $(LDADD)
 lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_146 = lib554-first.$(OBJEXT)
-am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_146)
+am__objects_152 = lib554-first.$(OBJEXT)
+am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_152)
 lib554_OBJECTS = $(am_lib554_OBJECTS)
 lib554_LDADD = $(LDADD)
 lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_147 = lib555-first.$(OBJEXT)
-am__objects_148 = lib555-testutil.$(OBJEXT)
-am__objects_149 = ../../lib/lib555-warnless.$(OBJEXT)
-am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_147) \
-       $(am__objects_148) $(am__objects_149)
+am__objects_153 = lib555-first.$(OBJEXT)
+am__objects_154 = lib555-testutil.$(OBJEXT)
+am__objects_155 = ../../lib/lib555-warnless.$(OBJEXT)
+am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_153) \
+       $(am__objects_154) $(am__objects_155)
 lib555_OBJECTS = $(am_lib555_OBJECTS)
 lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_150 = lib556-first.$(OBJEXT)
-am__objects_151 = ../../lib/lib556-warnless.$(OBJEXT)
-am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_150) \
-       $(am__objects_151)
+am__objects_156 = lib556-first.$(OBJEXT)
+am__objects_157 = ../../lib/lib556-warnless.$(OBJEXT)
+am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_156) \
+       $(am__objects_157)
 lib556_OBJECTS = $(am_lib556_OBJECTS)
 lib556_LDADD = $(LDADD)
 lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_152 = lib557-first.$(OBJEXT)
-am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_152)
+am__objects_158 = lib557-first.$(OBJEXT)
+am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_158)
 lib557_OBJECTS = $(am_lib557_OBJECTS)
 lib557_LDADD = $(LDADD)
 lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_153 = lib558-first.$(OBJEXT)
-am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_153)
+am__objects_159 = lib558-first.$(OBJEXT)
+am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_159)
 lib558_OBJECTS = $(am_lib558_OBJECTS)
 lib558_LDADD = $(LDADD)
 lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_154 = lib560-first.$(OBJEXT)
-am__objects_155 = lib560-testutil.$(OBJEXT)
-am__objects_156 = ../../lib/lib560-warnless.$(OBJEXT)
-am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_154) \
-       $(am__objects_155) $(am__objects_156)
+am__objects_160 = lib560-first.$(OBJEXT)
+am__objects_161 = lib560-testutil.$(OBJEXT)
+am__objects_162 = ../../lib/lib560-warnless.$(OBJEXT)
+am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_160) \
+       $(am__objects_161) $(am__objects_162)
 lib560_OBJECTS = $(am_lib560_OBJECTS)
 lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_157 = lib562-first.$(OBJEXT)
-am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_157)
+am__objects_163 = lib562-first.$(OBJEXT)
+am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_163)
 lib562_OBJECTS = $(am_lib562_OBJECTS)
 lib562_LDADD = $(LDADD)
 lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_158 = lib564-first.$(OBJEXT)
-am__objects_159 = lib564-testutil.$(OBJEXT)
-am__objects_160 = ../../lib/lib564-warnless.$(OBJEXT)
-am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_158) \
-       $(am__objects_159) $(am__objects_160)
+am__objects_164 = lib564-first.$(OBJEXT)
+am__objects_165 = lib564-testutil.$(OBJEXT)
+am__objects_166 = ../../lib/lib564-warnless.$(OBJEXT)
+am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_164) \
+       $(am__objects_165) $(am__objects_166)
 lib564_OBJECTS = $(am_lib564_OBJECTS)
 lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_161 = lib565-first.$(OBJEXT)
-am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_161)
+am__objects_167 = lib565-first.$(OBJEXT)
+am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_167)
 lib565_OBJECTS = $(am_lib565_OBJECTS)
 lib565_LDADD = $(LDADD)
 lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_162 = lib566-first.$(OBJEXT)
-am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_162)
+am__objects_168 = lib566-first.$(OBJEXT)
+am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_168)
 lib566_OBJECTS = $(am_lib566_OBJECTS)
 lib566_LDADD = $(LDADD)
 lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_163 = lib567-first.$(OBJEXT)
-am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_163)
+am__objects_169 = lib567-first.$(OBJEXT)
+am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_169)
 lib567_OBJECTS = $(am_lib567_OBJECTS)
 lib567_LDADD = $(LDADD)
 lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_164 = lib568-first.$(OBJEXT)
-am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_164)
+am__objects_170 = lib568-first.$(OBJEXT)
+am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_170)
 lib568_OBJECTS = $(am_lib568_OBJECTS)
 lib568_LDADD = $(LDADD)
 lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_165 = lib569-first.$(OBJEXT)
-am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_165)
+am__objects_171 = lib569-first.$(OBJEXT)
+am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_171)
 lib569_OBJECTS = $(am_lib569_OBJECTS)
 lib569_LDADD = $(LDADD)
 lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_166 = lib570-first.$(OBJEXT)
-am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_166)
+am__objects_172 = lib570-first.$(OBJEXT)
+am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_172)
 lib570_OBJECTS = $(am_lib570_OBJECTS)
 lib570_LDADD = $(LDADD)
 lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_167 = lib571-first.$(OBJEXT)
-am__objects_168 = ../../lib/lib571-warnless.$(OBJEXT)
-am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_167) \
-       $(am__objects_168)
+am__objects_173 = lib571-first.$(OBJEXT)
+am__objects_174 = ../../lib/lib571-warnless.$(OBJEXT)
+am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_173) \
+       $(am__objects_174)
 lib571_OBJECTS = $(am_lib571_OBJECTS)
 lib571_LDADD = $(LDADD)
 lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_169 = lib572-first.$(OBJEXT)
-am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_169)
+am__objects_175 = lib572-first.$(OBJEXT)
+am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_175)
 lib572_OBJECTS = $(am_lib572_OBJECTS)
 lib572_LDADD = $(LDADD)
 lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_170 = lib573-first.$(OBJEXT)
-am__objects_171 = lib573-testutil.$(OBJEXT)
-am__objects_172 = ../../lib/lib573-warnless.$(OBJEXT)
-am__objects_173 = lib573-testtrace.$(OBJEXT)
-am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_170) \
-       $(am__objects_171) $(am__objects_172) $(am__objects_173)
+am__objects_176 = lib573-first.$(OBJEXT)
+am__objects_177 = lib573-testutil.$(OBJEXT)
+am__objects_178 = ../../lib/lib573-warnless.$(OBJEXT)
+am__objects_179 = lib573-testtrace.$(OBJEXT)
+am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_176) \
+       $(am__objects_177) $(am__objects_178) $(am__objects_179)
 lib573_OBJECTS = $(am_lib573_OBJECTS)
 lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_174 = lib574-first.$(OBJEXT)
-am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_174)
+am__objects_180 = lib574-first.$(OBJEXT)
+am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_180)
 lib574_OBJECTS = $(am_lib574_OBJECTS)
 lib574_LDADD = $(LDADD)
 lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_175 = lib575-first.$(OBJEXT)
-am__objects_176 = lib575-testutil.$(OBJEXT)
-am__objects_177 = ../../lib/lib575-warnless.$(OBJEXT)
-am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_175) \
-       $(am__objects_176) $(am__objects_177)
+am__objects_181 = lib575-first.$(OBJEXT)
+am__objects_182 = lib575-testutil.$(OBJEXT)
+am__objects_183 = ../../lib/lib575-warnless.$(OBJEXT)
+am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_181) \
+       $(am__objects_182) $(am__objects_183)
 lib575_OBJECTS = $(am_lib575_OBJECTS)
 lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_178 = lib576-first.$(OBJEXT)
-am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_178)
+am__objects_184 = lib576-first.$(OBJEXT)
+am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_184)
 lib576_OBJECTS = $(am_lib576_OBJECTS)
 lib576_LDADD = $(LDADD)
 lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_179 = lib578-first.$(OBJEXT)
-am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_179)
+am__objects_185 = lib578-first.$(OBJEXT)
+am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_185)
 lib578_OBJECTS = $(am_lib578_OBJECTS)
 lib578_LDADD = $(LDADD)
 lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_180 = lib579-first.$(OBJEXT)
-am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_180)
+am__objects_186 = lib579-first.$(OBJEXT)
+am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_186)
 lib579_OBJECTS = $(am_lib579_OBJECTS)
 lib579_LDADD = $(LDADD)
 lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_181 = lib582-first.$(OBJEXT)
-am__objects_182 = lib582-testutil.$(OBJEXT)
-am__objects_183 = ../../lib/lib582-warnless.$(OBJEXT)
-am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_181) \
-       $(am__objects_182) $(am__objects_183)
+am__objects_187 = lib582-first.$(OBJEXT)
+am__objects_188 = lib582-testutil.$(OBJEXT)
+am__objects_189 = ../../lib/lib582-warnless.$(OBJEXT)
+am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_187) \
+       $(am__objects_188) $(am__objects_189)
 lib582_OBJECTS = $(am_lib582_OBJECTS)
 lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_184 = lib583-first.$(OBJEXT)
-am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_184)
+am__objects_190 = lib583-first.$(OBJEXT)
+am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_190)
 lib583_OBJECTS = $(am_lib583_OBJECTS)
 lib583_LDADD = $(LDADD)
 lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_185 = lib585-first.$(OBJEXT)
-am__objects_186 = lib585-testutil.$(OBJEXT)
-am__objects_187 = lib585-testtrace.$(OBJEXT)
-am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_185) \
-       $(am__objects_186) $(am__objects_187)
+am__objects_191 = lib585-first.$(OBJEXT)
+am__objects_192 = lib585-testutil.$(OBJEXT)
+am__objects_193 = lib585-testtrace.$(OBJEXT)
+am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_191) \
+       $(am__objects_192) $(am__objects_193)
 lib585_OBJECTS = $(am_lib585_OBJECTS)
 lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_188 = lib586-first.$(OBJEXT)
-am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_188)
+am__objects_194 = lib586-first.$(OBJEXT)
+am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_194)
 lib586_OBJECTS = $(am_lib586_OBJECTS)
 lib586_LDADD = $(LDADD)
 lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_189 = lib587-first.$(OBJEXT)
-am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_189)
+am__objects_195 = lib587-first.$(OBJEXT)
+am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_195)
 lib587_OBJECTS = $(am_lib587_OBJECTS)
 lib587_LDADD = $(LDADD)
 lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_190 = lib590-first.$(OBJEXT)
-am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_190)
+am__objects_196 = lib590-first.$(OBJEXT)
+am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_196)
 lib590_OBJECTS = $(am_lib590_OBJECTS)
 lib590_LDADD = $(LDADD)
 lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_191 = lib591-first.$(OBJEXT)
-am__objects_192 = lib591-testutil.$(OBJEXT)
-am__objects_193 = ../../lib/lib591-warnless.$(OBJEXT)
-am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_191) \
-       $(am__objects_192) $(am__objects_193)
+am__objects_197 = lib591-first.$(OBJEXT)
+am__objects_198 = lib591-testutil.$(OBJEXT)
+am__objects_199 = ../../lib/lib591-warnless.$(OBJEXT)
+am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_197) \
+       $(am__objects_198) $(am__objects_199)
 lib591_OBJECTS = $(am_lib591_OBJECTS)
 lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_194 = lib597-first.$(OBJEXT)
-am__objects_195 = lib597-testutil.$(OBJEXT)
-am__objects_196 = ../../lib/lib597-warnless.$(OBJEXT)
-am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_194) \
-       $(am__objects_195) $(am__objects_196)
+am__objects_200 = lib597-first.$(OBJEXT)
+am__objects_201 = lib597-testutil.$(OBJEXT)
+am__objects_202 = ../../lib/lib597-warnless.$(OBJEXT)
+am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_200) \
+       $(am__objects_201) $(am__objects_202)
 lib597_OBJECTS = $(am_lib597_OBJECTS)
 lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_197 = lib598-first.$(OBJEXT)
-am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_197)
+am__objects_203 = lib598-first.$(OBJEXT)
+am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_203)
 lib598_OBJECTS = $(am_lib598_OBJECTS)
 lib598_LDADD = $(LDADD)
 lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_198 = lib599-first.$(OBJEXT)
-am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_198)
+am__objects_204 = lib599-first.$(OBJEXT)
+am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_204)
 lib599_OBJECTS = $(am_lib599_OBJECTS)
 lib599_LDADD = $(LDADD)
 lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_199 = libauthretry-first.$(OBJEXT)
+am__objects_205 = libauthretry-first.$(OBJEXT)
 am_libauthretry_OBJECTS = libauthretry-libauthretry.$(OBJEXT) \
-       $(am__objects_199)
+       $(am__objects_205)
 libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
 libauthretry_LDADD = $(LDADD)
 libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_200 = libntlmconnect-first.$(OBJEXT)
-am__objects_201 = libntlmconnect-testutil.$(OBJEXT)
-am__objects_202 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
+am__objects_206 = libntlmconnect-first.$(OBJEXT)
+am__objects_207 = libntlmconnect-testutil.$(OBJEXT)
+am__objects_208 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
 am_libntlmconnect_OBJECTS = libntlmconnect-libntlmconnect.$(OBJEXT) \
-       $(am__objects_200) $(am__objects_201) $(am__objects_202)
+       $(am__objects_206) $(am__objects_207) $(am__objects_208)
 libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
 libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
 AM_V_P = $(am__v_P_@AM_V@)
@@ -831,33 +854,34 @@ SOURCES = $(libhostname_la_SOURCES) $(chkhostname_SOURCES) \
        $(lib1512_SOURCES) $(lib1513_SOURCES) $(lib1514_SOURCES) \
        $(lib1515_SOURCES) $(lib1520_SOURCES) $(lib1525_SOURCES) \
        $(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
-       $(lib1529_SOURCES) $(lib1900_SOURCES) $(lib2033_SOURCES) \
-       $(lib500_SOURCES) $(lib501_SOURCES) $(lib502_SOURCES) \
-       $(lib503_SOURCES) $(lib504_SOURCES) $(lib505_SOURCES) \
-       $(lib506_SOURCES) $(lib507_SOURCES) $(lib508_SOURCES) \
-       $(lib509_SOURCES) $(lib510_SOURCES) $(lib511_SOURCES) \
-       $(lib512_SOURCES) $(lib513_SOURCES) $(lib514_SOURCES) \
-       $(lib515_SOURCES) $(lib516_SOURCES) $(lib517_SOURCES) \
-       $(lib518_SOURCES) $(lib519_SOURCES) $(lib520_SOURCES) \
-       $(lib521_SOURCES) $(lib523_SOURCES) $(lib524_SOURCES) \
-       $(lib525_SOURCES) $(lib526_SOURCES) $(lib527_SOURCES) \
-       $(lib529_SOURCES) $(lib530_SOURCES) $(lib532_SOURCES) \
-       $(lib533_SOURCES) $(lib536_SOURCES) $(lib537_SOURCES) \
-       $(lib539_SOURCES) $(lib540_SOURCES) $(lib541_SOURCES) \
-       $(lib542_SOURCES) $(lib543_SOURCES) $(lib544_SOURCES) \
-       $(lib545_SOURCES) $(lib547_SOURCES) $(lib548_SOURCES) \
-       $(lib549_SOURCES) $(lib552_SOURCES) $(lib553_SOURCES) \
-       $(lib554_SOURCES) $(lib555_SOURCES) $(lib556_SOURCES) \
-       $(lib557_SOURCES) $(lib558_SOURCES) $(lib560_SOURCES) \
-       $(lib562_SOURCES) $(lib564_SOURCES) $(lib565_SOURCES) \
-       $(lib566_SOURCES) $(lib567_SOURCES) $(lib568_SOURCES) \
-       $(lib569_SOURCES) $(lib570_SOURCES) $(lib571_SOURCES) \
-       $(lib572_SOURCES) $(lib573_SOURCES) $(lib574_SOURCES) \
-       $(lib575_SOURCES) $(lib576_SOURCES) $(lib578_SOURCES) \
-       $(lib579_SOURCES) $(lib582_SOURCES) $(lib583_SOURCES) \
-       $(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \
-       $(lib590_SOURCES) $(lib591_SOURCES) $(lib597_SOURCES) \
-       $(lib598_SOURCES) $(lib599_SOURCES) $(libauthretry_SOURCES) \
+       $(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
+       $(lib1900_SOURCES) $(lib2033_SOURCES) $(lib500_SOURCES) \
+       $(lib501_SOURCES) $(lib502_SOURCES) $(lib503_SOURCES) \
+       $(lib504_SOURCES) $(lib505_SOURCES) $(lib506_SOURCES) \
+       $(lib507_SOURCES) $(lib508_SOURCES) $(lib509_SOURCES) \
+       $(lib510_SOURCES) $(lib511_SOURCES) $(lib512_SOURCES) \
+       $(lib513_SOURCES) $(lib514_SOURCES) $(lib515_SOURCES) \
+       $(lib516_SOURCES) $(lib517_SOURCES) $(lib518_SOURCES) \
+       $(lib519_SOURCES) $(lib520_SOURCES) $(lib521_SOURCES) \
+       $(lib523_SOURCES) $(lib524_SOURCES) $(lib525_SOURCES) \
+       $(lib526_SOURCES) $(lib527_SOURCES) $(lib529_SOURCES) \
+       $(lib530_SOURCES) $(lib532_SOURCES) $(lib533_SOURCES) \
+       $(lib536_SOURCES) $(lib537_SOURCES) $(lib539_SOURCES) \
+       $(lib540_SOURCES) $(lib541_SOURCES) $(lib542_SOURCES) \
+       $(lib543_SOURCES) $(lib544_SOURCES) $(lib545_SOURCES) \
+       $(lib547_SOURCES) $(lib548_SOURCES) $(lib549_SOURCES) \
+       $(lib552_SOURCES) $(lib553_SOURCES) $(lib554_SOURCES) \
+       $(lib555_SOURCES) $(lib556_SOURCES) $(lib557_SOURCES) \
+       $(lib558_SOURCES) $(lib560_SOURCES) $(lib562_SOURCES) \
+       $(lib564_SOURCES) $(lib565_SOURCES) $(lib566_SOURCES) \
+       $(lib567_SOURCES) $(lib568_SOURCES) $(lib569_SOURCES) \
+       $(lib570_SOURCES) $(lib571_SOURCES) $(lib572_SOURCES) \
+       $(lib573_SOURCES) $(lib574_SOURCES) $(lib575_SOURCES) \
+       $(lib576_SOURCES) $(lib578_SOURCES) $(lib579_SOURCES) \
+       $(lib582_SOURCES) $(lib583_SOURCES) $(lib585_SOURCES) \
+       $(lib586_SOURCES) $(lib587_SOURCES) $(lib590_SOURCES) \
+       $(lib591_SOURCES) $(lib597_SOURCES) $(lib598_SOURCES) \
+       $(lib599_SOURCES) $(libauthretry_SOURCES) \
        $(libntlmconnect_SOURCES)
 DIST_SOURCES = $(libhostname_la_SOURCES) $(chkhostname_SOURCES) \
        $(lib1500_SOURCES) $(lib1501_SOURCES) $(lib1502_SOURCES) \
@@ -867,33 +891,34 @@ DIST_SOURCES = $(libhostname_la_SOURCES) $(chkhostname_SOURCES) \
        $(lib1512_SOURCES) $(lib1513_SOURCES) $(lib1514_SOURCES) \
        $(lib1515_SOURCES) $(lib1520_SOURCES) $(lib1525_SOURCES) \
        $(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
-       $(lib1529_SOURCES) $(lib1900_SOURCES) $(lib2033_SOURCES) \
-       $(lib500_SOURCES) $(lib501_SOURCES) $(lib502_SOURCES) \
-       $(lib503_SOURCES) $(lib504_SOURCES) $(lib505_SOURCES) \
-       $(lib506_SOURCES) $(lib507_SOURCES) $(lib508_SOURCES) \
-       $(lib509_SOURCES) $(lib510_SOURCES) $(lib511_SOURCES) \
-       $(lib512_SOURCES) $(lib513_SOURCES) $(lib514_SOURCES) \
-       $(lib515_SOURCES) $(lib516_SOURCES) $(lib517_SOURCES) \
-       $(lib518_SOURCES) $(lib519_SOURCES) $(lib520_SOURCES) \
-       $(lib521_SOURCES) $(lib523_SOURCES) $(lib524_SOURCES) \
-       $(lib525_SOURCES) $(lib526_SOURCES) $(lib527_SOURCES) \
-       $(lib529_SOURCES) $(lib530_SOURCES) $(lib532_SOURCES) \
-       $(lib533_SOURCES) $(lib536_SOURCES) $(lib537_SOURCES) \
-       $(lib539_SOURCES) $(lib540_SOURCES) $(lib541_SOURCES) \
-       $(lib542_SOURCES) $(lib543_SOURCES) $(lib544_SOURCES) \
-       $(lib545_SOURCES) $(lib547_SOURCES) $(lib548_SOURCES) \
-       $(lib549_SOURCES) $(lib552_SOURCES) $(lib553_SOURCES) \
-       $(lib554_SOURCES) $(lib555_SOURCES) $(lib556_SOURCES) \
-       $(lib557_SOURCES) $(lib558_SOURCES) $(lib560_SOURCES) \
-       $(lib562_SOURCES) $(lib564_SOURCES) $(lib565_SOURCES) \
-       $(lib566_SOURCES) $(lib567_SOURCES) $(lib568_SOURCES) \
-       $(lib569_SOURCES) $(lib570_SOURCES) $(lib571_SOURCES) \
-       $(lib572_SOURCES) $(lib573_SOURCES) $(lib574_SOURCES) \
-       $(lib575_SOURCES) $(lib576_SOURCES) $(lib578_SOURCES) \
-       $(lib579_SOURCES) $(lib582_SOURCES) $(lib583_SOURCES) \
-       $(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \
-       $(lib590_SOURCES) $(lib591_SOURCES) $(lib597_SOURCES) \
-       $(lib598_SOURCES) $(lib599_SOURCES) $(libauthretry_SOURCES) \
+       $(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
+       $(lib1900_SOURCES) $(lib2033_SOURCES) $(lib500_SOURCES) \
+       $(lib501_SOURCES) $(lib502_SOURCES) $(lib503_SOURCES) \
+       $(lib504_SOURCES) $(lib505_SOURCES) $(lib506_SOURCES) \
+       $(lib507_SOURCES) $(lib508_SOURCES) $(lib509_SOURCES) \
+       $(lib510_SOURCES) $(lib511_SOURCES) $(lib512_SOURCES) \
+       $(lib513_SOURCES) $(lib514_SOURCES) $(lib515_SOURCES) \
+       $(lib516_SOURCES) $(lib517_SOURCES) $(lib518_SOURCES) \
+       $(lib519_SOURCES) $(lib520_SOURCES) $(lib521_SOURCES) \
+       $(lib523_SOURCES) $(lib524_SOURCES) $(lib525_SOURCES) \
+       $(lib526_SOURCES) $(lib527_SOURCES) $(lib529_SOURCES) \
+       $(lib530_SOURCES) $(lib532_SOURCES) $(lib533_SOURCES) \
+       $(lib536_SOURCES) $(lib537_SOURCES) $(lib539_SOURCES) \
+       $(lib540_SOURCES) $(lib541_SOURCES) $(lib542_SOURCES) \
+       $(lib543_SOURCES) $(lib544_SOURCES) $(lib545_SOURCES) \
+       $(lib547_SOURCES) $(lib548_SOURCES) $(lib549_SOURCES) \
+       $(lib552_SOURCES) $(lib553_SOURCES) $(lib554_SOURCES) \
+       $(lib555_SOURCES) $(lib556_SOURCES) $(lib557_SOURCES) \
+       $(lib558_SOURCES) $(lib560_SOURCES) $(lib562_SOURCES) \
+       $(lib564_SOURCES) $(lib565_SOURCES) $(lib566_SOURCES) \
+       $(lib567_SOURCES) $(lib568_SOURCES) $(lib569_SOURCES) \
+       $(lib570_SOURCES) $(lib571_SOURCES) $(lib572_SOURCES) \
+       $(lib573_SOURCES) $(lib574_SOURCES) $(lib575_SOURCES) \
+       $(lib576_SOURCES) $(lib578_SOURCES) $(lib579_SOURCES) \
+       $(lib582_SOURCES) $(lib583_SOURCES) $(lib585_SOURCES) \
+       $(lib586_SOURCES) $(lib587_SOURCES) $(lib590_SOURCES) \
+       $(lib591_SOURCES) $(lib597_SOURCES) $(lib598_SOURCES) \
+       $(lib599_SOURCES) $(libauthretry_SOURCES) \
        $(libntlmconnect_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
@@ -919,6 +944,8 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
+       $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -977,7 +1004,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -1032,6 +1059,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -1048,7 +1076,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -1157,11 +1184,11 @@ AUTOMAKE_OPTIONS = foreign nostdinc
 @USE_EMBEDDED_ARES_TRUE@       -I$(top_builddir)/ares \
 @USE_EMBEDDED_ARES_TRUE@       -I$(top_srcdir)/ares $(am__append_1)
 EXTRA_DIST = test75.pl test307.pl test610.pl test613.pl test1013.pl    \
-test1022.pl Makefile.inc notexists.pl
+test1022.pl Makefile.inc notexists.pl CMakeLists.txt
 
-@USE_EXPLICIT_LIB_DEPS_FALSE@SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_LIBS@
+@USE_EXPLICIT_LIB_DEPS_FALSE@SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_LIBS@ @NSS_LIBS@
 @USE_EXPLICIT_LIB_DEPS_TRUE@SUPPORTFILES_LIBS = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
-@USE_EXPLICIT_LIB_DEPS_FALSE@TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_AND_TIME_LIBS@
+@USE_EXPLICIT_LIB_DEPS_FALSE@TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @CURL_NETWORK_AND_TIME_LIBS@ @NSS_LIBS@
 @USE_EXPLICIT_LIB_DEPS_TRUE@TESTUTIL_LIBS = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
 
 # Dependencies (may need to be overriden)
@@ -1430,6 +1457,12 @@ lib1528_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1528
 lib1529_SOURCES = lib1529.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1529_LDADD = $(TESTUTIL_LIBS)
 lib1529_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1529
+lib1530_SOURCES = lib1530.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1530_LDADD = $(TESTUTIL_LIBS)
+lib1530_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1530
+lib1531_SOURCES = lib1531.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1531_LDADD = $(TESTUTIL_LIBS)
+lib1531_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1531
 lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1900_LDADD = $(TESTUTIL_LIBS)
 lib1900_CPPFLAGS = $(AM_CPPFLAGS)
@@ -1472,7 +1505,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/libtest/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign tests/libtest/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -1481,7 +1513,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -1654,6 +1686,18 @@ lib1528$(EXEEXT): $(lib1528_OBJECTS) $(lib1528_DEPENDENCIES) $(EXTRA_lib1528_DEP
 lib1529$(EXEEXT): $(lib1529_OBJECTS) $(lib1529_DEPENDENCIES) $(EXTRA_lib1529_DEPENDENCIES) 
        @rm -f lib1529$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1529_OBJECTS) $(lib1529_LDADD) $(LIBS)
+../../lib/lib1530-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1530$(EXEEXT): $(lib1530_OBJECTS) $(lib1530_DEPENDENCIES) $(EXTRA_lib1530_DEPENDENCIES) 
+       @rm -f lib1530$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1530_OBJECTS) $(lib1530_LDADD) $(LIBS)
+../../lib/lib1531-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1531$(EXEEXT): $(lib1531_OBJECTS) $(lib1531_DEPENDENCIES) $(EXTRA_lib1531_DEPENDENCIES) 
+       @rm -f lib1531$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1531_OBJECTS) $(lib1531_LDADD) $(LIBS)
 ../../lib/lib1900-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
@@ -2065,6 +2109,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1527-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1528-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1529-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1530-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1531-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1900-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib2033-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib502-warnless.Po@am__quote@
@@ -2160,6 +2206,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1529-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1529-lib1529.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1529-testutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1530-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1530-lib1530.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1530-testutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1531-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1531-lib1531.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1531-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-lib1900.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-testutil.Po@am__quote@
@@ -3602,6 +3654,118 @@ lib1529-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1529-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
+lib1530-lib1530.o: lib1530.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-lib1530.o -MD -MP -MF $(DEPDIR)/lib1530-lib1530.Tpo -c -o lib1530-lib1530.o `test -f 'lib1530.c' || echo '$(srcdir)/'`lib1530.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-lib1530.Tpo $(DEPDIR)/lib1530-lib1530.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1530.c' object='lib1530-lib1530.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-lib1530.o `test -f 'lib1530.c' || echo '$(srcdir)/'`lib1530.c
+
+lib1530-lib1530.obj: lib1530.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-lib1530.obj -MD -MP -MF $(DEPDIR)/lib1530-lib1530.Tpo -c -o lib1530-lib1530.obj `if test -f 'lib1530.c'; then $(CYGPATH_W) 'lib1530.c'; else $(CYGPATH_W) '$(srcdir)/lib1530.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-lib1530.Tpo $(DEPDIR)/lib1530-lib1530.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1530.c' object='lib1530-lib1530.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-lib1530.obj `if test -f 'lib1530.c'; then $(CYGPATH_W) 'lib1530.c'; else $(CYGPATH_W) '$(srcdir)/lib1530.c'; fi`
+
+lib1530-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-first.o -MD -MP -MF $(DEPDIR)/lib1530-first.Tpo -c -o lib1530-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-first.Tpo $(DEPDIR)/lib1530-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1530-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1530-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-first.obj -MD -MP -MF $(DEPDIR)/lib1530-first.Tpo -c -o lib1530-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-first.Tpo $(DEPDIR)/lib1530-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1530-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1530-testutil.o: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-testutil.o -MD -MP -MF $(DEPDIR)/lib1530-testutil.Tpo -c -o lib1530-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-testutil.Tpo $(DEPDIR)/lib1530-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1530-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1530-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-testutil.obj -MD -MP -MF $(DEPDIR)/lib1530-testutil.Tpo -c -o lib1530-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-testutil.Tpo $(DEPDIR)/lib1530-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1530-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1530-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1530-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1530-warnless.Tpo -c -o ../../lib/lib1530-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1530-warnless.Tpo ../../lib/$(DEPDIR)/lib1530-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1530-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1530-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1530-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1530-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1530-warnless.Tpo -c -o ../../lib/lib1530-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1530-warnless.Tpo ../../lib/$(DEPDIR)/lib1530-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1530-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1530-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
+lib1531-lib1531.o: lib1531.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-lib1531.o -MD -MP -MF $(DEPDIR)/lib1531-lib1531.Tpo -c -o lib1531-lib1531.o `test -f 'lib1531.c' || echo '$(srcdir)/'`lib1531.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-lib1531.Tpo $(DEPDIR)/lib1531-lib1531.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1531.c' object='lib1531-lib1531.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-lib1531.o `test -f 'lib1531.c' || echo '$(srcdir)/'`lib1531.c
+
+lib1531-lib1531.obj: lib1531.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-lib1531.obj -MD -MP -MF $(DEPDIR)/lib1531-lib1531.Tpo -c -o lib1531-lib1531.obj `if test -f 'lib1531.c'; then $(CYGPATH_W) 'lib1531.c'; else $(CYGPATH_W) '$(srcdir)/lib1531.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-lib1531.Tpo $(DEPDIR)/lib1531-lib1531.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1531.c' object='lib1531-lib1531.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-lib1531.obj `if test -f 'lib1531.c'; then $(CYGPATH_W) 'lib1531.c'; else $(CYGPATH_W) '$(srcdir)/lib1531.c'; fi`
+
+lib1531-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-first.o -MD -MP -MF $(DEPDIR)/lib1531-first.Tpo -c -o lib1531-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-first.Tpo $(DEPDIR)/lib1531-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1531-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1531-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-first.obj -MD -MP -MF $(DEPDIR)/lib1531-first.Tpo -c -o lib1531-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-first.Tpo $(DEPDIR)/lib1531-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1531-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1531-testutil.o: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-testutil.o -MD -MP -MF $(DEPDIR)/lib1531-testutil.Tpo -c -o lib1531-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-testutil.Tpo $(DEPDIR)/lib1531-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1531-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1531-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-testutil.obj -MD -MP -MF $(DEPDIR)/lib1531-testutil.Tpo -c -o lib1531-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-testutil.Tpo $(DEPDIR)/lib1531-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1531-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1531-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1531-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1531-warnless.Tpo -c -o ../../lib/lib1531-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1531-warnless.Tpo ../../lib/$(DEPDIR)/lib1531-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1531-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1531-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1531-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1531-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1531-warnless.Tpo -c -o ../../lib/lib1531-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1531-warnless.Tpo ../../lib/$(DEPDIR)/lib1531-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1531-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1531-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
 lib1900-lib1900.o: lib1900.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1900-lib1900.o -MD -MP -MF $(DEPDIR)/lib1900-lib1900.Tpo -c -o lib1900-lib1900.o `test -f 'lib1900.c' || echo '$(srcdir)/'`lib1900.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1900-lib1900.Tpo $(DEPDIR)/lib1900-lib1900.Po
@@ -6893,6 +7057,8 @@ uninstall-am:
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 3508b80..27d5ee9 100644 (file)
@@ -23,7 +23,7 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect                \
  lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \
  lib1509 lib1510 lib1511 lib1512 lib1513 lib1514 lib1515 \
  lib1520 \
- lib1525 lib1526 lib1527 lib1528 lib1529 \
+ lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 \
  lib1900 \
  lib2033
 
@@ -380,6 +380,14 @@ lib1529_SOURCES = lib1529.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1529_LDADD = $(TESTUTIL_LIBS)
 lib1529_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1529
 
+lib1530_SOURCES = lib1530.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1530_LDADD = $(TESTUTIL_LIBS)
+lib1530_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1530
+
+lib1531_SOURCES = lib1531.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1531_LDADD = $(TESTUTIL_LIBS)
+lib1531_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1531
+
 lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1900_LDADD = $(TESTUTIL_LIBS)
 lib1900_CPPFLAGS = $(AM_CPPFLAGS)
index 5851faf..d693173 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #  include <fcntl.h> /* for setmode() */
 #endif
 
+#ifdef USE_NSS
+#include <nspr.h>
+#endif
+
 #ifdef CURLDEBUG
 #  define MEMDEBUG_NODEFINES
 #  include "memdebug.h"
@@ -111,9 +115,24 @@ static void memory_tracking_init(void)
 #  define memory_tracking_init() Curl_nop_stmt
 #endif
 
+/* returns a hexdump in a static memory area */
+char *hexdump(unsigned char *buffer, size_t len)
+{
+  static char dump[200*3+1];
+  char *p = dump;
+  size_t i;
+  if(len > 200)
+    return NULL;
+  for(i=0; i<len; i++, p += 3)
+    snprintf(p, 4, "%02x ", buffer[i]);
+  return dump;
+}
+
+
 int main(int argc, char **argv)
 {
   char *URL;
+  int result;
 
 #ifdef O_BINARY
 #  ifdef __HIGHC__
@@ -152,5 +171,13 @@ int main(int argc, char **argv)
 
   fprintf(stderr, "URL: %s\n", URL);
 
-  return test(URL);
+  result = test(URL);
+
+#ifdef USE_NSS
+  if(PR_Initialized())
+    /* prevent valgrind from reporting possibly lost memory (fd cache, ...) */
+    PR_Cleanup();
+#endif
+
+  return result;
 }
index 4ac9fcf..d5c8f7d 100644 (file)
@@ -39,9 +39,6 @@
 #define sleep(s) Sleep(s * 1000)
 #endif
 
-#define _MPRINTF_REPLACE
-#include <curl/mprintf.h>
-
 static int debug_callback(CURL *curl, curl_infotype info, char *msg, size_t len, void *ptr)
 {
   (void)curl;
index 280c947..1122d8e 100644 (file)
@@ -83,6 +83,7 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
   test_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, 1L);
   test_setopt(curl, CURLOPT_INFILESIZE, strlen(data));
+  test_setopt(curl, CURLOPT_HEADEROPT, CURLHEADER_UNIFIED);
 
   res = curl_easy_perform(curl);
 
diff --git a/tests/libtest/lib1530.c b/tests/libtest/lib1530.c
new file mode 100644 (file)
index 0000000..76231c9
--- /dev/null
@@ -0,0 +1,67 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at 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.
+ *
+ ***************************************************************************/
+
+#include "test.h"
+
+#include "memdebug.h"
+
+static curl_socket_t opensocket(void *clientp,
+                                curlsocktype purpose,
+                                struct curl_sockaddr *address)
+{
+  (void)purpose;
+  (void)address;
+  (void)clientp;
+  fprintf(stderr, "opensocket() returns CURL_SOCKET_BAD\n");
+  return CURL_SOCKET_BAD;
+}
+
+int test(char *URL)
+{
+  CURL *curl = NULL;
+  CURLcode res = CURLE_FAILED_INIT;
+  (void)URL;
+
+  if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  test_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999");
+  test_setopt(curl, CURLOPT_VERBOSE, 1L);
+  test_setopt(curl, CURLOPT_OPENSOCKETFUNCTION, opensocket);
+
+  res = curl_easy_perform(curl);
+
+test_cleanup:
+
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
+  return (int)res;
+}
diff --git a/tests/libtest/lib1531.c b/tests/libtest/lib1531.c
new file mode 100644 (file)
index 0000000..5df3481
--- /dev/null
@@ -0,0 +1,144 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at 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.
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "testutil.h"
+#include "warnless.h"
+#include "memdebug.h"
+
+#define TEST_HANG_TIMEOUT 60 * 1000
+
+char const testData[] = ".abc\0xyz";
+off_t const testDataSize = sizeof(testData) - 1;
+
+int test(char *URL)
+{
+  CURL *easy;
+  CURLM *multi_handle;
+  int still_running; /* keep number of running handles */
+  CURLMsg *msg; /* for picking up messages with the transfer status */
+  int msgs_left; /* how many messages are left */
+
+  /* Allocate one CURL handle per transfer */
+  easy = curl_easy_init();
+
+  /* init a multi stack */
+  multi_handle = curl_multi_init();
+
+  /* add the individual transfer */
+  curl_multi_add_handle(multi_handle, easy);
+
+  /* set the options (I left out a few, you'll get the point anyway) */
+  curl_easy_setopt(easy, CURLOPT_URL, URL);
+  curl_easy_setopt(easy, CURLOPT_POSTFIELDSIZE_LARGE, testDataSize);
+  curl_easy_setopt(easy, CURLOPT_POSTFIELDS, testData);
+
+  /* we start some action by calling perform right away */
+  curl_multi_perform(multi_handle, &still_running);
+
+  do {
+    struct timeval timeout;
+    int rc; /* select() return code */
+    CURLMcode mc; /* curl_multi_fdset() 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(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 */
+    mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+
+    if(mc != CURLM_OK)
+    {
+      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+      break;
+    }
+
+    /* On success the value of maxfd is guaranteed to be >= -1. We call
+       select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+       no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+       to sleep 100ms, which is the minimum suggested value in the
+       curl_multi_fdset() doc. */
+
+    if(maxfd == -1) {
+#ifdef _WIN32
+      Sleep(100);
+      rc = 0;
+#else
+      /* Portable sleep for platforms other than Windows. */
+      struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+      rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+    }
+    else {
+      /* Note that on some platforms 'timeout' may be modified by select().
+         If you need access to the original value save a copy beforehand. */
+      rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    }
+
+    switch(rc) {
+    case -1:
+      /* select error */
+      break;
+    case 0: /* timeout */
+    default: /* action */
+      curl_multi_perform(multi_handle, &still_running);
+      break;
+    }
+  } while(still_running);
+
+  /* See how the transfers went */
+  while ((msg = curl_multi_info_read(multi_handle, &msgs_left))) {
+    if (msg->msg == CURLMSG_DONE) {
+      printf("HTTP transfer completed with status %d\n", msg->data.result);
+      break;
+    }
+  }
+
+  curl_multi_cleanup(multi_handle);
+
+  /* Free the CURL handles */
+  curl_easy_cleanup(easy);
+
+  return 0;
+}
+
index 4dad0d9..6dcc36d 100644 (file)
@@ -20,9 +20,6 @@
  *
  ***************************************************************************/
 #include "test.h"
-
-#include <curl/mprintf.h>
-
 #include "memdebug.h"
 
 static const char *HOSTHEADER = "Host: www.host.foo.com";
index 06a8464..e60d117 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -83,13 +83,15 @@ int test(char *URL)
 
     abort_on_test_timeout();
 
-    if(!running && handles_added >= NUM_HANDLES)
-      break; /* done */
+    if(!running) {
+      if(handles_added >= NUM_HANDLES)
+        break; /* done */
 
-    /* Add the rest of the handles now that the first handle has sent the
-       request. */
-    while(handles_added < NUM_HANDLES)
-      multi_add_handle(m, curl[handles_added++]);
+      /* Add the rest of the handles now that the first handle has completed
+         its request. */
+      while(handles_added < NUM_HANDLES)
+        multi_add_handle(m, curl[handles_added++]);
+    }
 
     FD_ZERO(&rd);
     FD_ZERO(&wr);
index 923893f..053d298 100644 (file)
@@ -83,8 +83,7 @@ int test(char *URL)
 test_cleanup:
 
    curl_slist_free_all(slist);
-   if(newURL)
-     free(newURL);
+   free(newURL);
    curl_easy_cleanup(curl);
    curl_global_cleanup();
 
index 7e5f9e9..b882852 100644 (file)
@@ -26,9 +26,6 @@
  */
 
 #include "test.h"
-
-#include <curl/mprintf.h>
-
 #include "memdebug.h"
 
 
index 4b15821..b6f5ab7 100644 (file)
@@ -28,8 +28,6 @@
 #include <fcntl.h>
 #endif
 
-#include <curl/mprintf.h>
-
 #include "memdebug.h"
 
 /* build request url */
@@ -161,8 +159,7 @@ test_cleanup:
   if(sdpf)
     fclose(sdpf);
 
-  if(stream_uri)
-    free(stream_uri);
+  free(stream_uri);
 
   if(custom_headers)
     curl_slist_free_all(custom_headers);
index a434d74..bc48872 100644 (file)
@@ -20,9 +20,6 @@
  *
  ***************************************************************************/
 #include "test.h"
-
-#include <curl/mprintf.h>
-
 #include "memdebug.h"
 
 /* build request url */
@@ -118,9 +115,7 @@ test_cleanup:
   if(idfile)
     fclose(idfile);
 
-  if(stream_uri)
-    free(stream_uri);
-
+  free(stream_uri);
   curl_easy_cleanup(curl);
   curl_global_cleanup();
 
index fe10de5..178f58f 100644 (file)
@@ -20,9 +20,6 @@
  *
  ***************************************************************************/
 #include "test.h"
-
-#include <curl/mprintf.h>
-
 #include "memdebug.h"
 
 /* build request url */
@@ -105,9 +102,7 @@ int test(char *URL)
   }
 
 test_cleanup:
-
-  if(stream_uri)
-    free(stream_uri);
+  free(stream_uri);
 
   curl_easy_cleanup(curl);
   curl_global_cleanup();
index 78c1c95..d8dad39 100644 (file)
@@ -37,8 +37,6 @@
 #  include <fcntl.h>
 #endif
 
-#include <curl/mprintf.h>
-
 #include "warnless.h"
 #include "memdebug.h"
 
@@ -197,9 +195,7 @@ int test(char *URL)
   }
 
 test_cleanup:
-
-  if(stream_uri)
-    free(stream_uri);
+  free(stream_uri);
 
   if(protofile)
     fclose(protofile);
index 3df4d03..fd547b8 100644 (file)
@@ -28,8 +28,6 @@
 #include <fcntl.h>
 #endif
 
-#include <curl/mprintf.h>
-
 #include "memdebug.h"
 
 /* build request url */
@@ -167,8 +165,7 @@ test_cleanup:
   if(paramsf)
     fclose(paramsf);
 
-  if(stream_uri)
-    free(stream_uri);
+  free(stream_uri);
 
   if(custom_headers)
     curl_slist_free_all(custom_headers);
index 952efb4..4c3ea6f 100644 (file)
@@ -357,10 +357,8 @@ test_cleanup:
   fclose(hd_src);
 
   /* free local memory */
-  if(sockets.read.sockets)
-    free(sockets.read.sockets);
-  if(sockets.write.sockets)
-    free(sockets.write.sockets);
+  free(sockets.read.sockets);
+  free(sockets.write.sockets);
 
   return res;
 }
index 4ee0ad3..a1412b5 100644 (file)
@@ -20,9 +20,6 @@
  *
  ***************************************************************************/
 #include "test.h"
-
-#include <curl/mprintf.h>
-
 #include "memdebug.h"
 
 #define THREADS 2
index 4186c4f..468eda9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #  include "select.h"
 #endif
 
+#define _MPRINTF_REPLACE
+#include <curl/mprintf.h>
+
+
 #define test_setopt(A,B,C) \
   if((res = curl_easy_setopt((A),(B),(C))) != CURLE_OK) goto test_cleanup
 
@@ -63,6 +67,8 @@ extern void wait_ms(int ms); /* wait this many milliseconds */
 extern int test(char *URL); /* the actual test function provided by each
                                individual libXXX.c file */
 
+extern char *hexdump(unsigned char *buffer, size_t len);
+
 #ifdef UNITTESTS
 extern int unitfail;
 #endif
index c977d21..8d9c6b8 100644 (file)
  ***************************************************************************/
 
 #include "test.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
 #include "testutil.h"
 #include "testtrace.h"
 #include "memdebug.h"
@@ -34,7 +30,7 @@ struct libtest_trace_cfg libtest_debug_config;
 static time_t epoch_offset; /* for test time tracing */
 static int    known_offset; /* for test time tracing */
 
-static 
+static
 void libtest_debug_dump(const char *timebuf, const char *text, FILE *stream,
                         const unsigned char *ptr, size_t size, int nohex)
 {
index 54117f8..701cf16 100755 (executable)
@@ -108,9 +108,12 @@ while(<FILE>) {
         $linenum = $2;
         $function = $3;
 
-        if($function =~ /free\(0x([0-9a-f]*)/) {
-            $addr = $1;
-            if(!exists $sizeataddr{$addr}) {
+        if($function =~ /free\((\(nil\)|0x([0-9a-f]*))/) {
+            $addr = $2;
+            if($1 eq "(nil)") {
+                ; # do nothing when free(NULL)
+            }
+            elsif(!exists $sizeataddr{$addr}) {
                 print "FREE ERROR: No memory allocated: $line\n";
             }
             elsif(-1 == $sizeataddr{$addr}) {
index 6a02b92..7dcde48 100644 (file)
@@ -4,15 +4,20 @@
 <title>runtests.pl man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
index 994123a..6eaaf0a 100644 (file)
Binary files a/tests/runtests.pdf and b/tests/runtests.pdf differ
index 846687c..3ff3187 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -226,7 +226,7 @@ my $has_cares;      # set if built with c-ares
 my $has_threadedres;# set if built with threaded resolver
 
 # this version is decided by the particular nghttp2 library that is being used
-my $h2cver = "h2c-14";
+my $h2cver = "h2c";
 
 my $has_openssl;    # built with a lib using an OpenSSL-like API
 my $has_gnutls;     # built with GnuTLS
@@ -235,7 +235,9 @@ my $has_yassl;      # built with yassl
 my $has_polarssl;   # built with polarssl
 my $has_axtls;      # built with axTLS
 my $has_winssl;     # built with WinSSL    (Secure Channel aka Schannel)
-my $has_darwinssl;  # build with DarwinSSL (Secure Transport)
+my $has_darwinssl;  # built with DarwinSSL (Secure Transport)
+my $has_boringssl;  # built with BoringSSL
+my $has_libressl;   # built with libressl 
 
 my $has_sslpinning; # built with a TLS backend that supports pinning
 
@@ -601,7 +603,7 @@ sub torture {
 
         my $ret = 0;
         if($gdbthis) {
-            runclient($gdbline)
+            runclient($gdbline);
         }
         else {
             $ret = runclient($testcmd);
@@ -2344,10 +2346,12 @@ sub checksystem {
            }
            elsif ($libcurl =~ /nss/i) {
                $has_nss=1;
+               $has_sslpinning=1;
                $ssllib="NSS";
            }
-           elsif ($libcurl =~ /yassl/i) {
+           elsif ($libcurl =~ /(yassl|wolfssl)/i) {
                $has_yassl=1;
+               $has_sslpinning=1;
                $ssllib="yassl";
            }
            elsif ($libcurl =~ /polarssl/i) {
@@ -2362,6 +2366,14 @@ sub checksystem {
                $has_darwinssl=1;
                $ssllib="DarwinSSL";
            }
+           elsif ($libcurl =~ /BoringSSL/i) {
+               $has_boringssl=1;
+               $ssllib="BoringSSL";
+           }
+           elsif ($libcurl =~ /libressl/i) {
+               $has_libressl=1;
+               $ssllib="libressl";
+           }
            if ($libcurl =~ /ares/i) {
                $has_cares=1;
                $resolver="c-ares";
@@ -4722,7 +4734,7 @@ while(@ARGV) {
     }
     elsif ($ARGV[0] eq "-c") {
         # use this path to curl instead of default
-        $DBGCURL=$CURL=$ARGV[1];
+        $DBGCURL=$CURL="\"$ARGV[1]\"";
         shift @ARGV;
     }
     elsif ($ARGV[0] eq "-vc") {
@@ -4990,19 +5002,29 @@ if(!$listonly) {
 # Fetch all disabled tests, if there are any
 #
 
-if(open(D, "<$TESTDIR/DISABLED")) {
-    while(<D>) {
-        if(/^ *\#/) {
-            # allow comments
-            next;
-        }
-        if($_ =~ /(\d+)/) {
-            $disabled{$1}=$1; # disable this test number
+sub disabledtests {
+    my ($file) = @_;
+
+    if(open(D, "<$file")) {
+        while(<D>) {
+            if(/^ *\#/) {
+                # allow comments
+                next;
+            }
+            if($_ =~ /(\d+)/) {
+                $disabled{$1}=$1; # disable this test number
+            }
         }
+        close(D);
     }
-    close(D);
 }
 
+# globally disabled tests
+disabledtests("$TESTDIR/DISABLED");
+
+# locally disabled tests, ignored by git etc
+disabledtests("$TESTDIR/DISABLED.local");
+
 #######################################################################
 # If 'all' tests are requested, find out all test numbers
 #
diff --git a/tests/server/CMakeLists.txt b/tests/server/CMakeLists.txt
new file mode 100644 (file)
index 0000000..00f5242
--- /dev/null
@@ -0,0 +1,62 @@
+set(TARGET_LABEL_PREFIX "Test server ")
+
+function(SETUP_EXECUTABLE TEST_NAME)    # ARGN are the files in the test
+  add_executable( ${TEST_NAME} ${ARGN} )
+  string(TOUPPER ${TEST_NAME} UPPER_TEST_NAME)
+
+  include_directories(
+    ${CURL_SOURCE_DIR}/lib      # To be able to reach "curl_setup_once.h"
+    ${CURL_BINARY_DIR}/lib      # To be able to reach "curl_config.h"
+    ${CURL_BINARY_DIR}/include  # To be able to reach "curl/curlbuild.h"
+    )
+  if(USE_ARES)
+    include_directories(${CARES_INCLUDE_DIR})
+  endif()
+
+  target_link_libraries(${TEST_NAME} ${CURL_LIBS})
+
+  # Test servers simply are standalone programs that do not use libcurl
+  # library.  For convinience and to ease portability of these servers,
+  # some source code files from the libcurl subdirectory are also used
+  # to build the servers.  In order to achieve proper linkage of these
+  # files on Win32 targets it is necessary to build the test servers
+  # with CURL_STATICLIB defined, independently of how libcurl is built.
+  if(NOT CURL_STATICLIB)
+    set_target_properties(${TEST_NAME} PROPERTIES
+      COMPILE_DEFINITIONS CURL_STATICLIB)       # ${UPPER_TEST_NAME}
+  endif()
+  set_target_properties(${TEST_NAME} PROPERTIES
+    PROJECT_LABEL "${TARGET_LABEL_PREFIX}${TEST_NAME}")
+
+  # Add the postfix to the executable since it is not added
+  # automatically as for modules and shared libraries
+  set_target_properties(${TEST_NAME} PROPERTIES
+    DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
+
+endfunction()
+
+
+transform_makefile_inc("Makefile.inc"
+  "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
+include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake)
+
+foreach(EXECUTABLE_NAME ${noinst_PROGRAMS})
+  setup_executable(${EXECUTABLE_NAME} ${${EXECUTABLE_NAME}_SOURCES})
+endforeach()
+
+
+# SET(useful
+# getpart.c getpart.h
+# ${CURL_SOURCE_DIR}/lib/strequal.c
+# ${CURL_SOURCE_DIR}/lib/base64.c
+# ${CURL_SOURCE_DIR}/lib/mprintf.c
+# ${CURL_SOURCE_DIR}/lib/memdebug.c
+# ${CURL_SOURCE_DIR}/lib/timeval.c
+# )
+
+# SETUP_EXECUTABLE(sws sws.c util.c util.h ${useful})
+# SETUP_EXECUTABLE(resolve resolve.c util.c util.h ${useful})
+# SETUP_EXECUTABLE(sockfilt sockfilt.c util.c util.h ${useful} ${CURL_SOURCE_DIR}/lib/inet_pton.c)
+# SETUP_EXECUTABLE(getpart testpart.c ${useful})
+# SETUP_EXECUTABLE(tftpd tftpd.c util.c util.h ${useful} tftp.h)
+
index 7533a98..ab58020 100644 (file)
@@ -60,5 +60,5 @@ endif
 # Makefile.inc provides neat definitions
 include Makefile.inc
 
-EXTRA_DIST = base64.pl Makefile.inc
+EXTRA_DIST = base64.pl Makefile.inc CMakeLists.txt
 
index f63718a..f5f486f 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -79,9 +89,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 @DOING_NATIVE_WINDOWS_TRUE@am__append_1 = -DCURL_STATICLIB
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
-       $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs \
-       $(top_srcdir)/depcomp
 noinst_PROGRAMS = getpart$(EXEEXT) resolve$(EXEEXT) rtspd$(EXEEXT) \
        sockfilt$(EXEEXT) sws$(EXEEXT) tftpd$(EXEEXT) \
        fake_ntlm$(EXEEXT)
@@ -106,7 +113,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -303,6 +311,8 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
+       $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -361,7 +371,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -416,6 +426,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -432,7 +443,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -613,7 +623,7 @@ fake_ntlm_LDADD = @CURL_NETWORK_AND_TIME_LIBS@
 fake_ntlm_CFLAGS = $(AM_CFLAGS)
 
 # Makefile.inc provides neat definitions
-EXTRA_DIST = base64.pl Makefile.inc
+EXTRA_DIST = base64.pl Makefile.inc CMakeLists.txt
 all: all-am
 
 .SUFFIXES:
@@ -630,7 +640,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/server/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign tests/server/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -639,7 +648,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -2222,6 +2231,8 @@ uninstall-am:
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index fb86596..f773dd0 100644 (file)
@@ -209,8 +209,7 @@ static int decodedata(char  **buf,   /* dest buffer */
     ** let's just assume it is an OOM condition, currently we have
     ** no input for this function that decodes to zero length data.
     */
-    if(buf64)
-      free(buf64);
+    free(buf64);
 
     return GPE_OUT_OF_MEMORY;
   }
@@ -435,15 +434,13 @@ int getpart(char **outbuf, size_t *outlen,
 
   } /* while */
 
-  if(buffer)
-    free(buffer);
+  free(buffer);
 
   if(error != GPE_OK) {
     if(error == GPE_END_OF_FILE)
       error = GPE_OK;
     else {
-      if(*outbuf)
-        free(*outbuf);
+      free(*outbuf);
       *outbuf = NULL;
       *outlen = 0;
     }
index 72422ec..0293f59 100644 (file)
@@ -523,8 +523,7 @@ static int ProcessRequest(struct httprequest *req)
           } while(ptr && *ptr);
           logmsg("Done parsing server commands");
         }
-        if(cmd)
-          free(cmd);
+        free(cmd);
       }
     }
     else {
@@ -993,8 +992,7 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
     }
 
     if(got_exit_signal) {
-      if(ptr)
-        free(ptr);
+      free(ptr);
       return -1;
     }
 
@@ -1005,8 +1003,7 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
       logmsg("fopen() failed with error: %d %s", error, strerror(error));
       logmsg("Error opening file: %s", filename);
       logmsg("Couldn't open test file");
-      if(ptr)
-        free(ptr);
+      free(ptr);
       return 0;
     }
     else {
@@ -1015,18 +1012,15 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
       fclose(stream);
       if(error) {
         logmsg("getpart() failed with error: %d", error);
-        if(ptr)
-          free(ptr);
+        free(ptr);
         return 0;
       }
     }
   }
 
   if(got_exit_signal) {
-    if(ptr)
-      free(ptr);
-    if(cmd)
-      free(cmd);
+    free(ptr);
+    free(cmd);
     return -1;
   }
 
@@ -1050,10 +1044,8 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
     logmsg("fopen() failed with error: %d %s", error, strerror(error));
     logmsg("Error opening file: %s", RESPONSE_DUMP);
     logmsg("couldn't create logfile: " RESPONSE_DUMP);
-    if(ptr)
-      free(ptr);
-    if(cmd)
-      free(cmd);
+    free(ptr);
+    free(cmd);
     return -1;
   }
 
@@ -1110,28 +1102,22 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
            RESPONSE_DUMP, error, strerror(error));
 
   if(got_exit_signal) {
-    if(ptr)
-      free(ptr);
-    if(cmd)
-      free(cmd);
+    free(ptr);
+    free(cmd);
     return -1;
   }
 
   if(sendfailure) {
     logmsg("Sending response failed. Only (%zu bytes) of (%zu bytes) were sent",
            responsesize-count, responsesize);
-    if(ptr)
-      free(ptr);
-    if(cmd)
-      free(cmd);
+    free(ptr);
+    free(cmd);
     return -1;
   }
 
   logmsg("Response sent (%zu bytes) and written to " RESPONSE_DUMP,
          responsesize);
-
-  if(ptr)
-    free(ptr);
+  free(ptr);
 
   if(cmdsize > 0 ) {
     char command[32];
@@ -1169,9 +1155,7 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
         ptr = NULL;
     } while(ptr && *ptr);
   }
-  if(cmd)
-    free(cmd);
-
+  free(cmd);
   req->open = persistant;
 
   prevtestno = req->testno;
index 8cd30c5..9ad54e4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -442,8 +442,7 @@ static int parse_servercmd(struct httprequest *req)
       else
         break;
     }
-    if(orgcmd)
-      free(orgcmd);
+    free(orgcmd);
   }
 
   return 0; /* OK! */
@@ -914,6 +913,8 @@ static void init_httprequest(struct httprequest *req)
   req->callcount = 0;
   req->connect_port = 0;
   req->done_processing = 0;
+  req->upgrade = 0;
+  req->upgrade_request = 0;
 }
 
 /* returns 1 if the connection should be serviced again immediately, 0 if there
@@ -1126,8 +1127,7 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
     }
 
     if(got_exit_signal) {
-      if(ptr)
-        free(ptr);
+      free(ptr);
       return -1;
     }
 
@@ -1137,8 +1137,7 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
       error = errno;
       logmsg("fopen() failed with error: %d %s", error, strerror(error));
       logmsg("  [4] Error opening file: %s", filename);
-      if(ptr)
-        free(ptr);
+      free(ptr);
       return 0;
     }
     else {
@@ -1147,18 +1146,15 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
       fclose(stream);
       if(error) {
         logmsg("getpart() failed with error: %d", error);
-        if(ptr)
-          free(ptr);
+        free(ptr);
         return 0;
       }
     }
   }
 
   if(got_exit_signal) {
-    if(ptr)
-      free(ptr);
-    if(cmd)
-      free(cmd);
+    free(ptr);
+    free(cmd);
     return -1;
   }
 
@@ -1181,10 +1177,8 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
     error = errno;
     logmsg("fopen() failed with error: %d %s", error, strerror(error));
     logmsg("  [5] Error opening file: %s", responsedump);
-    if(ptr)
-      free(ptr);
-    if(cmd)
-      free(cmd);
+    free(ptr);
+    free(cmd);
     return -1;
   }
 
@@ -1228,28 +1222,22 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
            responsedump, error, strerror(error));
 
   if(got_exit_signal) {
-    if(ptr)
-      free(ptr);
-    if(cmd)
-      free(cmd);
+    free(ptr);
+    free(cmd);
     return -1;
   }
 
   if(sendfailure) {
     logmsg("Sending response failed. Only (%zu bytes) of (%zu bytes) were sent",
            responsesize-count, responsesize);
-    if(ptr)
-      free(ptr);
-    if(cmd)
-      free(cmd);
+    free(ptr);
+    free(cmd);
     return -1;
   }
 
   logmsg("Response sent (%zu bytes) and written to %s",
          responsesize, responsedump);
-
-  if(ptr)
-    free(ptr);
+  free(ptr);
 
   if(cmdsize > 0 ) {
     char command[32];
@@ -1285,9 +1273,7 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
         ptr = NULL;
     } while(ptr && *ptr);
   }
-  if(cmd)
-    free(cmd);
-
+  free(cmd);
   req->open = use_gopher?FALSE:persistant;
 
   prevtestno = req->testno;
@@ -1334,8 +1320,6 @@ static curl_socket_t connect_to(const char *ipaddr, unsigned short port)
     if(0 != setsockopt(serverfd, IPPROTO_TCP, TCP_NODELAY,
                        (void *)&flag, sizeof(flag)))
       logmsg("====> TCP_NODELAY for server conection failed");
-    else
-      logmsg("TCP_NODELAY set for server conection");
   }
 #endif
 
@@ -1429,6 +1413,7 @@ static void http_connect(curl_socket_t *infdp,
   int max_tunnel_idx; /* CTRL or DATA */
   int loop;
   int i;
+  int timeout_count=0;
 
   /* primary tunnel client endpoint already connected */
   clientfd[CTRL] = *infdp;
@@ -1457,7 +1442,7 @@ static void http_connect(curl_socket_t *infdp,
 
     fd_set input;
     fd_set output;
-    struct timeval timeout = {0, 250000L}; /* 250 ms */
+    struct timeval timeout = {1, 0}; /* 1000 ms */
     ssize_t rc;
     curl_socket_t maxfd = (curl_socket_t)-1;
 
@@ -1518,6 +1503,7 @@ static void http_connect(curl_socket_t *infdp,
     if(rc > 0) {
       /* socket action */
       bool tcp_fin_wr;
+      timeout_count=0;
 
       if(got_exit_signal)
         break;
@@ -1543,8 +1529,6 @@ static void http_connect(curl_socket_t *infdp,
             if(0 != setsockopt(datafd, IPPROTO_TCP, TCP_NODELAY,
                                (void *)&flag, sizeof(flag)))
               logmsg("====> TCP_NODELAY for client DATA conection failed");
-            else
-              logmsg("TCP_NODELAY set for client DATA conection");
           }
 #endif
           req2.pipelining = FALSE;
@@ -1761,7 +1745,13 @@ static void http_connect(curl_socket_t *infdp,
         break;
 
     } /* (rc > 0) */
-
+    else {
+      timeout_count++;
+      if(timeout_count > 5) {
+        logmsg("CONNECT proxy timeout after %d idle seconds!", timeout_count);
+        break;
+      }
+    }
   }
 
 http_connect_cleanup:
@@ -1867,8 +1857,6 @@ static curl_socket_t accept_connection(curl_socket_t sock)
     if(0 != setsockopt(msgsock, IPPROTO_TCP, TCP_NODELAY,
                        (void *)&flag, sizeof(flag)))
       logmsg("====> TCP_NODELAY failed");
-    else
-      logmsg("TCP_NODELAY set");
   }
 #endif
 
index 2555793..cef129f 100644 (file)
@@ -876,8 +876,7 @@ int main(int argc, char **argv)
       memset(&test, 0, sizeof(test));
       if (do_tftp(&test, tp, n) < 0)
         break;
-      if(test.buffer)
-        free(test.buffer);
+      free(test.buffer);
     }
     sclose(peer);
     peer = CURL_SOCKET_BAD;
@@ -1089,8 +1088,7 @@ static int parse_servercmd(struct testcase *req)
       else
         break;
     }
-    if(orgcmd)
-      free(orgcmd);
+    free(orgcmd);
   }
 
   return 0; /* OK! */
index 4a5853f..c13f0bd 100644 (file)
@@ -4,15 +4,20 @@
 <title>testcurl.pl man page</title>
 <meta name="generator" content="roffit">
 <STYLE type="text/css">
-P.level0 {
+pre {
+  overflow: auto;
+  margin: 0;
+}
+
+P.level0, pre.level0 {
  padding-left: 2em;
 }
 
-P.level1 {
+P.level1, pre.level1 {
  padding-left: 4em;
 }
 
-P.level2 {
+P.level2, pre.level2 {
  padding-left: 6em;
 }
 
@@ -76,40 +81,42 @@ p.roffit {
 <p class="level0"><a name="--targetyour"></a><span class="nroffip">--target=[your os]</span> 
 <p class="level1">Specify your target environment. Recognized strings include 'vc', 'mingw32', 'borland' and 'netware'. <a name="INITIAL"></a><h2 class="nroffsh">INITIAL SETUP</h2>
 <p class="level0">First you make a checkout from git (or you write a script that downloads daily snapshots automatically, find inspiration at <a href="http://curl.haxx.se/auto/autocurl.txt">http://curl.haxx.se/auto/autocurl.txt</a>): 
-<p class="level0"><pre>
-<p class="level0">&nbsp; $ mkdir daily-curl
- &nbsp; $ cd daily-curl
- &nbsp; $ git clone git://github.com/bagder/curl.git
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp; $ mkdir daily-curl
+&nbsp; $ cd daily-curl
+&nbsp; $ git clone git://github.com/bagder/curl.git
+</pre>
 
 <p class="level0">
 <p class="level0">With the curl sources checked out, or downloaded, you can start testing right away. If you want to use <span Class="emphasis">testcurl.pl</span> without command line arguments and to have it store and remember the config in its 'setup' file, then start it manually now and fill in the answers to the questions it prompts you for: 
-<p class="level0"><pre>
-<p class="level0">&nbsp; $ ./curl/tests/testcurl.pl
- </pre>
+<p class="level0"><pre class="level0">
+&nbsp; $ ./curl/tests/testcurl.pl
+</pre>
 
 <p class="level0">
 <p class="level0">Now you are ready to go. If you let the script run, it will perform a full cycle and spit out lots of output. Mail us that output as described above. <a name="CRONTAB"></a><h2 class="nroffsh">CRONTAB EXAMPLE</h2>
 <p class="level0">The crontab could include something like this: 
-<p class="level0"><pre>
-<p class="level0"># autobuild curl:
- 0 4 * * * cd daily-curl && ./testit.sh
- </pre>
+<p class="level0"><pre class="level0">
+#35; autobuild curl:
+0 4 * * * cd daily-curl && ./testit.sh
+</pre>
 
 <p class="level0">
 <p class="level0">Where testit.sh is a shell script that could look similar to this: 
-<p class="level0"><pre>
-<p class="level0">mail="mail -s autobuild curl-autocompile@haxx.se"
- name="--name=whoami"
- email="--email=iamme@nowhere"
- desc='"--desc=supermachine Turbo 2000"'
- testprog="perl ./curl/tests/testcurl.pl $name $email $desc"
- opts1="--configure=--enable-debug"
- opts2="--configure=--enable-ipv6"
- <p class="level0"># run first test
- $testprog $opts1 | $mail
- <p class="level0"># run second test
- $testprog $opts2 | $mail
- <p class="roffit">
+<p class="level0"><pre class="level0">
+mail="mail -s autobuild curl-autocompile@haxx.se"
+name="--name=whoami"
+email="--email=iamme@nowhere"
+desc='"--desc=supermachine Turbo 2000"'
+testprog="perl ./curl/tests/testcurl.pl $name $email $desc"
+opts1="--configure=--enable-debug"
+opts2="--configure=--enable-ipv6"
+
+&#35; run first test
+$testprog $opts1 | $mail
+
+&#35; run second test
+$testprog $opts2 | $mail
+<p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 993ee5c..2fca2ac 100644 (file)
Binary files a/tests/testcurl.pdf and b/tests/testcurl.pdf differ
index 8c804e4..2b9e083 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -46,6 +46,7 @@
 # --extvercmd=[command]    Command to use for displaying version with cross compiles.
 # --mktarball=[command]    Command to run after completed test
 # --name=[name]            Set name to report as
+# --notes=[notes]          More human-readable information about this configuration
 # --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
@@ -60,6 +61,7 @@
 use strict;
 
 use Cwd;
+use File::Spec;
 
 # Turn on warnings (equivalent to -w, which can't be used with /usr/bin/env)
 #BEGIN { $^W = 1; }
@@ -88,25 +90,28 @@ $setupfile = 'setup';
 $configurebuild = 1;
 while ($ARGV[0]) {
   if ($ARGV[0] =~ /--target=/) {
-    $targetos = (split(/=/, shift @ARGV))[1];
+    $targetos = (split(/=/, shift @ARGV, 2))[1];
   }
   elsif ($ARGV[0] =~ /--setup=/) {
-    $setupfile = (split(/=/, shift @ARGV))[1];
+    $setupfile = (split(/=/, shift @ARGV, 2))[1];
   }
   elsif ($ARGV[0] =~ /--extvercmd=/) {
-    $extvercmd = (split(/=/, shift @ARGV))[1];
+    $extvercmd = (split(/=/, shift @ARGV, 2))[1];
   }
   elsif ($ARGV[0] =~ /--mktarball=/) {
-    $mktarball = (split(/=/, shift @ARGV))[1];
+    $mktarball = (split(/=/, shift @ARGV, 2))[1];
   }
   elsif ($ARGV[0] =~ /--name=/) {
-    $name = (split(/=/, shift @ARGV))[1];
+    $name = (split(/=/, shift @ARGV, 2))[1];
   }
   elsif ($ARGV[0] =~ /--email=/) {
-    $email = (split(/=/, shift @ARGV))[1];
+    $email = (split(/=/, shift @ARGV, 2))[1];
   }
   elsif ($ARGV[0] =~ /--desc=/) {
-    $desc = (split(/=/, shift @ARGV))[1];
+    $desc = (split(/=/, shift @ARGV, 2))[1];
+  }
+  elsif ($ARGV[0] =~ /--notes=/) {
+    $notes = (split(/=/, shift @ARGV, 2))[1];
   }
   elsif ($ARGV[0] =~ /--configure=(.*)/) {
     $confopts = $1;
@@ -383,6 +388,10 @@ if (-d $CURLDIR) {
     mydie "$CURLDIR is not a daily source dir or checked out from git!"
   }
 }
+
+# make the path absolute so we can use it everywhere
+$CURLDIR = File::Spec->rel2abs("$CURLDIR");
+
 $build="build-$$";
 $buildlogname="buildlog-$$";
 $buildlog="$pwd/$buildlogname";
@@ -455,7 +464,7 @@ if ($git) {
       logit "  $_";
     }
 
-    chdir "$pwd/$CURLDIR";
+    chdir "$CURLDIR";
   }
 
   if($nobuildconf) {
@@ -554,7 +563,7 @@ chdir "$pwd/$build";
 
 if ($configurebuild) {
   # run configure script
-  print `../$CURLDIR/configure $confopts 2>&1`;
+  print `$CURLDIR/configure $confopts 2>&1`;
 
   if (-f "lib/Makefile") {
     logit "configure seems to have finished fine";
@@ -564,26 +573,26 @@ if ($configurebuild) {
 } else {
   logit "copying files to build dir ...";
   if (($^O eq 'MSWin32') && ($targetos !~ /netware/)) {
-    system("xcopy /s /q ..\\$CURLDIR .");
+    system("xcopy /s /q \"$CURLDIR\" .");
     system("buildconf.bat");
   }
   elsif ($targetos =~ /netware/) {
-    system("cp -afr ../$CURLDIR/* .");
-    system("cp -af ../$CURLDIR/Makefile.dist Makefile");
+    system("cp -afr $CURLDIR/* .");
+    system("cp -af $CURLDIR/Makefile.dist Makefile");
     system("$make -i -C lib -f Makefile.netware prebuild");
     system("$make -i -C src -f Makefile.netware prebuild");
-    if (-d "../$CURLDIR/ares") {
+    if (-d "$CURLDIR/ares") {
       system("$make -i -C ares -f Makefile.netware prebuild");
     }
   }
   elsif ($^O eq 'linux') {
-    system("cp -afr ../$CURLDIR/* .");
-    system("cp -af ../$CURLDIR/Makefile.dist Makefile");
-    system("cp -af ../$CURLDIR/include/curl/curlbuild.h.dist ./include/curl/curlbuild.h");
+    system("cp -afr $CURLDIR/* .");
+    system("cp -af $CURLDIR/Makefile.dist Makefile");
+    system("cp -af $CURLDIR/include/curl/curlbuild.h.dist ./include/curl/curlbuild.h");
     system("$make -i -C lib -f Makefile.$targetos prebuild");
     system("$make -i -C src -f Makefile.$targetos prebuild");
-    if (-d "../$CURLDIR/ares") {
-      system("cp -af ../$CURLDIR/ares/ares_build.h.dist ./ares/ares_build.h");
+    if (-d "$CURLDIR/ares") {
+      system("cp -af $CURLDIR/ares/ares_build.h.dist ./ares/ares_build.h");
       system("$make -i -C ares -f Makefile.$targetos prebuild");
     }
   }
index cd2ed53..7b0a10c 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # these files are used in every single unit test program
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -80,9 +90,6 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
-       $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs \
-       $(top_srcdir)/depcomp README
 @BUILD_UNITTESTS_TRUE@noinst_PROGRAMS = $(am__EXEEXT_1)
 subdir = tests/unit
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -105,7 +112,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
        $(top_builddir)/include/curl/curlbuild.h
 CONFIG_CLEAN_FILES =
@@ -114,7 +122,8 @@ am__EXEEXT_1 = unit1300$(EXEEXT) unit1301$(EXEEXT) unit1302$(EXEEXT) \
        unit1303$(EXEEXT) unit1304$(EXEEXT) unit1305$(EXEEXT) \
        unit1307$(EXEEXT) unit1308$(EXEEXT) unit1309$(EXEEXT) \
        unit1330$(EXEEXT) unit1394$(EXEEXT) unit1395$(EXEEXT) \
-       unit1396$(EXEEXT) unit1397$(EXEEXT) unit1398$(EXEEXT)
+       unit1396$(EXEEXT) unit1397$(EXEEXT) unit1398$(EXEEXT) \
+       unit1600$(EXEEXT) unit1601$(EXEEXT) unit1602$(EXEEXT)
 PROGRAMS = $(noinst_PROGRAMS)
 am__dirstamp = $(am__leading_dot)dirstamp
 am__objects_1 = ../libtest/unit1300-first.$(OBJEXT)
@@ -212,6 +221,24 @@ unit1398_OBJECTS = $(am_unit1398_OBJECTS)
 unit1398_LDADD = $(LDADD)
 unit1398_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
+am__objects_16 = ../libtest/unit1600-first.$(OBJEXT)
+am_unit1600_OBJECTS = unit1600-unit1600.$(OBJEXT) $(am__objects_16)
+unit1600_OBJECTS = $(am_unit1600_OBJECTS)
+unit1600_LDADD = $(LDADD)
+unit1600_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
+       $(top_builddir)/lib/libcurlu.la
+am__objects_17 = ../libtest/unit1601-first.$(OBJEXT)
+am_unit1601_OBJECTS = unit1601-unit1601.$(OBJEXT) $(am__objects_17)
+unit1601_OBJECTS = $(am_unit1601_OBJECTS)
+unit1601_LDADD = $(LDADD)
+unit1601_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
+       $(top_builddir)/lib/libcurlu.la
+am__objects_18 = ../libtest/unit1602-first.$(OBJEXT)
+am_unit1602_OBJECTS = unit1602-unit1602.$(OBJEXT) $(am__objects_18)
+unit1602_OBJECTS = $(am_unit1602_OBJECTS)
+unit1602_LDADD = $(LDADD)
+unit1602_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
+       $(top_builddir)/lib/libcurlu.la
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -250,13 +277,15 @@ SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) $(unit1302_SOURCES) \
        $(unit1303_SOURCES) $(unit1304_SOURCES) $(unit1305_SOURCES) \
        $(unit1307_SOURCES) $(unit1308_SOURCES) $(unit1309_SOURCES) \
        $(unit1330_SOURCES) $(unit1394_SOURCES) $(unit1395_SOURCES) \
-       $(unit1396_SOURCES) $(unit1397_SOURCES) $(unit1398_SOURCES)
+       $(unit1396_SOURCES) $(unit1397_SOURCES) $(unit1398_SOURCES) \
+       $(unit1600_SOURCES) $(unit1601_SOURCES) $(unit1602_SOURCES)
 DIST_SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) \
        $(unit1302_SOURCES) $(unit1303_SOURCES) $(unit1304_SOURCES) \
        $(unit1305_SOURCES) $(unit1307_SOURCES) $(unit1308_SOURCES) \
        $(unit1309_SOURCES) $(unit1330_SOURCES) $(unit1394_SOURCES) \
        $(unit1395_SOURCES) $(unit1396_SOURCES) $(unit1397_SOURCES) \
-       $(unit1398_SOURCES)
+       $(unit1398_SOURCES) $(unit1600_SOURCES) $(unit1601_SOURCES) \
+       $(unit1602_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -281,6 +310,8 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
+       $(top_srcdir)/depcomp README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -339,7 +370,7 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -394,6 +425,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
 STRIP = @STRIP@
 SUPPORT_FEATURES = @SUPPORT_FEATURES@
 SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
@@ -410,7 +442,6 @@ USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
-USE_SSLEAY = @USE_SSLEAY@
 USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
@@ -538,8 +569,9 @@ UNITFILES = curlcheck.h \
 
 
 # These are all unit test programs
-UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
- unit1308 unit1309 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398
+UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307     \
+ unit1308 unit1309 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398       \
+ unit1600 unit1601 unit1602
 
 unit1300_SOURCES = unit1300.c $(UNITFILES)
 unit1300_CPPFLAGS = $(AM_CPPFLAGS)
@@ -574,6 +606,12 @@ unit1397_SOURCES = unit1397.c $(UNITFILES)
 unit1397_CPPFLAGS = $(AM_CPPFLAGS)
 unit1398_SOURCES = unit1398.c $(UNITFILES)
 unit1398_CPPFLAGS = $(AM_CPPFLAGS)
+unit1600_SOURCES = unit1600.c $(UNITFILES)
+unit1600_CPPFLAGS = $(AM_CPPFLAGS)
+unit1601_SOURCES = unit1601.c $(UNITFILES)
+unit1601_CPPFLAGS = $(AM_CPPFLAGS)
+unit1602_SOURCES = unit1602.c $(UNITFILES)
+unit1602_CPPFLAGS = $(AM_CPPFLAGS)
 all: all-am
 
 .SUFFIXES:
@@ -590,7 +628,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/unit/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign tests/unit/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -599,7 +636,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
-$(srcdir)/Makefile.inc:
+$(srcdir)/Makefile.inc $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -714,6 +751,24 @@ unit1397$(EXEEXT): $(unit1397_OBJECTS) $(unit1397_DEPENDENCIES) $(EXTRA_unit1397
 unit1398$(EXEEXT): $(unit1398_OBJECTS) $(unit1398_DEPENDENCIES) $(EXTRA_unit1398_DEPENDENCIES) 
        @rm -f unit1398$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1398_OBJECTS) $(unit1398_LDADD) $(LIBS)
+../libtest/unit1600-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
+
+unit1600$(EXEEXT): $(unit1600_OBJECTS) $(unit1600_DEPENDENCIES) $(EXTRA_unit1600_DEPENDENCIES) 
+       @rm -f unit1600$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(unit1600_OBJECTS) $(unit1600_LDADD) $(LIBS)
+../libtest/unit1601-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
+
+unit1601$(EXEEXT): $(unit1601_OBJECTS) $(unit1601_DEPENDENCIES) $(EXTRA_unit1601_DEPENDENCIES) 
+       @rm -f unit1601$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(unit1601_OBJECTS) $(unit1601_LDADD) $(LIBS)
+../libtest/unit1602-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
+
+unit1602$(EXEEXT): $(unit1602_OBJECTS) $(unit1602_DEPENDENCIES) $(EXTRA_unit1602_DEPENDENCIES) 
+       @rm -f unit1602$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(unit1602_OBJECTS) $(unit1602_LDADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -737,6 +792,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1396-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1397-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1398-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1600-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1601-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1602-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1300-unit1300.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1301-unit1301.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1302-unit1302.Po@am__quote@
@@ -752,6 +810,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1396-unit1396.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1397-unit1397.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1398-unit1398.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1600-unit1600.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1601-unit1601.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1602-unit1602.Po@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -1197,6 +1258,90 @@ unit1398-unit1398.obj: unit1398.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1398_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1398-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
+unit1600-unit1600.o: unit1600.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1600-unit1600.o -MD -MP -MF $(DEPDIR)/unit1600-unit1600.Tpo -c -o unit1600-unit1600.o `test -f 'unit1600.c' || echo '$(srcdir)/'`unit1600.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1600-unit1600.Tpo $(DEPDIR)/unit1600-unit1600.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unit1600.c' object='unit1600-unit1600.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1600-unit1600.o `test -f 'unit1600.c' || echo '$(srcdir)/'`unit1600.c
+
+unit1600-unit1600.obj: unit1600.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1600-unit1600.obj -MD -MP -MF $(DEPDIR)/unit1600-unit1600.Tpo -c -o unit1600-unit1600.obj `if test -f 'unit1600.c'; then $(CYGPATH_W) 'unit1600.c'; else $(CYGPATH_W) '$(srcdir)/unit1600.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1600-unit1600.Tpo $(DEPDIR)/unit1600-unit1600.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unit1600.c' object='unit1600-unit1600.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1600-unit1600.obj `if test -f 'unit1600.c'; then $(CYGPATH_W) 'unit1600.c'; else $(CYGPATH_W) '$(srcdir)/unit1600.c'; fi`
+
+../libtest/unit1600-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1600-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1600-first.Tpo -c -o ../libtest/unit1600-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1600-first.Tpo ../libtest/$(DEPDIR)/unit1600-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1600-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1600-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+
+../libtest/unit1600-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1600-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1600-first.Tpo -c -o ../libtest/unit1600-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1600-first.Tpo ../libtest/$(DEPDIR)/unit1600-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1600-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1600_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1600-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+
+unit1601-unit1601.o: unit1601.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1601-unit1601.o -MD -MP -MF $(DEPDIR)/unit1601-unit1601.Tpo -c -o unit1601-unit1601.o `test -f 'unit1601.c' || echo '$(srcdir)/'`unit1601.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1601-unit1601.Tpo $(DEPDIR)/unit1601-unit1601.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unit1601.c' object='unit1601-unit1601.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1601-unit1601.o `test -f 'unit1601.c' || echo '$(srcdir)/'`unit1601.c
+
+unit1601-unit1601.obj: unit1601.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1601-unit1601.obj -MD -MP -MF $(DEPDIR)/unit1601-unit1601.Tpo -c -o unit1601-unit1601.obj `if test -f 'unit1601.c'; then $(CYGPATH_W) 'unit1601.c'; else $(CYGPATH_W) '$(srcdir)/unit1601.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1601-unit1601.Tpo $(DEPDIR)/unit1601-unit1601.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unit1601.c' object='unit1601-unit1601.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1601-unit1601.obj `if test -f 'unit1601.c'; then $(CYGPATH_W) 'unit1601.c'; else $(CYGPATH_W) '$(srcdir)/unit1601.c'; fi`
+
+../libtest/unit1601-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1601-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1601-first.Tpo -c -o ../libtest/unit1601-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1601-first.Tpo ../libtest/$(DEPDIR)/unit1601-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1601-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1601-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+
+../libtest/unit1601-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1601-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1601-first.Tpo -c -o ../libtest/unit1601-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1601-first.Tpo ../libtest/$(DEPDIR)/unit1601-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1601-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1601_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1601-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+
+unit1602-unit1602.o: unit1602.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1602-unit1602.o -MD -MP -MF $(DEPDIR)/unit1602-unit1602.Tpo -c -o unit1602-unit1602.o `test -f 'unit1602.c' || echo '$(srcdir)/'`unit1602.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1602-unit1602.Tpo $(DEPDIR)/unit1602-unit1602.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unit1602.c' object='unit1602-unit1602.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1602-unit1602.o `test -f 'unit1602.c' || echo '$(srcdir)/'`unit1602.c
+
+unit1602-unit1602.obj: unit1602.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1602-unit1602.obj -MD -MP -MF $(DEPDIR)/unit1602-unit1602.Tpo -c -o unit1602-unit1602.obj `if test -f 'unit1602.c'; then $(CYGPATH_W) 'unit1602.c'; else $(CYGPATH_W) '$(srcdir)/unit1602.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1602-unit1602.Tpo $(DEPDIR)/unit1602-unit1602.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unit1602.c' object='unit1602-unit1602.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1602-unit1602.obj `if test -f 'unit1602.c'; then $(CYGPATH_W) 'unit1602.c'; else $(CYGPATH_W) '$(srcdir)/unit1602.c'; fi`
+
+../libtest/unit1602-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1602-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1602-first.Tpo -c -o ../libtest/unit1602-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1602-first.Tpo ../libtest/$(DEPDIR)/unit1602-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1602-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1602-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+
+../libtest/unit1602-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1602-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1602-first.Tpo -c -o ../libtest/unit1602-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1602-first.Tpo ../libtest/$(DEPDIR)/unit1602-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1602-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1602_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1602-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+
 mostlyclean-libtool:
        -rm -f *.lo
 
@@ -1408,6 +1553,8 @@ uninstall-am:
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 526ec1f..9073b34 100644 (file)
@@ -5,8 +5,9 @@ UNITFILES = curlcheck.h \
  ../libtest/first.c
 
 # These are all unit test programs
-UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
- unit1308 unit1309 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398
+UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307     \
+ unit1308 unit1309 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398       \
+ unit1600 unit1601 unit1602
 
 unit1300_SOURCES = unit1300.c $(UNITFILES)
 unit1300_CPPFLAGS = $(AM_CPPFLAGS)
@@ -56,3 +57,12 @@ unit1397_CPPFLAGS = $(AM_CPPFLAGS)
 unit1398_SOURCES = unit1398.c $(UNITFILES)
 unit1398_CPPFLAGS = $(AM_CPPFLAGS)
 
+unit1600_SOURCES = unit1600.c $(UNITFILES)
+unit1600_CPPFLAGS = $(AM_CPPFLAGS)
+
+unit1601_SOURCES = unit1601.c $(UNITFILES)
+unit1601_CPPFLAGS = $(AM_CPPFLAGS)
+
+unit1602_SOURCES = unit1602.c $(UNITFILES)
+unit1602_CPPFLAGS = $(AM_CPPFLAGS)
+
index 96203e0..2e3746b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
     unitfail++;                                          \
   }
 
-#define verify_memory(dynamic, check, len)                              \
-  if(dynamic && memcmp(dynamic, check, len)) {                          \
-    fprintf(stderr, "%s:%d The dynamic string didn't match '%s'\n",     \
-            __FILE__, __LINE__, check);                                 \
-    unitfail++;                                                         \
+#define verify_memory(dynamic, check, len)                                  \
+  if(dynamic && memcmp(dynamic, check, len)) {                              \
+    fprintf(stderr, "%s:%d Memory buffer mismatch size %d. '%s' is not\n", \
+            __FILE__, __LINE__, len, hexdump((unsigned char *)check, len));      \
+    fprintf(stderr, "%s:%d the same as '%s'\n",                             \
+            __FILE__, __LINE__, hexdump((unsigned char *)dynamic, len));         \
+    unitfail++;                                                             \
   }
 
 /* fail() is for when the test case figured out by itself that a check
index 91e3b0b..96913f1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "memdebug.h" /* LAST include file */
 
 static struct SessionHandle *data;
-static struct curl_hash *hp;
+static struct curl_hash hp;
 static char *data_key;
 static struct Curl_dns_entry *data_node;
 
 static CURLcode unit_setup( void )
 {
+  int rc;
   data = curl_easy_init();
   if (!data)
     return CURLE_OUT_OF_MEMORY;
 
-  hp = Curl_mk_dnscache();
-  if(!hp) {
+  rc = Curl_mk_dnscache(&hp);
+  if(rc) {
     curl_easy_cleanup(data);
     curl_global_cleanup();
     return CURLE_OUT_OF_MEMORY;
@@ -65,10 +66,8 @@ static void unit_stop( void )
     Curl_freeaddrinfo(data_node->addr);
     free(data_node);
   }
-  if (data_key)
-    free(data_key);
-
-  Curl_hash_destroy(hp);
+  free(data_key);
+  Curl_hash_destroy(&hp);
 
   curl_easy_cleanup(data);
   curl_global_cleanup();
@@ -130,7 +129,8 @@ UNITTEST_START
     abort_unless(rc == CURLE_OK, "data node creation failed");
     key_len = strlen(data_key);
 
-    nodep = Curl_hash_add(hp, data_key, key_len+1, data_node);
+    data_node->inuse = 1; /* hash will hold the reference */
+    nodep = Curl_hash_add(&hp, data_key, key_len+1, data_node);
     abort_unless(nodep, "insertion into hash failed");
     /* Freeing will now be done by Curl_hash_destroy */
     data_node = NULL;
index fd60c23..c05c119 100644 (file)
@@ -15,7 +15,7 @@ static void unit_stop( void )
 UNITTEST_START
 
 /* only these backends define the tested functions */
-#if defined(USE_SSLEAY) || defined(USE_AXTLS) || defined(USE_GSKIT)
+#if defined(USE_OPENSSL) || defined(USE_AXTLS) || defined(USE_GSKIT)
 
   /* here you start doing things and checking that the results are good */
 
diff --git a/tests/unit/unit1600.c b/tests/unit/unit1600.c
new file mode 100644 (file)
index 0000000..6803cf3
--- /dev/null
@@ -0,0 +1,63 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at 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.
+ *
+ ***************************************************************************/
+#include "curlcheck.h"
+
+#include "urldata.h"
+#include "curl_ntlm_core.h"
+
+CURL *easy;
+
+static CURLcode unit_setup(void)
+{
+  easy = curl_easy_init();
+  return CURLE_OK;
+}
+
+static void unit_stop(void)
+{
+  curl_easy_cleanup(easy);
+}
+
+UNITTEST_START
+
+#if defined(USE_NTLM) && (!defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO))
+  unsigned char output[21];
+  unsigned char *testp = output;
+  Curl_ntlm_core_mk_nt_hash(easy, "1", output);
+
+  verify_memory(testp,
+              "\x69\x94\x3c\x5e\x63\xb4\xd2\xc1\x04\xdb"
+              "\xbc\xc1\x51\x38\xb7\x2b\x00\x00\x00\x00\x00", 21);
+
+  Curl_ntlm_core_mk_nt_hash(easy, "hello-you-fool", output);
+
+  verify_memory(testp,
+              "\x39\xaf\x87\xa6\x75\x0a\x7a\x00\xba\xa0"
+              "\xd3\x4f\x04\x9e\xc1\xd0\x00\x00\x00\x00\x00", 21);
+
+  Curl_ntlm_core_mk_nt_hash(easy, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", output);
+
+  verify_memory(testp,
+                "\x36\x9d\xae\x06\x84\x7e\xe1\xc1\x4a\x94\x39\xea\x6f\x44\x8c\x65\x00\x00\x00\x00\x00", 21);
+#endif
+
+UNITTEST_STOP
similarity index 52%
rename from lib/bundles.h
rename to tests/unit/unit1601.c
index 3816c40..17aba05 100644 (file)
@@ -1,5 +1,3 @@
-#ifndef HEADER_CURL_BUNDLES_H
-#define HEADER_CURL_BUNDLES_H
 /***************************************************************************
  *                                  _   _ ____  _
  *  Project                     ___| | | |  _ \| |
@@ -7,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012, Linus Nielsen Feltzing, <linus@haxx.se>
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
+#include "curlcheck.h"
 
-struct connectbundle {
-  bool server_supports_pipelining; /* TRUE if server supports pipelining,
-                                      set after first response */
-  size_t num_connections;       /* Number of connections in the bundle */
-  struct curl_llist *conn_list; /* The connectdata members of the bundle */
-};
+#include "curl_md5.h"
 
-CURLcode Curl_bundle_create(struct SessionHandle *data,
-                            struct connectbundle **cb_ptr);
+static CURLcode unit_setup(void)
+{
+  return CURLE_OK;
+}
 
-void Curl_bundle_destroy(struct connectbundle *cb_ptr);
+static void unit_stop(void)
+{
 
-CURLcode Curl_bundle_add_conn(struct connectbundle *cb_ptr,
-                              struct connectdata *conn);
+}
 
-int Curl_bundle_remove_conn(struct connectbundle *cb_ptr,
-                            struct connectdata *conn);
+UNITTEST_START
 
+  unsigned char output[16];
+  unsigned char *testp = output;
+  Curl_md5it(output, (const unsigned char *)"1");
 
-#endif /* HEADER_CURL_BUNDLES_H */
+  verify_memory(testp,
+                "\xc4\xca\x42\x38\xa0\xb9\x23\x82\x0d\xcc\x50\x9a\x6f\x75\x84\x9b", 16);
 
+  Curl_md5it(output, (const unsigned char *)"hello-you-fool");
+
+  verify_memory(testp,
+                "\x88\x67\x0b\x6d\x5d\x74\x2f\xad\xa5\xcd\xf9\xb6\x82\x87\x5f\x22", 16);
+
+
+UNITTEST_STOP
diff --git a/tests/unit/unit1602.c b/tests/unit/unit1602.c
new file mode 100644 (file)
index 0000000..3b25556
--- /dev/null
@@ -0,0 +1,80 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at 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.
+ *
+ ***************************************************************************/
+#include "curlcheck.h"
+
+#define ENABLE_CURLX_PRINTF
+#include "curlx.h"
+
+#include "hash.h"
+
+#include "memdebug.h" /* LAST include file */
+
+ static CURLcode unit_setup( void )
+{
+  return CURLE_OK;
+}
+
+static void unit_stop( void )
+{
+
+}
+
+static void mydtor(void *p)
+{
+  int *ptr = (int*)p;
+  free(ptr);
+}
+
+UNITTEST_START
+  int *value;
+  int *value2;
+  size_t klen = sizeof(int);
+
+  struct curl_hash hash_static;
+  int key = 20;
+  int key2 = 25;
+  int rc = 0;
+
+  rc = Curl_hash_init(&hash_static, 7, Curl_hash_str,
+                        Curl_str_key_compare, mydtor);
+
+  if(rc)
+  {
+    fail("Curl_hash_init failed to initialize static hash!");
+    goto unit_test_abort;
+  }
+
+  value = malloc(sizeof(int));
+  value2 = malloc(sizeof(int));
+
+  *value = 199;
+  *value2 = 204;
+  Curl_hash_add(&hash_static, &key, klen, value);
+  
+  Curl_hash_clean(&hash_static);
+
+  /* Attempt to add another key/value pair */
+  Curl_hash_add(&hash_static, &key2, klen, value2);
+
+  Curl_hash_destroy(&hash_static);
+  
+UNITTEST_STOP
index 757c41f..1556fe6 100644 (file)
@@ -1,5 +1,5 @@
-Building with Visual C++, prerequises\r
-=====================================\r
+Building with Visual C++, prerequisites\r
+=======================================\r
 \r
    This document describes how to compile, build and install curl and libcurl\r
    from sources using the Visual C++ build tool. To build with VC++, you will\r
@@ -19,7 +19,7 @@ Building with Visual C++, prerequises
 \r
     http://www.microsoft.com/en-us/download/details.aspx?id=12261\r
 \r
-   If you wish to support zlib, openssl, ssh2, you will have to download\r
+   If you wish to support zlib, openssl, c-ares, ssh2, you will have to download\r
    them separately and copy them to the deps directory as shown below:\r
    \r
    somedirectory\\r
@@ -58,12 +58,13 @@ a directory named using the options given to the nmake call.
 nmake /f Makefile.vc mode=<static or dll> <options>\r
 \r
 where <options> is one or many of:\r
-  VC=<6,7,8,9,10,11,12>        - VC versions\r
+  VC=<6,7,8,9,10,11,12,14>     - VC versions\r
   WITH_DEVEL=<path>            - Paths for the development files (SSL, zlib, etc.)\r
                                  Defaults to sibbling directory deps: ../deps\r
                                  Libraries can be fetched at http://windows.php.net/downloads/php-sdk/deps/\r
                                  Uncompress them into the deps folder.\r
   WITH_SSL=<dll or static>     - Enable OpenSSL support, DLL or static\r
+  WITH_CARES=<dll or static>   - Enable c-ares support, DLL or static\r
   WITH_ZLIB=<dll or static>    - Enable zlib support, DLL or static\r
   WITH_SSH2=<dll or static>    - Enable libSSH2 support, DLL or static\r
   ENABLE_SSPI=<yes or no>      - Enable SSPI support, defaults to yes\r
@@ -75,3 +76,23 @@ where <options> is one or many of:
   GEN_PDB=<yes or no>          - Generate Program Database (debug symbols for release build)\r
   DEBUG=<yes or no>            - Debug builds\r
   MACHINE=<x86 or x64>         - Target architecture (default is x86)\r
+\r
+Static linking of Microsoft's C RunTime (CRT):\r
+==============================================\r
+If you are using mode=static nmake will create and link to the static build of\r
+libcurl but *not* the static CRT. If you must you can force nmake to link in\r
+the static CRT by passing RTLIBCFG=static. Typically you shouldn't use that\r
+option, and nmake will default to the DLL CRT. RTLIBCFG is rarely used and\r
+therefore rarely tested. When passing RTLIBCFG for a configuration that was\r
+already built but not with that option, or if the option was specified\r
+differently, you must destroy the build directory containing the configuration\r
+so that nmake can build it from scratch.\r
+\r
+Legacy Windows and SSL\r
+======================\r
+When you build curl using the build files in this directory the default SSL\r
+backend will be WinSSL (Windows SSPI, more specifically Schannel), the native\r
+SSL library that comes with the Windows OS. WinSSL in Windows <= XP is not able\r
+to connect to servers that no longer support the legacy handshakes and\r
+algorithms used by those versions. If you will be using curl in one of those\r
+earlier versions of Windows you should choose another SSL backend like OpenSSL.\r
index 6dc58c4..5b726cd 100644 (file)
@@ -15,12 +15,13 @@ CFGSET=true
 \r
 !MESSAGE Usage: nmake /f Makefile.vc mode=<static or dll> <options>\r
 !MESSAGE where <options> is one or many of:\r
-!MESSAGE   VC=<6,7,8,9,10,11,12>        - VC versions\r
+!MESSAGE   VC=<6,7,8,9,10,11,12,14>     - VC versions\r
 !MESSAGE   WITH_DEVEL=<path>            - Paths for the development files (SSL, zlib, etc.)\r
 !MESSAGE                                  Defaults to sibbling directory deps: ../deps\r
 !MESSAGE                                  Libraries can be fetched at http://pecl2.php.net/downloads/php-windows-builds/\r
 !MESSAGE                                  Uncompress them into the deps folder.\r
 !MESSAGE   WITH_SSL=<dll or static>     - Enable OpenSSL support, DLL or static\r
+!MESSAGE   WITH_CARES=<dll or static>   - Enable c-ares support, DLL or static\r
 !MESSAGE   WITH_ZLIB=<dll or static>    - Enable zlib support, DLL or static\r
 !MESSAGE   WITH_SSH2=<dll or static>    - Enable libSSH2 support, DLL or static\r
 !MESSAGE   ENABLE_IDN=<yes or no>       - Enable use of Windows IDN APIs, defaults to yes\r
@@ -107,6 +108,14 @@ USE_SSL = true
 SSL     = static\r
 !ENDIF\r
 \r
+!IF "$(WITH_CARES)"=="dll"\r
+USE_CARES = true\r
+CARES     = dll\r
+!ELSEIF "$(WITH_CARES)"=="static"\r
+USE_CARES = true\r
+CARES     = static\r
+!ENDIF\r
+\r
 !IF "$(WITH_ZLIB)"=="dll"\r
 USE_ZLIB = true\r
 ZLIB     = dll\r
@@ -141,6 +150,10 @@ CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-static
 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssl-$(SSL)\r
 !ENDIF\r
 \r
+!IF "$(USE_CARES)"=="true"\r
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-cares-$(CARES)\r
+!ENDIF\r
+\r
 !IF "$(USE_ZLIB)"=="true"\r
 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-zlib-$(ZLIB)\r
 !ENDIF\r
index b9e150c..28d40ba 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -22,7 +22,7 @@
 \r
 ###########################################################################\r
 #\r
-# Makefile for building libcurl with MSVC 6, 7, 8, 9, 10, 11 and 12\r
+# Makefile for building libcurl with MSVC 6, 7, 8, 9, 10, 11, 12 and 14\r
 #\r
 # Usage: see usage message below\r
 #        Should be invoked from winbuild directory\r
@@ -118,9 +118,30 @@ SSL          = static
 !ENDIF\r
 \r
 !IFDEF USE_SSL\r
-SSL_CFLAGS   = /DUSE_SSLEAY /I"$(DEVEL_INCLUDE)/openssl"\r
+SSL_CFLAGS   = /DUSE_OPENSSL /I"$(DEVEL_INCLUDE)/openssl"\r
 !ENDIF\r
 \r
+!IF "$(WITH_CARES)"=="dll"\r
+!IF "$(DEBUG)"=="yes"\r
+CARES_LIBS     = caresd.lib\r
+!ELSE\r
+CARES_LIBS     = cares.lib\r
+!ENDIF\r
+USE_CARES      = true\r
+CARES          = dll\r
+!ELSEIF "$(WITH_CARES)"=="static"\r
+!IF "$(DEBUG)"=="yes"\r
+CARES_LIBS     = libcaresd.lib\r
+!ELSE\r
+CARES_LIBS     = libcares.lib\r
+!ENDIF\r
+USE_CARES      = true\r
+CARES          = static\r
+!ENDIF\r
+\r
+!IFDEF USE_CARES\r
+CARES_CFLAGS   = /DUSE_ARES /I"$(DEVEL_INCLUDE)/cares"\r
+!ENDIF\r
 \r
 !IF "$(WITH_ZLIB)"=="dll"\r
 ZLIB_LIBS   = zlib.lib\r
@@ -297,6 +318,11 @@ CFLAGS = $(CFLAGS) $(SSL_CFLAGS)
 LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(SSL_LIBS)\r
 !ENDIF\r
 \r
+!IF "$(USE_CARES)"=="true"\r
+CFLAGS = $(CFLAGS) $(CARES_CFLAGS)\r
+LFLAGS = $(LFLAGS) $(CARES_LFLAGS) $(CARES_LIBS)\r
+!ENDIF\r
+\r
 !IF "$(USE_ZLIB)"=="true"\r
 CFLAGS = $(CFLAGS) $(ZLIB_CFLAGS)\r
 LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS) $(ZLIB_LIBS)\r
@@ -376,6 +402,7 @@ package: $(TARGET)
 \r
 $(TARGET): $(LIB_OBJS) $(LIB_DIROBJ) $(DISTDIR)\r
        @echo Using SSL: $(USE_SSL)\r
+       @echo Using c-ares: $(USE_CARES)\r
        @echo Using SSH2: $(USE_SSH2)\r
        @echo Using ZLIB: $(USE_ZLIB)\r
        @echo Using IDN:  $(USE_IDN)\r