From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14070 invoked by alias); 16 Jan 2015 17:15:46 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 14053 invoked by uid 89); 16 Jan 2015 17:15:45 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-wi0-f169.google.com Received: from mail-wi0-f169.google.com (HELO mail-wi0-f169.google.com) (209.85.212.169) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Fri, 16 Jan 2015 17:15:39 +0000 Received: by mail-wi0-f169.google.com with SMTP id bs8so5744489wib.0; Fri, 16 Jan 2015 09:15:36 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.194.60.19 with SMTP id d19mr30215300wjr.48.1421428535982; Fri, 16 Jan 2015 09:15:35 -0800 (PST) Received: by 10.27.39.198 with HTTP; Fri, 16 Jan 2015 09:15:35 -0800 (PST) In-Reply-To: <83ppaf3oe6.fsf@gnu.org> References: <83ppaf3oe6.fsf@gnu.org> Date: Fri, 16 Jan 2015 17:15:00 -0000 Message-ID: Subject: Re: [PATCH] Add support for embedding scripts in .debug_gdb_scripts. From: Doug Evans To: Eli Zaretskii Cc: binutils@sourceware.org, "gdb-patches@sourceware.org" Content-Type: multipart/mixed; boundary=047d7b86c898f79f3d050cc81edf X-IsSubscribed: yes X-SW-Source: 2015-01/txt/msg00472.txt.bz2 --047d7b86c898f79f3d050cc81edf Content-Type: text/plain; charset=UTF-8 Content-length: 3034 On Thu, Jan 15, 2015 at 10:11 AM, Eli Zaretskii wrote: >> From: Doug Evans >> Date: Thu, 15 Jan 2015 09:31:48 -0800 >> >> +* Python/Guile scripting >> + >> +** GDB now supports auto-loading of Python/Guile scripts contained in the >> + special section named `.debug_gdb_scripts'. > > I think we should tell here on what systems/targets this is supported. > Otherwise, the NEWS entry is OK. The previous news entry didn't, and I'm following that. >> For systems using file formats like ELF and COFF, >> when @value{GDBN} loads a new object file >> it will look for a special section named @code{.debug_gdb_scripts}. > > Is this really supported with non-ELF targets? E.g., does pe-coff > (Windows) support such sections? My mingw32 toolchain generates DWARF (i.e., has .debug_* sections). >> +If this section exists, its contents is a list of NUL-terminated entries >> +specifying scripts to load. Each entry begins with a non-NULL prefix byte that > > Let's be consistent here" "null", lower-case and with 2 'l'. This is > just a plain English word, not an acronym or a C symbol. NULL is a typo, thanks for catching that. I'm just following usage elsewhere in gdb.texinfo, and I like this choice. > >> +Supported values for the prefix byte are define in the > ^^^^^^ > "defined" Done. > >> +@file{include/gdb/section-scripts.h} file in the @value{GDBN} source tree. > > Is this really helpful? If that file is installed, let's mention > where to find it in the installed tree; if it is not installed, we > ought to list the values here, since the reader might not have access > to the source tree, let alone the one from which the binary was > produced. > >> +The following entries are supported: >> + >> +@table @code >> +@item SECTION_SCRIPT_ID_PYTHON_FILE = 1 >> +@item SECTION_SCRIPT_ID_SCHEME_FILE = 3 >> +@item SECTION_SCRIPT_ID_PYTHON_TEXT = 4 >> +@item SECTION_SCRIPT_ID_SCHEME_TEXT = 6 >> +@end table > > Are these the values of the prefix byte? If so, we should simply skip > the pointer to the source tree. Done. > >> +@subsubsection Script Text Entries >> + >> +In script text entries the script to execute is contained in the entry >> +instead of being loaded from a file. > > Suggest to reword this sentence: > > Script text entries allow to put the executable script in the entry > itself instead of loading it from a file. Done. > >> +The rest of the entry, up to the trailing NUL byte, > ^^^ > "null" Copied from gdb.texinfo. Plus we've had this conversation before. :-) https://sourceware.org/ml/gdb-patches/2013-12/msg00892.html https://sourceware.org/ml/gdb-patches/2013-12/msg00894.html > >> is the script to >> +execute in the specified language. > > Specified how and by what means? > >> +Loading of inlined scripts require a properly configured > ^^^^^^^ > "requires" Done. --047d7b86c898f79f3d050cc81edf Content-Type: text/plain; charset=US-ASCII; name="embedded-scripts-2.patch.txt" Content-Disposition: attachment; filename="embedded-scripts-2.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i4ztk12k0 Content-length: 69809 MjAxNS0wMS0xNiAgRG91ZyBFdmFucyAgPHhkamU0MkBnbWFpbC5jb20+CgoJ QWRkIHN1cHBvcnQgZm9yIGlubGluaW5nIHNjcmlwdHMgaW50byAuZGVidWdf Z2RiX3NjcmlwdHMuCgoJaW5jbHVkZS8KCSogZ2RiL3NlY3Rpb24tc2NyaXB0 cy5oOiBSZW1vdmUgImZ1dHVyZSBleHRlbnNpb24iIGNvbW1lbnQuCgkoU0VD VElPTl9TQ1JJUFRfSURfUFlUSE9OX1RFWFQpOiBOZXcgbWFjcm8uCgkoU0VD VElPTl9TQ1JJUFRfSURfU0NIRU1FX1RFWFQpOiBOZXcgbWFjcm8uCgoJZ2Ri LwoJKiBORVdTOiBNZW50aW9uIGlubGluZWQgc2NyaXB0cyBpbiAuZGVidWdf Z2RiX3NjcmlwdHMgc2VjdGlvbi4KCSogYXV0by1sb2FkLmM6ICNpbmNsdWRl IGN0eXBlLmguCgkoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyk6IFJl cGxhY2UgbWVtYmVyIGxvYWRlZF9zY3JpcHRzIHdpdGgKCW5ldyBtZW1iZXJz IGxvYWRlZF9zY3JpcHRfZmlsZXMsIGxvYWRlZF9zY3JpcHRfdGV4dHMuCgko YXV0b19sb2FkX3BzcGFjZV9kYXRhX2NsZWFudXApOiBVcGRhdGUuCgkoaW5p dF9sb2FkZWRfc2NyaXB0c19pbmZvKTogVXBkYXRlLgoJKGdldF9hdXRvX2xv YWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcpOiBVcGRhdGUuCgkobWF5YmVf YWRkX3NjcmlwdF9maWxlKTogUmVuYW1lZCBmcm9tIG1heWJlX2FkZF9zY3Jp cHQuICBBbGwgY2FsbGVycwoJdXBkYXRlZC4KCShtYXliZV9hZGRfc2NyaXB0 X3RleHQpOiBOZXcgZnVuY3Rpb24uCgkoY2xlYXJfc2VjdGlvbl9zY3JpcHRz KTogVXBkYXRlLgoJKHNvdXJjZV9zY3JpcHRfZmlsZSwgZXhlY3V0ZV9zY3Jp cHRfY29udGVudHMpOiBOZXcgZnVuY3Rpb25zLgoJKHNvdXJjZV9zZWN0aW9u X3NjcmlwdHMpOiBBZGQgc3VwcG9ydCBmb3IKCVNFQ1RJT05fU0NSSVBUX0lE X1BZVEhPTl9URVhULCBTRUNUSU9OX1NDUklQVF9JRF9HVUlMRV9URVhULgoJ KHByaW50X3NjcmlwdHMpOiBOZXcgZnVuY3Rpb24uCgkoYXV0b19sb2FkX2lu Zm9fc2NyaXB0cyk6IEFsc28gcHJpbnQgaW5saW5lZCBzY3JpcHRzLgoJKG1h eWJlX3ByaW50X3Vuc3VwcG9ydGVkX3NjcmlwdF93YXJuaW5nKTogUmVuYW1l ZCBmcm9tCgl1bnN1cHBvcnRlZF9zY3JpcHRfd2FybmluZ19wcmludC4gIEFs bCBjYWxsZXJzIHVwZGF0ZWQuCgkobWF5YmVfcHJpbnRfc2NyaXB0X25vdF9m b3VuZF93YXJuaW5nKTogUmVuYW1lZCBmcm9tCglzY3JpcHRfbm90X2ZvdW5k X3dhcm5pbmdfcHJpbnQuICBBbGwgY2FsbGVycyB1cGRhdGVkLgoJKiBleHRl bnNpb24tcHJpdi5oIChzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX3Njcmlw dF9vcHMpOiBOZXcgbWVtYmVyCglvYmpmaWxlX3NjcmlwdF9leGVjdXRvci4K CSogZXh0ZW5zaW9uLmMgKGV4dF9sYW5nX29iamZpbGVfc2NyaXB0X2V4ZWN1 dG9yKTogTmV3IGZ1bmN0aW9uLgoJKiBleHRlbnNpb24uaCAob2JqZmlsZV9z Y3JpcHRfZXhlY3V0b3JfZnVuYyk6IE5ldyB0eXBlZGVmLgoJKGV4dF9sYW5n X29iamZpbGVfc2NyaXB0X2V4ZWN1dG9yKTogRGVjbGFyZS4KCSogZ3VpbGUv Z3VpbGUtaW50ZXJuYWwuaCAoZ2Ric2NtX2V4ZWN1dGVfb2JqZmlsZV9zY3Jp cHQpOiBEZWNsYXJlLgoJKiBndWlsZS9ndWlsZS5jIChndWlsZV9leHRlbnNp b25fc2NyaXB0X29wcyk6IFVwZGF0ZS4KCSogZ3VpbGUvc2NtLW9iamZpbGUu YyAoZ2Ric2NtX2V4ZWN1dGVfb2JqZmlsZV9zY3JpcHQpOiBOZXcgZnVuY3Rp b24uCgkqIHB5dGhvbi9weXRob24uYyAocHl0aG9uX2V4dGVuc2lvbl9zY3Jp cHRfb3BzKTogVXBkYXRlLgoJKGdkYnB5X2V4ZWN1dGVfb2JqZmlsZV9zY3Jp cHQpOiBOZXcgZnVuY3Rpb24uCgoJZG9jLwoJKiBnZGIudGV4aW5mbyAoZG90 ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbik6IFVwZGF0ZSBkb2NzIHRvCglk aXN0aW5ndWlzaCBzY3JpcHQgZmlsZXMgdnMgaW5saW5lZCBzY3JpcHRzLgoJ KiBweXRob24udGV4aSAoUHl0aG9uIEF1dG8tbG9hZGluZyk6IERpdHRvLgoK CXRlc3RzdWl0ZS8KCSogZ2RiLmd1aWxlL3NjbS1zZWN0aW9uLXNjcmlwdC5j OiBBZGQgZHVwbGljYXRlIGlubGluZWQgc2VjdGlvbiBzY3JpcHQKCWVudHJp ZXMuICBEdXBsaWNhdGUgZmlsZSBzZWN0aW9uIHNjcmlwdCBlbnRyaWVzLgoJ KiBnZGIuZ3VpbGUvc2NtLXNlY3Rpb24tc2NyaXB0LmV4cDogQWRkIHRlc3Rz IGZvciBkdXBsaWNhdGUgZW50cmllcywKCWlubGluZWQgZW50cmllcy4gIEFk ZCB0ZXN0IGZvciBzYWZlLXBhdGggcmVqZWN0aW9uLgoJKiBnZGIucHl0aG9u L3B5LXNlY3Rpb24tc2NyaXB0LmM6IEFkZCBkdXBsaWNhdGUgaW5saW5lZCBz ZWN0aW9uIHNjcmlwdAoJZW50cmllcy4gIER1cGxpY2F0ZSBmaWxlIHNlY3Rp b24gc2NyaXB0IGVudHJpZXMuCgkqIGdkYi5weXRob24vcHktc2VjdGlvbi1z Y3JpcHQuZXhwOiBBZGQgdGVzdHMgZm9yIGR1cGxpY2F0ZSBlbnRyaWVzLAoJ aW5saW5lZCBlbnRyaWVzLiAgQWRkIHRlc3QgZm9yIHNhZmUtcGF0aCByZWpl Y3Rpb24uCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9nZGIvc2VjdGlvbi1zY3Jp cHRzLmggYi9pbmNsdWRlL2dkYi9zZWN0aW9uLXNjcmlwdHMuaAppbmRleCBj NGI3YTFjLi5lZmZjZTYyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2dkYi9zZWN0 aW9uLXNjcmlwdHMuaAorKysgYi9pbmNsdWRlL2dkYi9zZWN0aW9uLXNjcmlw dHMuaApAQCAtMjgsOCArMjgsNiBAQAogICAgT3RoZXIgdW51c2VkIHZhbHVl cyBuZWVkbid0IHNwZWNpZnkgZGlmZmVyZW50IHNjcmlwdGluZyBsYW5ndWFn ZXMsCiAgICBidXQgd2UgaGF2ZSBubyBuZWVkIGZvciBhbnl0aGluZyBlbHNl IGF0IHRoZSBtb21lbnQuCiAKLSAgIEZ1dHVyZSBleHRlbnNpb246IEluY2x1 ZGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBzY3JpcHQgaW4gdGhlIHNlY3Rpb24u Ci0KICAgIFRoZXNlIHZhbHVlcyBhcmUgZGVmaW5lZCBhcyBtYWNyb3Mgc28g dGhhdCB0aGV5IGNhbiBiZSB1c2VkIGluIGVtYmVkZGVkCiAgICBhc21zIGFu ZCBhc3NlbWJsZXIgc291cmNlIGZpbGVzLiAgKi8KIApAQCAtNDcsNCArNDUs MTggQEAKICAgIGZpbGUuICAqLwogI2RlZmluZSBTRUNUSU9OX1NDUklQVF9J RF9TQ0hFTUVfRklMRSAzCiAKKy8qIFRoZSByZWNvcmQgaXMgYSBudWwtdGVy bWluYXRlZCBzdHJpbmcuCisgICBUaGUgZmlyc3QgbGluZSBpcyB0aGUgbmFt ZSBvZiB0aGUgc2NyaXB0LgorICAgU3Vic2VxdWVudCBsaW5lcyBhcmUgaW50 ZXJwcmV0ZWQgYXMgYSBweXRob24gc2NyaXB0LiAgKi8KKyNkZWZpbmUgU0VD VElPTl9TQ1JJUFRfSURfUFlUSE9OX1RFWFQgNAorCisvKiBOYXRpdmUgR0RC IHNjcmlwdHMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGluIC5kZWJ1 Z19nZGJfc2NyaXB0cywKKyAgIGJ1dCB3ZSByZXNlcnZlIGEgdmFsdWUgZm9y IGl0LiAgKi8KKy8qI2RlZmluZSBTRUNUSU9OX1NDUklQVF9JRF9HREJfVEVY VCA1Ki8KKworLyogVGhlIHJlY29yZCBpcyBhIG51bC10ZXJtaW5hdGVkIHN0 cmluZy4KKyAgIFRoZSBmaXJzdCBsaW5lIGlzIHRoZSBuYW1lIG9mIHRoZSBz Y3JpcHQuCisgICBTdWJzZXF1ZW50IGxpbmVzIGFyZSBpbnRlcnByZXRlZCBh cyBhIGd1aWxlKHNjaGVtZSkgc2NyaXB0LiAgKi8KKyNkZWZpbmUgU0VDVElP Tl9TQ1JJUFRfSURfU0NIRU1FX1RFWFQgNgorCiAjZW5kaWYgLyogR0RCX1NF Q1RJT05fU0NSSVBUU19IICovCmRpZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dk Yi9ORVdTCmluZGV4IDJkMmM5NDEuLmJhZjE4NjggMTAwNjQ0Ci0tLSBhL2dk Yi9ORVdTCisrKyBiL2dkYi9ORVdTCkBAIC0zLDYgKzMsMTEgQEAKIAogKioq IENoYW5nZXMgc2luY2UgR0RCIDcuOQogCisqIFB5dGhvbi9HdWlsZSBzY3Jp cHRpbmcKKworKiogR0RCIG5vdyBzdXBwb3J0cyBhdXRvLWxvYWRpbmcgb2Yg UHl0aG9uL0d1aWxlIHNjcmlwdHMgY29udGFpbmVkIGluIHRoZQorICAgc3Bl Y2lhbCBzZWN0aW9uIG5hbWVkIGAuZGVidWdfZ2RiX3NjcmlwdHMnLgorCiAq KiogQ2hhbmdlcyBpbiBHREIgNy45CiAKICogR0RCIG5vdyBzdXBwb3J0cyBo YXJkd2FyZSB3YXRjaHBvaW50cyBvbiB4ODYgR05VIEh1cmQuCmRpZmYgLS1n aXQgYS9nZGIvYXV0by1sb2FkLmMgYi9nZGIvYXV0by1sb2FkLmMKaW5kZXgg YzE1Mjc3OC4uNzc4ZWViNiAxMDA2NDQKLS0tIGEvZ2RiL2F1dG8tbG9hZC5j CisrKyBiL2dkYi9hdXRvLWxvYWQuYwpAQCAtMTgsNiArMTgsNyBAQAogICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAjaW5jbHVkZSAiZGVm cy5oIgorI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSAiYXV0by1sb2Fk LmgiCiAjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCiAjaW5jbHVkZSAiZ2RiX3Jl Z2V4LmgiCkBAIC00OCwxNCArNDksMTUgQEAKICAgIGZvbGxvd2VkIGJ5IHRo ZSBwYXRoIG9mIGEgcHl0aG9uIHNjcmlwdCB0byBsb2FkLiAgKi8KICNkZWZp bmUgQVVUT19TRUNUSU9OX05BTUUgIi5kZWJ1Z19nZGJfc2NyaXB0cyIKIAot c3RhdGljIGludCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywKLQkJCSAgICAgaW50IGxvYWRl ZCwgY29uc3QgY2hhciAqbmFtZSwKLQkJCSAgICAgY29uc3QgY2hhciAqZnVs bF9wYXRoLAotCQkJICAgICBjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1 YWdlX2RlZm4gKmxhbmd1YWdlKTsKK3N0YXRpYyB2b2lkIG1heWJlX3ByaW50 X3Vuc3VwcG9ydGVkX3NjcmlwdF93YXJuaW5nCisgIChzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICosIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAor ICAgY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuICpsYW5n dWFnZSwKKyAgIGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZSwgdW5zaWduZWQg b2Zmc2V0KTsKIAotc3RhdGljIGludCB1bnN1cHBvcnRlZF9zY3JpcHRfd2Fy bmluZ19wcmludCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqKTsK LQotc3RhdGljIGludCBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQg KHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKik7CitzdGF0aWMgdm9p ZCBtYXliZV9wcmludF9zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmcKKyAgKHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKiwgc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCisgICBjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdl X2RlZm4gKmxhbmd1YWdlLAorICAgY29uc3QgY2hhciAqc2VjdGlvbl9uYW1l LCB1bnNpZ25lZCBvZmZzZXQpOwogCiAvKiBWYWx1ZSBvZiB0aGUgJ3NldCBk ZWJ1ZyBhdXRvLWxvYWQnIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwog c3RhdGljIGludCBkZWJ1Z19hdXRvX2xvYWQgPSAwOwpAQCAtNTQxLDggKzU0 MywxMCBAQCBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIHNlY3Vy aXR5IHByb3RlY3Rpb24gc2VlIHRoZVxuXAogCiBzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvCiB7Ci0gIC8qIEZvciBlYWNoIHByb2dyYW0gc3BhY2Ug d2Uga2VlcCB0cmFjayBvZiBsb2FkZWQgc2NyaXB0cy4gICovCi0gIHN0cnVj dCBodGFiICpsb2FkZWRfc2NyaXB0czsKKyAgLyogRm9yIGVhY2ggcHJvZ3Jh bSBzcGFjZSB3ZSBrZWVwIHRyYWNrIG9mIGxvYWRlZCBzY3JpcHRzLCBib3Ro IHdoZW4KKyAgICAgc3BlY2lmaWVkIGFzIGZpbGUgbmFtZXMgYW5kIGFzIHNj cmlwdHMgdG8gYmUgZXhlY3V0ZWQgZGlyZWN0bHkuICAqLworICBzdHJ1Y3Qg aHRhYiAqbG9hZGVkX3NjcmlwdF9maWxlczsKKyAgc3RydWN0IGh0YWIgKmxv YWRlZF9zY3JpcHRfdGV4dHM7CiAKICAgLyogTm9uLXplcm8gaWYgd2UndmUg aXNzdWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9hZCBzY3JpcHQg bm90IGJlaW5nCiAgICAgIHN1cHBvcnRlZC4gIFdlIG9ubHkgd2FudCB0byBp c3N1ZSB0aGlzIHdhcm5pbmcgb25jZS4gICovCkBAIC01NTMsNyArNTU3LDcg QEAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbwogICBpbnQgc2NyaXB0 X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQ7CiB9OwogCi0vKiBPYmplY3Rz IG9mIHRoaXMgdHlwZSBhcmUgc3RvcmVkIGluIHRoZSBsb2FkZWQgc2NyaXB0 IGhhc2ggdGFibGUuICAqLworLyogT2JqZWN0cyBvZiB0aGlzIHR5cGUgYXJl IHN0b3JlZCBpbiB0aGUgbG9hZGVkX3NjcmlwdCBoYXNoIHRhYmxlLiAgKi8K IAogc3RydWN0IGxvYWRlZF9zY3JpcHQKIHsKQEAgLTU2MSw3ICs1NjUsNyBA QCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdAogICBjb25zdCBjaGFyICpuYW1lOwog CiAgIC8qIEZ1bGwgcGF0aCBuYW1lIG9yIE5VTEwgaWYgc2NyaXB0IHdhc24n dCBmb3VuZCAob3Igd2FzIG90aGVyd2lzZQotICAgICBpbmFjY2Vzc2libGUp LiAgKi8KKyAgICAgaW5hY2Nlc3NpYmxlKSwgb3IgTlVMTCBmb3IgbG9hZGVk X3NjcmlwdF90ZXh0cy4gICovCiAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsK IAogICAvKiBOb24temVybyBpZiB0aGlzIHNjcmlwdCBoYXMgYmVlbiBsb2Fk ZWQuICAqLwpAQCAtNTc4LDggKzU4MiwxMCBAQCBhdXRvX2xvYWRfcHNwYWNl X2RhdGFfY2xlYW51cCAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwg dm9pZCAqYXJnKQogewogICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv ICppbmZvID0gYXJnOwogCi0gIGlmIChpbmZvLT5sb2FkZWRfc2NyaXB0cykK LSAgICBodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOworICBp ZiAoaW5mby0+bG9hZGVkX3NjcmlwdF9maWxlcykKKyAgICBodGFiX2RlbGV0 ZSAoaW5mby0+bG9hZGVkX3NjcmlwdF9maWxlcyk7CisgIGlmIChpbmZvLT5s b2FkZWRfc2NyaXB0X3RleHRzKQorICAgIGh0YWJfZGVsZXRlIChpbmZvLT5s b2FkZWRfc2NyaXB0X3RleHRzKTsKICAgeGZyZWUgKGluZm8pOwogfQogCkBA IC02MzIsMTAgKzYzOCwxNCBAQCBpbml0X2xvYWRlZF9zY3JpcHRzX2luZm8g KHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQog ICAgICBTcGFjZSBmb3IgZWFjaCBlbnRyeSBpcyBvYnRhaW5lZCB3aXRoIG9u ZSBtYWxsb2Mgc28gd2UgY2FuIGZyZWUgdGhlbQogICAgICBlYXNpbHkuICAq LwogCi0gIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyA9IGh0YWJfY3Jl YXRlICgzMSwKLQkJCQkJICAgICBoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnks Ci0JCQkJCSAgICAgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSwKLQkJCQkJICAg ICB4ZnJlZSk7CisgIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0X2ZpbGVz ID0gaHRhYl9jcmVhdGUgKDMxLAorCQkJCQkJICBoYXNoX2xvYWRlZF9zY3Jp cHRfZW50cnksCisJCQkJCQkgIGVxX2xvYWRlZF9zY3JpcHRfZW50cnksCisJ CQkJCQkgIHhmcmVlKTsKKyAgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRf dGV4dHMgPSBodGFiX2NyZWF0ZSAoMzEsCisJCQkJCQkgIGhhc2hfbG9hZGVk X3NjcmlwdF9lbnRyeSwKKwkJCQkJCSAgZXFfbG9hZGVkX3NjcmlwdF9lbnRy eSwKKwkJCQkJCSAgeGZyZWUpOwogCiAgIHBzcGFjZV9pbmZvLT51bnN1cHBv cnRlZF9zY3JpcHRfd2FybmluZ19wcmludGVkID0gRkFMU0U7CiAgIHBzcGFj ZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZB TFNFOwpAQCAtNjUwLDIzICs2NjAsMjQgQEAgZ2V0X2F1dG9fbG9hZF9wc3Bh Y2VfZGF0YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBz cGFjZSkKICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsK IAogICBpbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAocHNwYWNl KTsKLSAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzID09IE5VTEwpCisgIGlm IChpbmZvLT5sb2FkZWRfc2NyaXB0X2ZpbGVzID09IE5VTEwpCiAgICAgaW5p dF9sb2FkZWRfc2NyaXB0c19pbmZvIChpbmZvKTsKIAogICByZXR1cm4gaW5m bzsKIH0KIAotLyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdFIHRvIGhh c2ggdGFibGUgb2YgUFNQQUNFX0lORk8uICBMT0FERUQgMSBpZiB0aGUKLSAg IHNjcmlwdCBoYXMgYmVlbiAoaXMgZ29pbmcgdG8pIGJlIGxvYWRlZCwgMCBv dGhlcndpc2UgKHN1Y2ggYXMgaWYgaXQgaGFzIG5vdAotICAgYmVlbiBmb3Vu ZCkuICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBm b3VuZC4gIFRoZSByZXN1bHQgaXMKLSAgIHRydWUgaWYgdGhlIHNjcmlwdCB3 YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCisvKiBBZGQgc2Ny aXB0IGZpbGUgTkFNRSBpbiBMQU5HVUFHRSB0byBoYXNoIHRhYmxlIG9mIFBT UEFDRV9JTkZPLgorICAgTE9BREVEIDEgaWYgdGhlIHNjcmlwdCBoYXMgYmVl biAoaXMgZ29pbmcgdG8pIGJlIGxvYWRlZCwgMCBvdGhlcndpc2UKKyAgIChz dWNoIGFzIGlmIGl0IGhhcyBub3QgYmVlbiBmb3VuZCkuCisgICBGVUxMX1BB VEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4KKyAgIFRo ZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGlu IHRoZSBoYXNoIHRhYmxlLiAgKi8KIAogc3RhdGljIGludAotbWF5YmVfYWRk X3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNl X2luZm8sIGludCBsb2FkZWQsCi0JCSAgY29uc3QgY2hhciAqbmFtZSwgY29u c3QgY2hhciAqZnVsbF9wYXRoLAotCQkgIGNvbnN0IHN0cnVjdCBleHRlbnNp b25fbGFuZ3VhZ2VfZGVmbiAqbGFuZ3VhZ2UpCittYXliZV9hZGRfc2NyaXB0 X2ZpbGUgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9p bmZvLCBpbnQgbG9hZGVkLAorCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwg Y29uc3QgY2hhciAqZnVsbF9wYXRoLAorCQkgICAgICAgY29uc3Qgc3RydWN0 IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuICpsYW5ndWFnZSkKIHsKLSAgc3Ry dWN0IGh0YWIgKmh0YWIgPSBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHM7 CisgIHN0cnVjdCBodGFiICpodGFiID0gcHNwYWNlX2luZm8tPmxvYWRlZF9z Y3JpcHRfZmlsZXM7CiAgIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqc2xvdCwg ZW50cnk7CiAgIGludCBpbl9oYXNoX3RhYmxlOwogCkBAIC02NzcsNyArNjg4 LDcgQEAgbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3Bh Y2VfaW5mbyAqcHNwYWNlX2luZm8sIGludCBsb2FkZWQsCiAKICAgLyogSWYg dGhpcyBzY3JpcHQgaXMgbm90IGluIHRoZSBoYXNoIHRhYmxlLCBhZGQgaXQu ICAqLwogCi0gIGlmICghIGluX2hhc2hfdGFibGUpCisgIGlmICghaW5faGFz aF90YWJsZSkKICAgICB7CiAgICAgICBjaGFyICpwOwogCkBAIC03MDMsNiAr NzE0LDQ0IEBAIG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLCBpbnQgbG9hZGVkLAogICByZXR1 cm4gaW5faGFzaF90YWJsZTsKIH0KIAorLyogQWRkIHNjcmlwdCBjb250ZW50 cyBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lO Rk8uCisgICBMT0FERUQgMSBpZiB0aGUgc2NyaXB0IGhhcyBiZWVuIChpcyBn b2luZyB0bykgYmUgbG9hZGVkLCAwIG90aGVyd2lzZQorICAgKHN1Y2ggYXMg aWYgaXQgaGFzIG5vdCBiZWVuIGZvdW5kKS4KKyAgIFRoZSByZXN1bHQgaXMg dHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRh YmxlLiAgKi8KKworc3RhdGljIGludAorbWF5YmVfYWRkX3NjcmlwdF90ZXh0 IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywK KwkJICAgICAgIGludCBsb2FkZWQsIGNvbnN0IGNoYXIgKm5hbWUsCisJCSAg ICAgICBjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX2RlZm4gKmxh bmd1YWdlKQoreworICBzdHJ1Y3QgaHRhYiAqaHRhYiA9IHBzcGFjZV9pbmZv LT5sb2FkZWRfc2NyaXB0X3RleHRzOworICBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqKnNsb3QsIGVudHJ5OworICBpbnQgaW5faGFzaF90YWJsZTsKKworICBl bnRyeS5uYW1lID0gbmFtZTsKKyAgZW50cnkubGFuZ3VhZ2UgPSBsYW5ndWFn ZTsKKyAgc2xvdCA9IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgaHRhYl9m aW5kX3Nsb3QgKGh0YWIsICZlbnRyeSwgSU5TRVJUKTsKKyAgaW5faGFzaF90 YWJsZSA9ICpzbG90ICE9IE5VTEw7CisKKyAgLyogSWYgdGhpcyBzY3JpcHQg aXMgbm90IGluIHRoZSBoYXNoIHRhYmxlLCBhZGQgaXQuICAqLworCisgIGlm ICghaW5faGFzaF90YWJsZSkKKyAgICB7CisgICAgICBjaGFyICpwOworCisg ICAgICAvKiBBbGxvY2F0ZSBhbGwgc3BhY2UgaW4gb25lIGNodW5rIHNvIGl0 J3MgZWFzaWVyIHRvIGZyZWUuICAqLworICAgICAgKnNsb3QgPSB4bWFsbG9j IChzaXplb2YgKCoqc2xvdCkgKyBzdHJsZW4gKG5hbWUpICsgMSk7CisgICAg ICBwID0gKChjaGFyKikgKnNsb3QpICsgc2l6ZW9mICgqKnNsb3QpOworICAg ICAgc3RyY3B5IChwLCBuYW1lKTsKKyAgICAgICgqc2xvdCktPm5hbWUgPSBw OworICAgICAgKCpzbG90KS0+ZnVsbF9wYXRoID0gTlVMTDsKKyAgICAgICgq c2xvdCktPmxvYWRlZCA9IGxvYWRlZDsKKyAgICAgICgqc2xvdCktPmxhbmd1 YWdlID0gbGFuZ3VhZ2U7CisgICAgfQorCisgIHJldHVybiBpbl9oYXNoX3Rh YmxlOworfQorCiAvKiBDbGVhciB0aGUgdGFibGUgb2YgbG9hZGVkIHNlY3Rp b24gc2NyaXB0cy4gICovCiAKIHN0YXRpYyB2b2lkCkBAIC03MTIsMTAgKzc2 MSwxMiBAQCBjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKHZvaWQpCiAgIHN0cnVj dCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87CiAKICAgaW5mbyA9IHBy b2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2Rh dGEpOwotICBpZiAoaW5mbyAhPSBOVUxMICYmIGluZm8tPmxvYWRlZF9zY3Jp cHRzICE9IE5VTEwpCisgIGlmIChpbmZvICE9IE5VTEwgJiYgaW5mby0+bG9h ZGVkX3NjcmlwdF9maWxlcyAhPSBOVUxMKQogICAgIHsKLSAgICAgIGh0YWJf ZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7Ci0gICAgICBpbmZvLT5s b2FkZWRfc2NyaXB0cyA9IE5VTEw7CisgICAgICBodGFiX2RlbGV0ZSAoaW5m by0+bG9hZGVkX3NjcmlwdF9maWxlcyk7CisgICAgICBodGFiX2RlbGV0ZSAo aW5mby0+bG9hZGVkX3NjcmlwdF90ZXh0cyk7CisgICAgICBpbmZvLT5sb2Fk ZWRfc2NyaXB0X2ZpbGVzID0gTlVMTDsKKyAgICAgIGluZm8tPmxvYWRlZF9z Y3JpcHRfdGV4dHMgPSBOVUxMOwogICAgICAgaW5mby0+dW5zdXBwb3J0ZWRf c2NyaXB0X3dhcm5pbmdfcHJpbnRlZCA9IEZBTFNFOwogICAgICAgaW5mby0+ c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBGQUxTRTsKICAg ICB9CkBAIC04MDMsNyArODU0LDggQEAgYXV0b19sb2FkX29iamZpbGVfc2Ny aXB0XzEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpy ZWFsbmFtZSwKIAkgImluZm8gYXV0by1sb2FkICR7bGFuZ30tc2NyaXB0cyIg Y2FuIHByaW50IGl0LiAgKi8KICAgICAgIHBzcGFjZV9pbmZvCiAJPSBnZXRf YXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3By b2dyYW1fc3BhY2UpOwotICAgICAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNl X2luZm8sIGlzX3NhZmUsIGRlYnVnZmlsZSwgZGVidWdmaWxlLCBsYW5ndWFn ZSk7CisgICAgICBtYXliZV9hZGRfc2NyaXB0X2ZpbGUgKHBzcGFjZV9pbmZv LCBpc19zYWZlLCBkZWJ1Z2ZpbGUsIGRlYnVnZmlsZSwKKwkJCSAgICAgbGFu Z3VhZ2UpOwogCiAgICAgICAvKiBUbyBwcmVzZXJ2ZSBleGlzdGluZyBiZWhh dmlvdXIgd2UgZG9uJ3QgY2hlY2sgZm9yIHdoZXRoZXIgdGhlCiAJIHNjcmlw dCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUsIGFuZCBhbHdheXMgbG9hZCBp dC4KQEAgLTg2NCwxNyArOTE2LDE4MyBAQCBhdXRvX2xvYWRfb2JqZmlsZV9z Y3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICBkb19jbGVhbnVw cyAoY2xlYW51cHMpOwogfQogCisvKiBTdWJyb3V0aW5lIG9mIHNvdXJjZV9z ZWN0aW9uX3NjcmlwdHMgdG8gc2ltcGxpZnkgaXQuCisgICBMb2FkIEZJTEUg YXMgYSBzY3JpcHQgaW4gZXh0ZW5zaW9uIGxhbmd1YWdlIExBTkdVQUdFLgor ICAgVGhlIHNjcmlwdCBpcyBmcm9tIHNlY3Rpb24gU0VDVElPTl9OQU1FIGlu IE9CSkZJTEUgYXQgb2Zmc2V0IE9GRlNFVC4gICovCisKK3N0YXRpYyB2b2lk Citzb3VyY2Vfc2NyaXB0X2ZpbGUgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNl X2luZm8gKnBzcGFjZV9pbmZvLAorCQkgICAgc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCisJCSAgICBjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdl X2RlZm4gKmxhbmd1YWdlLAorCQkgICAgY29uc3QgY2hhciAqc2VjdGlvbl9u YW1lLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAorCQkgICAgY29uc3QgY2hhciAq ZmlsZSkKK3sKKyAgRklMRSAqc3RyZWFtOworICBjaGFyICpmdWxsX3BhdGg7 CisgIGludCBvcGVuZWQsIGluX2hhc2hfdGFibGU7CisgIHN0cnVjdCBjbGVh bnVwICpjbGVhbnVwczsKKyAgb2JqZmlsZV9zY3JpcHRfc291cmNlcl9mdW5j ICpzb3VyY2VyOworCisgIC8qIFNraXAgdGhpcyBzY3JpcHQgaWYgc3VwcG9y dCBpcyBub3QgY29tcGlsZWQgaW4uICAqLworICBzb3VyY2VyID0gZXh0X2xh bmdfb2JqZmlsZV9zY3JpcHRfc291cmNlciAobGFuZ3VhZ2UpOworICBpZiAo c291cmNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgIC8qIFdlIGRvbid0IHRo cm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxl LiAgKi8KKyAgICAgIG1heWJlX3ByaW50X3Vuc3VwcG9ydGVkX3NjcmlwdF93 YXJuaW5nIChwc3BhY2VfaW5mbywgb2JqZmlsZSwgbGFuZ3VhZ2UsCisJCQkJ CSAgICAgIHNlY3Rpb25fbmFtZSwgb2Zmc2V0KTsKKyAgICAgIC8qIFdlICpj b3VsZCogc3RpbGwgdHJ5IHRvIG9wZW4gaXQsIGJ1dCB0aGVyZSdzIG5vIHBv aW50LiAgKi8KKyAgICAgIG1heWJlX2FkZF9zY3JpcHRfZmlsZSAocHNwYWNl X2luZm8sIDAsIGZpbGUsIE5VTEwsIGxhbmd1YWdlKTsKKyAgICAgIHJldHVy bjsKKyAgICB9CisKKyAgLyogU2tpcCB0aGlzIHNjcmlwdCBpZiBhdXRvLWxv YWRpbmcgaXQgaGFzIGJlZW4gZGlzYWJsZWQuICAqLworICBpZiAoIWV4dF9s YW5nX2F1dG9fbG9hZF9lbmFibGVkIChsYW5ndWFnZSkpCisgICAgeworICAg ICAgLyogTm8gbWVzc2FnZSBpcyBwcmludGVkLCBqdXN0IHNraXAgaXQuICAq LworICAgICAgcmV0dXJuOworICAgIH0KKworICBvcGVuZWQgPSBmaW5kX2Fu ZF9vcGVuX3NjcmlwdCAoZmlsZSwgMSAvKnNlYXJjaF9wYXRoKi8sCisJCQkJ ICZzdHJlYW0sICZmdWxsX3BhdGgpOworCisgIGNsZWFudXBzID0gbWFrZV9j bGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworICBpZiAob3BlbmVkKQor ICAgIHsKKyAgICAgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7Cisg ICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOworCisgICAg ICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCwKKwkJ CQkgICBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgJXMgc2NyaXB0ICIKKwkJCQkg ICAgICJcIiVzXCIgZnJvbSBzZWN0aW9uIFwiJXNcIiBvZiAiCisJCQkJICAg ICAib2JqZmlsZSBcIiVzXCIuXG4iKSwKKwkJCQkgICBleHRfbGFuZ19uYW1l IChsYW5ndWFnZSksIGZ1bGxfcGF0aCwKKwkJCQkgICBzZWN0aW9uX25hbWUs IG9iamZpbGVfbmFtZSAob2JqZmlsZSkpKQorCW9wZW5lZCA9IDA7CisgICAg fQorICBlbHNlCisgICAgeworICAgICAgZnVsbF9wYXRoID0gTlVMTDsKKwor ICAgICAgLyogSWYgb25lIHNjcmlwdCBpc24ndCBmb3VuZCBpdCdzIG5vdCB1 bmNvbW1vbiBmb3IgbW9yZSB0byBub3QgYmUKKwkgZm91bmQgZWl0aGVyLiAg V2UgZG9uJ3Qgd2FudCB0byBwcmludCBhIG1lc3NhZ2UgZm9yIGVhY2ggc2Ny aXB0LAorCSB0b28gbXVjaCBub2lzZS4gIEluc3RlYWQsIHdlIHByaW50IHRo ZSB3YXJuaW5nIG9uY2UgYW5kIHRlbGwgdGhlCisJIHVzZXIgaG93IHRvIGZp bmQgdGhlIGxpc3Qgb2Ygc2NyaXB0cyB0aGF0IHdlcmVuJ3QgbG9hZGVkLgor CSBXZSBkb24ndCB0aHJvdyBhbiBlcnJvciwgdGhlIHByb2dyYW0gaXMgc3Rp bGwgZGVidWdnYWJsZS4KKworCSBJV0JOIGlmIGNvbXBsYWludHMuYyB3ZXJl IG1vcmUgZ2VuZXJhbC1wdXJwb3NlLiAgKi8KKworICAgICAgbWF5YmVfcHJp bnRfc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nIChwc3BhY2VfaW5mbywgb2Jq ZmlsZSwgbGFuZ3VhZ2UsCisJCQkJCSAgICBzZWN0aW9uX25hbWUsIG9mZnNl dCk7CisgICAgfQorCisgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2Ny aXB0X2ZpbGUgKHBzcGFjZV9pbmZvLCBvcGVuZWQsIGZpbGUsIGZ1bGxfcGF0 aCwKKwkJCQkJIGxhbmd1YWdlKTsKKworICAvKiBJZiB0aGlzIGZpbGUgaXMg bm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLworICBpZiAob3Bl bmVkICYmICFpbl9oYXNoX3RhYmxlKQorICAgIHNvdXJjZXIgKGxhbmd1YWdl LCBvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7CisKKyAgZG9fY2xlYW51 cHMgKGNsZWFudXBzKTsKK30KKworLyogU3Vicm91dGluZSBvZiBzb3VyY2Vf c2VjdGlvbl9zY3JpcHRzIHRvIHNpbXBsaWZ5IGl0LgorICAgRXhlY3V0ZSBT Q1JJUFQgYXMgYSBzY3JpcHQgaW4gZXh0ZW5zaW9uIGxhbmd1YWdlIExBTkcu CisgICBUaGUgc2NyaXB0IGlzIGZyb20gc2VjdGlvbiBTRUNUSU9OX05BTUUg aW4gT0JKRklMRSBhdCBvZmZzZXQgT0ZGU0VULiAgKi8KKworc3RhdGljIHZv aWQKK2V4ZWN1dGVfc2NyaXB0X2NvbnRlbnRzIChzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywKKwkJCSBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwKKwkJCSBjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1 YWdlX2RlZm4gKmxhbmd1YWdlLAorCQkJIGNvbnN0IGNoYXIgKnNlY3Rpb25f bmFtZSwgdW5zaWduZWQgaW50IG9mZnNldCwKKwkJCSBjb25zdCBjaGFyICpz Y3JpcHQpCit7CisgIG9iamZpbGVfc2NyaXB0X2V4ZWN1dG9yX2Z1bmMgKmV4 ZWN1dG9yOworICBjb25zdCBjaGFyICpuZXdsaW5lLCAqc2NyaXB0X3RleHQ7 CisgIGNoYXIgKm5hbWUsICplbmQ7CisgIGludCBpc19zYWZlLCBpbl9oYXNo X3RhYmxlOworICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7CisKKyAgY2xl YW51cHMgPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgTlVMTCk7CisK KyAgLyogVGhlIGZpcnN0IGxpbmUgb2YgdGhlIHNjcmlwdCBpcyB0aGUgbmFt ZSBvZiB0aGUgc2NyaXB0LgorICAgICBJdCBtdXN0IG5vdCBjb250YWluIGFu eSBraW5kIG9mIHNwYWNlIGNoYXJhY3Rlci4gICovCisgIG5hbWUgPSBOVUxM OworICBuZXdsaW5lID0gc3RyY2hyIChzY3JpcHQsICdcbicpOworICBpZiAo bmV3bGluZSAhPSBOVUxMKQorICAgIHsKKyAgICAgIGNoYXIgKmJ1ZiwgKnA7 CisKKyAgICAgIC8qIFB1dCB0aGUgbmFtZSBpbiBhIGJ1ZmZlciBhbmQgdmFs aWRhdGUgaXQuICAqLworICAgICAgYnVmID0geHN0cm5kdXAgKHNjcmlwdCwg bmV3bGluZSAtIHNjcmlwdCk7CisgICAgICBtYWtlX2NsZWFudXAgKHhmcmVl LCBidWYpOworICAgICAgZm9yIChwID0gYnVmOyAqcCAhPSAnXDAnOyArK3Ap CisJeworCSAgaWYgKGlzc3BhY2UgKCpwKSkKKwkgICAgYnJlYWs7CisJfQor ICAgICAgLyogV2UgZG9uJ3QgYWxsb3cgbmFtZWxlc3Mgc2NyaXB0cywgdGhl eSdyZSBub3QgaGVscGZ1bCB0byB0aGUgdXNlci4gICovCisgICAgICBpZiAo cCAhPSBidWYgJiYgKnAgPT0gJ1wwJykKKwluYW1lID0gYnVmOworICAgIH0K KyAgaWYgKG5hbWUgPT0gTlVMTCkKKyAgICB7CisgICAgICAvKiBXZSBkb24n dCB0aHJvdyBhbiBlcnJvciwgdGhlIHByb2dyYW0gaXMgc3RpbGwgZGVidWdn YWJsZS4gICovCisgICAgICB3YXJuaW5nIChfKCJcCitNaXNzaW5nL2JhZCBz Y3JpcHQgbmFtZSBpbiBlbnRyeSBhdCBvZmZzZXQgJXUgaW4gc2VjdGlvbiAl c1xuXAorb2YgZmlsZSAlcy4iKSwKKwkgICAgICAgb2Zmc2V0LCBzZWN0aW9u X25hbWUsIG9iamZpbGVfbmFtZSAob2JqZmlsZSkpOworICAgICAgZG9fY2xl YW51cHMgKGNsZWFudXBzKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIHNj cmlwdF90ZXh0ID0gbmV3bGluZSArIDE7CisKKyAgLyogU2tpcCB0aGlzIHNj cmlwdCBpZiBzdXBwb3J0IGlzIG5vdCBjb21waWxlZCBpbi4gICovCisgIGV4 ZWN1dG9yID0gZXh0X2xhbmdfb2JqZmlsZV9zY3JpcHRfZXhlY3V0b3IgKGxh bmd1YWdlKTsKKyAgaWYgKGV4ZWN1dG9yID09IE5VTEwpCisgICAgeworICAg ICAgLyogV2UgZG9uJ3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlz IHN0aWxsIGRlYnVnZ2FibGUuICAqLworICAgICAgbWF5YmVfcHJpbnRfdW5z dXBwb3J0ZWRfc2NyaXB0X3dhcm5pbmcgKHBzcGFjZV9pbmZvLCBvYmpmaWxl LCBsYW5ndWFnZSwKKwkJCQkJICAgICAgc2VjdGlvbl9uYW1lLCBvZmZzZXQp OworICAgICAgbWF5YmVfYWRkX3NjcmlwdF90ZXh0IChwc3BhY2VfaW5mbywg MCwgbmFtZSwgbGFuZ3VhZ2UpOworICAgICAgZG9fY2xlYW51cHMgKGNsZWFu dXBzKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgLyogU2tpcCB0aGlz IHNjcmlwdCBpZiBhdXRvLWxvYWRpbmcgaXQgaGFzIGJlZW4gZGlzYWJsZWQu ICAqLworICBpZiAoIWV4dF9sYW5nX2F1dG9fbG9hZF9lbmFibGVkIChsYW5n dWFnZSkpCisgICAgeworICAgICAgLyogTm8gbWVzc2FnZSBpcyBwcmludGVk LCBqdXN0IHNraXAgaXQuICAqLworICAgICAgZG9fY2xlYW51cHMgKGNsZWFu dXBzKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgaXNfc2FmZSA9IGZp bGVfaXNfYXV0b19sb2FkX3NhZmUgKG9iamZpbGVfbmFtZSAob2JqZmlsZSks CisJCQkJICAgIF8oImF1dG8tbG9hZDogTG9hZGluZyAlcyBzY3JpcHQgIgor CQkJCSAgICAgICJcIiVzXCIgZnJvbSBzZWN0aW9uIFwiJXNcIiBvZiAiCisJ CQkJICAgICAgIm9iamZpbGUgXCIlc1wiLlxuIiksCisJCQkJICAgIGV4dF9s YW5nX25hbWUgKGxhbmd1YWdlKSwgbmFtZSwKKwkJCQkgICAgc2VjdGlvbl9u YW1lLCBvYmpmaWxlX25hbWUgKG9iamZpbGUpKTsKKworICBpbl9oYXNoX3Rh YmxlID0gbWF5YmVfYWRkX3NjcmlwdF90ZXh0IChwc3BhY2VfaW5mbywgaXNf c2FmZSwgbmFtZSwgbGFuZ3VhZ2UpOworCisgIC8qIElmIHRoaXMgZmlsZSBp cyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4gICovCisgIGlmIChp c19zYWZlICYmICFpbl9oYXNoX3RhYmxlKQorICAgIGV4ZWN1dG9yIChsYW5n dWFnZSwgb2JqZmlsZSwgbmFtZSwgc2NyaXB0X3RleHQpOworCisgIGRvX2Ns ZWFudXBzIChjbGVhbnVwcyk7Cit9CisKIC8qIExvYWQgc2NyaXB0cyBzcGVj aWZpZWQgaW4gT0JKRklMRS4KICAgIFNUQVJULEVORCBkZWxpbWl0IGEgYnVm ZmVyIGNvbnRhaW5pbmcgYSBsaXN0IG9mIG51bC10ZXJtaW5hdGVkCiAgICBm aWxlIG5hbWVzLgogICAgU0VDVElPTl9OQU1FIGlzIHVzZWQgaW4gZXJyb3Ig bWVzc2FnZXMuCiAKLSAgIFNjcmlwdHMgYXJlIGZvdW5kIHBlciBub3JtYWwg InNvdXJjZSAtcyIgY29tbWFuZCBwcm9jZXNzaW5nLgotICAgRmlyc3QgdGhl IHNjcmlwdCBpcyBsb29rZWQgZm9yIGluICRjd2QuICBJZiBub3QgZm91bmQg dGhlcmUgdGhlCi0gICBzb3VyY2Ugc2VhcmNoIHBhdGggaXMgdXNlZC4KKyAg IFNjcmlwdHMgc3BlY2lmaWVkIGFzIGZpbGUgbmFtZXMgYXJlIGZvdW5kIHBl ciBub3JtYWwgInNvdXJjZSAtcyIgY29tbWFuZAorICAgcHJvY2Vzc2luZy4g IEZpcnN0IHRoZSBzY3JpcHQgaXMgbG9va2VkIGZvciBpbiAkY3dkLiAgSWYg bm90IGZvdW5kIHRoZXJlCisgICB0aGUgc291cmNlIHNlYXJjaCBwYXRoIGlz IHVzZWQuCiAKLSAgIFRoZSBzZWN0aW9uIGNvbnRhaW5zIGEgbGlzdCBvZiBw YXRoIG5hbWVzIG9mIHNjcmlwdCBmaWxlcyB0byBsb2FkLgotICAgRWFjaCBw YXRoIGlzIG51bGwtdGVybWluYXRlZC4gICovCisgICBUaGUgc2VjdGlvbiBj b250YWlucyBhIGxpc3Qgb2YgcGF0aCBuYW1lcyBvZiBzY3JpcHQgZmlsZXMg dG8gbG9hZCBvcgorICAgYWN0dWFsIHNjcmlwdCBjb250ZW50cy4gIEVhY2gg ZW50cnkgaXMgbnVsLXRlcm1pbmF0ZWQuICAqLwogCiBzdGF0aWMgdm9pZAog c291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZSwKQEAgLTg4NywyMCArMTEw NSwxOSBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc2VjdGlvbl9uYW1lLAogCiAgIGZv ciAocCA9IHN0YXJ0OyBwIDwgZW5kOyArK3ApCiAgICAgewotICAgICAgY29u c3QgY2hhciAqZmlsZTsKLSAgICAgIEZJTEUgKnN0cmVhbTsKLSAgICAgIGNo YXIgKmZ1bGxfcGF0aDsKLSAgICAgIGludCBvcGVuZWQsIGluX2hhc2hfdGFi bGU7Ci0gICAgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKyAgICAgIGNv bnN0IGNoYXIgKmVudHJ5OwogICAgICAgY29uc3Qgc3RydWN0IGV4dGVuc2lv bl9sYW5ndWFnZV9kZWZuICpsYW5ndWFnZTsKLSAgICAgIG9iamZpbGVfc2Ny aXB0X3NvdXJjZXJfZnVuYyAqc291cmNlcjsKKyAgICAgIHVuc2lnbmVkIGlu dCBvZmZzZXQgPSBwIC0gc3RhcnQ7CisgICAgICBpbnQgY29kZSA9ICpwOwog Ci0gICAgICBzd2l0Y2ggKCpwKQorICAgICAgc3dpdGNoIChjb2RlKQogCXsK IAljYXNlIFNFQ1RJT05fU0NSSVBUX0lEX1BZVEhPTl9GSUxFOgorCWNhc2Ug U0VDVElPTl9TQ1JJUFRfSURfUFlUSE9OX1RFWFQ6CiAJICBsYW5ndWFnZSA9 IGdldF9leHRfbGFuZ19kZWZuIChFWFRfTEFOR19QWVRIT04pOwogCSAgYnJl YWs7CiAJY2FzZSBTRUNUSU9OX1NDUklQVF9JRF9TQ0hFTUVfRklMRToKKwlj YXNlIFNFQ1RJT05fU0NSSVBUX0lEX1NDSEVNRV9URVhUOgogCSAgbGFuZ3Vh Z2UgPSBnZXRfZXh0X2xhbmdfZGVmbiAoRVhUX0xBTkdfR1VJTEUpOwogCSAg YnJlYWs7CiAJZGVmYXVsdDoKQEAgLTkwOSwxMDUgKzExMjYsMzcgQEAgc291 cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZSwKIAkgICAgIGJ1dCBpdCdzIHNh ZmVyIHRvIGp1c3QgcHVudC4gICovCiAJICByZXR1cm47CiAJfQotICAgICAg ZmlsZSA9ICsrcDsKKyAgICAgIGVudHJ5ID0gKytwOwogCiAgICAgICB3aGls ZSAocCA8IGVuZCAmJiAqcCAhPSAnXDAnKQogCSsrcDsKICAgICAgIGlmIChw ID09IGVuZCkKIAl7Ci0JICBjaGFyICpidWYgPSBhbGxvY2EgKHAgLSBmaWxl ICsgMSk7Ci0KLQkgIG1lbWNweSAoYnVmLCBmaWxlLCBwIC0gZmlsZSk7Ci0J ICBidWZbcCAtIGZpbGVdID0gJ1wwJzsKLQkgIHdhcm5pbmcgKF8oIk5vbi1u dWxsLXRlcm1pbmF0ZWQgcGF0aCBpbiAlczogJXMiKSwKLQkJICAgc2VjdGlv bl9uYW1lLCBidWYpOwotCSAgLyogRG9uJ3QgbG9hZCBpdC4gICovCisJICB3 YXJuaW5nIChfKCJOb24tbnVsLXRlcm1pbmF0ZWQgZW50cnkgaW4gJXMgYXQg b2Zmc2V0ICV1IiksCisJCSAgIHNlY3Rpb25fbmFtZSwgb2Zmc2V0KTsKKwkg IC8qIERvbid0IGxvYWQvZXhlY3V0ZSBpdC4gICovCiAJICBicmVhazsKIAl9 Ci0gICAgICBpZiAocCA9PSBmaWxlKQotCXsKLQkgIHdhcm5pbmcgKF8oIkVt cHR5IHBhdGggaW4gJXMiKSwgc2VjdGlvbl9uYW1lKTsKLQkgIGNvbnRpbnVl OwotCX0KLQotICAgICAgLyogVW50aWwgd2Ugc3VwcG9ydCBtb3JlIHR5cGVz IG9mIHJlY29yZHMgaW4gLmRlYnVnX2dkYl9zY3JpcHRzIHdlIGRvCi0JIGFs bCB0aGUgcHJvY2Vzc2luZyBoZXJlLiAgVGhlIGV4cGVjdGF0aW9uIGlzIHRv IGFkZCBhIG5ldwotCSBleHRlbnNpb25fbGFuZ3VhZ2Vfc2NyaXB0X29wcyAi bWV0aG9kIiB0aGF0IGhhbmRsZXMgYWxsIHRoZSByZWNvcmRzCi0JIGZvciB0 aGUgbGFuZ3VhZ2UuICBGb3Igbm93IHdlIGNhbiBqdXN0IHVzZQotCSBleHRl bnNpb25fbGFuZ3VhZ2Vfc2NyaXB0X29wcy5vYmpmaWxlX3NjcmlwdF9zb3Vy Y2VyLiAgKi8KIAotICAgICAgLyogU2tpcCB0aGlzIHNjcmlwdCBpZiBzdXBw b3J0IGlzIG5vdCBjb21waWxlZCBpbi4gICovCi0gICAgICBzb3VyY2VyID0g ZXh0X2xhbmdfb2JqZmlsZV9zY3JpcHRfc291cmNlciAobGFuZ3VhZ2UpOwot ICAgICAgaWYgKHNvdXJjZXIgPT0gTlVMTCkKKyAgICAgIHN3aXRjaCAoY29k ZSkKIAl7Ci0JICAvKiBXZSBkb24ndCB0aHJvdyBhbiBlcnJvciwgdGhlIHBy b2dyYW0gaXMgc3RpbGwgZGVidWdnYWJsZS4gICovCi0JICBpZiAoIXVuc3Vw cG9ydGVkX3NjcmlwdF93YXJuaW5nX3ByaW50IChwc3BhY2VfaW5mbykpCisJ Y2FzZSBTRUNUSU9OX1NDUklQVF9JRF9QWVRIT05fRklMRToKKwljYXNlIFNF Q1RJT05fU0NSSVBUX0lEX1NDSEVNRV9GSUxFOgorCSAgaWYgKHAgPT0gZW50 cnkpCiAJICAgIHsKLQkgICAgICB3YXJuaW5nIChfKCJVbnN1cHBvcnRlZCBh dXRvLWxvYWQgc2NyaXB0cyByZWZlcmVuY2VkIGluIgotCQkJICIgJXMgc2Vj dGlvblxuIgotCQkJICJvZiBmaWxlICVzLlxuIgotCQkJICJVc2UgYGluZm8g YXV0by1sb2FkICVzLXNjcmlwdHMgW1JFR0VYUF0nIgotCQkJICIgdG8gbGlz dCB0aGVtLiIpLAotCQkgICAgICAgc2VjdGlvbl9uYW1lLCBvYmpmaWxlX25h bWUgKG9iamZpbGUpLAotCQkgICAgICAgZXh0X2xhbmdfbmFtZSAobGFuZ3Vh Z2UpKTsKKwkgICAgICB3YXJuaW5nIChfKCJFbXB0eSBlbnRyeSBpbiAlcyBh dCBvZmZzZXQgJXUiKSwKKwkJICAgICAgIHNlY3Rpb25fbmFtZSwgb2Zmc2V0 KTsKKwkgICAgICBjb250aW51ZTsKIAkgICAgfQotCSAgLyogV2UgKmNvdWxk KiBzdGlsbCB0cnkgdG8gb3BlbiBpdCwgYnV0IHRoZXJlJ3Mgbm8gcG9pbnQu ICAqLwotCSAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIDAsIGZp bGUsIE5VTEwsIGxhbmd1YWdlKTsKLQkgIGNvbnRpbnVlOwotCX0KLQotICAg ICAgLyogU2tpcCB0aGlzIHNjcmlwdCBpZiBhdXRvLWxvYWRpbmcgaXQgaGFz IGJlZW4gZGlzYWJsZWQuICAqLwotICAgICAgaWYgKCFleHRfbGFuZ19hdXRv X2xvYWRfZW5hYmxlZCAobGFuZ3VhZ2UpKQotCXsKLQkgIC8qIE5vIG1lc3Nh Z2UgaXMgcHJpbnRlZCwganVzdCBza2lwIGl0LiAgKi8KLQkgIGNvbnRpbnVl OwotCX0KLQotICAgICAgb3BlbmVkID0gZmluZF9hbmRfb3Blbl9zY3JpcHQg KGZpbGUsIDEgLypzZWFyY2hfcGF0aCovLAotCQkJCSAgICAgJnN0cmVhbSwg JmZ1bGxfcGF0aCk7Ci0KLSAgICAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAg KG51bGxfY2xlYW51cCwgTlVMTCk7Ci0gICAgICBpZiAob3BlbmVkKQotCXsK LQkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7Ci0JICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOwotCi0JICBpZiAoIWZpbGVfaXNf YXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCwKLQkJCQkgICAgICAgXygiYXV0 by1sb2FkOiBMb2FkaW5nICVzIHNjcmlwdCAiCi0JCQkJCSAiXCIlc1wiIGZy b20gc2VjdGlvbiBcIiVzXCIgb2YgIgotCQkJCQkgIm9iamZpbGUgXCIlc1wi LlxuIiksCi0JCQkJICAgICAgIGV4dF9sYW5nX25hbWUgKGxhbmd1YWdlKSwg ZnVsbF9wYXRoLAotCQkJCSAgICAgICBzZWN0aW9uX25hbWUsIG9iamZpbGVf bmFtZSAob2JqZmlsZSkpKQotCSAgICBvcGVuZWQgPSAwOwotCX0KLSAgICAg IGVsc2UKLQl7Ci0JICBmdWxsX3BhdGggPSBOVUxMOwotCi0JICAvKiBJZiBv bmUgc2NyaXB0IGlzbid0IGZvdW5kIGl0J3Mgbm90IHVuY29tbW9uIGZvciBt b3JlIHRvIG5vdCBiZQotCSAgICAgZm91bmQgZWl0aGVyLiAgV2UgZG9uJ3Qg d2FudCB0byBwcmludCBhIG1lc3NhZ2UgZm9yIGVhY2ggc2NyaXB0LAotCSAg ICAgdG9vIG11Y2ggbm9pc2UuICBJbnN0ZWFkLCB3ZSBwcmludCB0aGUgd2Fy bmluZyBvbmNlIGFuZCB0ZWxsIHRoZQotCSAgICAgdXNlciBob3cgdG8gZmlu ZCB0aGUgbGlzdCBvZiBzY3JpcHRzIHRoYXQgd2VyZW4ndCBsb2FkZWQuCi0J ICAgICBXZSBkb24ndCB0aHJvdyBhbiBlcnJvciwgdGhlIHByb2dyYW0gaXMg c3RpbGwgZGVidWdnYWJsZS4KLQotCSAgICAgSVdCTiBpZiBjb21wbGFpbnRz LmMgd2VyZSBtb3JlIGdlbmVyYWwtcHVycG9zZS4gICovCi0KLQkgIGlmIChz Y3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHBzcGFjZV9pbmZvKSkK LQkgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQgc2NyaXB0cyBy ZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKLW9mIGZpbGUgJXNcblwKLVVz ZSBgaW5mbyBhdXRvLWxvYWQgJXMtc2NyaXB0cyBbUkVHRVhQXScgdG8gbGlz dCB0aGVtLiIpLAotCQkgICAgIHNlY3Rpb25fbmFtZSwgb2JqZmlsZV9uYW1l IChvYmpmaWxlKSwKLQkJICAgICBleHRfbGFuZ19uYW1lIChsYW5ndWFnZSkp OworCSAgc291cmNlX3NjcmlwdF9maWxlIChwc3BhY2VfaW5mbywgb2JqZmls ZSwgbGFuZ3VhZ2UsCisJCQkgICAgICBzZWN0aW9uX25hbWUsIG9mZnNldCwg ZW50cnkpOworCSAgYnJlYWs7CisJY2FzZSBTRUNUSU9OX1NDUklQVF9JRF9Q WVRIT05fVEVYVDoKKwljYXNlIFNFQ1RJT05fU0NSSVBUX0lEX1NDSEVNRV9U RVhUOgorCSAgZXhlY3V0ZV9zY3JpcHRfY29udGVudHMgKHBzcGFjZV9pbmZv LCBvYmpmaWxlLCBsYW5ndWFnZSwKKwkJCQkgICBzZWN0aW9uX25hbWUsIG9m ZnNldCwgZW50cnkpOworCSAgYnJlYWs7CiAJfQotCi0gICAgICBpbl9oYXNo X3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIG9wZW5l ZCwgZmlsZSwgZnVsbF9wYXRoLAotCQkJCQlsYW5ndWFnZSk7Ci0KLSAgICAg IC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9h ZCBpdC4gICovCi0gICAgICBpZiAob3BlbmVkICYmICFpbl9oYXNoX3RhYmxl KQotCXNvdXJjZXIgKGxhbmd1YWdlLCBvYmpmaWxlLCBzdHJlYW0sIGZ1bGxf cGF0aCk7Ci0KLSAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKICAgICB9 CiB9CiAKQEAgLTExNDYsNiArMTI5NSwyMyBAQCBzb3J0X3NjcmlwdHNfYnlf bmFtZSAoY29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQogICAgImlu Zm8gYXV0by1sb2FkIiBpbnZvY2F0aW9uLiAgRXh0cmEgbmV3bGluZSB3aWxs IGJlIHByaW50ZWQgaWYgbmVlZGVkLiAgKi8KIGNoYXIgYXV0b19sb2FkX2lu Zm9fc2NyaXB0c19wYXR0ZXJuX25sW10gPSAiIjsKIAorLyogU3Vicm91dGlu ZSBvZiBhdXRvX2xvYWRfaW5mb19zY3JpcHRzIHRvIHNpbXBsaWZ5IGl0Lgor ICAgUHJpbnQgU0NSSVBUUy4gICovCisKK3N0YXRpYyB2b2lkCitwcmludF9z Y3JpcHRzIChWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqc2NyaXB0cykKK3sK KyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OworICBp bnQgaTsKKyAgbG9hZGVkX3NjcmlwdF9wdHIgc2NyaXB0OworCisgIHFzb3J0 IChWRUNfYWRkcmVzcyAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpLAor CSBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyksCisJ IHNpemVvZiAobG9hZGVkX3NjcmlwdF9wdHIpLCBzb3J0X3NjcmlwdHNfYnlf bmFtZSk7CisgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChsb2FkZWRfc2Ny aXB0X3B0ciwgc2NyaXB0cywgaSwgc2NyaXB0KTsgKytpKQorICAgIHByaW50 X3NjcmlwdCAoc2NyaXB0KTsKK30KKwogLyogSW1wbGVtZW50YXRpb24gZm9y ICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKICAgIChhbmQgImluZm8g YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIikuICBMaXN0IHNjcmlwdHMgaW4g TEFOR1VBR0UgbWF0Y2hpbmcKICAgIFBBVFRFUk4uICBGUk9NX1RUWSBpcyB0 aGUgdXN1YWwgR0RCIGJvb2xlYW4gZm9yIHVzZXIgaW50ZXJhY3Rpdml0eS4g ICovCkBAIC0xMTU3LDcgKzEzMjMsNyBAQCBhdXRvX2xvYWRfaW5mb19zY3Jp cHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksCiAgIHN0cnVjdCB1 aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKICAgc3RydWN0IGF1dG9f bG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CiAgIHN0cnVjdCBjbGVh bnVwICpzY3JpcHRfY2hhaW47Ci0gIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIp ICpzY3JpcHRzOworICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqc2NyaXB0 X2ZpbGVzLCAqc2NyaXB0X3RleHRzOwogICBpbnQgbnJfc2NyaXB0czsKIAog ICBkb250X3JlcGVhdCAoKTsKQEAgLTExODAsMjUgKzEzNDYsMzggQEAgYXV0 b19sb2FkX2luZm9fc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21f dHR5LAogICAgICBQbHVzIHdlIHdhbnQgdG8gc29ydCB0aGUgc2NyaXB0cyBi eSBuYW1lLgogICAgICBTbyBmaXJzdCB0cmF2ZXJzZSB0aGUgaGFzaCB0YWJs ZSBjb2xsZWN0aW5nIHRoZSBtYXRjaGluZyBzY3JpcHRzLiAgKi8KIAotICBz Y3JpcHRzID0gVkVDX2FsbG9jIChsb2FkZWRfc2NyaXB0X3B0ciwgMTApOwot ICBzY3JpcHRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChs b2FkZWRfc2NyaXB0X3B0ciksICZzY3JpcHRzKTsKKyAgc2NyaXB0X2ZpbGVz ID0gVkVDX2FsbG9jIChsb2FkZWRfc2NyaXB0X3B0ciwgMTApOworICBzY3Jp cHRfdGV4dHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3JpcHRfcHRyLCAxMCk7 CisgIHNjcmlwdF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAg KGxvYWRlZF9zY3JpcHRfcHRyKSwgJnNjcmlwdF9maWxlcyk7CisgIG1ha2Vf Y2xlYW51cCAoVkVDX2NsZWFudXAgKGxvYWRlZF9zY3JpcHRfcHRyKSwgJnNj cmlwdF90ZXh0cyk7CisKKyAgaWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYg cHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRfZmlsZXMgIT0gTlVMTCkKKyAg ICB7CisgICAgICBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2Rh dGEgZGF0YSA9IHsgJnNjcmlwdF9maWxlcywgbGFuZ3VhZ2UgfTsKKworICAg ICAgLyogUGFzcyBhIHBvaW50ZXIgdG8gc2NyaXB0cyBhcyBWRUNfc2FmZV9w dXNoIGNhbiByZWFsbG9jIHNwYWNlLiAgKi8KKyAgICAgIGh0YWJfdHJhdmVy c2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0X2ZpbGVz LAorCQkJICAgICAgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzLCAmZGF0YSk7 CisgICAgfQogCi0gIGlmIChwc3BhY2VfaW5mbyAhPSBOVUxMICYmIHBzcGFj ZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQorICBpZiAocHNwYWNl X2luZm8gIT0gTlVMTCAmJiBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdF90 ZXh0cyAhPSBOVUxMKQogICAgIHsKLSAgICAgIHN0cnVjdCBjb2xsZWN0X21h dGNoaW5nX3NjcmlwdHNfZGF0YSBkYXRhID0geyAmc2NyaXB0cywgbGFuZ3Vh Z2UgfTsKKyAgICAgIHN0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNf ZGF0YSBkYXRhID0geyAmc2NyaXB0X3RleHRzLCBsYW5ndWFnZSB9OwogCiAg ICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19zYWZl X3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLwotICAgICAgaHRhYl90cmF2 ZXJzZV9ub3Jlc2l6ZSAocHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLAor ICAgICAgaHRhYl90cmF2ZXJzZV9ub3Jlc2l6ZSAocHNwYWNlX2luZm8tPmxv YWRlZF9zY3JpcHRfdGV4dHMsCiAJCQkgICAgICBjb2xsZWN0X21hdGNoaW5n X3NjcmlwdHMsICZkYXRhKTsKICAgICB9CiAKLSAgbnJfc2NyaXB0cyA9IFZF Q19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKTsKKyAgbnJf c2NyaXB0cyA9IChWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2Ny aXB0X2ZpbGVzKQorCQkrIFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRy LCBzY3JpcHRfdGV4dHMpKTsKIAogICAvKiBUYWJsZSBoZWFkZXIgc2hpZnRl ZCByaWdodCBieSBwcmVjZWRpbmcgImdkYi1zY3JpcHRzOiAgIiB3b3VsZCBu b3QgbWF0Y2gKICAgICAgaXRzIGNvbHVtbnMuICAqLwogICBpZiAobnJfc2Ny aXB0cyA+IDAgJiYgcGF0dGVybiA9PSBhdXRvX2xvYWRfaW5mb19zY3JpcHRz X3BhdHRlcm5fbmwpCiAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsK IAorICAvKiBOb3RlOiBUaGlzIGNyZWF0ZXMgYSBjbGVhbnVwIHRvIG91dHB1 dCB0aGUgdGFibGUgZW5kIG1hcmtlci4gICovCiAgIG1ha2VfY2xlYW51cF91 aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgbnJfc2NyaXB0cywK IAkJCQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRzVGFibGUiKTsKIApAQCAt MTIwNiwxOCArMTM4NSwxMCBAQCBhdXRvX2xvYWRfaW5mb19zY3JpcHRzIChj aGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksCiAgIHVpX291dF90YWJsZV9o ZWFkZXIgKHVpb3V0LCA3MCwgdWlfbGVmdCwgInNjcmlwdCIsICJTY3JpcHQi KTsKICAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKIAotICBpZiAobnJf c2NyaXB0cyA+IDApCi0gICAgewotICAgICAgaW50IGk7Ci0gICAgICBsb2Fk ZWRfc2NyaXB0X3B0ciBzY3JpcHQ7Ci0KLSAgICAgIHFzb3J0IChWRUNfYWRk cmVzcyAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpLAotCSAgICAgVkVD X2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpLAotCSAgICAg c2l6ZW9mIChsb2FkZWRfc2NyaXB0X3B0ciksIHNvcnRfc2NyaXB0c19ieV9u YW1lKTsKLSAgICAgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChsb2FkZWRf c2NyaXB0X3B0ciwgc2NyaXB0cywgaSwgc2NyaXB0KTsgKytpKQotCXByaW50 X3NjcmlwdCAoc2NyaXB0KTsKLSAgICB9CisgIHByaW50X3NjcmlwdHMgKHNj cmlwdF9maWxlcyk7CisgIHByaW50X3NjcmlwdHMgKHNjcmlwdF90ZXh0cyk7 CiAKKyAgLyogRmluaXNoIHVwIHRoZSB0YWJsZSBiZWZvcmUgY2hlY2tpbmcg Zm9yIG5vIG1hdGNoaW5nIHNjcmlwdHMuICAqLwogICBkb19jbGVhbnVwcyAo c2NyaXB0X2NoYWluKTsKIAogICBpZiAobnJfc2NyaXB0cyA9PSAwKQpAQCAt MTI1MywzMiArMTQyNCw0OCBAQCBpbmZvX2F1dG9fbG9hZF9sb2NhbF9nZGJp bml0IChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAJCSAgICAgYXV0b19s b2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUpOwogfQogCi0vKiBSZXR1cm4g bm9uLXplcm8gaWYgVU5TVVBQT1JURURfU0NSSVBUX1dBUk5JTkdfUFJJTlRF RCBvZiBQU1BBQ0VfSU5GTyB3YXMKLSAgIHVuc2V0IGJlZm9yZSBjYWxsaW5n IHRoaXMgZnVuY3Rpb24uICBBbHdheXMgc2V0Ci0gICBVTlNVUFBPUlRFRF9T Q1JJUFRfV0FSTklOR19QUklOVEVEIG9mIFBTUEFDRV9JTkZPLiAgKi8KKy8q IFByaW50IGFuICJ1bnN1cHBvcnRlZCBzY3JpcHQiIHdhcm5pbmcgaWYgaXQg aGFzIG5vdCBhbHJlYWR5IGJlZW4gcHJpbnRlZC4KKyAgIFRoZSBzY3JpcHQg aXMgaW4gbGFuZ3VhZ2UgTEFOR1VBR0UgYXQgb2Zmc2V0IE9GRlNFVCBpbiBz ZWN0aW9uIFNFQ1RJT05fTkFNRQorICAgb2YgT0JKRklMRS4gICovCiAKLXN0 YXRpYyBpbnQKLXVuc3VwcG9ydGVkX3NjcmlwdF93YXJuaW5nX3ByaW50IChz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykKK3N0 YXRpYyB2b2lkCittYXliZV9wcmludF91bnN1cHBvcnRlZF9zY3JpcHRfd2Fy bmluZworICAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNl X2luZm8sCisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3Qgc3Ry dWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuICpsYW5ndWFnZSwKKyAgIGNv bnN0IGNoYXIgKnNlY3Rpb25fbmFtZSwgdW5zaWduZWQgb2Zmc2V0KQogewot ICBpbnQgcmV0dmFsID0gIXBzcGFjZV9pbmZvLT51bnN1cHBvcnRlZF9zY3Jp cHRfd2FybmluZ19wcmludGVkOwotCi0gIHBzcGFjZV9pbmZvLT51bnN1cHBv cnRlZF9zY3JpcHRfd2FybmluZ19wcmludGVkID0gMTsKLQotICByZXR1cm4g cmV0dmFsOworICBpZiAoIXBzcGFjZV9pbmZvLT51bnN1cHBvcnRlZF9zY3Jp cHRfd2FybmluZ19wcmludGVkKQorICAgIHsKKyAgICAgIHdhcm5pbmcgKF8o IlwKK1Vuc3VwcG9ydGVkIGF1dG8tbG9hZCBzY3JpcHQgYXQgb2Zmc2V0ICV1 IGluIHNlY3Rpb24gJXNcblwKK29mIGZpbGUgJXMuXG5cCitVc2UgYGluZm8g YXV0by1sb2FkICVzLXNjcmlwdHMgW1JFR0VYUF0nIHRvIGxpc3QgdGhlbS4i KSwKKwkgICAgICAgb2Zmc2V0LCBzZWN0aW9uX25hbWUsIG9iamZpbGVfbmFt ZSAob2JqZmlsZSksCisJICAgICAgIGV4dF9sYW5nX25hbWUgKGxhbmd1YWdl KSk7CisgICAgICBwc3BhY2VfaW5mby0+dW5zdXBwb3J0ZWRfc2NyaXB0X3dh cm5pbmdfcHJpbnRlZCA9IDE7CisgICAgfQogfQogCiAvKiBSZXR1cm4gbm9u LXplcm8gaWYgU0NSSVBUX05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQgb2Yg UFNQQUNFX0lORk8gd2FzIHVuc2V0CiAgICBiZWZvcmUgY2FsbGluZyB0aGlz IGZ1bmN0aW9uLiAgQWx3YXlzIHNldCBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5J TkdfUFJJTlRFRAogICAgb2YgUFNQQUNFX0lORk8uICAqLwogCi1zdGF0aWMg aW50Ci1zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0cnVjdCBh dXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQorc3RhdGljIHZv aWQKK21heWJlX3ByaW50X3NjcmlwdF9ub3RfZm91bmRfd2FybmluZworICAo c3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCisg ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3Qgc3RydWN0IGV4dGVu c2lvbl9sYW5ndWFnZV9kZWZuICpsYW5ndWFnZSwKKyAgIGNvbnN0IGNoYXIg KnNlY3Rpb25fbmFtZSwgdW5zaWduZWQgb2Zmc2V0KQogewotICBpbnQgcmV0 dmFsID0gIXBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdf cHJpbnRlZDsKLQotICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93 YXJuaW5nX3ByaW50ZWQgPSAxOwotCi0gIHJldHVybiByZXR2YWw7CisgIGlm ICghcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmlu dGVkKQorICAgIHsKKyAgICAgIHdhcm5pbmcgKF8oIlwKK01pc3NpbmcgYXV0 by1sb2FkIHNjcmlwdCBhdCBvZmZzZXQgJXUgaW4gc2VjdGlvbiAlc1xuXAor b2YgZmlsZSAlcy5cblwKK1VzZSBgaW5mbyBhdXRvLWxvYWQgJXMtc2NyaXB0 cyBbUkVHRVhQXScgdG8gbGlzdCB0aGVtLiIpLAorCSAgICAgICBvZmZzZXQs IHNlY3Rpb25fbmFtZSwgb2JqZmlsZV9uYW1lIChvYmpmaWxlKSwKKwkgICAg ICAgZXh0X2xhbmdfbmFtZSAobGFuZ3VhZ2UpKTsKKyAgICAgIHBzcGFjZV9p bmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IDE7Cisg ICAgfQogfQogCiAvKiBUaGUgb25seSB2YWxpZCAic2V0IGF1dG8tbG9hZCIg YXJndW1lbnQgaXMgb2ZmfDB8bm98ZGlzYWJsZS4gICovCmRpZmYgLS1naXQg YS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwpp bmRleCBiMDU5YWMyLi4zMWYzMTM4IDEwMDY0NAotLS0gYS9nZGIvZG9jL2dk Yi50ZXhpbmZvCisrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KQEAgLTIzOTcx LDE3ICsyMzk3MSwyOSBAQCBpcyBldmFsdWF0ZWQgbW9yZSB0aGFuIG9uY2Uu CiBGb3Igc3lzdGVtcyB1c2luZyBmaWxlIGZvcm1hdHMgbGlrZSBFTEYgYW5k IENPRkYsCiB3aGVuIEB2YWx1ZXtHREJOfSBsb2FkcyBhIG5ldyBvYmplY3Qg ZmlsZQogaXQgd2lsbCBsb29rIGZvciBhIHNwZWNpYWwgc2VjdGlvbiBuYW1l ZCBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9LgotSWYgdGhpcyBzZWN0aW9u IGV4aXN0cywgaXRzIGNvbnRlbnRzIGlzIGEgbGlzdCBvZiBOVUwtdGVybWlu YXRlZCBuYW1lcwotb2Ygc2NyaXB0cyB0byBsb2FkLiAgRWFjaCBlbnRyeSBi ZWdpbnMgd2l0aCBhIG5vbi1OVUxMIHByZWZpeCBieXRlIHRoYXQKLXNwZWNp ZmllcyB0aGUga2luZCBvZiBlbnRyeSwgdHlwaWNhbGx5IHRoZSBleHRlbnNp b24gbGFuZ3VhZ2UuCitJZiB0aGlzIHNlY3Rpb24gZXhpc3RzLCBpdHMgY29u dGVudHMgaXMgYSBsaXN0IG9mIE5VTC10ZXJtaW5hdGVkIGVudHJpZXMKK3Nw ZWNpZnlpbmcgc2NyaXB0cyB0byBsb2FkLiAgRWFjaCBlbnRyeSBiZWdpbnMg d2l0aCBhIG5vbi1OVUwgcHJlZml4IGJ5dGUgdGhhdAorc3BlY2lmaWVzIHRo ZSBraW5kIG9mIGVudHJ5LCB0eXBpY2FsbHkgdGhlIGV4dGVuc2lvbiBsYW5n dWFnZSBhbmQgd2hldGhlciB0aGUKK3NjcmlwdCBpcyBpbiBhIGZpbGUgb3Ig aW5saW5lZCBpbiBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9LgogCi1AdmFs dWV7R0RCTn0gd2lsbCBsb29rIGZvciBlYWNoIHNwZWNpZmllZCBzY3JpcHQg ZmlsZSBmaXJzdCBpbiB0aGUKLWN1cnJlbnQgZGlyZWN0b3J5IGFuZCB0aGVu IGFsb25nIHRoZSBzb3VyY2Ugc2VhcmNoIHBhdGgKK1RoZSBmb2xsb3dpbmcg ZW50cmllcyBhcmUgc3VwcG9ydGVkOgorCitAdGFibGUgQGNvZGUKK0BpdGVt IFNFQ1RJT05fU0NSSVBUX0lEX1BZVEhPTl9GSUxFID0gMQorQGl0ZW0gU0VD VElPTl9TQ1JJUFRfSURfU0NIRU1FX0ZJTEUgPSAzCitAaXRlbSBTRUNUSU9O X1NDUklQVF9JRF9QWVRIT05fVEVYVCA9IDQKK0BpdGVtIFNFQ1RJT05fU0NS SVBUX0lEX1NDSEVNRV9URVhUID0gNgorQGVuZCB0YWJsZQorCitAc3Vic3Vi c2VjdGlvbiBTY3JpcHQgRmlsZSBFbnRyaWVzCisKK0lmIHRoZSBlbnRyeSBz cGVjaWZpZXMgYSBmaWxlLCBAdmFsdWV7R0RCTn0gd2lsbCBsb29rIGZvciB0 aGUgZmlsZSBmaXJzdAoraW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCB0 aGVuIGFsb25nIHRoZSBzb3VyY2Ugc2VhcmNoIHBhdGgKIChAcHhyZWZ7U291 cmNlIFBhdGgsICxTcGVjaWZ5aW5nIFNvdXJjZSBEaXJlY3Rvcmllc30pLAog ZXhjZXB0IHRoYXQgQGZpbGV7JGNkaXJ9IGlzIG5vdCBzZWFyY2hlZCwgc2lu Y2UgdGhlIGNvbXBpbGF0aW9uCiBkaXJlY3RvcnkgaXMgbm90IHJlbGV2YW50 IHRvIHNjcmlwdHMuCiAKLUVudHJpZXMgY2FuIGJlIHBsYWNlZCBpbiBzZWN0 aW9uIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gd2l0aCwKK0ZpbGUgZW50 cmllcyBjYW4gYmUgcGxhY2VkIGluIHNlY3Rpb24gQGNvZGV7LmRlYnVnX2dk Yl9zY3JpcHRzfSB3aXRoLAogZm9yIGV4YW1wbGUsIHRoaXMgR0NDIG1hY3Jv IGZvciBQeXRob24gc2NyaXB0cy4KIAogQGV4YW1wbGUKQEAgLTI0MDEzLDYg KzI0MDI1LDQ1IEBAIHVzaW5nIHRoaXMgaGVhZGVyIHdpbGwgZ2V0IGEgcmVm ZXJlbmNlIHRvIHRoZSBzcGVjaWZpZWQgc2NyaXB0LAogYW5kIHdpdGggdGhl IHVzZSBvZiBAY29kZXsiTVMifSBhdHRyaWJ1dGVzIG9uIHRoZSBzZWN0aW9u LCB0aGUgbGlua2VyCiB3aWxsIHJlbW92ZSBkdXBsaWNhdGVzLgogCitAc3Vi c3Vic2VjdGlvbiBTY3JpcHQgVGV4dCBFbnRyaWVzCisKK1NjcmlwdCB0ZXh0 IGVudHJpZXMgYWxsb3cgdG8gcHV0IHRoZSBleGVjdXRhYmxlIHNjcmlwdCBp biB0aGUgZW50cnkKK2l0c2VsZiBpbnN0ZWFkIG9mIGxvYWRpbmcgaXQgZnJv bSBhIGZpbGUuCitUaGUgZmlyc3QgbGluZSBvZiB0aGUgZW50cnksIGV2ZXJ5 dGhpbmcgdXAgdG8gdGhlIGZpcnN0IG5ld2xpbmUgKEBjb2RlezB4YX0pCitj aGFyYWN0ZXIsIGlzIHRoZSBzY3JpcHQgbmFtZSwgYW5kIG11c3Qgbm90IGNv bnRhaW4gYW55IGtpbmQgb2Ygc3BhY2UKK2NoYXJhY3RlciwgZS5nLiwgc3Bh Y2VzIG9yIHRhYnMuCitUaGUgcmVzdCBvZiB0aGUgZW50cnksIHVwIHRvIHRo ZSB0cmFpbGluZyBOVUwgYnl0ZSwgaXMgdGhlIHNjcmlwdCB0bworZXhlY3V0 ZSBpbiB0aGUgc3BlY2lmaWVkIGxhbmd1YWdlLiAgVGhlIG5hbWUgbmVlZHMg dG8gYmUgdW5pcXVlIGFtb25nCithbGwgc2NyaXB0IG5hbWVzLCBhcyBAdmFs dWV7R0RCTn0gZXhlY3V0ZXMgZWFjaCBzY3JpcHQgb25seSBvbmNlIGJhc2Vk CitvbiBpdHMgbmFtZS4KKworSGVyZSBpcyBhbiBleGFtcGxlIGZyb20gZmls ZSBAZmlsZXtweS1zZWN0aW9uLXNjcmlwdC5jfSBpbiB0aGUgQHZhbHVle0dE Qk59Cit0ZXN0c3VpdGUuCisKK0BleGFtcGxlCisjaW5jbHVkZSAic3ltY2F0 LmgiCisjaW5jbHVkZSAiZ2RiL3NlY3Rpb24tc2NyaXB0cy5oIgorYXNtKAor Ii5wdXNoc2VjdGlvbiBcIi5kZWJ1Z19nZGJfc2NyaXB0c1wiLCBcIk1TXCIs QEBwcm9nYml0cywxXG4iCisiLmJ5dGUgIiBYU1RSSU5HIChTRUNUSU9OX1ND UklQVF9JRF9QWVRIT05fVEVYVCkgIlxuIgorIi5hc2NpaSBcImdkYi5pbmxp bmVkLXNjcmlwdFxcblwiXG4iCisiLmFzY2lpIFwiY2xhc3MgdGVzdF9jbWQg KGdkYi5Db21tYW5kKTpcXG5cIlxuIgorIi5hc2NpaSBcIiAgZGVmIF9faW5p dF9fIChzZWxmKTpcXG5cIlxuIgorIi5hc2NpaSBcIiAgICBzdXBlciAodGVz dF9jbWQsIHNlbGYpLl9faW5pdF9fICgiCisgICAgIlxcXCJ0ZXN0LWNtZFxc XCIsIGdkYi5DT01NQU5EX09CU0NVUkUpXFxuXCJcbiIKKyIuYXNjaWkgXCIg IGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOlxcblwiXG4iCisi LmFzY2lpIFwiICAgIHByaW50IChcXFwidGVzdC1jbWQgb3V0cHV0LCBhcmcg PSAlc1xcXCIgJSBhcmcpXFxuXCJcbiIKKyIuYXNjaWkgXCJ0ZXN0X2NtZCAo KVxcblwiXG4iCisiLmJ5dGUgMFxuIgorIi5wb3BzZWN0aW9uXG4iCispOwor QGVuZCBleGFtcGxlCisKK0xvYWRpbmcgb2YgaW5saW5lZCBzY3JpcHRzIHJl cXVpcmVzIGEgcHJvcGVybHkgY29uZmlndXJlZAorQGNvZGV7YXV0by1sb2Fk IHNhZmUtcGF0aH0gKEBweHJlZntBdXRvLWxvYWRpbmcgc2FmZSBwYXRofSku CitUaGUgcGF0aCB0byBzcGVjaWZ5IGluIEBjb2Rle2F1dG8tbG9hZCBzYWZl LXBhdGh9IGlzIHRoZSBwYXRoIG9mIHRoZSBmaWxlCitjb250YWluaW5nIHRo ZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24uCisKIEBub2Rl IFdoaWNoIGZsYXZvciB0byBjaG9vc2U/CiBAc3Vic2VjdGlvbiBXaGljaCBm bGF2b3IgdG8gY2hvb3NlPwogCmRpZmYgLS1naXQgYS9nZGIvZG9jL3B5dGhv bi50ZXhpIGIvZ2RiL2RvYy9weXRob24udGV4aQppbmRleCBiOWE1MGQwLi5l ODU0OGUxIDEwMDY0NAotLS0gYS9nZGIvZG9jL3B5dGhvbi50ZXhpCisrKyBi L2dkYi9kb2MvcHl0aG9uLnRleGkKQEAgLTQ3NDQsOCArNDc0NCw5IEBAIFNo b3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMg ZW5hYmxlZCBvciBkaXNhYmxlZC4KIFByaW50IHRoZSBsaXN0IG9mIGFsbCBQ eXRob24gc2NyaXB0cyB0aGF0IEB2YWx1ZXtHREJOfSBhdXRvLWxvYWRlZC4K IAogQWxzbyBwcmludGVkIGlzIHRoZSBsaXN0IG9mIFB5dGhvbiBzY3JpcHRz IHRoYXQgd2VyZSBtZW50aW9uZWQgaW4KLXRoZSBAY29kZXsuZGVidWdfZ2Ri X3NjcmlwdHN9IHNlY3Rpb24gYW5kIHdlcmUgbm90IGZvdW5kCi0oQHB4cmVm e2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259KS4KK3RoZSBAY29kZXsu ZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24gYW5kIHdlcmUgZWl0aGVyIG5v dCBmb3VuZAorKEBweHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9u fSkgb3Igd2VyZSBub3QgYXV0by1sb2FkZWQgZHVlIHRvCitAY29kZXthdXRv LWxvYWQgc2FmZS1wYXRofSByZWplY3Rpb24gKEBweHJlZntBdXRvLWxvYWRp bmd9KS4KIFRoaXMgaXMgdXNlZnVsIGJlY2F1c2UgdGhlaXIgbmFtZXMgYXJl IG5vdCBwcmludGVkIHdoZW4gQHZhbHVle0dEQk59CiB0cmllcyB0byBsb2Fk IHRoZW0gYW5kIGZhaWxzLiAgVGhlcmUgbWF5IGJlIG1hbnkgb2YgdGhlbSwg YW5kIHByaW50aW5nCiBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoIG9uZSBp cyBwcm9ibGVtYXRpYy4KQEAgLTQ3NjMsNyArNDc2NCw3IEBAIE5vICAgICBt eS1mb28tcHJldHR5LXByaW50ZXJzLnB5CiBAZW5kIHNtYWxsZXhhbXBsZQog QGVuZCB0YWJsZQogCi1XaGVuIHJlYWRpbmcgYW4gYXV0by1sb2FkZWQgZmls ZSwgQHZhbHVle0dEQk59IHNldHMgdGhlCitXaGVuIHJlYWRpbmcgYW4gYXV0 by1sb2FkZWQgZmlsZSBvciBzY3JpcHQsIEB2YWx1ZXtHREJOfSBzZXRzIHRo ZQogQGRmbntjdXJyZW50IG9iamZpbGV9LiAgVGhpcyBpcyBhdmFpbGFibGUg dmlhIHRoZSBAY29kZXtnZGIuY3VycmVudF9vYmpmaWxlfQogZnVuY3Rpb24g KEBweHJlZntPYmpmaWxlcyBJbiBQeXRob259KS4gIFRoaXMgY2FuIGJlIHVz ZWZ1bCBmb3IKIHJlZ2lzdGVyaW5nIG9iamZpbGUtc3BlY2lmaWMgcHJldHR5 LXByaW50ZXJzIGFuZCBmcmFtZS1maWx0ZXJzLgpkaWZmIC0tZ2l0IGEvZ2Ri L2V4dGVuc2lvbi1wcml2LmggYi9nZGIvZXh0ZW5zaW9uLXByaXYuaAppbmRl eCBmYzA1MTM3Li5kZDI2MDBlIDEwMDY0NAotLS0gYS9nZGIvZXh0ZW5zaW9u LXByaXYuaAorKysgYi9nZGIvZXh0ZW5zaW9uLXByaXYuaApAQCAtMTAzLDYg KzEwMywxMSBAQCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX3NjcmlwdF9v cHMKICAgICAgYnV0IGlzIG5vdCByZXF1aXJlZCB0bywgdGhyb3cgYW4gZXJy b3IuICAqLwogICBvYmpmaWxlX3NjcmlwdF9zb3VyY2VyX2Z1bmMgKm9iamZp bGVfc2NyaXB0X3NvdXJjZXI7CiAKKyAgLyogRXhlY3V0ZSBhIHNjcmlwdCBh dHRhY2hlZCB0byBhbiBvYmpmaWxlLgorICAgICBJZiB0aGVyZSdzIGFuIGVy cm9yIHdoaWxlIHByb2Nlc3NpbmcgdGhlIHNjcmlwdCB0aGlzIGZ1bmN0aW9u IG1heSwKKyAgICAgYnV0IGlzIG5vdCByZXF1aXJlZCB0bywgdGhyb3cgYW4g ZXJyb3IuICAqLworICBvYmpmaWxlX3NjcmlwdF9leGVjdXRvcl9mdW5jICpv YmpmaWxlX3NjcmlwdF9leGVjdXRvcjsKKwogICAvKiBSZXR1cm4gbm9uLXpl cm8gaWYgYXV0by1sb2FkaW5nIHNjcmlwdHMgaW4gdGhpcyBleHRlbnNpb24g bGFuZ3VhZ2UKICAgICAgaXMgZW5hYmxlZC4gICovCiAgIGludCAoKmF1dG9f bG9hZF9lbmFibGVkKSAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFn ZV9kZWZuICopOwpkaWZmIC0tZ2l0IGEvZ2RiL2V4dGVuc2lvbi5jIGIvZ2Ri L2V4dGVuc2lvbi5jCmluZGV4IDg1M2VmNjcuLjc3YjYyZTAgMTAwNjQ0Ci0t LSBhL2dkYi9leHRlbnNpb24uYworKysgYi9nZGIvZXh0ZW5zaW9uLmMKQEAg LTYxLDYgKzYxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBleHRlbnNpb25f bGFuZ3VhZ2Vfc2NyaXB0X29wcwogewogICBzb3VyY2VfZ2RiX3NjcmlwdCwK ICAgc291cmNlX2dkYl9vYmpmaWxlX3NjcmlwdCwKKyAgTlVMTCwgLyogb2Jq ZmlsZV9zY3JpcHRfZXhlY3V0b3IgKi8KICAgYXV0b19sb2FkX2dkYl9zY3Jp cHRzX2VuYWJsZWQKIH07CiAKQEAgLTI4Niw2ICsyODcsMjEgQEAgZXh0X2xh bmdfb2JqZmlsZV9zY3JpcHRfc291cmNlciAoY29uc3Qgc3RydWN0IGV4dGVu c2lvbl9sYW5ndWFnZV9kZWZuICpleHRsYW5nKQogICByZXR1cm4gZXh0bGFu Zy0+c2NyaXB0X29wcy0+b2JqZmlsZV9zY3JpcHRfc291cmNlcjsKIH0KIAor LyogUmV0dXJuIHRoZSBvYmpmaWxlIHNjcmlwdCAiZXhlY3V0b3IiIGZ1bmN0 aW9uIGZvciBFWFRMQU5HLgorICAgVGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhh dCBleGVjdXRlcyBhIHNjcmlwdCBmb3IgYSBwYXJ0aWN1bGFyIG9iamZpbGUu CisgICBJZiBzdXBwb3J0IGZvciB0aGlzIGxhbmd1YWdlIGlzbid0IGNvbXBp bGVkIGluLCBOVUxMIGlzIHJldHVybmVkLgorICAgVGhlIGV4dGVuc2lvbiBs YW5ndWFnZSBpcyBub3QgcmVxdWlyZWQgdG8gaW1wbGVtZW50IHRoaXMgZnVu Y3Rpb24uICAqLworCitvYmpmaWxlX3NjcmlwdF9leGVjdXRvcl9mdW5jICoK K2V4dF9sYW5nX29iamZpbGVfc2NyaXB0X2V4ZWN1dG9yCisgIChjb25zdCBz dHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX2RlZm4gKmV4dGxhbmcpCit7Cisg IGlmIChleHRsYW5nLT5zY3JpcHRfb3BzID09IE5VTEwpCisgICAgcmV0dXJu IE5VTEw7CisKKyAgcmV0dXJuIGV4dGxhbmctPnNjcmlwdF9vcHMtPm9iamZp bGVfc2NyaXB0X2V4ZWN1dG9yOworfQorCiAvKiBSZXR1cm4gbm9uLXplcm8g aWYgYXV0by1sb2FkaW5nIG9mIEVYVExBTkcgc2NyaXB0cyBpcyBlbmFibGVk LgogICAgWmVybyBpcyByZXR1cm5lZCBpZiBzdXBwb3J0IGZvciB0aGlzIGxh bmd1YWdlIGlzbid0IGNvbXBpbGVkIGluLiAgKi8KIApkaWZmIC0tZ2l0IGEv Z2RiL2V4dGVuc2lvbi5oIGIvZ2RiL2V4dGVuc2lvbi5oCmluZGV4IGE1M2Yw YTcuLmU4ZDc0NzggMTAwNjQ0Ci0tLSBhL2dkYi9leHRlbnNpb24uaAorKysg Yi9nZGIvZXh0ZW5zaW9uLmgKQEAgLTQ4LDYgKzQ4LDEyIEBAIHR5cGVkZWYg dm9pZCBvYmpmaWxlX3NjcmlwdF9zb3VyY2VyX2Z1bmMKICAgKGNvbnN0IHN0 cnVjdCBleHRlbnNpb25fbGFuZ3VhZ2VfZGVmbiAqLAogICAgc3RydWN0IG9i amZpbGUgKiwgRklMRSAqc3RyZWFtLCBjb25zdCBjaGFyICpmaWxlbmFtZSk7 CiAKKy8qIEEgZnVuY3Rpb24gdG8gZXhlY3V0ZSBhIHNjcmlwdCBmb3IgYW4g b2JqZmlsZS4KKyAgIEFueSBleGNlcHRpb25zIGFyZSBub3QgY2F1Z2h0LCBh bmQgYXJlIHBhc3NlZCB0byB0aGUgY2FsbGVyLiAgKi8KK3R5cGVkZWYgdm9p ZCBvYmpmaWxlX3NjcmlwdF9leGVjdXRvcl9mdW5jCisgIChjb25zdCBzdHJ1 Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX2RlZm4gKiwKKyAgIHN0cnVjdCBvYmpm aWxlICosIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnNjcmlwdCk7 CisKIC8qIEVudW0gb2YgZWFjaCBleHRlbnNpb24oL3NjcmlwdGluZykgbGFu Z3VhZ2UuICAqLwogCiBlbnVtIGV4dGVuc2lvbl9sYW5ndWFnZQpAQCAtMTk3 LDYgKzIwMyw5IEBAIGV4dGVybiBzY3JpcHRfc291cmNlcl9mdW5jICpleHRf bGFuZ19zY3JpcHRfc291cmNlcgogZXh0ZXJuIG9iamZpbGVfc2NyaXB0X3Nv dXJjZXJfZnVuYyAqZXh0X2xhbmdfb2JqZmlsZV9zY3JpcHRfc291cmNlcgog ICAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuICopOwog CitleHRlcm4gb2JqZmlsZV9zY3JpcHRfZXhlY3V0b3JfZnVuYyAqZXh0X2xh bmdfb2JqZmlsZV9zY3JpcHRfZXhlY3V0b3IKKyAgKGNvbnN0IHN0cnVjdCBl eHRlbnNpb25fbGFuZ3VhZ2VfZGVmbiAqKTsKKwogZXh0ZXJuIGludCBleHRf bGFuZ19hdXRvX2xvYWRfZW5hYmxlZCAoY29uc3Qgc3RydWN0IGV4dGVuc2lv bl9sYW5ndWFnZV9kZWZuICopOwogCiAvKiBXcmFwcGVycyBmb3IgZWFjaCBl eHRlbnNpb24gbGFuZ3VhZ2UgQVBJIGZ1bmN0aW9uIHRoYXQgaXRlcmF0ZSBv dmVyIGFsbApkaWZmIC0tZ2l0IGEvZ2RiL2d1aWxlL2d1aWxlLWludGVybmFs LmggYi9nZGIvZ3VpbGUvZ3VpbGUtaW50ZXJuYWwuaAppbmRleCA5NjhiNGQz Li45YThlZjY4IDEwMDY0NAotLS0gYS9nZGIvZ3VpbGUvZ3VpbGUtaW50ZXJu YWwuaAorKysgYi9nZGIvZ3VpbGUvZ3VpbGUtaW50ZXJuYWwuaApAQCAtNTQ5 LDYgKzU0OSw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZsc2NtX2NvbnZl cnRfdmFsdWVfZnJvbV9zY2hlbWUKIC8qIHN0cmlwdF9sYW5nIG1ldGhvZHMg Ki8KIAogZXh0ZXJuIG9iamZpbGVfc2NyaXB0X3NvdXJjZXJfZnVuYyBnZGJz Y21fc291cmNlX29iamZpbGVfc2NyaXB0OworZXh0ZXJuIG9iamZpbGVfc2Ny aXB0X2V4ZWN1dG9yX2Z1bmMgZ2Ric2NtX2V4ZWN1dGVfb2JqZmlsZV9zY3Jp cHQ7CiAKIGV4dGVybiBpbnQgZ2Ric2NtX2F1dG9fbG9hZF9lbmFibGVkIChj b25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX2RlZm4gKik7CiAKZGlm ZiAtLWdpdCBhL2dkYi9ndWlsZS9ndWlsZS5jIGIvZ2RiL2d1aWxlL2d1aWxl LmMKaW5kZXggYzQzNGVjMC4uMzE5YjU4MyAxMDA2NDQKLS0tIGEvZ2RiL2d1 aWxlL2d1aWxlLmMKKysrIGIvZ2RiL2d1aWxlL2d1aWxlLmMKQEAgLTEyOCw2 ICsxMjgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5n dWFnZV9zY3JpcHRfb3BzIGd1aWxlX2V4dGVuc2lvbl9zY3JpcHRfb3BzID0K IHsKICAgZ2Ric2NtX3NvdXJjZV9zY3JpcHQsCiAgIGdkYnNjbV9zb3VyY2Vf b2JqZmlsZV9zY3JpcHQsCisgIGdkYnNjbV9leGVjdXRlX29iamZpbGVfc2Ny aXB0LAogICBnZGJzY21fYXV0b19sb2FkX2VuYWJsZWQKIH07CiAKZGlmZiAt LWdpdCBhL2dkYi9ndWlsZS9zY20tb2JqZmlsZS5jIGIvZ2RiL2d1aWxlL3Nj bS1vYmpmaWxlLmMKaW5kZXggODE2MmQwMS4uOGU5NGI5NiAxMDA2NDQKLS0t IGEvZ2RiL2d1aWxlL3NjbS1vYmpmaWxlLmMKKysrIGIvZ2RiL2d1aWxlL3Nj bS1vYmpmaWxlLmMKQEAgLTI4Myw3ICsyODMsOCBAQCBnZGJzY21fc2V0X29i amZpbGVfcHJldHR5X3ByaW50ZXJzX3ggKFNDTSBzZWxmLCBTQ00gcHJpbnRl cnMpCiAMCiAvKiBUaGUgImN1cnJlbnQiIG9iamZpbGUuICBUaGlzIGlzIHNl dCB3aGVuIGdkYiBkZXRlY3RzIHRoYXQgYSBuZXcKICAgIG9iamZpbGUgaGFz IGJlZW4gbG9hZGVkLiAgSXQgaXMgb25seSBzZXQgZm9yIHRoZSBkdXJhdGlv biBvZiBhIGNhbGwgdG8KLSAgIGdkYnNjbV9zb3VyY2Vfb2JqZmlsZV9zY3Jp cHQ7IGl0IGlzIE5VTEwgYXQgb3RoZXIgdGltZXMuICAqLworICAgZ2Ric2Nt X3NvdXJjZV9vYmpmaWxlX3NjcmlwdCBhbmQgZ2Ric2NtX2V4ZWN1dGVfb2Jq ZmlsZV9zY3JpcHQ7IGl0IGlzIE5VTEwKKyAgIGF0IG90aGVyIHRpbWVzLiAg Ki8KIHN0YXRpYyBzdHJ1Y3Qgb2JqZmlsZSAqb2ZzY21fY3VycmVudF9vYmpm aWxlOwogCiAvKiBTZXQgdGhlIGN1cnJlbnQgb2JqZmlsZSB0byBPQkpGSUxF IGFuZCB0aGVuIHJlYWQgRklMRSBuYW1lZCBGSUxFTkFNRQpAQCAtMzExLDYg KzMxMiwzMSBAQCBnZGJzY21fc291cmNlX29iamZpbGVfc2NyaXB0IChjb25z dCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX2RlZm4gKmV4dGxhbmcsCiAg IG9mc2NtX2N1cnJlbnRfb2JqZmlsZSA9IE5VTEw7CiB9CiAKKy8qIFNldCB0 aGUgY3VycmVudCBvYmpmaWxlIHRvIE9CSkZJTEUgYW5kIHRoZW4gcmVhZCBG SUxFIG5hbWVkIEZJTEVOQU1FCisgICBhcyBHdWlsZSBjb2RlLiAgVGhpcyBk b2VzIG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAgSWYgYW4gZXhjZXB0aW9uCisg ICBvY2N1cnMgR3VpbGUgd2lsbCBwcmludCB0aGUgYmFja3RyYWNlLgorICAg VGhpcyBpcyB0aGUgZXh0ZW5zaW9uX2xhbmd1YWdlX3NjcmlwdF9vcHMub2Jq ZmlsZV9zY3JpcHRfc291cmNlcgorICAgIm1ldGhvZCIuICAqLworCit2b2lk CitnZGJzY21fZXhlY3V0ZV9vYmpmaWxlX3NjcmlwdCAoY29uc3Qgc3RydWN0 IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuICpleHRsYW5nLAorCQkJICAgICAg IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpuYW1lLAor CQkJICAgICAgIGNvbnN0IGNoYXIgKnNjcmlwdCkKK3sKKyAgY2hhciAqbXNn OworCisgIG9mc2NtX2N1cnJlbnRfb2JqZmlsZSA9IG9iamZpbGU7CisKKyAg bXNnID0gZ2Ric2NtX3NhZmVfZXZhbF9zdHJpbmcgKHNjcmlwdCwgMCAvKiBk aXNwbGF5X3Jlc3VsdCAqLyk7CisgIGlmIChtc2cgIT0gTlVMTCkKKyAgICB7 CisgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChnZGJfc3RkZXJyLCAiJXMiLCBt c2cpOworICAgICAgeGZyZWUgKG1zZyk7CisgICAgfQorCisgIG9mc2NtX2N1 cnJlbnRfb2JqZmlsZSA9IE5VTEw7Cit9CisKIC8qIChjdXJyZW50LW9iamZp bGUpIC0+IDxnZGI6b2JmamlsZT4KICAgIFJldHVybiB0aGUgY3VycmVudCBv YmpmaWxlLCBvciAjZiBpZiB0aGVyZSBpc24ndCBvbmUuCiAgICBJZGVhbGx5 IHRoaXMgd291bGQgYmUgbmFtZWQgb2ZzY21fY3VycmVudF9vYmpmaWxlLCBi dXQgdGhhdCBuYW1lIGlzCmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhv bi5jIGIvZ2RiL3B5dGhvbi9weXRob24uYwppbmRleCBmNGI4ZmNmLi4zNDRk OGQyIDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCisrKyBiL2dk Yi9weXRob24vcHl0aG9uLmMKQEAgLTEzMSw2ICsxMzEsNyBAQCBQeU9iamVj dCAqZ2RicHlfZ2RiX21lbW9yeV9lcnJvcjsKIAogc3RhdGljIHNjcmlwdF9z b3VyY2VyX2Z1bmMgZ2RicHlfc291cmNlX3NjcmlwdDsKIHN0YXRpYyBvYmpm aWxlX3NjcmlwdF9zb3VyY2VyX2Z1bmMgZ2RicHlfc291cmNlX29iamZpbGVf c2NyaXB0Oworc3RhdGljIG9iamZpbGVfc2NyaXB0X2V4ZWN1dG9yX2Z1bmMg Z2RicHlfZXhlY3V0ZV9vYmpmaWxlX3NjcmlwdDsKIHN0YXRpYyB2b2lkIGdk YnB5X2ZpbmlzaF9pbml0aWFsaXphdGlvbgogICAoY29uc3Qgc3RydWN0IGV4 dGVuc2lvbl9sYW5ndWFnZV9kZWZuICopOwogc3RhdGljIGludCBnZGJweV9p bml0aWFsaXplZCAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9k ZWZuICopOwpAQCAtMTU1LDYgKzE1Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX3NjcmlwdF9vcHMgcHl0aG9uX2V4dGVu c2lvbl9zY3JpcHRfb3BzID0KIHsKICAgZ2RicHlfc291cmNlX3NjcmlwdCwK ICAgZ2RicHlfc291cmNlX29iamZpbGVfc2NyaXB0LAorICBnZGJweV9leGVj dXRlX29iamZpbGVfc2NyaXB0LAogICBnZGJweV9hdXRvX2xvYWRfZW5hYmxl ZAogfTsKIApAQCAtMTI2Miw3ICsxMjY0LDggQEAgZ2RicHlfcHJvZ3NwYWNl cyAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQogCiAv KiBUaGUgImN1cnJlbnQiIG9iamZpbGUuICBUaGlzIGlzIHNldCB3aGVuIGdk YiBkZXRlY3RzIHRoYXQgYSBuZXcKICAgIG9iamZpbGUgaGFzIGJlZW4gbG9h ZGVkLiAgSXQgaXMgb25seSBzZXQgZm9yIHRoZSBkdXJhdGlvbiBvZiBhIGNh bGwgdG8KLSAgIGdkYnB5X3NvdXJjZV9vYmpmaWxlX3NjcmlwdDsgaXQgaXMg TlVMTCBhdCBvdGhlciB0aW1lcy4gICovCisgICBnZGJweV9zb3VyY2Vfb2Jq ZmlsZV9zY3JpcHQgYW5kIGdkYnB5X2V4ZWN1dGVfb2JqZmlsZV9zY3JpcHQ7 IGl0IGlzIE5VTEwKKyAgIGF0IG90aGVyIHRpbWVzLiAgKi8KIHN0YXRpYyBz dHJ1Y3Qgb2JqZmlsZSAqZ2RicHlfY3VycmVudF9vYmpmaWxlOwogCiAvKiBT ZXQgdGhlIGN1cnJlbnQgb2JqZmlsZSB0byBPQkpGSUxFIGFuZCB0aGVuIHJl YWQgRklMRSBuYW1lZCBGSUxFTkFNRQpAQCAtMTI5MCw2ICsxMjkzLDMxIEBA IGdkYnB5X3NvdXJjZV9vYmpmaWxlX3NjcmlwdCAoY29uc3Qgc3RydWN0IGV4 dGVuc2lvbl9sYW5ndWFnZV9kZWZuICpleHRsYW5nLAogICBnZGJweV9jdXJy ZW50X29iamZpbGUgPSBOVUxMOwogfQogCisvKiBTZXQgdGhlIGN1cnJlbnQg b2JqZmlsZSB0byBPQkpGSUxFIGFuZCB0aGVuIGV4ZWN1dGUgU0NSSVBUCisg ICBhcyBQeXRob24gY29kZS4gIFRoaXMgZG9lcyBub3QgdGhyb3cgYW55IGVy cm9ycy4gIElmIGFuIGV4Y2VwdGlvbgorICAgb2NjdXJzIHB5dGhvbiB3aWxs IHByaW50IHRoZSB0cmFjZWJhY2sgYW5kIGNsZWFyIHRoZSBlcnJvciBpbmRp Y2F0b3IuCisgICBUaGlzIGlzIHRoZSBleHRlbnNpb25fbGFuZ3VhZ2Vfc2Ny aXB0X29wcy5vYmpmaWxlX3NjcmlwdF9leGVjdXRvcgorICAgIm1ldGhvZCIu ICAqLworCitzdGF0aWMgdm9pZAorZ2RicHlfZXhlY3V0ZV9vYmpmaWxlX3Nj cmlwdCAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuICpl eHRsYW5nLAorCQkJICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNv bnN0IGNoYXIgKm5hbWUsCisJCQkgICAgICBjb25zdCBjaGFyICpzY3JpcHQp Cit7CisgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKKworICBpZiAoIWdk Yl9weXRob25faW5pdGlhbGl6ZWQpCisgICAgcmV0dXJuOworCisgIGNsZWFu dXBzID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9vYmpmaWxlX2FyY2ggKG9i amZpbGUpLCBjdXJyZW50X2xhbmd1YWdlKTsKKyAgZ2RicHlfY3VycmVudF9v YmpmaWxlID0gb2JqZmlsZTsKKworICBQeVJ1bl9TaW1wbGVTdHJpbmcgKHNj cmlwdCk7CisKKyAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKyAgZ2RicHlf Y3VycmVudF9vYmpmaWxlID0gTlVMTDsKK30KKwogLyogUmV0dXJuIHRoZSBj dXJyZW50IE9iamZpbGUsIG9yIE5vbmUgaWYgdGhlcmUgaXNuJ3Qgb25lLiAg Ki8KIAogc3RhdGljIFB5T2JqZWN0ICoKZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmd1aWxlL3NjbS1zZWN0aW9uLXNjcmlwdC5jIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZ3VpbGUvc2NtLXNlY3Rpb24tc2NyaXB0LmMKaW5kZXgg ZTY2OGE0OS4uY2JmZjY5OCAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZ3VpbGUvc2NtLXNlY3Rpb24tc2NyaXB0LmMKKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZ3VpbGUvc2NtLXNlY3Rpb24tc2NyaXB0LmMKQEAgLTE5LDE4 ICsxOSw1MiBAQAogI2luY2x1ZGUgImdkYi9zZWN0aW9uLXNjcmlwdHMuaCIK IAogLyogUHV0IHRoZSBwYXRoIHRvIHRoZSBwcmV0dHktcHJpbnRlciBzY3Jp cHQgaW4gLmRlYnVnX2dkYl9zY3JpcHRzIHNvCi0gICBnZGIgd2lsbCBhdXRv bWFnaWNhbGx5IGxvYWRlZCBpdC4gICovCisgICBnZGIgd2lsbCBhdXRvbWFn aWNhbGx5IGxvYWRlZCBpdC4KKyAgIE5vcm1hbGx5ICJNUyIgd291bGQgYXBw ZWFyIGhlcmUsIGFzIGluCisgICAucHVzaHNlY3Rpb24gIi5kZWJ1Z19nZGJf c2NyaXB0cyIsICJNUyIsQHByb2diaXRzLDEKKyAgIGJ1dCB3ZSByZW1vdmUg aXQgdG8gdGVzdCBmaWxlcyBhcHBlYXJpbmcgdHdpY2UgaW4gdGhlIHNlY3Rp b24uICAqLwogCiAjZGVmaW5lIERFRklORV9HREJfU0NSSVBUKHNjcmlwdF9u YW1lKSBcCiAgIGFzbSgiXAotLnB1c2hzZWN0aW9uIFwiLmRlYnVnX2dkYl9z Y3JpcHRzXCIsIFwiTVNcIixAcHJvZ2JpdHMsMVxuXAorLnB1c2hzZWN0aW9u IFwiLmRlYnVnX2dkYl9zY3JpcHRzXCIsIFwiU1wiLEBwcm9nYml0c1xuXAog LmJ5dGUgIiBYU1RSSU5HIChTRUNUSU9OX1NDUklQVF9JRF9TQ0hFTUVfRklM RSkgIlxuXAogLmFzY2l6IFwiIiBzY3JpcHRfbmFtZSAiXCJcblwKIC5wb3Bz ZWN0aW9uIFxuXAogIik7CiAKKyNpZm5kZWYgU0NSSVBUX0ZJTEUKKyNlcnJv ciAiU0NSSVBUX0ZJTEUgbm90IGRlZmluZWQiCisjZW5kaWYKKworLyogU3Bl Y2lmeSBpdCB0d2ljZSB0byB2ZXJpZnkgdGhlIGZpbGUgaXMgb25seSBsb2Fk ZWQgb25jZS4gICovCitERUZJTkVfR0RCX1NDUklQVCAoU0NSSVBUX0ZJTEUp CiBERUZJTkVfR0RCX1NDUklQVCAoU0NSSVBUX0ZJTEUpCiAKKy8qIElubGlu ZWQgc2NyaXB0cyBhcmUgaGFyZGVyIHRvIGNyZWF0ZSBpbiB0aGUgc2FtZSB3 YXkgYXMKKyAgIERFRklORV9HREJfU0NSSVBUX0ZJTEUuICBLZWVwIHRoaW5n cyBzaW1wbGUgYW5kIGp1c3QgZGVmaW5lIGl0IGhlcmUuCisgICBOb3JtYWxs eSAiTVMiIHdvdWxkIGFwcGVhciBoZXJlLCBhcyBpbgorICAgLnB1c2hzZWN0 aW9uICIuZGVidWdfZ2RiX3NjcmlwdHMiLCAiTVMiLEBwcm9nYml0cywxCisg ICBidXQgd2UgcmVtb3ZlIGl0IHRvIHRlc3Qgc2NyaXB0cyBhcHBlYXJpbmcg dHdpY2UgaW4gdGhlIHNlY3Rpb24uICAqLworCisjZGVmaW5lIERFRklORV9H REJfU0NSSVBUX1RFWFQgXAorYXNtKCBcCisiLnB1c2hzZWN0aW9uIFwiLmRl YnVnX2dkYl9zY3JpcHRzXCIsIFwiU1wiLEBwcm9nYml0c1xuIiBcCisiLmJ5 dGUgIiBYU1RSSU5HIChTRUNUSU9OX1NDUklQVF9JRF9TQ0hFTUVfVEVYVCkg IlxuIiBcCisiLmFzY2lpIFwiZ2RiLmlubGluZWQtc2NyaXB0XFxuXCJcbiIg XAorIi5hc2NpaSBcIihkZWZpbmUgdGVzdC1jbWRcXG5cIlxuIiBcCisiLmFz Y2lpIFwiIChtYWtlLWNvbW1hbmQgXFxcInRlc3QtY21kXFxcIlxcblwiXG4i IFwKKyIuYXNjaWkgXCIgICM6Y29tbWFuZC1jbGFzcyBDT01NQU5EX09CU0NV UkVcXG5cIlxuIiBcCisiLmFzY2lpIFwiICAjOmludm9rZSAobGFtYmRhIChz ZWxmIGFyZyBmcm9tLXR0eSlcXG5cIlxuIiBcCisiLmFzY2lpIFwiICAgIChk aXNwbGF5IChmb3JtYXQgI2YgXFxcInRlc3QtY21kIG91dHB1dCwgYXJnID0g fmFcXG5cXFwiIGFyZykpKSkpXFxuXCJcbiIgXAorIi5hc2NpaSBcIihyZWdp c3Rlci1jb21tYW5kISB0ZXN0LWNtZClcXG5cIlxuIiBcCisiLmJ5dGUgMFxu IiBcCisiLnBvcHNlY3Rpb25cbiIgXAorKTsKKworLyogU3BlY2lmeSBpdCB0 d2ljZSB0byB2ZXJpZnkgdGhlIHNjcmlwdCBpcyBvbmx5IGV4ZWN1dGVkIG9u Y2UuICAqLworREVGSU5FX0dEQl9TQ1JJUFRfVEVYVAorREVGSU5FX0dEQl9T Q1JJUFRfVEVYVAorCiBzdHJ1Y3Qgc3MKIHsKICAgaW50IGE7CmRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5ndWlsZS9zY20tc2VjdGlvbi1zY3Jp cHQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ3VpbGUvc2NtLXNlY3Rpb24t c2NyaXB0LmV4cAppbmRleCA5M2ExMGEwLi44YzA0YWM4IDEwMDY0NAotLS0g YS9nZGIvdGVzdHN1aXRlL2dkYi5ndWlsZS9zY20tc2VjdGlvbi1zY3JpcHQu ZXhwCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmd1aWxlL3NjbS1zZWN0aW9u LXNjcmlwdC5leHAKQEAgLTUzLDE0ICs1Myw1MSBAQCBnZGJfc3RhcnQKIGlm IHsgW3NraXBfZ3VpbGVfdGVzdHNdIH0geyBjb250aW51ZSB9CiAKIGdkYl9y ZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotZ2RiX3Rlc3Rfbm9f b3V0cHV0ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAke3JlbW90ZV9ndWls ZV9maWxlfSIgXAorCisjIFRyeSBmaXJzdCB3aXRoIGEgcmVzdHJpY3RpdmUg c2FmZS1wYXRoLgorCitnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLWxv YWQgc2FmZS1wYXRoIC9yZXN0cmljdGVkIiBcCisgICAgInNldCByZXN0cmlj dGVkIGF1dG8tbG9hZCBzYWZlLXBhdGgiCitnZGJfbG9hZCAke2JpbmZpbGV9 CisKKyMgVmVyaWZ5IGdkYiBkaWQgbm90IGxvYWQgdGhlIHNjcmlwdHMuCitz ZXQgdGVzdF9uYW1lICJ2ZXJpZnkgc2NyaXB0cyBub3QgbG9hZGVkIgorZ2Ri X3Rlc3RfbXVsdGlwbGUgImluZm8gYXV0by1sb2FkIGd1aWxlLXNjcmlwdHMi ICIkdGVzdF9uYW1lIiB7CisgICAgLXJlICJZZXMuKiR7dGVzdGZpbGV9LnNj bS4qWWVzLippbmxpbmVkLXNjcmlwdC4qJGdkYl9wcm9tcHQgJCIgeworCWZh aWwgIiR0ZXN0X25hbWUiCisgICAgfQorICAgIC1yZSAiTm8uKiR7dGVzdGZp bGV9LnNjbS4qTm8uKmlubGluZWQtc2NyaXB0LiokZ2RiX3Byb21wdCAkIiB7 CisJcGFzcyAiJHRlc3RfbmFtZSIKKyAgICB9Cit9CisKKyMgVHJ5IGFnYWlu IHdpdGggYSB3b3JraW5nIHNhZmUtcGF0aC4KKworZ2RiX2V4aXQKK2dkYl9z dGFydAorZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisK K2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgg JHtyZW1vdGVfZ3VpbGVfZmlsZX06JHtiaW5maWxlfSIgXAogICAgICJzZXQg YXV0by1sb2FkIHNhZmUtcGF0aCIKIGdkYl9sb2FkICR7YmluZmlsZX0KIAot IyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgotZ2RiX3Rlc3QgImlu Zm8gYXV0by1sb2FkIGd1aWxlLXNjcmlwdHMiICJZZXMuKiR7dGVzdGZpbGV9 LnNjbS4qIgorIyBWZXJpZnkgZ2RiIGxvYWRlZCBlYWNoIHNjcmlwdCBhbmQg dGhleSBhcHBlYXIgb25jZSBpbiB0aGUgbGlzdC4KK3NldCB0ZXN0X25hbWUg InZlcmlmeSBzY3JpcHRzIGxvYWRlZCIKK2dkYl90ZXN0X211bHRpcGxlICJp bmZvIGF1dG8tbG9hZCBndWlsZS1zY3JpcHRzIiAiJHRlc3RfbmFtZSIgewor ICAgIC1yZSAiJHt0ZXN0ZmlsZX0uc2NtLioke3Rlc3RmaWxlfS5zY20uKiRn ZGJfcHJvbXB0ICQiIHsKKwlmYWlsICIkdGVzdF9uYW1lIgorICAgIH0KKyAg ICAtcmUgImlubGluZWQtc2NyaXB0LippbmxpbmVkLXNjcmlwdC4qJGdkYl9w cm9tcHQgJCIgeworCWZhaWwgIiR0ZXN0X25hbWUiCisgICAgfQorICAgIC1y ZSAiWWVzLioke3Rlc3RmaWxlfS5zY20uKlllcy4qaW5saW5lZC1zY3JpcHQu KiRnZGJfcHJvbXB0ICQiIHsKKwlwYXNzICIkdGVzdF9uYW1lIgorICAgIH0K K30KKwogIyBBZ2Fpbiwgd2l0aCBhIHJlZ2V4cCB0aGlzIHRpbWUuCiBnZGJf dGVzdCAiaW5mbyBhdXRvLWxvYWQgZ3VpbGUtc2NyaXB0cyAke3Rlc3RmaWxl fSIgIlllcy4qJHt0ZXN0ZmlsZX0uc2NtLioiCisKICMgQWdhaW4sIHdpdGgg YSByZWdleHAgdGhhdCBtYXRjaGVzIG5vIHNjcmlwdHMuCiBnZGJfdGVzdCAi aW5mbyBhdXRvLWxvYWQgZ3VpbGUtc2NyaXB0cyBuby1zY3JpcHQtbWF0Y2hl cy10aGlzIiBcCiAgICJObyBhdXRvLWxvYWQgc2NyaXB0cyBtYXRjaGluZyBu by1zY3JpcHQtbWF0Y2hlcy10aGlzLiIKQEAgLTc0LDMgKzExMSw1IEBAIGdk Yl90ZXN0ICJiIFtnZGJfZ2V0X2xpbmVfbnVtYmVyIHticmVhayB0byBpbnNw ZWN0fSAke3Rlc3RmaWxlfS5jIF0iIFwKIGdkYl90ZXN0ICJjb250aW51ZSIg Ii4qQnJlYWtwb2ludC4qIgogCiBnZGJfdGVzdCAicHJpbnQgc3MiICIgPSBh PTwxPiBiPTwyPiIKKworZ2RiX3Rlc3QgInRlc3QtY21kIDEgMiAzIiAidGVz dC1jbWQgb3V0cHV0LCBhcmcgPSAxIDIgMyIKZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5jIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmMKaW5k ZXggMmNiNjA2Yi4uNTNhZjhjYiAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmMKKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmMKQEAgLTE1 LDE4ICsxNSw1NSBAQAogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAorI2luY2x1ZGUgInN5bWNh dC5oIgorI2luY2x1ZGUgImdkYi9zZWN0aW9uLXNjcmlwdHMuaCIKKwogLyog UHV0IHRoZSBwYXRoIHRvIHRoZSBwcmV0dHktcHJpbnRlciBzY3JpcHQgaW4g LmRlYnVnX2dkYl9zY3JpcHRzIHNvCi0gICBnZGIgd2lsbCBhdXRvbWFnaWNh bGx5IGxvYWRlZCBpdC4gICovCisgICBnZGIgd2lsbCBhdXRvbWFnaWNhbGx5 IGxvYWRlZCBpdC4KKyAgIE5vcm1hbGx5ICJNUyIgd291bGQgYXBwZWFyIGhl cmUsIGFzIGluCisgICAucHVzaHNlY3Rpb24gIi5kZWJ1Z19nZGJfc2NyaXB0 cyIsICJNUyIsQHByb2diaXRzLDEKKyAgIGJ1dCB3ZSByZW1vdmUgaXQgdG8g dGVzdCBmaWxlcyBhcHBlYXJpbmcgdHdpY2UgaW4gdGhlIHNlY3Rpb24uICAq LwogCi0jZGVmaW5lIERFRklORV9HREJfU0NSSVBUKHNjcmlwdF9uYW1lKSBc CisjZGVmaW5lIERFRklORV9HREJfU0NSSVBUX0ZJTEUoc2NyaXB0X25hbWUp IFwKICAgYXNtKCJcCi0ucHVzaHNlY3Rpb24gXCIuZGVidWdfZ2RiX3Njcmlw dHNcIiwgXCJNU1wiLEBwcm9nYml0cywxXG5cCi0uYnl0ZSAxXG5cCisucHVz aHNlY3Rpb24gXCIuZGVidWdfZ2RiX3NjcmlwdHNcIiwgXCJTXCIsQHByb2di aXRzXG5cCisuYnl0ZSAiIFhTVFJJTkcgKFNFQ1RJT05fU0NSSVBUX0lEX1BZ VEhPTl9GSUxFKSAiXG5cCiAuYXNjaXogXCIiIHNjcmlwdF9uYW1lICJcIlxu XAotLnBvcHNlY3Rpb24gXG5cCisucG9wc2VjdGlvblxuXAogIik7CiAKLURF RklORV9HREJfU0NSSVBUIChTQ1JJUFRfRklMRSkKKyNpZm5kZWYgU0NSSVBU X0ZJTEUKKyNlcnJvciAiU0NSSVBUX0ZJTEUgbm90IGRlZmluZWQiCisjZW5k aWYKKworLyogU3BlY2lmeSBpdCB0d2ljZSB0byB2ZXJpZnkgdGhlIGZpbGUg aXMgb25seSBsb2FkZWQgb25jZS4gICovCitERUZJTkVfR0RCX1NDUklQVF9G SUxFIChTQ1JJUFRfRklMRSkKK0RFRklORV9HREJfU0NSSVBUX0ZJTEUgKFND UklQVF9GSUxFKQorCisvKiBJbmxpbmVkIHNjcmlwdHMgYXJlIGhhcmRlciB0 byBjcmVhdGUgaW4gdGhlIHNhbWUgd2F5IGFzCisgICBERUZJTkVfR0RCX1ND UklQVF9GSUxFLiAgS2VlcCB0aGluZ3Mgc2ltcGxlIGFuZCBqdXN0IGRlZmlu ZSBpdCBoZXJlLgorICAgTm9ybWFsbHkgIk1TIiB3b3VsZCBhcHBlYXIgaGVy ZSwgYXMgaW4KKyAgIC5wdXNoc2VjdGlvbiAiLmRlYnVnX2dkYl9zY3JpcHRz IiwgIk1TIixAcHJvZ2JpdHMsMQorICAgYnV0IHdlIHJlbW92ZSBpdCB0byB0 ZXN0IHNjcmlwdHMgYXBwZWFyaW5nIHR3aWNlIGluIHRoZSBzZWN0aW9uLiAg Ki8KKworI2RlZmluZSBERUZJTkVfR0RCX1NDUklQVF9URVhUIFwKK2FzbSgg XAorIi5wdXNoc2VjdGlvbiBcIi5kZWJ1Z19nZGJfc2NyaXB0c1wiLCBcIlNc IixAcHJvZ2JpdHNcbiIgXAorIi5ieXRlICIgWFNUUklORyAoU0VDVElPTl9T Q1JJUFRfSURfUFlUSE9OX1RFWFQpICJcbiIgXAorIi5hc2NpaSBcImdkYi5p bmxpbmVkLXNjcmlwdFxcblwiXG4iIFwKKyIuYXNjaWkgXCJjbGFzcyB0ZXN0 X2NtZCAoZ2RiLkNvbW1hbmQpOlxcblwiXG4iIFwKKyIuYXNjaWkgXCIgIGRl ZiBfX2luaXRfXyAoc2VsZik6XFxuXCJcbiIgXAorIi5hc2NpaSBcIiAgICBz dXBlciAodGVzdF9jbWQsIHNlbGYpLl9faW5pdF9fIChcXFwidGVzdC1jbWRc XFwiLCBnZGIuQ09NTUFORF9PQlNDVVJFKVxcblwiXG4iIFwKKyIuYXNjaWkg XCIgIGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOlxcblwiXG4i IFwKKyIuYXNjaWkgXCIgICAgcHJpbnQgKFxcXCJ0ZXN0LWNtZCBvdXRwdXQs IGFyZyA9ICVzXFxcIiAlIGFyZylcXG5cIlxuIiBcCisiLmFzY2lpIFwidGVz dF9jbWQgKClcXG5cIlxuIiBcCisiLmJ5dGUgMFxuIiBcCisiLnBvcHNlY3Rp b25cbiIgXAorKTsKKworLyogU3BlY2lmeSBpdCB0d2ljZSB0byB2ZXJpZnkg dGhlIHNjcmlwdCBpcyBvbmx5IGV4ZWN1dGVkIG9uY2UuICAqLworREVGSU5F X0dEQl9TQ1JJUFRfVEVYVAorREVGSU5FX0dEQl9TQ1JJUFRfVEVYVAogCiBz dHJ1Y3Qgc3MKIHsKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQuZXhwCmluZGV4IDExYzA0NTMu Ljg0MDQzMGQgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1zZWN0aW9uLXNjcmlwdC5leHAKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cApAQCAtMzksNyArMzks OSBAQCBzZXQgcmVtb3RlX3B5dGhvbl9maWxlIFtnZGJfcmVtb3RlX2Rvd25s b2FkIGhvc3QgXAogc2V0IHF1b3RlZF9uYW1lICJcIiRyZW1vdGVfcHl0aG9u X2ZpbGVcIiIKIAogaWYge1tidWlsZF9leGVjdXRhYmxlICR0ZXN0ZmlsZS5l eHAgJHRlc3RmaWxlICRzcmNmaWxlIFwKLQkgW2xpc3QgZGVidWcgYWRkaXRp b25hbF9mbGFncz0tRFNDUklQVF9GSUxFPSRxdW90ZWRfbmFtZV1dID09IC0x fSB7CisJIFtsaXN0IGRlYnVnIFwKKwkgICAgICBhZGRpdGlvbmFsX2ZsYWdz PS1JJHtzcmNkaXJ9Ly4uLy4uL2luY2x1ZGUgXAorCSAgICAgIGFkZGl0aW9u YWxfZmxhZ3M9LURTQ1JJUFRfRklMRT0kcXVvdGVkX25hbWVdXSA9PSAtMX0g ewogICAgIHJldHVybiAtMQogfQogCkBAIC01MSwxMyArNTMsNTEgQEAgZ2Ri X3N0YXJ0CiBpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVl IH0KIAogZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi1n ZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoICR7 cmVtb3RlX3B5dGhvbl9maWxlfSIgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRo IgorCisjIFRyeSBmaXJzdCB3aXRoIGEgcmVzdHJpY3RpdmUgc2FmZS1wYXRo LgorCitnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLWxvYWQgc2FmZS1w YXRoIC9yZXN0cmljdGVkIiBcCisgICAgInNldCByZXN0cmljdGVkIGF1dG8t bG9hZCBzYWZlLXBhdGgiCiBnZGJfbG9hZCAke2JpbmZpbGV9CiAKLSMgVmVy aWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KLWdkYl90ZXN0ICJpbmZvIGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cyIgIlllcy4qJHt0ZXN0ZmlsZX0ucHku KiIKKyMgVmVyaWZ5IGdkYiBkaWQgbm90IGxvYWQgdGhlIHNjcmlwdHMuCitz ZXQgdGVzdF9uYW1lICJ2ZXJpZnkgc2NyaXB0cyBub3QgbG9hZGVkIgorZ2Ri X3Rlc3RfbXVsdGlwbGUgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz IiAiJHRlc3RfbmFtZSIgeworICAgIC1yZSAiWWVzLioke3Rlc3RmaWxlfS5w eS4qWWVzLippbmxpbmVkLXNjcmlwdC4qJGdkYl9wcm9tcHQgJCIgeworCWZh aWwgIiR0ZXN0X25hbWUiCisgICAgfQorICAgIC1yZSAiTm8uKiR7dGVzdGZp bGV9LnB5LipOby4qaW5saW5lZC1zY3JpcHQuKiRnZGJfcHJvbXB0ICQiIHsK KwlwYXNzICIkdGVzdF9uYW1lIgorICAgIH0KK30KKworIyBUcnkgYWdhaW4g d2l0aCBhIHdvcmtpbmcgc2FmZS1wYXRoLgorCitnZGJfZXhpdAorZ2RiX3N0 YXJ0CitnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKwor Z2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAk e3JlbW90ZV9weXRob25fZmlsZX06JHtiaW5maWxlfSIgXAorICAgICJzZXQg YXV0by1sb2FkIHNhZmUtcGF0aCIKK2dkYl9sb2FkICR7YmluZmlsZX0KKwor IyBWZXJpZnkgZ2RiIGxvYWRlZCBlYWNoIHNjcmlwdCBhbmQgdGhleSBhcHBl YXIgb25jZSBpbiB0aGUgbGlzdC4KK3NldCB0ZXN0X25hbWUgInZlcmlmeSBz Y3JpcHRzIGxvYWRlZCIKK2dkYl90ZXN0X211bHRpcGxlICJpbmZvIGF1dG8t bG9hZCBweXRob24tc2NyaXB0cyIgIiR0ZXN0X25hbWUiIHsKKyAgICAtcmUg IiR7dGVzdGZpbGV9LnB5Lioke3Rlc3RmaWxlfS5weS4qJGdkYl9wcm9tcHQg JCIgeworCWZhaWwgIiR0ZXN0X25hbWUiCisgICAgfQorICAgIC1yZSAiaW5s aW5lZC1zY3JpcHQuKmlubGluZWQtc2NyaXB0LiokZ2RiX3Byb21wdCAkIiB7 CisJZmFpbCAiJHRlc3RfbmFtZSIKKyAgICB9CisgICAgLXJlICJZZXMuKiR7 dGVzdGZpbGV9LnB5LipZZXMuKmlubGluZWQtc2NyaXB0LiokZ2RiX3Byb21w dCAkIiB7CisJcGFzcyAiJHRlc3RfbmFtZSIKKyAgICB9Cit9CisKICMgQWdh aW4sIHdpdGggYSByZWdleHAgdGhpcyB0aW1lLgogZ2RiX3Rlc3QgImluZm8g YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzICR7dGVzdGZpbGV9IiAiWWVzLiok e3Rlc3RmaWxlfS5weS4qIgorCiAjIEFnYWluLCB3aXRoIGEgcmVnZXhwIHRo YXQgbWF0Y2hlcyBubyBzY3JpcHRzLgogZ2RiX3Rlc3QgImluZm8gYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzIG5vLXNjcmlwdC1tYXRjaGVzLXRoaXMiIFwK ICAgIk5vIGF1dG8tbG9hZCBzY3JpcHRzIG1hdGNoaW5nIG5vLXNjcmlwdC1t YXRjaGVzLXRoaXMuIgpAQCAtNzIsMyArMTEyLDUgQEAgZ2RiX3Rlc3QgImIg W2dkYl9nZXRfbGluZV9udW1iZXIge2JyZWFrIHRvIGluc3BlY3R9ICR7dGVz dGZpbGV9LmMgXSIgXAogZ2RiX3Rlc3QgImNvbnRpbnVlIiAiLipCcmVha3Bv aW50LioiCiAKIGdkYl90ZXN0ICJwcmludCBzcyIgIiA9IGE9PDE+IGI9PDI+ IgorCitnZGJfdGVzdCAidGVzdC1jbWQgMSAyIDMiICJ0ZXN0LWNtZCBvdXRw dXQsIGFyZyA9IDEgMiAzIgo= --047d7b86c898f79f3d050cc81edf--