Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:45914 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 8339 invoked from network); 30 Oct 2009 12:39:25 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 30 Oct 2009 12:39:25 -0000 Authentication-Results: pb1.pair.com header.from=yoarvi@gmail.com; sender-id=pass; domainkeys=bad Authentication-Results: pb1.pair.com smtp.mail=yoarvi@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.160.44 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: yoarvi@gmail.com X-Host-Fingerprint: 209.85.160.44 mail-pw0-f44.google.com Received: from [209.85.160.44] ([209.85.160.44:54040] helo=mail-pw0-f44.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 98/57-57355-C7EDAEA4 for ; Fri, 30 Oct 2009 07:39:25 -0500 Received: by pwj8 with SMTP id 8so656584pwj.23 for ; Fri, 30 Oct 2009 05:39:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=2/Jpp6jpYAhJ4YXrdLiAvlu8JN/P21NUZCNI6p/3Bj0=; b=TSmjXQJdUj0laZcf6HPqSXlws1tY0jyQr6C39b8Scg3S66jzKcaYkFeV2kK3vWy7GB xUlWcsCvZb4TVOvzKwFRkjTQexSbeMQENv1nhJQKCDriFjrpyLrhjarBITkX2TaoBoid fFvD6faTVQWIr85+5F4Pm8OKvvdqRg6Jr6+Nk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=uncK6Y54SDEisVVZQ7yjgSf2cxNZ4m4SsaOm63kpa1/BY0bBp9nqfJtmpZeHPn1z98 Wt9rbsZq43MlQCf+jUT62yrmXMoSYTSl4ksOYjjtPYIegCnYbFshzNtAhJ16RvDd7sFA 3qZE5KO1CDYv8mmipl3Lfjb13oL3B8WkpMJGo= MIME-Version: 1.0 Received: by 10.142.60.3 with SMTP id i3mr141305wfa.147.1256906362227; Fri, 30 Oct 2009 05:39:22 -0700 (PDT) Date: Fri, 30 Oct 2009 18:09:22 +0530 Message-ID: To: internals@lists.php.net Content-Type: multipart/mixed; boundary=00504502ad143c8c2604772651ce Subject: [PATCH] - Check configured error level before reporting E_NOTICE messages From: yoarvi@gmail.com (Arvind Srinivasan) --00504502ad143c8c2604772651ce Content-Type: text/plain; charset=ISO-8859-1 When compiled with #ifdef ZTS, zend_error invokes pthread_get_specific. The performance analyzer tool indicated that zend_error was being invoked during normal processing of requests, even though no error messages were logged. The source of these calls were E_NOTICE messages. Please review the attached patch which introduces a REPORT_ERROR macro to avoid invoking the zend_error function when the error reporting level indicates that E_NOTICE messages are not to be reported. Although, all these codepaths are not executed, I guarded all E_NOTICE messages using the REPORT_ERROR macro. thanks, arvi --00504502ad143c8c2604772651ce Content-Type: text/plain; charset=US-ASCII; name="E_NOTICE-patch.txt" Content-Disposition: attachment; filename="E_NOTICE-patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g1ey18mg0 ZGlmZiAtciA5OWFiMWQyZDBhMDcgWmVuZC96ZW5kX2Nsb3N1cmVzLmMKLS0tIGEvWmVuZC96ZW5k X2Nsb3N1cmVzLmMJVGh1IFNlcCAxNyAxODoxNDozOCAyMDA5ICswNTMwCisrKyBiL1plbmQvemVu ZF9jbG9zdXJlcy5jCVRodSBPY3QgMjIgMTg6MTA6NTQgMjAwOSArMDUzMApAQCAtMzUzLDcgKzM1 Myw5IEBACiAJCQkJemVuZF91X2hhc2hfcXVpY2tfYWRkKEVHKGFjdGl2ZV9zeW1ib2xfdGFibGUp LCBrZXktPnR5cGUsIGtleS0+YXJLZXksIGtleS0+bktleUxlbmd0aCwga2V5LT5oLCAmdG1wLCBz aXplb2YoenZhbCopLCAodm9pZCoqKSZwKTsKIAkJCX0gZWxzZSB7CiAJCQkJcCA9ICZFRyh1bmlu aXRpYWxpemVkX3p2YWxfcHRyKTsKLQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCJVbmRlZmluZWQg dmFyaWFibGU6ICVzIiwga2V5LT5hcktleSk7CisJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElD RSkpIHsKKwkJCQkJemVuZF9lcnJvcihFX05PVElDRSwiVW5kZWZpbmVkIHZhcmlhYmxlOiAlcyIs IGtleS0+YXJLZXkpOworCQkJCX0KIAkJCX0KIAkJfSBlbHNlIHsKIAkJCWlmIChpc19yZWYpIHsK ZGlmZiAtciA5OWFiMWQyZDBhMDcgWmVuZC96ZW5kX2NvbXBpbGUuYwotLS0gYS9aZW5kL3plbmRf Y29tcGlsZS5jCVRodSBTZXAgMTcgMTg6MTQ6MzggMjAwOSArMDUzMAorKysgYi9aZW5kL3plbmRf Y29tcGlsZS5jCVRodSBPY3QgMjIgMTg6MTA6NTQgMjAwOSArMDUzMApAQCAtMjcxNCw3ICsyNzE0 LDcgQEAKIAkJaWYgKCF6ZW5kX2RvX3BlcmZvcm1faW1wbGVtZW50YXRpb25fY2hlY2soY2hpbGQs IGNoaWxkLT5jb21tb24ucHJvdG90eXBlIFRTUk1MU19DQykpIHsKIAkJCXplbmRfZXJyb3IoRV9D T01QSUxFX0VSUk9SLCAiRGVjbGFyYXRpb24gb2YgJXY6OiV2KCkgbXVzdCBiZSBjb21wYXRpYmxl IHdpdGggdGhhdCBvZiAldjo6JXYoKSIsIFpFTkRfRk5fU0NPUEVfTkFNRShjaGlsZCksIGNoaWxk LT5jb21tb24uZnVuY3Rpb25fbmFtZSwgWkVORF9GTl9TQ09QRV9OQU1FKGNoaWxkLT5jb21tb24u cHJvdG90eXBlKSwgY2hpbGQtPmNvbW1vbi5wcm90b3R5cGUtPmNvbW1vbi5mdW5jdGlvbl9uYW1l KTsKIAkJfQotIAl9IGVsc2UgaWYgKEVHKGVycm9yX3JlcG9ydGluZykgJiBFX1NUUklDVCB8fCBF Ryh1c2VyX2Vycm9yX2hhbmRsZXIpKSB7IC8qIENoZWNrIEVfU1RSSUNUIChvciBjdXN0b20gZXJy b3IgaGFuZGxlcikgYmVmb3JlIHRoZSBjaGVjayBzbyB0aGF0IHdlIHNhdmUgc29tZSB0aW1lICov CisgCX0gZWxzZSBpZiAoUkVQT1JUX0VSUk9SKEVfU1RSSUNUKSB8fCBFRyh1c2VyX2Vycm9yX2hh bmRsZXIpKSB7IC8qIENoZWNrIEVfU1RSSUNUIChvciBjdXN0b20gZXJyb3IgaGFuZGxlcikgYmVm b3JlIHRoZSBjaGVjayBzbyB0aGF0IHdlIHNhdmUgc29tZSB0aW1lICovCiAJCWlmICghemVuZF9k b19wZXJmb3JtX2ltcGxlbWVudGF0aW9uX2NoZWNrKGNoaWxkLCBwYXJlbnQgVFNSTUxTX0NDKSkg ewogCQkJemVuZF9lcnJvcihFX1NUUklDVCwgIkRlY2xhcmF0aW9uIG9mICV2OjoldigpIHNob3Vs ZCBiZSBjb21wYXRpYmxlIHdpdGggdGhhdCBvZiAldjo6JXYoKSIsIFpFTkRfRk5fU0NPUEVfTkFN RShjaGlsZCksIGNoaWxkLT5jb21tb24uZnVuY3Rpb25fbmFtZSwgWkVORF9GTl9TQ09QRV9OQU1F KHBhcmVudCksIHBhcmVudC0+Y29tbW9uLmZ1bmN0aW9uX25hbWUpOwogCQl9CmRpZmYgLXIgOTlh YjFkMmQwYTA3IFplbmQvemVuZF9jb25zdGFudHMuYwotLS0gYS9aZW5kL3plbmRfY29uc3RhbnRz LmMJVGh1IFNlcCAxNyAxODoxNDozOCAyMDA5ICswNTMwCisrKyBiL1plbmQvemVuZF9jb25zdGFu dHMuYwlUaHUgT2N0IDIyIDE4OjEwOjU0IDIwMDkgKzA1MzAKQEAgLTUzMSwxNCArNTMxLDE4IEBA CiAJfQogCiAJaWYgKEVHKGluX2V4ZWN1dGlvbikgJiYgbG9va3VwX25hbWVfbGVuID09IHNpemVv ZihaRU5EX0hBTFRfQ09OU1RBTlRfTkFNRSkgJiYgWkVORF9VX0VRVUFMKHR5cGUsIG5hbWUsIGxv b2t1cF9uYW1lX2xlbi0xLCBaRU5EX0hBTFRfQ09OU1RBTlRfTkFNRSwgc2l6ZW9mKFpFTkRfSEFM VF9DT05TVEFOVF9OQU1FKS0xKSkgewotCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCJDb25zdGFudCAl UiBhbHJlYWR5IGRlZmluZWQiLCB0eXBlLCBuYW1lKTsKKwkJaWYgKFJFUE9SVF9FUlJPUihFX05P VElDRSkpIHsKKwkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsIkNvbnN0YW50ICVSIGFscmVhZHkgZGVm aW5lZCIsIHR5cGUsIG5hbWUpOworCQl9CiAJCWlmIChsb29rdXBfbmFtZS52KSB7CiAJCQllZnJl ZShsb29rdXBfbmFtZS52KTsKIAkJfQogCQlyZXQgPSBGQUlMVVJFOwogCX0KIAlpZiAoemVuZF91 X2hhc2hfYWRkKEVHKHplbmRfY29uc3RhbnRzKSwgdHlwZSwgbmFtZSwgbG9va3VwX25hbWVfbGVu LCAodm9pZCAqKSBjLCBzaXplb2YoemVuZF9jb25zdGFudCksIE5VTEwpPT1GQUlMVVJFKSB7Ci0J CXplbmRfZXJyb3IoRV9OT1RJQ0UsIkNvbnN0YW50ICVSIGFscmVhZHkgZGVmaW5lZCIsIHR5cGUs IG5hbWUpOworCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJemVuZF9lcnJvcihF X05PVElDRSwiQ29uc3RhbnQgJVIgYWxyZWFkeSBkZWZpbmVkIiwgdHlwZSwgbmFtZSk7CisJCX0K IAkJZnJlZShjLT5uYW1lLnYpOwogCQlpZiAoIShjLT5mbGFncyAmIENPTlNUX1BFUlNJU1RFTlQp KSB7CiAJCQl6dmFsX2R0b3IoJmMtPnZhbHVlKTsKZGlmZiAtciA5OWFiMWQyZDBhMDcgWmVuZC96 ZW5kX2V4Y2VwdGlvbnMuYwotLS0gYS9aZW5kL3plbmRfZXhjZXB0aW9ucy5jCVRodSBTZXAgMTcg MTg6MTQ6MzggMjAwOSArMDUzMAorKysgYi9aZW5kL3plbmRfZXhjZXB0aW9ucy5jCVRodSBPY3Qg MjIgMTg6MTA6NTQgMjAwOSArMDUzMApAQCAtNzU5LDcgKzc1OSw5IEBACiAJTUFLRV9TVERfWlZB TChleCk7CiAJaWYgKGV4Y2VwdGlvbl9jZSkgewogCQlpZiAoIWluc3RhbmNlb2ZfZnVuY3Rpb24o ZXhjZXB0aW9uX2NlLCBkZWZhdWx0X2V4Y2VwdGlvbl9jZSBUU1JNTFNfQ0MpKSB7Ci0JCQl6ZW5k X2Vycm9yKEVfTk9USUNFLCAiRXhjZXB0aW9ucyBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0aGUgRXhj ZXB0aW9uIGJhc2UgY2xhc3MiKTsKKwkJCWlmIChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJ CQkJemVuZF9lcnJvcihFX05PVElDRSwgIkV4Y2VwdGlvbnMgbXVzdCBiZSBkZXJpdmVkIGZyb20g dGhlIEV4Y2VwdGlvbiBiYXNlIGNsYXNzIik7CisJCQl9CiAJCQlleGNlcHRpb25fY2UgPSBkZWZh dWx0X2V4Y2VwdGlvbl9jZTsKIAkJfQogCX0gZWxzZSB7CmRpZmYgLXIgOTlhYjFkMmQwYTA3IFpl bmQvemVuZF9leGVjdXRlLmMKLS0tIGEvWmVuZC96ZW5kX2V4ZWN1dGUuYwlUaHUgU2VwIDE3IDE4 OjE0OjM4IDIwMDkgKzA1MzAKKysrIGIvWmVuZC96ZW5kX2V4ZWN1dGUuYwlUaHUgT2N0IDIyIDE4 OjEwOjU0IDIwMDkgKzA1MzAKQEAgLTI1MCwxMyArMjUwLDE3IEBACiAJCXN3aXRjaCAodHlwZSkg ewogCQkJY2FzZSBCUF9WQVJfUjoKIAkJCWNhc2UgQlBfVkFSX1VOU0VUOgotCQkJCXplbmRfZXJy b3IoRV9OT1RJQ0UsICJVbmRlZmluZWQgdmFyaWFibGU6ICV2IiwgY3YtPm5hbWUpOworCQkJCWlm IChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJV bmRlZmluZWQgdmFyaWFibGU6ICV2IiwgY3YtPm5hbWUpOworCQkJCX0KIAkJCQkvKiBicmVhayBt aXNzaW5nIGludGVudGlvbmFsbHkgKi8KIAkJCWNhc2UgQlBfVkFSX0lTOgogCQkJCXJldHVybiAm RUcodW5pbml0aWFsaXplZF96dmFsX3B0cik7CiAJCQkJYnJlYWs7CiAJCQljYXNlIEJQX1ZBUl9S VzoKLQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVW5kZWZpbmVkIHZhcmlhYmxlOiAldiIsIGN2 LT5uYW1lKTsKKwkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQl6ZW5kX2Vy cm9yKEVfTk9USUNFLCAiVW5kZWZpbmVkIHZhcmlhYmxlOiAldiIsIGN2LT5uYW1lKTsKKwkJCQl9 CiAJCQkJLyogYnJlYWsgbWlzc2luZyBpbnRlbnRpb25hbGx5ICovCiAJCQljYXNlIEJQX1ZBUl9X OgogCQkJCVpfQUREUkVGKEVHKHVuaW5pdGlhbGl6ZWRfenZhbCkpOwpAQCAtOTAzLDE0ICs5MDcs MTggQEAKIAkJCWlmICh6ZW5kX3Vfc3ltdGFibGVfZmluZChodCwgenR5cGUsIG9mZnNldF9rZXks IG9mZnNldF9rZXlfbGVuZ3RoICsgMSwgKHZvaWQgKiopICZyZXR2YWwpID09IEZBSUxVUkUpIHsK IAkJCQlzd2l0Y2ggKHR5cGUpIHsKIAkJCQkJY2FzZSBCUF9WQVJfUjoKLQkJCQkJCXplbmRfZXJy b3IoRV9OT1RJQ0UsICJVbmRlZmluZWQgaW5kZXg6ICVSIiwgenR5cGUsIG9mZnNldF9rZXkpOwor CQkJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJCQl6ZW5kX2Vycm9yKEVf Tk9USUNFLCAiVW5kZWZpbmVkIGluZGV4OiAlUiIsIHp0eXBlLCBvZmZzZXRfa2V5KTsKKwkJCQkJ CX0KIAkJCQkJCS8qIGJyZWFrIG1pc3NpbmcgaW50ZW50aW9uYWxseSAqLwogCQkJCQljYXNlIEJQ X1ZBUl9VTlNFVDoKIAkJCQkJY2FzZSBCUF9WQVJfSVM6CiAJCQkJCQlyZXR2YWwgPSAmRUcodW5p bml0aWFsaXplZF96dmFsX3B0cik7CiAJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBCUF9WQVJfUlc6 Ci0JCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCJVbmRlZmluZWQgaW5kZXg6ICVSIiwgenR5cGUs IG9mZnNldF9rZXkpOworCQkJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJ CQl6ZW5kX2Vycm9yKEVfTk9USUNFLCJVbmRlZmluZWQgaW5kZXg6ICVSIiwgenR5cGUsIG9mZnNl dF9rZXkpOworCQkJCQkJfQogCQkJCQkJLyogYnJlYWsgbWlzc2luZyBpbnRlbnRpb25hbGx5ICov CiAJCQkJCWNhc2UgQlBfVkFSX1c6IHsKIAkJCQkJCQl6dmFsICpuZXdfenZhbCA9ICZFRyh1bmlu aXRpYWxpemVkX3p2YWwpOwpAQCAtOTM5LDE0ICs5NDcsMTggQEAKIAkJCWlmICh6ZW5kX2hhc2hf aW5kZXhfZmluZChodCwgaW5kZXgsICh2b2lkICoqKSAmcmV0dmFsKSA9PSBGQUlMVVJFKSB7CiAJ CQkJc3dpdGNoICh0eXBlKSB7CiAJCQkJCWNhc2UgQlBfVkFSX1I6Ci0JCQkJCQl6ZW5kX2Vycm9y KEVfTk9USUNFLCJVbmRlZmluZWQgb2Zmc2V0OiAlbGQiLCBpbmRleCk7CisJCQkJCQlpZiAoUkVQ T1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsIlVuZGVm aW5lZCBvZmZzZXQ6ICVsZCIsIGluZGV4KTsKKwkJCQkJCX0KIAkJCQkJCS8qIGJyZWFrIG1pc3Np bmcgaW50ZW50aW9uYWxseSAqLwogCQkJCQljYXNlIEJQX1ZBUl9VTlNFVDoKIAkJCQkJY2FzZSBC UF9WQVJfSVM6CiAJCQkJCQlyZXR2YWwgPSAmRUcodW5pbml0aWFsaXplZF96dmFsX3B0cik7CiAJ CQkJCQlicmVhazsKIAkJCQkJY2FzZSBCUF9WQVJfUlc6Ci0JCQkJCQl6ZW5kX2Vycm9yKEVfTk9U SUNFLCJVbmRlZmluZWQgb2Zmc2V0OiAlbGQiLCBpbmRleCk7CisJCQkJCQlpZiAoUkVQT1JUX0VS Uk9SKEVfTk9USUNFKSkgeworCQkJCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsIlVuZGVmaW5lZCBv ZmZzZXQ6ICVsZCIsIGluZGV4KTsKKwkJCQkJCX0KIAkJCQkJCS8qIGJyZWFrIG1pc3NpbmcgaW50 ZW50aW9uYWxseSAqLwogCQkJCQljYXNlIEJQX1ZBUl9XOiB7CiAJCQkJCQl6dmFsICpuZXdfenZh bCA9ICZFRyh1bmluaXRpYWxpemVkX3p2YWwpOwpAQCAtMTA4OSw3ICsxMTAxLDkgQEAKIAkJCQkJ CX0KIAkJCQkJCWlmIChaX1RZUEVfUChvdmVybG9hZGVkX3Jlc3VsdCkgIT0gSVNfT0JKRUNUKSB7 CiAJCQkJCQkJemVuZF9jbGFzc19lbnRyeSAqY2UgPSBaX09CSkNFX1AoY29udGFpbmVyKTsKLQkJ CQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiSW5kaXJlY3QgbW9kaWZpY2F0aW9uIG9mIG92ZXJs b2FkZWQgZWxlbWVudCBvZiAldiBoYXMgbm8gZWZmZWN0IiwgY2UtPm5hbWUpOworCQkJCQkJCWlm IChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJCQkJCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0Us ICJJbmRpcmVjdCBtb2RpZmljYXRpb24gb2Ygb3ZlcmxvYWRlZCBlbGVtZW50IG9mICV2IGhhcyBu byBlZmZlY3QiLCBjZS0+bmFtZSk7CisJCQkJCQkJfQogCQkJCQkJfQogCQkJCQl9CiAJCQkJCXJl dHZhbCA9ICZvdmVybG9hZGVkX3Jlc3VsdDsKQEAgLTExNzgsNyArMTE5Miw5IEBACiAJCQkJfQog CQkJCWlmIChyZXN1bHQpIHsKIAkJCQkJaWYgKFpfTFZBTF9QKGRpbSkgPCAwIHx8IFpfVU5JTEVO X1AoY29udGFpbmVyKSA8PSBaX0xWQUxfUChkaW0pKSB7Ci0JCQkJCQl6ZW5kX2Vycm9yKEVfTk9U SUNFLCAiVW5pbml0aWFsaXplZCBzdHJpbmcgb2Zmc2V0OiAlbGQiLCBaX0xWQUxfUChkaW0pKTsK KwkJCQkJCWlmIChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJCQkJCQkJemVuZF9lcnJvcihF X05PVElDRSwgIlVuaW5pdGlhbGl6ZWQgc3RyaW5nIG9mZnNldDogJWxkIiwgWl9MVkFMX1AoZGlt KSk7CisJCQkJCQl9CiAJCQkJCX0KIAkJCQkJY29udGFpbmVyID0gKmNvbnRhaW5lcl9wdHI7CiAJ CQkJCXJlc3VsdC0+c3RyX29mZnNldC5zdHIgPSBjb250YWluZXI7CmRpZmYgLXIgOTlhYjFkMmQw YTA3IFplbmQvemVuZF9leGVjdXRlX0FQSS5jCi0tLSBhL1plbmQvemVuZF9leGVjdXRlX0FQSS5j CVRodSBTZXAgMTcgMTg6MTQ6MzggMjAwOSArMDUzMAorKysgYi9aZW5kL3plbmRfZXhlY3V0ZV9B UEkuYwlUaHUgT2N0IDIyIDE4OjEwOjU0IDIwMDkgKzA1MzAKQEAgLTU5Myw3ICs1OTMsOSBAQAog CQkJCWlmIChpbmxpbmVfY2hhbmdlICYmIHNhdmUudiAmJiBzYXZlLnYgIT0gYWN0dWFsLnYpIHsK IAkJCQkJZWZyZWUoc2F2ZS52KTsKIAkJCQl9Ci0JCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlVz ZSBvZiB1bmRlZmluZWQgY29uc3RhbnQgJXYgLSBhc3N1bWVkICcldiciLCAgYWN0dWFsLCAgYWN0 dWFsKTsKKwkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQl6ZW5kX2Vycm9y KEVfTk9USUNFLCAiVXNlIG9mIHVuZGVmaW5lZCBjb25zdGFudCAldiAtIGFzc3VtZWQgJyV2JyIs ICBhY3R1YWwsICBhY3R1YWwpOworCQkJCX0KIAkJCQlaX1RZUEVfUChwKSA9IElTX1VOSUNPREU7 CiAJCQkJaWYgKCFpbmxpbmVfY2hhbmdlKSB7CiAJCQkJCVpWQUxfWlNUUkwocCwgWl9UWVBFX1Ao cCksIGFjdHVhbCwgYWN0dWFsX2xlbiwgMCk7CkBAIC02NjcsNyArNjY5LDkgQEAKIAkJCQkJCXpl bmRfZXJyb3IoRV9FUlJPUiwgIlVuZGVmaW5lZCBjb25zdGFudCAnJXInIiwgc2F2ZSk7CiAJCQkJ CX0KIAkJCQl9Ci0JCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlVzZSBvZiB1bmRlZmluZWQgY29u c3RhbnQgJXYgLSBhc3N1bWVkICcldiciLAlzdHJfaW5kZXgsIHN0cl9pbmRleCk7CisJCQkJaWYg KFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlVz ZSBvZiB1bmRlZmluZWQgY29uc3RhbnQgJXYgLSBhc3N1bWVkICcldiciLAlzdHJfaW5kZXgsIHN0 cl9pbmRleCk7CisJCQkJfQogCQkJCVpWQUxfVEVYVEwoJmNvbnN0X3ZhbHVlLCBzdHJfaW5kZXgs IHN0cl9pbmRleF9sZW4tMywgMSk7CiAJCQl9CiAKZGlmZiAtciA5OWFiMWQyZDBhMDcgWmVuZC96 ZW5kX2dsb2JhbHNfbWFjcm9zLmgKLS0tIGEvWmVuZC96ZW5kX2dsb2JhbHNfbWFjcm9zLmgJVGh1 IFNlcCAxNyAxODoxNDozOCAyMDA5ICswNTMwCisrKyBiL1plbmQvemVuZF9nbG9iYWxzX21hY3Jv cy5oCVRodSBPY3QgMjIgMTg6MTA6NTQgMjAwOSArMDUzMApAQCAtNDgsNiArNDgsNyBAQAogIyBk ZWZpbmUgRUcodikgKGV4ZWN1dG9yX2dsb2JhbHMudikKIGV4dGVybiBaRU5EX0FQSSB6ZW5kX2V4 ZWN1dG9yX2dsb2JhbHMgZXhlY3V0b3JfZ2xvYmFsczsKICNlbmRpZgorI2RlZmluZSBSRVBPUlRf RVJST1IoeCkgKEVHKGVycm9yX3JlcG9ydGluZykgJiAoeCkpCiAKIC8qIExhbmd1YWdlIFNjYW5u ZXIgKi8KICNpZmRlZiBaVFMKZGlmZiAtciA5OWFiMWQyZDBhMDcgWmVuZC96ZW5kX29iamVjdF9o YW5kbGVycy5jCi0tLSBhL1plbmQvemVuZF9vYmplY3RfaGFuZGxlcnMuYwlUaHUgU2VwIDE3IDE4 OjE0OjM4IDIwMDkgKzA1MzAKKysrIGIvWmVuZC96ZW5kX29iamVjdF9oYW5kbGVycy5jCVRodSBP Y3QgMjIgMTg6MTA6NTQgMjAwOSArMDUzMApAQCAtMzY5LDcgKzM2OSw5IEBACiAJCQkJCQlaX1NF VF9SRUZDT1VOVF9QKHJ2LCAwKTsKIAkJCQkJfQogCQkJCQlpZiAoWl9UWVBFX1AocnYpICE9IElT X09CSkVDVCkgewotCQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIkluZGlyZWN0IG1vZGlmaWNh dGlvbiBvZiBvdmVybG9hZGVkIHByb3BlcnR5ICV2OjokJVIgaGFzIG5vIGVmZmVjdCIsIHpvYmot PmNlLT5uYW1lLCBaX1RZUEVfUChtZW1iZXIpLCBaX1VOSVZBTF9QKG1lbWJlcikpOworCQkJCQkJ aWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNF LCAiSW5kaXJlY3QgbW9kaWZpY2F0aW9uIG9mIG92ZXJsb2FkZWQgcHJvcGVydHkgJXY6OiQlUiBo YXMgbm8gZWZmZWN0Iiwgem9iai0+Y2UtPm5hbWUsIFpfVFlQRV9QKG1lbWJlciksIFpfVU5JVkFM X1AobWVtYmVyKSk7CisJCQkJCQl9CiAJCQkJCX0KIAkJCQl9CiAJCQl9IGVsc2UgewpAQCAtMzc4 LDcgKzM4MCw5IEBACiAJCQl6dmFsX3B0cl9kdG9yKCZvYmplY3QpOwogCQl9IGVsc2UgewogCQkJ aWYgKCFzaWxlbnQpIHsKLQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCJVbmRlZmluZWQgcHJvcGVy dHk6ICV2OjokJVIiLCB6b2JqLT5jZS0+bmFtZSwgWl9UWVBFX1AobWVtYmVyKSwgWl9TVFJWQUxf UChtZW1iZXIpKTsKKwkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQl6ZW5k X2Vycm9yKEVfTk9USUNFLCJVbmRlZmluZWQgcHJvcGVydHk6ICV2OjokJVIiLCB6b2JqLT5jZS0+ bmFtZSwgWl9UWVBFX1AobWVtYmVyKSwgWl9TVFJWQUxfUChtZW1iZXIpKTsKKwkJCQl9CiAJCQl9 CiAJCQlyZXR2YWwgPSAmRUcodW5pbml0aWFsaXplZF96dmFsX3B0cik7CiAJCX0KQEAgLTEyOTAs NyArMTI5NCw5IEBACiAJCQlyZXR1cm4gU1VDQ0VTUzsKIAkJY2FzZSBJU19MT05HOgogCQkJY2Ug PSBaX09CSkNFX1AocmVhZG9iaik7Ci0JCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiT2JqZWN0IG9m IGNsYXNzICV2IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gaW50IiwgY2UtPm5hbWUpOworCQkJ aWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAi T2JqZWN0IG9mIGNsYXNzICV2IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gaW50IiwgY2UtPm5h bWUpOworCQkJfQogCQkJSU5JVF9QWlZBTCh3cml0ZW9iaik7CiAJCQlpZiAocmVhZG9iaiA9PSB3 cml0ZW9iaikgewogCQkJCXp2YWxfZHRvcihyZWFkb2JqKTsKQEAgLTEyOTksNyArMTMwNSw5IEBA CiAJCQlyZXR1cm4gU1VDQ0VTUzsKIAkJY2FzZSBJU19ET1VCTEU6CiAJCQljZSA9IFpfT0JKQ0Vf UChyZWFkb2JqKTsKLQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJPYmplY3Qgb2YgY2xhc3MgJXYg Y291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBkb3VibGUiLCBjZS0+bmFtZSk7CisJCQlpZiAoUkVQ T1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJPYmplY3Qg b2YgY2xhc3MgJXYgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBkb3VibGUiLCBjZS0+bmFtZSk7 CisJCQl9CiAJCQlJTklUX1BaVkFMKHdyaXRlb2JqKTsKIAkJCWlmIChyZWFkb2JqID09IHdyaXRl b2JqKSB7CiAJCQkJenZhbF9kdG9yKHdyaXRlb2JqKTsKZGlmZiAtciA5OWFiMWQyZDBhMDcgWmVu ZC96ZW5kX29wZXJhdG9ycy5jCi0tLSBhL1plbmQvemVuZF9vcGVyYXRvcnMuYwlUaHUgU2VwIDE3 IDE4OjE0OjM4IDIwMDkgKzA1MzAKKysrIGIvWmVuZC96ZW5kX29wZXJhdG9ycy5jCVRodSBPY3Qg MjIgMTg6MTA6NTQgMjAwOSArMDUzMApAQCAtNDQwLDcgKzQ0MCw5IEBACiAJCQkJCXJldHVybiBT VUNDRVNTOwogCQkJCX0KIAotCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJPYmplY3Qgb2YgY2xh c3MgJXYgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBpbnQiLCBaX09CSkNFX1Aob3ApLT5uYW1l KTsKKwkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQl6ZW5kX2Vycm9yKEVf Tk9USUNFLCAiT2JqZWN0IG9mIGNsYXNzICV2IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gaW50 IiwgWl9PQkpDRV9QKG9wKS0+bmFtZSk7CisJCQkJfQogCiAJCQkJenZhbF9kdG9yKG9wKTsKIAkJ CQlaVkFMX0xPTkcob3AsIHJldHZhbCk7CkBAIC01MDcsNyArNTA5LDkgQEAKIAkJCQkJcmV0dXJu IFNVQ0NFU1M7CiAJCQkJfQogCi0JCQkJemVuZF9lcnJvcihFX05PVElDRSwgIk9iamVjdCBvZiBj bGFzcyAldiBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIGRvdWJsZSIsIFpfT0JKQ0VfUChvcCkt Pm5hbWUpOworCQkJCWlmIChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJCQkJCXplbmRfZXJy b3IoRV9OT1RJQ0UsICJPYmplY3Qgb2YgY2xhc3MgJXYgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0 byBkb3VibGUiLCBaX09CSkNFX1Aob3ApLT5uYW1lKTsKKwkJCQl9CiAKIAkJCQl6dmFsX2R0b3Io b3ApOwogCQkJCVpWQUxfRE9VQkxFKG9wLCByZXR2YWwpOwpAQCAtOTI3LDcgKzkzMSw5IEBACiAJ CQlicmVhazsKIAkJfQogCQljYXNlIElTX0FSUkFZOgotCQkJemVuZF9lcnJvcihFX05PVElDRSwg IkFycmF5IHRvIHN0cmluZyBjb252ZXJzaW9uIik7CisJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9U SUNFKSkgeworCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJBcnJheSB0byBzdHJpbmcgY29udmVy c2lvbiIpOworCQkJfQogCQkJenZhbF9kdG9yKG9wKTsKIAkJCVpfVVNUUlZBTF9QKG9wKSA9IFVT VFJfTUFLRV9SRUwoIkFycmF5Iik7CiAJCQlaX1VTVFJMRU5fUChvcCkgPSBzaXplb2YoIkFycmF5 IiktMTsKQEAgLTk2NSw3ICs5NzEsOSBAQAogCQkJCXJldHVybiBTVUNDRVNTOwogCQkJfQogCi0J CQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiT2JqZWN0IG9mIGNsYXNzICV2IHRvIHN0cmluZyBjb252 ZXJzaW9uIiwgWl9PQkpDRV9QKG9wKS0+bmFtZSk7CisJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9U SUNFKSkgeworCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJPYmplY3Qgb2YgY2xhc3MgJXYgdG8g c3RyaW5nIGNvbnZlcnNpb24iLCBaX09CSkNFX1Aob3ApLT5uYW1lKTsKKwkJCX0KIAkJCXp2YWxf ZHRvcihvcCk7CiAJCQlaX1VTVFJWQUxfUChvcCkgPSBVU1RSX01BS0VfUkVMKCJPYmplY3QiKTsK IAkJCVpfVVNUUkxFTl9QKG9wKSA9IHNpemVvZigiT2JqZWN0IiktMTsKQEAgLTEwMzEsNyArMTAz OSw5IEBACiAJCQlicmVhazsKIAkJfQogCQljYXNlIElTX0FSUkFZOgotCQkJemVuZF9lcnJvcihF X05PVElDRSwgIkFycmF5IHRvIHN0cmluZyBjb252ZXJzaW9uIik7CisJCQlpZiAoUkVQT1JUX0VS Uk9SKEVfTk9USUNFKSkgeworCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJBcnJheSB0byBzdHJp bmcgY29udmVyc2lvbiIpOworCQkJfQogCQkJenZhbF9kdG9yKG9wKTsKIAkJCVpfU1RSVkFMX1Ao b3ApID0gZXN0cm5kdXBfcmVsKCJBcnJheSIsIHNpemVvZigiQXJyYXkiKS0xKTsKIAkJCVpfU1RS TEVOX1Aob3ApID0gc2l6ZW9mKCJBcnJheSIpLTE7CkBAIC0xMDY5LDcgKzEwNzksOSBAQAogCQkJ CXJldHVybiBTVUNDRVNTOwogCQkJfQogCi0JCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiT2JqZWN0 IG9mIGNsYXNzICV2IHRvIHN0cmluZyBjb252ZXJzaW9uIiwgWl9PQkpDRV9QKG9wKS0+bmFtZSk7 CisJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCXplbmRfZXJyb3IoRV9OT1RJ Q0UsICJPYmplY3Qgb2YgY2xhc3MgJXYgdG8gc3RyaW5nIGNvbnZlcnNpb24iLCBaX09CSkNFX1Ao b3ApLT5uYW1lKTsKKwkJCX0KIAkJCXp2YWxfZHRvcihvcCk7CiAJCQlaX1NUUlZBTF9QKG9wKSA9 IGVzdHJuZHVwX3JlbCgiT2JqZWN0Iiwgc2l6ZW9mKCJPYmplY3QiKS0xKTsKIAkJCVpfU1RSTEVO X1Aob3ApID0gc2l6ZW9mKCJPYmplY3QiKS0xOwpAQCAtMjY0MCw3ICsyNjUyLDkgQEAKIAogCQlp ZiAobm9ybWFsaXplKSB7CiAJCQlpZiAoemVuZF9ub3JtYWxpemVfaWRlbnRpZmllcigmcmV0LnUs ICZyZXRfbGVuLCBzb3VyY2UudSwgbGVuZ3RoLCAxKSA9PSBGQUlMVVJFKSB7Ci0JCQkJemVuZF9l cnJvcihFX05PVElDRSwgIkNvdWxkIG5vdCBub3JtYWxpemUgaWRlbnRpZmllciIpOworCQkJCWlm IChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJD b3VsZCBub3Qgbm9ybWFsaXplIGlkZW50aWZpZXIiKTsKKwkJCQl9CiAJCQkJcmV0LnUgPSBldXN0 cm5kdXAoc291cmNlLnUsIGxlbmd0aCk7CiAJCQl9CiAJCX0gZWxzZSB7CkBAIC0yNjQ4LDcgKzI2 NjIsOSBAQAogCiAJCQl6ZW5kX2Nhc2VfZm9sZF9zdHJpbmcoJnJldC51LCAmcmV0X2xlbiwgc291 cmNlLnUsIGxlbmd0aCwgVV9GT0xEX0NBU0VfREVGQVVMVCwgJnN0YXR1cyk7CiAJCQlpZiAoVV9G QUlMVVJFKHN0YXR1cykpIHsKLQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiQ291bGQgbm90IGNh c2UtZm9sZCBzdHJpbmciKTsKKwkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJ CQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiQ291bGQgbm90IGNhc2UtZm9sZCBzdHJpbmciKTsKKwkJ CQl9CiAJCQkJcmV0LnUgPSBldXN0cm5kdXAoc291cmNlLnUsIGxlbmd0aCk7CiAJCQl9CiAJCX0K ZGlmZiAtciA5OWFiMWQyZDBhMDcgWmVuZC96ZW5kX3ZtX2RlZi5oCi0tLSBhL1plbmQvemVuZF92 bV9kZWYuaAlUaHUgU2VwIDE3IDE4OjE0OjM4IDIwMDkgKzA1MzAKKysrIGIvWmVuZC96ZW5kX3Zt X2RlZi5oCVRodSBPY3QgMjIgMTg6MTA6NTQgMjAwOSArMDUzMApAQCAtOTgwLDEzICs5ODAsMTcg QEAKIAkJCXN3aXRjaCAodHlwZSkgewogCQkJCWNhc2UgQlBfVkFSX1I6CiAJCQkJY2FzZSBCUF9W QVJfVU5TRVQ6Ci0JCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsIlVuZGVmaW5lZCB2YXJpYWJsZTog JVIiLCBaX1RZUEVfUCh2YXJuYW1lKSwgWl9VTklWQUxfUCh2YXJuYW1lKSk7CisJCQkJCWlmIChS RVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCJVbmRl ZmluZWQgdmFyaWFibGU6ICVSIiwgWl9UWVBFX1AodmFybmFtZSksIFpfVU5JVkFMX1AodmFybmFt ZSkpOworCQkJCQl9CiAJCQkJCS8qIGJyZWFrIG1pc3NpbmcgaW50ZW50aW9uYWxseSAqLwogCQkJ CWNhc2UgQlBfVkFSX0lTOgogCQkJCQlyZXR2YWwgPSAmRUcodW5pbml0aWFsaXplZF96dmFsX3B0 cik7CiAJCQkJCWJyZWFrOwogCQkJCWNhc2UgQlBfVkFSX1JXOgotCQkJCQl6ZW5kX2Vycm9yKEVf Tk9USUNFLCJVbmRlZmluZWQgdmFyaWFibGU6ICVSIiwgWl9UWVBFX1AodmFybmFtZSksIFpfVU5J VkFMX1AodmFybmFtZSkpOworCQkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJ CQkJemVuZF9lcnJvcihFX05PVElDRSwiVW5kZWZpbmVkIHZhcmlhYmxlOiAlUiIsIFpfVFlQRV9Q KHZhcm5hbWUpLCBaX1VOSVZBTF9QKHZhcm5hbWUpKTsKKwkJCQkJfQogCQkJCQkvKiBicmVhayBt aXNzaW5nIGludGVudGlvbmFsbHkgKi8KIAkJCQljYXNlIEJQX1ZBUl9XOiB7CiAJCQkJCQl6dmFs ICpuZXdfenZhbCA9ICZFRyh1bmluaXRpYWxpemVkX3p2YWwpOwpAQCAtMTI3Nyw3ICsxMjgxLDkg QEAKIAogCWlmIChaX1RZUEVfUChjb250YWluZXIpICE9IElTX09CSkVDVCB8fCAhWl9PQkpfSFRf UChjb250YWluZXIpLT5yZWFkX3Byb3BlcnR5KSB7CiAJCWlmICh0eXBlICE9IEJQX1ZBUl9JUykg ewotCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBnZXQgcHJvcGVydHkgb2Ygbm9u LW9iamVjdCIpOworCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQl6ZW5kX2Vy cm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGdldCBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJ CQl9CiAJCX0KIAkJaWYgKCFSRVRVUk5fVkFMVUVfVU5VU0VEKCZvcGxpbmUtPnJlc3VsdCkpIHsK IAkJCUFJX1NFVF9QVFIoRVhfVChvcGxpbmUtPnJlc3VsdC51LnZhcikudmFyLCBFRyh1bmluaXRp YWxpemVkX3p2YWxfcHRyKSk7CkBAIC0yNTI0LDcgKzI1MzAsOSBAQAogCiAJCWlmIChPUDFfVFlQ RSA9PSBJU19DT05TVCB8fCBPUDFfVFlQRSA9PSBJU19UTVBfVkFSKSB7CiAJCQkvKiBOb3Qgc3Vw cG9zZWQgdG8gaGFwcGVuLCBidXQgd2UnbGwgYWxsb3cgaXQgKi8KLQkJCXplbmRfZXJyb3IoRV9O T1RJQ0UsICJPbmx5IHZhcmlhYmxlIHJlZmVyZW5jZXMgc2hvdWxkIGJlIHJldHVybmVkIGJ5IHJl ZmVyZW5jZSIpOworCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQl6ZW5kX2Vy cm9yKEVfTk9USUNFLCAiT25seSB2YXJpYWJsZSByZWZlcmVuY2VzIHNob3VsZCBiZSByZXR1cm5l ZCBieSByZWZlcmVuY2UiKTsKKwkJCX0KIAkJCVpFTkRfVk1fQ19HT1RPKHJldHVybl9ieV92YWx1 ZSk7CiAJCX0KIApAQCAtMjU0Miw3ICsyNTUwLDkgQEAKIAkJCQlpZiAoT1AxX1RZUEUgPT0gSVNf VkFSICYmICFPUDFfRlJFRSkgewogCQkJCQlQWlZBTF9MT0NLKCpyZXR2YWxfcHRyX3B0cik7IC8q IHVuZG8gdGhlIGVmZmVjdCBvZiBnZXRfenZhbF9wdHJfcHRyKCkgKi8KIAkJCQl9Ci0JCQkJemVu ZF9lcnJvcihFX05PVElDRSwgIk9ubHkgdmFyaWFibGUgcmVmZXJlbmNlcyBzaG91bGQgYmUgcmV0 dXJuZWQgYnkgcmVmZXJlbmNlIik7CisJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsK KwkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIk9ubHkgdmFyaWFibGUgcmVmZXJlbmNlcyBzaG91 bGQgYmUgcmV0dXJuZWQgYnkgcmVmZXJlbmNlIik7CisJCQkJfQogCQkJCVpFTkRfVk1fQ19HT1RP KHJldHVybl9ieV92YWx1ZSk7CiAJCQl9CiAJCX0KQEAgLTMwODAsOCArMzA5MCwxMCBAQAogCQkJ CQlhY3R1YWxfbGVuID0gWl9VTklMRU4ob3BsaW5lLT5vcDIudS5jb25zdGFudCk7CiAJCQkJfSAK IAkJCQkvKiBub24tcXVhbGlmaWVkIGNvbnN0YW50IC0gYWxsb3cgdGV4dCBzdWJzdGl0dXRpb24g Ki8KLQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVXNlIG9mIHVuZGVmaW5lZCBjb25zdGFudCAl UiAtIGFzc3VtZWQgJyVSJyIsCi0JCQkJCVpfVFlQRShvcGxpbmUtPm9wMi51LmNvbnN0YW50KSwg YWN0dWFsLCBaX1RZUEUob3BsaW5lLT5vcDIudS5jb25zdGFudCksIGFjdHVhbCk7CisJCQkJaWYg KFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlVz ZSBvZiB1bmRlZmluZWQgY29uc3RhbnQgJVIgLSBhc3N1bWVkICclUiciLAorCQkJCQkJWl9UWVBF KG9wbGluZS0+b3AyLnUuY29uc3RhbnQpLCBhY3R1YWwsIFpfVFlQRShvcGxpbmUtPm9wMi51LmNv bnN0YW50KSwgYWN0dWFsKTsKKwkJCQl9CiAJCQkJWlZBTF9aU1RSTCgmRVhfVChvcGxpbmUtPnJl c3VsdC51LnZhcikudG1wX3ZhciwgWl9UWVBFKG9wbGluZS0+b3AyLnUuY29uc3RhbnQpLCBhY3R1 YWwsIGFjdHVhbF9sZW4sIDEpOwogCQkJfSBlbHNlIHsKIAkJCQl6ZW5kX2Vycm9yX25vcmV0dXJu KEVfRVJST1IsICJVbmRlZmluZWQgY29uc3RhbnQgJyVSJyIsIFpfVFlQRShvcGxpbmUtPm9wMi51 LmNvbnN0YW50KSwgWl9VTklWQUwob3BsaW5lLT5vcDIudS5jb25zdGFudCkpOwpAQCAtMzY2OCw3 ICszNjgwLDkgQEAKIAkJCWlmIChaX09CSl9IVF9QKCpjb250YWluZXIpLT51bnNldF9wcm9wZXJ0 eSkgewogCQkJCVpfT0JKX0hUX1AoKmNvbnRhaW5lciktPnVuc2V0X3Byb3BlcnR5KCpjb250YWlu ZXIsIG9mZnNldCBUU1JNTFNfQ0MpOwogCQkJfSBlbHNlIHsKLQkJCQl6ZW5kX2Vycm9yKEVfTk9U SUNFLCAiVHJ5aW5nIHRvIHVuc2V0IHByb3BlcnR5IG9mIG5vbi1vYmplY3QiKTsKKwkJCQlpZiAo UkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5 aW5nIHRvIHVuc2V0IHByb3BlcnR5IG9mIG5vbi1vYmplY3QiKTsKKwkJCQl9CiAJCQl9CiAJCQlp ZiAoSVNfT1AyX1RNUF9GUkVFKCkpIHsKIAkJCQl6dmFsX3B0cl9kdG9yKCZvZmZzZXQpOwpAQCAt NDE2MSwxNCArNDE3NSwxOCBAQAogCQkJCWlmIChaX09CSl9IVF9QKCpjb250YWluZXIpLT5oYXNf cHJvcGVydHkpIHsKIAkJCQkJcmVzdWx0ID0gWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+aGFzX3By b3BlcnR5KCpjb250YWluZXIsIG9mZnNldCwgKG9wbGluZS0+ZXh0ZW5kZWRfdmFsdWUgPT0gWkVO RF9JU0VNUFRZKSBUU1JNTFNfQ0MpOwogCQkJCX0gZWxzZSB7Ci0JCQkJCXplbmRfZXJyb3IoRV9O T1RJQ0UsICJUcnlpbmcgdG8gY2hlY2sgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJCQlp ZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwg IlRyeWluZyB0byBjaGVjayBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJCX0KIAkJCQkJ cmVzdWx0ID0gMDsKIAkJCQl9CiAJCQl9IGVsc2UgewogCQkJCWlmIChaX09CSl9IVF9QKCpjb250 YWluZXIpLT5oYXNfZGltZW5zaW9uKSB7CiAJCQkJCXJlc3VsdCA9IFpfT0JKX0hUX1AoKmNvbnRh aW5lciktPmhhc19kaW1lbnNpb24oKmNvbnRhaW5lciwgb2Zmc2V0LCAob3BsaW5lLT5leHRlbmRl ZF92YWx1ZSA9PSBaRU5EX0lTRU1QVFkpIFRTUk1MU19DQyk7CiAJCQkJfSBlbHNlIHsKLQkJCQkJ emVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBjaGVjayBlbGVtZW50IG9mIG5vbi1hcnJh eSIpOworCQkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQkJemVuZF9lcnJv cihFX05PVElDRSwgIlRyeWluZyB0byBjaGVjayBlbGVtZW50IG9mIG5vbi1hcnJheSIpOworCQkJ CQl9CiAJCQkJCXJlc3VsdCA9IDA7CiAJCQkJfQogCQkJfQpkaWZmIC1yIDk5YWIxZDJkMGEwNyBa ZW5kL3plbmRfdm1fZXhlY3V0ZS5oCi0tLSBhL1plbmQvemVuZF92bV9leGVjdXRlLmgJVGh1IFNl cCAxNyAxODoxNDozOCAyMDA5ICswNTMwCisrKyBiL1plbmQvemVuZF92bV9leGVjdXRlLmgJVGh1 IE9jdCAyMiAxODoxMDo1NCAyMDA5ICswNTMwCkBAIC0xMzIzLDEzICsxMzIzLDE3IEBACiAJCQlz d2l0Y2ggKHR5cGUpIHsKIAkJCQljYXNlIEJQX1ZBUl9SOgogCQkJCWNhc2UgQlBfVkFSX1VOU0VU OgotCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCJVbmRlZmluZWQgdmFyaWFibGU6ICVSIiwgWl9U WVBFX1AodmFybmFtZSksIFpfVU5JVkFMX1AodmFybmFtZSkpOworCQkJCQlpZiAoUkVQT1JUX0VS Uk9SKEVfTk9USUNFKSkgeworCQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwiVW5kZWZpbmVkIHZh cmlhYmxlOiAlUiIsIFpfVFlQRV9QKHZhcm5hbWUpLCBaX1VOSVZBTF9QKHZhcm5hbWUpKTsKKwkJ CQkJfQogCQkJCQkvKiBicmVhayBtaXNzaW5nIGludGVudGlvbmFsbHkgKi8KIAkJCQljYXNlIEJQ X1ZBUl9JUzoKIAkJCQkJcmV0dmFsID0gJkVHKHVuaW5pdGlhbGl6ZWRfenZhbF9wdHIpOwogCQkJ CQlicmVhazsKIAkJCQljYXNlIEJQX1ZBUl9SVzoKLQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwi VW5kZWZpbmVkIHZhcmlhYmxlOiAlUiIsIFpfVFlQRV9QKHZhcm5hbWUpLCBaX1VOSVZBTF9QKHZh cm5hbWUpKTsKKwkJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJCXplbmRf ZXJyb3IoRV9OT1RJQ0UsIlVuZGVmaW5lZCB2YXJpYWJsZTogJVIiLCBaX1RZUEVfUCh2YXJuYW1l KSwgWl9VTklWQUxfUCh2YXJuYW1lKSk7CisJCQkJCX0KIAkJCQkJLyogYnJlYWsgbWlzc2luZyBp bnRlbnRpb25hbGx5ICovCiAJCQkJY2FzZSBCUF9WQVJfVzogewogCQkJCQkJenZhbCAqbmV3X3p2 YWwgPSAmRUcodW5pbml0aWFsaXplZF96dmFsKTsKQEAgLTE1OTksNyArMTYwMyw5IEBACiAKIAkJ aWYgKElTX0NPTlNUID09IElTX0NPTlNUIHx8IElTX0NPTlNUID09IElTX1RNUF9WQVIpIHsKIAkJ CS8qIE5vdCBzdXBwb3NlZCB0byBoYXBwZW4sIGJ1dCB3ZSdsbCBhbGxvdyBpdCAqLwotCQkJemVu ZF9lcnJvcihFX05PVElDRSwgIk9ubHkgdmFyaWFibGUgcmVmZXJlbmNlcyBzaG91bGQgYmUgcmV0 dXJuZWQgYnkgcmVmZXJlbmNlIik7CisJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgewor CQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJPbmx5IHZhcmlhYmxlIHJlZmVyZW5jZXMgc2hvdWxk IGJlIHJldHVybmVkIGJ5IHJlZmVyZW5jZSIpOworCQkJfQogCQkJZ290byByZXR1cm5fYnlfdmFs dWU7CiAJCX0KIApAQCAtMTYxNyw3ICsxNjIzLDkgQEAKIAkJCQlpZiAoSVNfQ09OU1QgPT0gSVNf VkFSICYmICEwKSB7CiAJCQkJCVBaVkFMX0xPQ0soKnJldHZhbF9wdHJfcHRyKTsgLyogdW5kbyB0 aGUgZWZmZWN0IG9mIGdldF96dmFsX3B0cl9wdHIoKSAqLwogCQkJCX0KLQkJCQl6ZW5kX2Vycm9y KEVfTk9USUNFLCAiT25seSB2YXJpYWJsZSByZWZlcmVuY2VzIHNob3VsZCBiZSByZXR1cm5lZCBi eSByZWZlcmVuY2UiKTsKKwkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQl6 ZW5kX2Vycm9yKEVfTk9USUNFLCAiT25seSB2YXJpYWJsZSByZWZlcmVuY2VzIHNob3VsZCBiZSBy ZXR1cm5lZCBieSByZWZlcmVuY2UiKTsKKwkJCQl9CiAJCQkJZ290byByZXR1cm5fYnlfdmFsdWU7 CiAJCQl9CiAJCX0KQEAgLTI4NDQsOCArMjg1MiwxMCBAQAogCQkJCQlhY3R1YWxfbGVuID0gWl9V TklMRU4ob3BsaW5lLT5vcDIudS5jb25zdGFudCk7CiAJCQkJfQogCQkJCS8qIG5vbi1xdWFsaWZp ZWQgY29uc3RhbnQgLSBhbGxvdyB0ZXh0IHN1YnN0aXR1dGlvbiAqLwotCQkJCXplbmRfZXJyb3Io RV9OT1RJQ0UsICJVc2Ugb2YgdW5kZWZpbmVkIGNvbnN0YW50ICVSIC0gYXNzdW1lZCAnJVInIiwK LQkJCQkJWl9UWVBFKG9wbGluZS0+b3AyLnUuY29uc3RhbnQpLCBhY3R1YWwsIFpfVFlQRShvcGxp bmUtPm9wMi51LmNvbnN0YW50KSwgYWN0dWFsKTsKKwkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9U SUNFKSkgeworCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVXNlIG9mIHVuZGVmaW5lZCBjb25z dGFudCAlUiAtIGFzc3VtZWQgJyVSJyIsCisJCQkJCQlaX1RZUEUob3BsaW5lLT5vcDIudS5jb25z dGFudCksIGFjdHVhbCwgWl9UWVBFKG9wbGluZS0+b3AyLnUuY29uc3RhbnQpLCBhY3R1YWwpOwor CQkJCX0KIAkJCQlaVkFMX1pTVFJMKCZFWF9UKG9wbGluZS0+cmVzdWx0LnUudmFyKS50bXBfdmFy LCBaX1RZUEUob3BsaW5lLT5vcDIudS5jb25zdGFudCksIGFjdHVhbCwgYWN0dWFsX2xlbiwgMSk7 CiAJCQl9IGVsc2UgewogCQkJCXplbmRfZXJyb3Jfbm9yZXR1cm4oRV9FUlJPUiwgIlVuZGVmaW5l ZCBjb25zdGFudCAnJVInIiwgWl9UWVBFKG9wbGluZS0+b3AyLnUuY29uc3RhbnQpLCBaX1VOSVZB TChvcGxpbmUtPm9wMi51LmNvbnN0YW50KSk7CkBAIC00NzU3LDEzICs0NzY3LDE3IEBACiAJCQlz d2l0Y2ggKHR5cGUpIHsKIAkJCQljYXNlIEJQX1ZBUl9SOgogCQkJCWNhc2UgQlBfVkFSX1VOU0VU OgotCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCJVbmRlZmluZWQgdmFyaWFibGU6ICVSIiwgWl9U WVBFX1AodmFybmFtZSksIFpfVU5JVkFMX1AodmFybmFtZSkpOworCQkJCQlpZiAoUkVQT1JUX0VS Uk9SKEVfTk9USUNFKSkgeworCQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwiVW5kZWZpbmVkIHZh cmlhYmxlOiAlUiIsIFpfVFlQRV9QKHZhcm5hbWUpLCBaX1VOSVZBTF9QKHZhcm5hbWUpKTsKKwkJ CQkJfQogCQkJCQkvKiBicmVhayBtaXNzaW5nIGludGVudGlvbmFsbHkgKi8KIAkJCQljYXNlIEJQ X1ZBUl9JUzoKIAkJCQkJcmV0dmFsID0gJkVHKHVuaW5pdGlhbGl6ZWRfenZhbF9wdHIpOwogCQkJ CQlicmVhazsKIAkJCQljYXNlIEJQX1ZBUl9SVzoKLQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwi VW5kZWZpbmVkIHZhcmlhYmxlOiAlUiIsIFpfVFlQRV9QKHZhcm5hbWUpLCBaX1VOSVZBTF9QKHZh cm5hbWUpKTsKKwkJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJCXplbmRf ZXJyb3IoRV9OT1RJQ0UsIlVuZGVmaW5lZCB2YXJpYWJsZTogJVIiLCBaX1RZUEVfUCh2YXJuYW1l KSwgWl9VTklWQUxfUCh2YXJuYW1lKSk7CisJCQkJCX0KIAkJCQkJLyogYnJlYWsgbWlzc2luZyBp bnRlbnRpb25hbGx5ICovCiAJCQkJY2FzZSBCUF9WQVJfVzogewogCQkJCQkJenZhbCAqbmV3X3p2 YWwgPSAmRUcodW5pbml0aWFsaXplZF96dmFsKTsKQEAgLTUwMjIsNyArNTAzNiw5IEBACiAKIAkJ aWYgKElTX1RNUF9WQVIgPT0gSVNfQ09OU1QgfHwgSVNfVE1QX1ZBUiA9PSBJU19UTVBfVkFSKSB7 CiAJCQkvKiBOb3Qgc3VwcG9zZWQgdG8gaGFwcGVuLCBidXQgd2UnbGwgYWxsb3cgaXQgKi8KLQkJ CXplbmRfZXJyb3IoRV9OT1RJQ0UsICJPbmx5IHZhcmlhYmxlIHJlZmVyZW5jZXMgc2hvdWxkIGJl IHJldHVybmVkIGJ5IHJlZmVyZW5jZSIpOworCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkp IHsKKwkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiT25seSB2YXJpYWJsZSByZWZlcmVuY2VzIHNo b3VsZCBiZSByZXR1cm5lZCBieSByZWZlcmVuY2UiKTsKKwkJCX0KIAkJCWdvdG8gcmV0dXJuX2J5 X3ZhbHVlOwogCQl9CiAKQEAgLTUwNDAsNyArNTA1Niw5IEBACiAJCQkJaWYgKElTX1RNUF9WQVIg PT0gSVNfVkFSICYmICExKSB7CiAJCQkJCVBaVkFMX0xPQ0soKnJldHZhbF9wdHJfcHRyKTsgLyog dW5kbyB0aGUgZWZmZWN0IG9mIGdldF96dmFsX3B0cl9wdHIoKSAqLwogCQkJCX0KLQkJCQl6ZW5k X2Vycm9yKEVfTk9USUNFLCAiT25seSB2YXJpYWJsZSByZWZlcmVuY2VzIHNob3VsZCBiZSByZXR1 cm5lZCBieSByZWZlcmVuY2UiKTsKKwkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgewor CQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiT25seSB2YXJpYWJsZSByZWZlcmVuY2VzIHNob3Vs ZCBiZSByZXR1cm5lZCBieSByZWZlcmVuY2UiKTsKKwkJCQl9CiAJCQkJZ290byByZXR1cm5fYnlf dmFsdWU7CiAJCQl9CiAJCX0KQEAgLTgxNDQsMTMgKzgxNjIsMTcgQEAKIAkJCXN3aXRjaCAodHlw ZSkgewogCQkJCWNhc2UgQlBfVkFSX1I6CiAJCQkJY2FzZSBCUF9WQVJfVU5TRVQ6Ci0JCQkJCXpl bmRfZXJyb3IoRV9OT1RJQ0UsIlVuZGVmaW5lZCB2YXJpYWJsZTogJVIiLCBaX1RZUEVfUCh2YXJu YW1lKSwgWl9VTklWQUxfUCh2YXJuYW1lKSk7CisJCQkJCWlmIChSRVBPUlRfRVJST1IoRV9OT1RJ Q0UpKSB7CisJCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCJVbmRlZmluZWQgdmFyaWFibGU6ICVS IiwgWl9UWVBFX1AodmFybmFtZSksIFpfVU5JVkFMX1AodmFybmFtZSkpOworCQkJCQl9CiAJCQkJ CS8qIGJyZWFrIG1pc3NpbmcgaW50ZW50aW9uYWxseSAqLwogCQkJCWNhc2UgQlBfVkFSX0lTOgog CQkJCQlyZXR2YWwgPSAmRUcodW5pbml0aWFsaXplZF96dmFsX3B0cik7CiAJCQkJCWJyZWFrOwog CQkJCWNhc2UgQlBfVkFSX1JXOgotCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCJVbmRlZmluZWQg dmFyaWFibGU6ICVSIiwgWl9UWVBFX1AodmFybmFtZSksIFpfVU5JVkFMX1AodmFybmFtZSkpOwor CQkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQkJemVuZF9lcnJvcihFX05P VElDRSwiVW5kZWZpbmVkIHZhcmlhYmxlOiAlUiIsIFpfVFlQRV9QKHZhcm5hbWUpLCBaX1VOSVZB TF9QKHZhcm5hbWUpKTsKKwkJCQkJfQogCQkJCQkvKiBicmVhayBtaXNzaW5nIGludGVudGlvbmFs bHkgKi8KIAkJCQljYXNlIEJQX1ZBUl9XOiB7CiAJCQkJCQl6dmFsICpuZXdfenZhbCA9ICZFRyh1 bmluaXRpYWxpemVkX3p2YWwpOwpAQCAtODQwMyw3ICs4NDI1LDkgQEAKIAogCQlpZiAoSVNfVkFS ID09IElTX0NPTlNUIHx8IElTX1ZBUiA9PSBJU19UTVBfVkFSKSB7CiAJCQkvKiBOb3Qgc3VwcG9z ZWQgdG8gaGFwcGVuLCBidXQgd2UnbGwgYWxsb3cgaXQgKi8KLQkJCXplbmRfZXJyb3IoRV9OT1RJ Q0UsICJPbmx5IHZhcmlhYmxlIHJlZmVyZW5jZXMgc2hvdWxkIGJlIHJldHVybmVkIGJ5IHJlZmVy ZW5jZSIpOworCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQl6ZW5kX2Vycm9y KEVfTk9USUNFLCAiT25seSB2YXJpYWJsZSByZWZlcmVuY2VzIHNob3VsZCBiZSByZXR1cm5lZCBi eSByZWZlcmVuY2UiKTsKKwkJCX0KIAkJCWdvdG8gcmV0dXJuX2J5X3ZhbHVlOwogCQl9CiAKQEAg LTg0MjEsNyArODQ0NSw5IEBACiAJCQkJaWYgKElTX1ZBUiA9PSBJU19WQVIgJiYgIShmcmVlX29w MS52YXIgIT0gTlVMTCkpIHsKIAkJCQkJUFpWQUxfTE9DSygqcmV0dmFsX3B0cl9wdHIpOyAvKiB1 bmRvIHRoZSBlZmZlY3Qgb2YgZ2V0X3p2YWxfcHRyX3B0cigpICovCiAJCQkJfQotCQkJCXplbmRf ZXJyb3IoRV9OT1RJQ0UsICJPbmx5IHZhcmlhYmxlIHJlZmVyZW5jZXMgc2hvdWxkIGJlIHJldHVy bmVkIGJ5IHJlZmVyZW5jZSIpOworCQkJCWlmIChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJ CQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJPbmx5IHZhcmlhYmxlIHJlZmVyZW5jZXMgc2hvdWxk IGJlIHJldHVybmVkIGJ5IHJlZmVyZW5jZSIpOworCQkJCX0KIAkJCQlnb3RvIHJldHVybl9ieV92 YWx1ZTsKIAkJCX0KIAkJfQpAQCAtMTAzNzIsNyArMTAzOTgsOSBAQAogCiAJaWYgKFpfVFlQRV9Q KGNvbnRhaW5lcikgIT0gSVNfT0JKRUNUIHx8ICFaX09CSl9IVF9QKGNvbnRhaW5lciktPnJlYWRf cHJvcGVydHkpIHsKIAkJaWYgKHR5cGUgIT0gQlBfVkFSX0lTKSB7Ci0JCQl6ZW5kX2Vycm9yKEVf Tk9USUNFLCAiVHJ5aW5nIHRvIGdldCBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQlpZiAo UkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJUcnlp bmcgdG8gZ2V0IHByb3BlcnR5IG9mIG5vbi1vYmplY3QiKTsKKwkJCX0KIAkJfQogCQlpZiAoIVJF VFVSTl9WQUxVRV9VTlVTRUQoJm9wbGluZS0+cmVzdWx0KSkgewogCQkJQUlfU0VUX1BUUihFWF9U KG9wbGluZS0+cmVzdWx0LnUudmFyKS52YXIsIEVHKHVuaW5pdGlhbGl6ZWRfenZhbF9wdHIpKTsK QEAgLTEwOTQ4LDggKzEwOTc2LDEwIEBACiAJCQkJCWFjdHVhbF9sZW4gPSBaX1VOSUxFTihvcGxp bmUtPm9wMi51LmNvbnN0YW50KTsKIAkJCQl9CiAJCQkJLyogbm9uLXF1YWxpZmllZCBjb25zdGFu dCAtIGFsbG93IHRleHQgc3Vic3RpdHV0aW9uICovCi0JCQkJemVuZF9lcnJvcihFX05PVElDRSwg IlVzZSBvZiB1bmRlZmluZWQgY29uc3RhbnQgJVIgLSBhc3N1bWVkICclUiciLAotCQkJCQlaX1RZ UEUob3BsaW5lLT5vcDIudS5jb25zdGFudCksIGFjdHVhbCwgWl9UWVBFKG9wbGluZS0+b3AyLnUu Y29uc3RhbnQpLCBhY3R1YWwpOworCQkJCWlmIChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJ CQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJVc2Ugb2YgdW5kZWZpbmVkIGNvbnN0YW50ICVSIC0g YXNzdW1lZCAnJVInIiwKKwkJCQkJCVpfVFlQRShvcGxpbmUtPm9wMi51LmNvbnN0YW50KSwgYWN0 dWFsLCBaX1RZUEUob3BsaW5lLT5vcDIudS5jb25zdGFudCksIGFjdHVhbCk7CisJCQkJfQogCQkJ CVpWQUxfWlNUUkwoJkVYX1Qob3BsaW5lLT5yZXN1bHQudS52YXIpLnRtcF92YXIsIFpfVFlQRShv cGxpbmUtPm9wMi51LmNvbnN0YW50KSwgYWN0dWFsLCBhY3R1YWxfbGVuLCAxKTsKIAkJCX0gZWxz ZSB7CiAJCQkJemVuZF9lcnJvcl9ub3JldHVybihFX0VSUk9SLCAiVW5kZWZpbmVkIGNvbnN0YW50 ICclUiciLCBaX1RZUEUob3BsaW5lLT5vcDIudS5jb25zdGFudCksIFpfVU5JVkFMKG9wbGluZS0+ b3AyLnUuY29uc3RhbnQpKTsKQEAgLTExMjIzLDcgKzExMjUzLDkgQEAKIAkJCWlmIChaX09CSl9I VF9QKCpjb250YWluZXIpLT51bnNldF9wcm9wZXJ0eSkgewogCQkJCVpfT0JKX0hUX1AoKmNvbnRh aW5lciktPnVuc2V0X3Byb3BlcnR5KCpjb250YWluZXIsIG9mZnNldCBUU1JNTFNfQ0MpOwogCQkJ fSBlbHNlIHsKLQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIHVuc2V0IHByb3Bl cnR5IG9mIG5vbi1vYmplY3QiKTsKKwkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgewor CQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIHVuc2V0IHByb3BlcnR5IG9mIG5v bi1vYmplY3QiKTsKKwkJCQl9CiAJCQl9CiAJCQlpZiAoMCkgewogCQkJCXp2YWxfcHRyX2R0b3Io Jm9mZnNldCk7CkBAIC0xMTMzOCwxNCArMTEzNzAsMTggQEAKIAkJCQlpZiAoWl9PQkpfSFRfUCgq Y29udGFpbmVyKS0+aGFzX3Byb3BlcnR5KSB7CiAJCQkJCXJlc3VsdCA9IFpfT0JKX0hUX1AoKmNv bnRhaW5lciktPmhhc19wcm9wZXJ0eSgqY29udGFpbmVyLCBvZmZzZXQsIChvcGxpbmUtPmV4dGVu ZGVkX3ZhbHVlID09IFpFTkRfSVNFTVBUWSkgVFNSTUxTX0NDKTsKIAkJCQl9IGVsc2UgewotCQkJ CQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNoZWNrIHByb3BlcnR5IG9mIG5vbi1v YmplY3QiKTsKKwkJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJCXplbmRf ZXJyb3IoRV9OT1RJQ0UsICJUcnlpbmcgdG8gY2hlY2sgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIp OworCQkJCQl9CiAJCQkJCXJlc3VsdCA9IDA7CiAJCQkJfQogCQkJfSBlbHNlIHsKIAkJCQlpZiAo Wl9PQkpfSFRfUCgqY29udGFpbmVyKS0+aGFzX2RpbWVuc2lvbikgewogCQkJCQlyZXN1bHQgPSBa X09CSl9IVF9QKCpjb250YWluZXIpLT5oYXNfZGltZW5zaW9uKCpjb250YWluZXIsIG9mZnNldCwg KG9wbGluZS0+ZXh0ZW5kZWRfdmFsdWUgPT0gWkVORF9JU0VNUFRZKSBUU1JNTFNfQ0MpOwogCQkJ CX0gZWxzZSB7Ci0JCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJUcnlpbmcgdG8gY2hlY2sgZWxl bWVudCBvZiBub24tYXJyYXkiKTsKKwkJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsK KwkJCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJUcnlpbmcgdG8gY2hlY2sgZWxlbWVudCBvZiBu b24tYXJyYXkiKTsKKwkJCQkJfQogCQkJCQlyZXN1bHQgPSAwOwogCQkJCX0KIAkJCX0KQEAgLTEy MjkwLDcgKzEyMzI2LDkgQEAKIAogCWlmIChaX1RZUEVfUChjb250YWluZXIpICE9IElTX09CSkVD VCB8fCAhWl9PQkpfSFRfUChjb250YWluZXIpLT5yZWFkX3Byb3BlcnR5KSB7CiAJCWlmICh0eXBl ICE9IEJQX1ZBUl9JUykgewotCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBnZXQg cHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkp IHsKKwkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGdldCBwcm9wZXJ0eSBvZiBu b24tb2JqZWN0Iik7CisJCQl9CiAJCX0KIAkJaWYgKCFSRVRVUk5fVkFMVUVfVU5VU0VEKCZvcGxp bmUtPnJlc3VsdCkpIHsKIAkJCUFJX1NFVF9QVFIoRVhfVChvcGxpbmUtPnJlc3VsdC51LnZhciku dmFyLCBFRyh1bmluaXRpYWxpemVkX3p2YWxfcHRyKSk7CkBAIC0xMzA0OSw3ICsxMzA4Nyw5IEBA CiAJCQlpZiAoWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+dW5zZXRfcHJvcGVydHkpIHsKIAkJCQla X09CSl9IVF9QKCpjb250YWluZXIpLT51bnNldF9wcm9wZXJ0eSgqY29udGFpbmVyLCBvZmZzZXQg VFNSTUxTX0NDKTsKIAkJCX0gZWxzZSB7Ci0JCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWlu ZyB0byB1bnNldCBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJaWYgKFJFUE9SVF9FUlJP UihFX05PVElDRSkpIHsKKwkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byB1bnNl dCBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJfQogCQkJfQogCQkJaWYgKDEpIHsKIAkJ CQl6dmFsX3B0cl9kdG9yKCZvZmZzZXQpOwpAQCAtMTMxNjQsMTQgKzEzMjA0LDE4IEBACiAJCQkJ aWYgKFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPmhhc19wcm9wZXJ0eSkgewogCQkJCQlyZXN1bHQg PSBaX09CSl9IVF9QKCpjb250YWluZXIpLT5oYXNfcHJvcGVydHkoKmNvbnRhaW5lciwgb2Zmc2V0 LCAob3BsaW5lLT5leHRlbmRlZF92YWx1ZSA9PSBaRU5EX0lTRU1QVFkpIFRTUk1MU19DQyk7CiAJ CQkJfSBlbHNlIHsKLQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBjaGVjayBw cm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJCWlmIChSRVBPUlRfRVJST1IoRV9OT1RJQ0Up KSB7CisJCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNoZWNrIHByb3BlcnR5 IG9mIG5vbi1vYmplY3QiKTsKKwkJCQkJfQogCQkJCQlyZXN1bHQgPSAwOwogCQkJCX0KIAkJCX0g ZWxzZSB7CiAJCQkJaWYgKFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPmhhc19kaW1lbnNpb24pIHsK IAkJCQkJcmVzdWx0ID0gWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+aGFzX2RpbWVuc2lvbigqY29u dGFpbmVyLCBvZmZzZXQsIChvcGxpbmUtPmV4dGVuZGVkX3ZhbHVlID09IFpFTkRfSVNFTVBUWSkg VFNSTUxTX0NDKTsKIAkJCQl9IGVsc2UgewotCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5 aW5nIHRvIGNoZWNrIGVsZW1lbnQgb2Ygbm9uLWFycmF5Iik7CisJCQkJCWlmIChSRVBPUlRfRVJS T1IoRV9OT1RJQ0UpKSB7CisJCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNo ZWNrIGVsZW1lbnQgb2Ygbm9uLWFycmF5Iik7CisJCQkJCX0KIAkJCQkJcmVzdWx0ID0gMDsKIAkJ CQl9CiAJCQl9CkBAIC0xNDExNiw3ICsxNDE2MCw5IEBACiAKIAlpZiAoWl9UWVBFX1AoY29udGFp bmVyKSAhPSBJU19PQkpFQ1QgfHwgIVpfT0JKX0hUX1AoY29udGFpbmVyKS0+cmVhZF9wcm9wZXJ0 eSkgewogCQlpZiAodHlwZSAhPSBCUF9WQVJfSVMpIHsKLQkJCXplbmRfZXJyb3IoRV9OT1RJQ0Us ICJUcnlpbmcgdG8gZ2V0IHByb3BlcnR5IG9mIG5vbi1vYmplY3QiKTsKKwkJCWlmIChSRVBPUlRf RVJST1IoRV9OT1RJQ0UpKSB7CisJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBn ZXQgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJfQogCQl9CiAJCWlmICghUkVUVVJOX1ZB TFVFX1VOVVNFRCgmb3BsaW5lLT5yZXN1bHQpKSB7CiAJCQlBSV9TRVRfUFRSKEVYX1Qob3BsaW5l LT5yZXN1bHQudS52YXIpLnZhciwgRUcodW5pbml0aWFsaXplZF96dmFsX3B0cikpOwpAQCAtMTQ5 MjYsNyArMTQ5NzIsOSBAQAogCQkJaWYgKFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPnVuc2V0X3By b3BlcnR5KSB7CiAJCQkJWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+dW5zZXRfcHJvcGVydHkoKmNv bnRhaW5lciwgb2Zmc2V0IFRTUk1MU19DQyk7CiAJCQl9IGVsc2UgewotCQkJCXplbmRfZXJyb3Io RV9OT1RJQ0UsICJUcnlpbmcgdG8gdW5zZXQgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJ CWlmIChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0Us ICJUcnlpbmcgdG8gdW5zZXQgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJCX0KIAkJCX0K IAkJCWlmICgwKSB7CiAJCQkJenZhbF9wdHJfZHRvcigmb2Zmc2V0KTsKQEAgLTE1MDQxLDE0ICsx NTA4OSwxOCBAQAogCQkJCWlmIChaX09CSl9IVF9QKCpjb250YWluZXIpLT5oYXNfcHJvcGVydHkp IHsKIAkJCQkJcmVzdWx0ID0gWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+aGFzX3Byb3BlcnR5KCpj b250YWluZXIsIG9mZnNldCwgKG9wbGluZS0+ZXh0ZW5kZWRfdmFsdWUgPT0gWkVORF9JU0VNUFRZ KSBUU1JNTFNfQ0MpOwogCQkJCX0gZWxzZSB7Ci0JCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJU cnlpbmcgdG8gY2hlY2sgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJCQlpZiAoUkVQT1JU X0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0 byBjaGVjayBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJCX0KIAkJCQkJcmVzdWx0ID0g MDsKIAkJCQl9CiAJCQl9IGVsc2UgewogCQkJCWlmIChaX09CSl9IVF9QKCpjb250YWluZXIpLT5o YXNfZGltZW5zaW9uKSB7CiAJCQkJCXJlc3VsdCA9IFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPmhh c19kaW1lbnNpb24oKmNvbnRhaW5lciwgb2Zmc2V0LCAob3BsaW5lLT5leHRlbmRlZF92YWx1ZSA9 PSBaRU5EX0lTRU1QVFkpIFRTUk1MU19DQyk7CiAJCQkJfSBlbHNlIHsKLQkJCQkJemVuZF9lcnJv cihFX05PVElDRSwgIlRyeWluZyB0byBjaGVjayBlbGVtZW50IG9mIG5vbi1hcnJheSIpOworCQkJ CQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQkJemVuZF9lcnJvcihFX05PVElD RSwgIlRyeWluZyB0byBjaGVjayBlbGVtZW50IG9mIG5vbi1hcnJheSIpOworCQkJCQl9CiAJCQkJ CXJlc3VsdCA9IDA7CiAJCQkJfQogCQkJfQpAQCAtMTY1OTMsNyArMTY2NDUsOSBAQAogCiAJaWYg KFpfVFlQRV9QKGNvbnRhaW5lcikgIT0gSVNfT0JKRUNUIHx8ICFaX09CSl9IVF9QKGNvbnRhaW5l ciktPnJlYWRfcHJvcGVydHkpIHsKIAkJaWYgKHR5cGUgIT0gQlBfVkFSX0lTKSB7Ci0JCQl6ZW5k X2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGdldCBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7 CisJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCXplbmRfZXJyb3IoRV9OT1RJ Q0UsICJUcnlpbmcgdG8gZ2V0IHByb3BlcnR5IG9mIG5vbi1vYmplY3QiKTsKKwkJCX0KIAkJfQog CQlpZiAoIVJFVFVSTl9WQUxVRV9VTlVTRUQoJm9wbGluZS0+cmVzdWx0KSkgewogCQkJQUlfU0VU X1BUUihFWF9UKG9wbGluZS0+cmVzdWx0LnUudmFyKS52YXIsIEVHKHVuaW5pdGlhbGl6ZWRfenZh bF9wdHIpKTsKQEAgLTE3Mzk4LDcgKzE3NDUyLDkgQEAKIAkJCWlmIChaX09CSl9IVF9QKCpjb250 YWluZXIpLT51bnNldF9wcm9wZXJ0eSkgewogCQkJCVpfT0JKX0hUX1AoKmNvbnRhaW5lciktPnVu c2V0X3Byb3BlcnR5KCpjb250YWluZXIsIG9mZnNldCBUU1JNTFNfQ0MpOwogCQkJfSBlbHNlIHsK LQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIHVuc2V0IHByb3BlcnR5IG9mIG5v bi1vYmplY3QiKTsKKwkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQl6ZW5k X2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIHVuc2V0IHByb3BlcnR5IG9mIG5vbi1vYmplY3Qi KTsKKwkJCQl9CiAJCQl9CiAJCQlpZiAoMCkgewogCQkJCXp2YWxfcHRyX2R0b3IoJm9mZnNldCk7 CkBAIC0xNzUxMywxNCArMTc1NjksMTggQEAKIAkJCQlpZiAoWl9PQkpfSFRfUCgqY29udGFpbmVy KS0+aGFzX3Byb3BlcnR5KSB7CiAJCQkJCXJlc3VsdCA9IFpfT0JKX0hUX1AoKmNvbnRhaW5lcikt Pmhhc19wcm9wZXJ0eSgqY29udGFpbmVyLCBvZmZzZXQsIChvcGxpbmUtPmV4dGVuZGVkX3ZhbHVl ID09IFpFTkRfSVNFTVBUWSkgVFNSTUxTX0NDKTsKIAkJCQl9IGVsc2UgewotCQkJCQl6ZW5kX2Vy cm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNoZWNrIHByb3BlcnR5IG9mIG5vbi1vYmplY3QiKTsK KwkJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJCXplbmRfZXJyb3IoRV9O T1RJQ0UsICJUcnlpbmcgdG8gY2hlY2sgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJCQl9 CiAJCQkJCXJlc3VsdCA9IDA7CiAJCQkJfQogCQkJfSBlbHNlIHsKIAkJCQlpZiAoWl9PQkpfSFRf UCgqY29udGFpbmVyKS0+aGFzX2RpbWVuc2lvbikgewogCQkJCQlyZXN1bHQgPSBaX09CSl9IVF9Q KCpjb250YWluZXIpLT5oYXNfZGltZW5zaW9uKCpjb250YWluZXIsIG9mZnNldCwgKG9wbGluZS0+ ZXh0ZW5kZWRfdmFsdWUgPT0gWkVORF9JU0VNUFRZKSBUU1JNTFNfQ0MpOwogCQkJCX0gZWxzZSB7 Ci0JCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJUcnlpbmcgdG8gY2hlY2sgZWxlbWVudCBvZiBu b24tYXJyYXkiKTsKKwkJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJCXpl bmRfZXJyb3IoRV9OT1RJQ0UsICJUcnlpbmcgdG8gY2hlY2sgZWxlbWVudCBvZiBub24tYXJyYXki KTsKKwkJCQkJfQogCQkJCQlyZXN1bHQgPSAwOwogCQkJCX0KIAkJCX0KQEAgLTE4MTE3LDcgKzE4 MTc3LDkgQEAKIAogCWlmIChaX1RZUEVfUChjb250YWluZXIpICE9IElTX09CSkVDVCB8fCAhWl9P QkpfSFRfUChjb250YWluZXIpLT5yZWFkX3Byb3BlcnR5KSB7CiAJCWlmICh0eXBlICE9IEJQX1ZB Ul9JUykgewotCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBnZXQgcHJvcGVydHkg b2Ygbm9uLW9iamVjdCIpOworCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQl6 ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGdldCBwcm9wZXJ0eSBvZiBub24tb2JqZWN0 Iik7CisJCQl9CiAJCX0KIAkJaWYgKCFSRVRVUk5fVkFMVUVfVU5VU0VEKCZvcGxpbmUtPnJlc3Vs dCkpIHsKIAkJCUFJX1NFVF9QVFIoRVhfVChvcGxpbmUtPnJlc3VsdC51LnZhcikudmFyLCBFRyh1 bmluaXRpYWxpemVkX3p2YWxfcHRyKSk7CkBAIC0xODQ2OSw4ICsxODUzMSwxMCBAQAogCQkJCQlh Y3R1YWxfbGVuID0gWl9VTklMRU4ob3BsaW5lLT5vcDIudS5jb25zdGFudCk7CiAJCQkJfQogCQkJ CS8qIG5vbi1xdWFsaWZpZWQgY29uc3RhbnQgLSBhbGxvdyB0ZXh0IHN1YnN0aXR1dGlvbiAqLwot CQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJVc2Ugb2YgdW5kZWZpbmVkIGNvbnN0YW50ICVSIC0g YXNzdW1lZCAnJVInIiwKLQkJCQkJWl9UWVBFKG9wbGluZS0+b3AyLnUuY29uc3RhbnQpLCBhY3R1 YWwsIFpfVFlQRShvcGxpbmUtPm9wMi51LmNvbnN0YW50KSwgYWN0dWFsKTsKKwkJCQlpZiAoUkVQ T1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVXNlIG9m IHVuZGVmaW5lZCBjb25zdGFudCAlUiAtIGFzc3VtZWQgJyVSJyIsCisJCQkJCQlaX1RZUEUob3Bs aW5lLT5vcDIudS5jb25zdGFudCksIGFjdHVhbCwgWl9UWVBFKG9wbGluZS0+b3AyLnUuY29uc3Rh bnQpLCBhY3R1YWwpOworCQkJCX0KIAkJCQlaVkFMX1pTVFJMKCZFWF9UKG9wbGluZS0+cmVzdWx0 LnUudmFyKS50bXBfdmFyLCBaX1RZUEUob3BsaW5lLT5vcDIudS5jb25zdGFudCksIGFjdHVhbCwg YWN0dWFsX2xlbiwgMSk7CiAJCQl9IGVsc2UgewogCQkJCXplbmRfZXJyb3Jfbm9yZXR1cm4oRV9F UlJPUiwgIlVuZGVmaW5lZCBjb25zdGFudCAnJVInIiwgWl9UWVBFKG9wbGluZS0+b3AyLnUuY29u c3RhbnQpLCBaX1VOSVZBTChvcGxpbmUtPm9wMi51LmNvbnN0YW50KSk7CkBAIC0xODY2MSw3ICsx ODcyNSw5IEBACiAJCQlpZiAoWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+dW5zZXRfcHJvcGVydHkp IHsKIAkJCQlaX09CSl9IVF9QKCpjb250YWluZXIpLT51bnNldF9wcm9wZXJ0eSgqY29udGFpbmVy LCBvZmZzZXQgVFNSTUxTX0NDKTsKIAkJCX0gZWxzZSB7Ci0JCQkJemVuZF9lcnJvcihFX05PVElD RSwgIlRyeWluZyB0byB1bnNldCBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJaWYgKFJF UE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWlu ZyB0byB1bnNldCBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJfQogCQkJfQogCQkJaWYg KDApIHsKIAkJCQl6dmFsX3B0cl9kdG9yKCZvZmZzZXQpOwpAQCAtMTg3NzUsMTQgKzE4ODQxLDE4 IEBACiAJCQkJaWYgKFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPmhhc19wcm9wZXJ0eSkgewogCQkJ CQlyZXN1bHQgPSBaX09CSl9IVF9QKCpjb250YWluZXIpLT5oYXNfcHJvcGVydHkoKmNvbnRhaW5l ciwgb2Zmc2V0LCAob3BsaW5lLT5leHRlbmRlZF92YWx1ZSA9PSBaRU5EX0lTRU1QVFkpIFRTUk1M U19DQyk7CiAJCQkJfSBlbHNlIHsKLQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0 byBjaGVjayBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJCWlmIChSRVBPUlRfRVJST1Io RV9OT1RJQ0UpKSB7CisJCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNoZWNr IHByb3BlcnR5IG9mIG5vbi1vYmplY3QiKTsKKwkJCQkJfQogCQkJCQlyZXN1bHQgPSAwOwogCQkJ CX0KIAkJCX0gZWxzZSB7CiAJCQkJaWYgKFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPmhhc19kaW1l bnNpb24pIHsKIAkJCQkJcmVzdWx0ID0gWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+aGFzX2RpbWVu c2lvbigqY29udGFpbmVyLCBvZmZzZXQsIChvcGxpbmUtPmV4dGVuZGVkX3ZhbHVlID09IFpFTkRf SVNFTVBUWSkgVFNSTUxTX0NDKTsKIAkJCQl9IGVsc2UgewotCQkJCQl6ZW5kX2Vycm9yKEVfTk9U SUNFLCAiVHJ5aW5nIHRvIGNoZWNrIGVsZW1lbnQgb2Ygbm9uLWFycmF5Iik7CisJCQkJCWlmIChS RVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5 aW5nIHRvIGNoZWNrIGVsZW1lbnQgb2Ygbm9uLWFycmF5Iik7CisJCQkJCX0KIAkJCQkJcmVzdWx0 ID0gMDsKIAkJCQl9CiAJCQl9CkBAIC0xOTMwMSw3ICsxOTM3MSw5IEBACiAKIAlpZiAoWl9UWVBF X1AoY29udGFpbmVyKSAhPSBJU19PQkpFQ1QgfHwgIVpfT0JKX0hUX1AoY29udGFpbmVyKS0+cmVh ZF9wcm9wZXJ0eSkgewogCQlpZiAodHlwZSAhPSBCUF9WQVJfSVMpIHsKLQkJCXplbmRfZXJyb3Io RV9OT1RJQ0UsICJUcnlpbmcgdG8gZ2V0IHByb3BlcnR5IG9mIG5vbi1vYmplY3QiKTsKKwkJCWlm IChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRy eWluZyB0byBnZXQgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJfQogCQl9CiAJCWlmICgh UkVUVVJOX1ZBTFVFX1VOVVNFRCgmb3BsaW5lLT5yZXN1bHQpKSB7CiAJCQlBSV9TRVRfUFRSKEVY X1Qob3BsaW5lLT5yZXN1bHQudS52YXIpLnZhciwgRUcodW5pbml0aWFsaXplZF96dmFsX3B0cikp OwpAQCAtMTk3ODIsNyArMTk4NTQsOSBAQAogCQkJaWYgKFpfT0JKX0hUX1AoKmNvbnRhaW5lcikt PnVuc2V0X3Byb3BlcnR5KSB7CiAJCQkJWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+dW5zZXRfcHJv cGVydHkoKmNvbnRhaW5lciwgb2Zmc2V0IFRTUk1MU19DQyk7CiAJCQl9IGVsc2UgewotCQkJCXpl bmRfZXJyb3IoRV9OT1RJQ0UsICJUcnlpbmcgdG8gdW5zZXQgcHJvcGVydHkgb2Ygbm9uLW9iamVj dCIpOworCQkJCWlmIChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJCQkJCXplbmRfZXJyb3Io RV9OT1RJQ0UsICJUcnlpbmcgdG8gdW5zZXQgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJ CX0KIAkJCX0KIAkJCWlmICgxKSB7CiAJCQkJenZhbF9wdHJfZHRvcigmb2Zmc2V0KTsKQEAgLTE5 ODk2LDE0ICsxOTk3MCwxOCBAQAogCQkJCWlmIChaX09CSl9IVF9QKCpjb250YWluZXIpLT5oYXNf cHJvcGVydHkpIHsKIAkJCQkJcmVzdWx0ID0gWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+aGFzX3By b3BlcnR5KCpjb250YWluZXIsIG9mZnNldCwgKG9wbGluZS0+ZXh0ZW5kZWRfdmFsdWUgPT0gWkVO RF9JU0VNUFRZKSBUU1JNTFNfQ0MpOwogCQkJCX0gZWxzZSB7Ci0JCQkJCXplbmRfZXJyb3IoRV9O T1RJQ0UsICJUcnlpbmcgdG8gY2hlY2sgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJCQlp ZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwg IlRyeWluZyB0byBjaGVjayBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJCX0KIAkJCQkJ cmVzdWx0ID0gMDsKIAkJCQl9CiAJCQl9IGVsc2UgewogCQkJCWlmIChaX09CSl9IVF9QKCpjb250 YWluZXIpLT5oYXNfZGltZW5zaW9uKSB7CiAJCQkJCXJlc3VsdCA9IFpfT0JKX0hUX1AoKmNvbnRh aW5lciktPmhhc19kaW1lbnNpb24oKmNvbnRhaW5lciwgb2Zmc2V0LCAob3BsaW5lLT5leHRlbmRl ZF92YWx1ZSA9PSBaRU5EX0lTRU1QVFkpIFRTUk1MU19DQyk7CiAJCQkJfSBlbHNlIHsKLQkJCQkJ emVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBjaGVjayBlbGVtZW50IG9mIG5vbi1hcnJh eSIpOworCQkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQkJemVuZF9lcnJv cihFX05PVElDRSwgIlRyeWluZyB0byBjaGVjayBlbGVtZW50IG9mIG5vbi1hcnJheSIpOworCQkJ CQl9CiAJCQkJCXJlc3VsdCA9IDA7CiAJCQkJfQogCQkJfQpAQCAtMjA0MjIsNyArMjA1MDAsOSBA QAogCiAJaWYgKFpfVFlQRV9QKGNvbnRhaW5lcikgIT0gSVNfT0JKRUNUIHx8ICFaX09CSl9IVF9Q KGNvbnRhaW5lciktPnJlYWRfcHJvcGVydHkpIHsKIAkJaWYgKHR5cGUgIT0gQlBfVkFSX0lTKSB7 Ci0JCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGdldCBwcm9wZXJ0eSBvZiBub24t b2JqZWN0Iik7CisJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCXplbmRfZXJy b3IoRV9OT1RJQ0UsICJUcnlpbmcgdG8gZ2V0IHByb3BlcnR5IG9mIG5vbi1vYmplY3QiKTsKKwkJ CX0KIAkJfQogCQlpZiAoIVJFVFVSTl9WQUxVRV9VTlVTRUQoJm9wbGluZS0+cmVzdWx0KSkgewog CQkJQUlfU0VUX1BUUihFWF9UKG9wbGluZS0+cmVzdWx0LnUudmFyKS52YXIsIEVHKHVuaW5pdGlh bGl6ZWRfenZhbF9wdHIpKTsKQEAgLTIwOTAzLDcgKzIwOTgzLDkgQEAKIAkJCWlmIChaX09CSl9I VF9QKCpjb250YWluZXIpLT51bnNldF9wcm9wZXJ0eSkgewogCQkJCVpfT0JKX0hUX1AoKmNvbnRh aW5lciktPnVuc2V0X3Byb3BlcnR5KCpjb250YWluZXIsIG9mZnNldCBUU1JNTFNfQ0MpOwogCQkJ fSBlbHNlIHsKLQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIHVuc2V0IHByb3Bl cnR5IG9mIG5vbi1vYmplY3QiKTsKKwkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgewor CQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIHVuc2V0IHByb3BlcnR5IG9mIG5v bi1vYmplY3QiKTsKKwkJCQl9CiAJCQl9CiAJCQlpZiAoMCkgewogCQkJCXp2YWxfcHRyX2R0b3Io Jm9mZnNldCk7CkBAIC0yMTAxNywxNCArMjEwOTksMTggQEAKIAkJCQlpZiAoWl9PQkpfSFRfUCgq Y29udGFpbmVyKS0+aGFzX3Byb3BlcnR5KSB7CiAJCQkJCXJlc3VsdCA9IFpfT0JKX0hUX1AoKmNv bnRhaW5lciktPmhhc19wcm9wZXJ0eSgqY29udGFpbmVyLCBvZmZzZXQsIChvcGxpbmUtPmV4dGVu ZGVkX3ZhbHVlID09IFpFTkRfSVNFTVBUWSkgVFNSTUxTX0NDKTsKIAkJCQl9IGVsc2UgewotCQkJ CQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNoZWNrIHByb3BlcnR5IG9mIG5vbi1v YmplY3QiKTsKKwkJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJCXplbmRf ZXJyb3IoRV9OT1RJQ0UsICJUcnlpbmcgdG8gY2hlY2sgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIp OworCQkJCQl9CiAJCQkJCXJlc3VsdCA9IDA7CiAJCQkJfQogCQkJfSBlbHNlIHsKIAkJCQlpZiAo Wl9PQkpfSFRfUCgqY29udGFpbmVyKS0+aGFzX2RpbWVuc2lvbikgewogCQkJCQlyZXN1bHQgPSBa X09CSl9IVF9QKCpjb250YWluZXIpLT5oYXNfZGltZW5zaW9uKCpjb250YWluZXIsIG9mZnNldCwg KG9wbGluZS0+ZXh0ZW5kZWRfdmFsdWUgPT0gWkVORF9JU0VNUFRZKSBUU1JNTFNfQ0MpOwogCQkJ CX0gZWxzZSB7Ci0JCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJUcnlpbmcgdG8gY2hlY2sgZWxl bWVudCBvZiBub24tYXJyYXkiKTsKKwkJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsK KwkJCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJUcnlpbmcgdG8gY2hlY2sgZWxlbWVudCBvZiBu b24tYXJyYXkiKTsKKwkJCQkJfQogCQkJCQlyZXN1bHQgPSAwOwogCQkJCX0KIAkJCX0KQEAgLTIx ODAzLDcgKzIxODg5LDkgQEAKIAogCWlmIChaX1RZUEVfUChjb250YWluZXIpICE9IElTX09CSkVD VCB8fCAhWl9PQkpfSFRfUChjb250YWluZXIpLT5yZWFkX3Byb3BlcnR5KSB7CiAJCWlmICh0eXBl ICE9IEJQX1ZBUl9JUykgewotCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBnZXQg cHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkp IHsKKwkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGdldCBwcm9wZXJ0eSBvZiBu b24tb2JqZWN0Iik7CisJCQl9CiAJCX0KIAkJaWYgKCFSRVRVUk5fVkFMVUVfVU5VU0VEKCZvcGxp bmUtPnJlc3VsdCkpIHsKIAkJCUFJX1NFVF9QVFIoRVhfVChvcGxpbmUtPnJlc3VsdC51LnZhciku dmFyLCBFRyh1bmluaXRpYWxpemVkX3p2YWxfcHRyKSk7CkBAIC0yMjI4Miw3ICsyMjM3MCw5IEBA CiAJCQlpZiAoWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+dW5zZXRfcHJvcGVydHkpIHsKIAkJCQla X09CSl9IVF9QKCpjb250YWluZXIpLT51bnNldF9wcm9wZXJ0eSgqY29udGFpbmVyLCBvZmZzZXQg VFNSTUxTX0NDKTsKIAkJCX0gZWxzZSB7Ci0JCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWlu ZyB0byB1bnNldCBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJaWYgKFJFUE9SVF9FUlJP UihFX05PVElDRSkpIHsKKwkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byB1bnNl dCBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJfQogCQkJfQogCQkJaWYgKDApIHsKIAkJ CQl6dmFsX3B0cl9kdG9yKCZvZmZzZXQpOwpAQCAtMjIzOTYsMTQgKzIyNDg2LDE4IEBACiAJCQkJ aWYgKFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPmhhc19wcm9wZXJ0eSkgewogCQkJCQlyZXN1bHQg PSBaX09CSl9IVF9QKCpjb250YWluZXIpLT5oYXNfcHJvcGVydHkoKmNvbnRhaW5lciwgb2Zmc2V0 LCAob3BsaW5lLT5leHRlbmRlZF92YWx1ZSA9PSBaRU5EX0lTRU1QVFkpIFRTUk1MU19DQyk7CiAJ CQkJfSBlbHNlIHsKLQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBjaGVjayBw cm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJCWlmIChSRVBPUlRfRVJST1IoRV9OT1RJQ0Up KSB7CisJCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNoZWNrIHByb3BlcnR5 IG9mIG5vbi1vYmplY3QiKTsKKwkJCQkJfQogCQkJCQlyZXN1bHQgPSAwOwogCQkJCX0KIAkJCX0g ZWxzZSB7CiAJCQkJaWYgKFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPmhhc19kaW1lbnNpb24pIHsK IAkJCQkJcmVzdWx0ID0gWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+aGFzX2RpbWVuc2lvbigqY29u dGFpbmVyLCBvZmZzZXQsIChvcGxpbmUtPmV4dGVuZGVkX3ZhbHVlID09IFpFTkRfSVNFTVBUWSkg VFNSTUxTX0NDKTsKIAkJCQl9IGVsc2UgewotCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5 aW5nIHRvIGNoZWNrIGVsZW1lbnQgb2Ygbm9uLWFycmF5Iik7CisJCQkJCWlmIChSRVBPUlRfRVJS T1IoRV9OT1RJQ0UpKSB7CisJCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNo ZWNrIGVsZW1lbnQgb2Ygbm9uLWFycmF5Iik7CisJCQkJCX0KIAkJCQkJcmVzdWx0ID0gMDsKIAkJ CQl9CiAJCQl9CkBAIC0yMjczNSwxMyArMjI4MjksMTcgQEAKIAkJCXN3aXRjaCAodHlwZSkgewog CQkJCWNhc2UgQlBfVkFSX1I6CiAJCQkJY2FzZSBCUF9WQVJfVU5TRVQ6Ci0JCQkJCXplbmRfZXJy b3IoRV9OT1RJQ0UsIlVuZGVmaW5lZCB2YXJpYWJsZTogJVIiLCBaX1RZUEVfUCh2YXJuYW1lKSwg Wl9VTklWQUxfUCh2YXJuYW1lKSk7CisJCQkJCWlmIChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7 CisJCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCJVbmRlZmluZWQgdmFyaWFibGU6ICVSIiwgWl9U WVBFX1AodmFybmFtZSksIFpfVU5JVkFMX1AodmFybmFtZSkpOworCQkJCQl9CiAJCQkJCS8qIGJy ZWFrIG1pc3NpbmcgaW50ZW50aW9uYWxseSAqLwogCQkJCWNhc2UgQlBfVkFSX0lTOgogCQkJCQly ZXR2YWwgPSAmRUcodW5pbml0aWFsaXplZF96dmFsX3B0cik7CiAJCQkJCWJyZWFrOwogCQkJCWNh c2UgQlBfVkFSX1JXOgotCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCJVbmRlZmluZWQgdmFyaWFi bGU6ICVSIiwgWl9UWVBFX1AodmFybmFtZSksIFpfVU5JVkFMX1AodmFybmFtZSkpOworCQkJCQlp ZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwi VW5kZWZpbmVkIHZhcmlhYmxlOiAlUiIsIFpfVFlQRV9QKHZhcm5hbWUpLCBaX1VOSVZBTF9QKHZh cm5hbWUpKTsKKwkJCQkJfQogCQkJCQkvKiBicmVhayBtaXNzaW5nIGludGVudGlvbmFsbHkgKi8K IAkJCQljYXNlIEJQX1ZBUl9XOiB7CiAJCQkJCQl6dmFsICpuZXdfenZhbCA9ICZFRyh1bmluaXRp YWxpemVkX3p2YWwpOwpAQCAtMjI5OTQsNyArMjMwOTIsOSBAQAogCiAJCWlmIChJU19DViA9PSBJ U19DT05TVCB8fCBJU19DViA9PSBJU19UTVBfVkFSKSB7CiAJCQkvKiBOb3Qgc3VwcG9zZWQgdG8g aGFwcGVuLCBidXQgd2UnbGwgYWxsb3cgaXQgKi8KLQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJP bmx5IHZhcmlhYmxlIHJlZmVyZW5jZXMgc2hvdWxkIGJlIHJldHVybmVkIGJ5IHJlZmVyZW5jZSIp OworCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQl6ZW5kX2Vycm9yKEVfTk9U SUNFLCAiT25seSB2YXJpYWJsZSByZWZlcmVuY2VzIHNob3VsZCBiZSByZXR1cm5lZCBieSByZWZl cmVuY2UiKTsKKwkJCX0KIAkJCWdvdG8gcmV0dXJuX2J5X3ZhbHVlOwogCQl9CiAKQEAgLTIzMDEy LDcgKzIzMTEyLDkgQEAKIAkJCQlpZiAoSVNfQ1YgPT0gSVNfVkFSICYmICEwKSB7CiAJCQkJCVBa VkFMX0xPQ0soKnJldHZhbF9wdHJfcHRyKTsgLyogdW5kbyB0aGUgZWZmZWN0IG9mIGdldF96dmFs X3B0cl9wdHIoKSAqLwogCQkJCX0KLQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiT25seSB2YXJp YWJsZSByZWZlcmVuY2VzIHNob3VsZCBiZSByZXR1cm5lZCBieSByZWZlcmVuY2UiKTsKKwkJCQlp ZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAi T25seSB2YXJpYWJsZSByZWZlcmVuY2VzIHNob3VsZCBiZSByZXR1cm5lZCBieSByZWZlcmVuY2Ui KTsKKwkJCQl9CiAJCQkJZ290byByZXR1cm5fYnlfdmFsdWU7CiAJCQl9CiAJCX0KQEAgLTI0Nzkz LDcgKzI0ODk1LDkgQEAKIAogCWlmIChaX1RZUEVfUChjb250YWluZXIpICE9IElTX09CSkVDVCB8 fCAhWl9PQkpfSFRfUChjb250YWluZXIpLT5yZWFkX3Byb3BlcnR5KSB7CiAJCWlmICh0eXBlICE9 IEJQX1ZBUl9JUykgewotCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBnZXQgcHJv cGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsK KwkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGdldCBwcm9wZXJ0eSBvZiBub24t b2JqZWN0Iik7CisJCQl9CiAJCX0KIAkJaWYgKCFSRVRVUk5fVkFMVUVfVU5VU0VEKCZvcGxpbmUt PnJlc3VsdCkpIHsKIAkJCUFJX1NFVF9QVFIoRVhfVChvcGxpbmUtPnJlc3VsdC51LnZhcikudmFy LCBFRyh1bmluaXRpYWxpemVkX3p2YWxfcHRyKSk7CkBAIC0yNTQ2OCw3ICsyNTU3Miw5IEBACiAJ CQlpZiAoWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+dW5zZXRfcHJvcGVydHkpIHsKIAkJCQlaX09C Sl9IVF9QKCpjb250YWluZXIpLT51bnNldF9wcm9wZXJ0eSgqY29udGFpbmVyLCBvZmZzZXQgVFNS TUxTX0NDKTsKIAkJCX0gZWxzZSB7Ci0JCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0 byB1bnNldCBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJaWYgKFJFUE9SVF9FUlJPUihF X05PVElDRSkpIHsKKwkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byB1bnNldCBw cm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJfQogCQkJfQogCQkJaWYgKDApIHsKIAkJCQl6 dmFsX3B0cl9kdG9yKCZvZmZzZXQpOwpAQCAtMjU1ODIsMTQgKzI1Njg4LDE4IEBACiAJCQkJaWYg KFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPmhhc19wcm9wZXJ0eSkgewogCQkJCQlyZXN1bHQgPSBa X09CSl9IVF9QKCpjb250YWluZXIpLT5oYXNfcHJvcGVydHkoKmNvbnRhaW5lciwgb2Zmc2V0LCAo b3BsaW5lLT5leHRlbmRlZF92YWx1ZSA9PSBaRU5EX0lTRU1QVFkpIFRTUk1MU19DQyk7CiAJCQkJ fSBlbHNlIHsKLQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBjaGVjayBwcm9w ZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJCWlmIChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7 CisJCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNoZWNrIHByb3BlcnR5IG9m IG5vbi1vYmplY3QiKTsKKwkJCQkJfQogCQkJCQlyZXN1bHQgPSAwOwogCQkJCX0KIAkJCX0gZWxz ZSB7CiAJCQkJaWYgKFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPmhhc19kaW1lbnNpb24pIHsKIAkJ CQkJcmVzdWx0ID0gWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+aGFzX2RpbWVuc2lvbigqY29udGFp bmVyLCBvZmZzZXQsIChvcGxpbmUtPmV4dGVuZGVkX3ZhbHVlID09IFpFTkRfSVNFTVBUWSkgVFNS TUxTX0NDKTsKIAkJCQl9IGVsc2UgewotCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5n IHRvIGNoZWNrIGVsZW1lbnQgb2Ygbm9uLWFycmF5Iik7CisJCQkJCWlmIChSRVBPUlRfRVJST1Io RV9OT1RJQ0UpKSB7CisJCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNoZWNr IGVsZW1lbnQgb2Ygbm9uLWFycmF5Iik7CisJCQkJCX0KIAkJCQkJcmVzdWx0ID0gMDsKIAkJCQl9 CiAJCQl9CkBAIC0yNjUzMCw3ICsyNjY0MCw5IEBACiAKIAlpZiAoWl9UWVBFX1AoY29udGFpbmVy KSAhPSBJU19PQkpFQ1QgfHwgIVpfT0JKX0hUX1AoY29udGFpbmVyKS0+cmVhZF9wcm9wZXJ0eSkg ewogCQlpZiAodHlwZSAhPSBCUF9WQVJfSVMpIHsKLQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJU cnlpbmcgdG8gZ2V0IHByb3BlcnR5IG9mIG5vbi1vYmplY3QiKTsKKwkJCWlmIChSRVBPUlRfRVJS T1IoRV9OT1RJQ0UpKSB7CisJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBnZXQg cHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJfQogCQl9CiAJCWlmICghUkVUVVJOX1ZBTFVF X1VOVVNFRCgmb3BsaW5lLT5yZXN1bHQpKSB7CiAJCQlBSV9TRVRfUFRSKEVYX1Qob3BsaW5lLT5y ZXN1bHQudS52YXIpLnZhciwgRUcodW5pbml0aWFsaXplZF96dmFsX3B0cikpOwpAQCAtMjcxODIs NyArMjcyOTQsOSBAQAogCQkJaWYgKFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPnVuc2V0X3Byb3Bl cnR5KSB7CiAJCQkJWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+dW5zZXRfcHJvcGVydHkoKmNvbnRh aW5lciwgb2Zmc2V0IFRTUk1MU19DQyk7CiAJCQl9IGVsc2UgewotCQkJCXplbmRfZXJyb3IoRV9O T1RJQ0UsICJUcnlpbmcgdG8gdW5zZXQgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJCWlm IChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJU cnlpbmcgdG8gdW5zZXQgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJCX0KIAkJCX0KIAkJ CWlmICgxKSB7CiAJCQkJenZhbF9wdHJfZHRvcigmb2Zmc2V0KTsKQEAgLTI3Mjk2LDE0ICsyNzQx MCwxOCBAQAogCQkJCWlmIChaX09CSl9IVF9QKCpjb250YWluZXIpLT5oYXNfcHJvcGVydHkpIHsK IAkJCQkJcmVzdWx0ID0gWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+aGFzX3Byb3BlcnR5KCpjb250 YWluZXIsIG9mZnNldCwgKG9wbGluZS0+ZXh0ZW5kZWRfdmFsdWUgPT0gWkVORF9JU0VNUFRZKSBU U1JNTFNfQ0MpOwogCQkJCX0gZWxzZSB7Ci0JCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJUcnlp bmcgdG8gY2hlY2sgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJCQlpZiAoUkVQT1JUX0VS Uk9SKEVfTk9USUNFKSkgeworCQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBj aGVjayBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJCX0KIAkJCQkJcmVzdWx0ID0gMDsK IAkJCQl9CiAJCQl9IGVsc2UgewogCQkJCWlmIChaX09CSl9IVF9QKCpjb250YWluZXIpLT5oYXNf ZGltZW5zaW9uKSB7CiAJCQkJCXJlc3VsdCA9IFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPmhhc19k aW1lbnNpb24oKmNvbnRhaW5lciwgb2Zmc2V0LCAob3BsaW5lLT5leHRlbmRlZF92YWx1ZSA9PSBa RU5EX0lTRU1QVFkpIFRTUk1MU19DQyk7CiAJCQkJfSBlbHNlIHsKLQkJCQkJemVuZF9lcnJvcihF X05PVElDRSwgIlRyeWluZyB0byBjaGVjayBlbGVtZW50IG9mIG5vbi1hcnJheSIpOworCQkJCQlp ZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwg IlRyeWluZyB0byBjaGVjayBlbGVtZW50IG9mIG5vbi1hcnJheSIpOworCQkJCQl9CiAJCQkJCXJl c3VsdCA9IDA7CiAJCQkJfQogCQkJfQpAQCAtMjgyNDQsNyArMjgzNjIsOSBAQAogCiAJaWYgKFpf VFlQRV9QKGNvbnRhaW5lcikgIT0gSVNfT0JKRUNUIHx8ICFaX09CSl9IVF9QKGNvbnRhaW5lcikt PnJlYWRfcHJvcGVydHkpIHsKIAkJaWYgKHR5cGUgIT0gQlBfVkFSX0lTKSB7Ci0JCQl6ZW5kX2Vy cm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGdldCBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJ CQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCXplbmRfZXJyb3IoRV9OT1RJQ0Us ICJUcnlpbmcgdG8gZ2V0IHByb3BlcnR5IG9mIG5vbi1vYmplY3QiKTsKKwkJCX0KIAkJfQogCQlp ZiAoIVJFVFVSTl9WQUxVRV9VTlVTRUQoJm9wbGluZS0+cmVzdWx0KSkgewogCQkJQUlfU0VUX1BU UihFWF9UKG9wbGluZS0+cmVzdWx0LnUudmFyKS52YXIsIEVHKHVuaW5pdGlhbGl6ZWRfenZhbF9w dHIpKTsKQEAgLTI4OTQ2LDcgKzI5MDY2LDkgQEAKIAkJCWlmIChaX09CSl9IVF9QKCpjb250YWlu ZXIpLT51bnNldF9wcm9wZXJ0eSkgewogCQkJCVpfT0JKX0hUX1AoKmNvbnRhaW5lciktPnVuc2V0 X3Byb3BlcnR5KCpjb250YWluZXIsIG9mZnNldCBUU1JNTFNfQ0MpOwogCQkJfSBlbHNlIHsKLQkJ CQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIHVuc2V0IHByb3BlcnR5IG9mIG5vbi1v YmplY3QiKTsKKwkJCQlpZiAoUkVQT1JUX0VSUk9SKEVfTk9USUNFKSkgeworCQkJCQl6ZW5kX2Vy cm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIHVuc2V0IHByb3BlcnR5IG9mIG5vbi1vYmplY3QiKTsK KwkJCQl9CiAJCQl9CiAJCQlpZiAoMCkgewogCQkJCXp2YWxfcHRyX2R0b3IoJm9mZnNldCk7CkBA IC0yOTA2MCwxNCArMjkxODIsMTggQEAKIAkJCQlpZiAoWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+ aGFzX3Byb3BlcnR5KSB7CiAJCQkJCXJlc3VsdCA9IFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPmhh c19wcm9wZXJ0eSgqY29udGFpbmVyLCBvZmZzZXQsIChvcGxpbmUtPmV4dGVuZGVkX3ZhbHVlID09 IFpFTkRfSVNFTVBUWSkgVFNSTUxTX0NDKTsKIAkJCQl9IGVsc2UgewotCQkJCQl6ZW5kX2Vycm9y KEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNoZWNrIHByb3BlcnR5IG9mIG5vbi1vYmplY3QiKTsKKwkJ CQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJCXplbmRfZXJyb3IoRV9OT1RJ Q0UsICJUcnlpbmcgdG8gY2hlY2sgcHJvcGVydHkgb2Ygbm9uLW9iamVjdCIpOworCQkJCQl9CiAJ CQkJCXJlc3VsdCA9IDA7CiAJCQkJfQogCQkJfSBlbHNlIHsKIAkJCQlpZiAoWl9PQkpfSFRfUCgq Y29udGFpbmVyKS0+aGFzX2RpbWVuc2lvbikgewogCQkJCQlyZXN1bHQgPSBaX09CSl9IVF9QKCpj b250YWluZXIpLT5oYXNfZGltZW5zaW9uKCpjb250YWluZXIsIG9mZnNldCwgKG9wbGluZS0+ZXh0 ZW5kZWRfdmFsdWUgPT0gWkVORF9JU0VNUFRZKSBUU1JNTFNfQ0MpOwogCQkJCX0gZWxzZSB7Ci0J CQkJCXplbmRfZXJyb3IoRV9OT1RJQ0UsICJUcnlpbmcgdG8gY2hlY2sgZWxlbWVudCBvZiBub24t YXJyYXkiKTsKKwkJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQkJCXplbmRf ZXJyb3IoRV9OT1RJQ0UsICJUcnlpbmcgdG8gY2hlY2sgZWxlbWVudCBvZiBub24tYXJyYXkiKTsK KwkJCQkJfQogCQkJCQlyZXN1bHQgPSAwOwogCQkJCX0KIAkJCX0KQEAgLTMwNTA2LDcgKzMwNjMy LDkgQEAKIAogCWlmIChaX1RZUEVfUChjb250YWluZXIpICE9IElTX09CSkVDVCB8fCAhWl9PQkpf SFRfUChjb250YWluZXIpLT5yZWFkX3Byb3BlcnR5KSB7CiAJCWlmICh0eXBlICE9IEJQX1ZBUl9J UykgewotCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBnZXQgcHJvcGVydHkgb2Yg bm9uLW9iamVjdCIpOworCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkpIHsKKwkJCQl6ZW5k X2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGdldCBwcm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7 CisJCQl9CiAJCX0KIAkJaWYgKCFSRVRVUk5fVkFMVUVfVU5VU0VEKCZvcGxpbmUtPnJlc3VsdCkp IHsKIAkJCUFJX1NFVF9QVFIoRVhfVChvcGxpbmUtPnJlc3VsdC51LnZhcikudmFyLCBFRyh1bmlu aXRpYWxpemVkX3p2YWxfcHRyKSk7CkBAIC0zMTIwMyw3ICszMTMzMSw5IEBACiAJCQlpZiAoWl9P QkpfSFRfUCgqY29udGFpbmVyKS0+dW5zZXRfcHJvcGVydHkpIHsKIAkJCQlaX09CSl9IVF9QKCpj b250YWluZXIpLT51bnNldF9wcm9wZXJ0eSgqY29udGFpbmVyLCBvZmZzZXQgVFNSTUxTX0NDKTsK IAkJCX0gZWxzZSB7Ci0JCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byB1bnNldCBw cm9wZXJ0eSBvZiBub24tb2JqZWN0Iik7CisJCQkJaWYgKFJFUE9SVF9FUlJPUihFX05PVElDRSkp IHsKKwkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byB1bnNldCBwcm9wZXJ0eSBv ZiBub24tb2JqZWN0Iik7CisJCQkJfQogCQkJfQogCQkJaWYgKDApIHsKIAkJCQl6dmFsX3B0cl9k dG9yKCZvZmZzZXQpOwpAQCAtMzEzMTcsMTQgKzMxNDQ3LDE4IEBACiAJCQkJaWYgKFpfT0JKX0hU X1AoKmNvbnRhaW5lciktPmhhc19wcm9wZXJ0eSkgewogCQkJCQlyZXN1bHQgPSBaX09CSl9IVF9Q KCpjb250YWluZXIpLT5oYXNfcHJvcGVydHkoKmNvbnRhaW5lciwgb2Zmc2V0LCAob3BsaW5lLT5l eHRlbmRlZF92YWx1ZSA9PSBaRU5EX0lTRU1QVFkpIFRTUk1MU19DQyk7CiAJCQkJfSBlbHNlIHsK LQkJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIlRyeWluZyB0byBjaGVjayBwcm9wZXJ0eSBvZiBu b24tb2JqZWN0Iik7CisJCQkJCWlmIChSRVBPUlRfRVJST1IoRV9OT1RJQ0UpKSB7CisJCQkJCQl6 ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNoZWNrIHByb3BlcnR5IG9mIG5vbi1vYmpl Y3QiKTsKKwkJCQkJfQogCQkJCQlyZXN1bHQgPSAwOwogCQkJCX0KIAkJCX0gZWxzZSB7CiAJCQkJ aWYgKFpfT0JKX0hUX1AoKmNvbnRhaW5lciktPmhhc19kaW1lbnNpb24pIHsKIAkJCQkJcmVzdWx0 ID0gWl9PQkpfSFRfUCgqY29udGFpbmVyKS0+aGFzX2RpbWVuc2lvbigqY29udGFpbmVyLCBvZmZz ZXQsIChvcGxpbmUtPmV4dGVuZGVkX3ZhbHVlID09IFpFTkRfSVNFTVBUWSkgVFNSTUxTX0NDKTsK IAkJCQl9IGVsc2UgewotCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNoZWNr IGVsZW1lbnQgb2Ygbm9uLWFycmF5Iik7CisJCQkJCWlmIChSRVBPUlRfRVJST1IoRV9OT1RJQ0Up KSB7CisJCQkJCQl6ZW5kX2Vycm9yKEVfTk9USUNFLCAiVHJ5aW5nIHRvIGNoZWNrIGVsZW1lbnQg b2Ygbm9uLWFycmF5Iik7CisJCQkJCX0KIAkJCQkJcmVzdWx0ID0gMDsKIAkJCQl9CiAJCQl9CmRp ZmYgLXIgOTlhYjFkMmQwYTA3IGV4dC9pbWFwL3BocF9pbWFwLmMKLS0tIGEvZXh0L2ltYXAvcGhw X2ltYXAuYwlUaHUgU2VwIDE3IDE4OjE0OjM4IDIwMDkgKzA1MzAKKysrIGIvZXh0L2ltYXAvcGhw X2ltYXAuYwlUaHUgT2N0IDIyIDE4OjEwOjU0IDIwMDkgKzA1MzAKQEAgLTEwNzUsNyArMTA3NSw3 IEBACiAKIAlpZiAoSU1BUEcoaW1hcF9lcnJvcnN0YWNrKSAhPSBOSUwpIHsKIAkJLyogb3V0cHV0 IGFueSByZW1haW5pbmcgZXJyb3JzIGF0IHRoZWlyIG9yaWdpbmFsIGVycm9yIGxldmVsICovCi0J CWlmIChFRyhlcnJvcl9yZXBvcnRpbmcpICYgRV9OT1RJQ0UpIHsKKwkJaWYgKFJFUE9SVF9FUlJP UihFX05PVElDRSkpIHsKIAkJCWVjdXIgPSBJTUFQRyhpbWFwX2Vycm9yc3RhY2spOwogCQkJd2hp bGUgKGVjdXIgIT0gTklMKSB7CiAJCQkJcGhwX2Vycm9yX2RvY3JlZihOVUxMIFRTUk1MU19DQywg RV9OT1RJQ0UsICIlcyAoZXJyZmxnPSVsZCkiLCBlY3VyLT5MVEVYVCwgZWN1ci0+ZXJyZmxnKTsK QEAgLTEwODcsNyArMTA4Nyw3IEBACiAKIAlpZiAoSU1BUEcoaW1hcF9hbGVydHN0YWNrKSAhPSBO SUwpIHsKIAkJLyogb3V0cHV0IGFueSByZW1haW5pbmcgYWxlcnRzIGF0IEVfTk9USUNFIGxldmVs ICovCi0JCWlmIChFRyhlcnJvcl9yZXBvcnRpbmcpICYgRV9OT1RJQ0UpIHsKKwkJaWYgKFJFUE9S VF9FUlJPUihFX05PVElDRSkpIHsKIAkJCWFjdXIgPSBJTUFQRyhpbWFwX2FsZXJ0c3RhY2spOwog CQkJd2hpbGUgKGFjdXIgIT0gTklMKSB7CiAJCQkJcGhwX2Vycm9yX2RvY3JlZihOVUxMIFRTUk1M U19DQywgRV9OT1RJQ0UsICIlcyIsIGFjdXItPkxURVhUKTsKZGlmZiAtciA5OWFiMWQyZDBhMDcg bWFpbi9tYWluLmMKLS0tIGEvbWFpbi9tYWluLmMJVGh1IFNlcCAxNyAxODoxNDozOCAyMDA5ICsw NTMwCisrKyBiL21haW4vbWFpbi5jCVRodSBPY3QgMjIgMTg6MTA6NTQgMjAwOSArMDUzMApAQCAt MTMwOSw3ICsxMzA5LDcgQEAKIAkJY2FzZSBaTVNHX01FTU9SWV9MRUFLX0RFVEVDVEVEOgogCQlj YXNlIFpNU0dfTUVNT1JZX0xFQUtfUkVQRUFURUQ6CiAjaWYgWkVORF9ERUJVRwotCQkJaWYgKEVH KGVycm9yX3JlcG9ydGluZykgJiBFX1dBUk5JTkcpIHsKKwkJCWlmIChSRVBPUlRfRVJST1IoRV9X QVJOSU5HKSkgewogCQkJCWNoYXIgbWVtb3J5X2xlYWtfYnVmWzEwMjRdOwogCiAJCQkJaWYgKG1l c3NhZ2U9PVpNU0dfTUVNT1JZX0xFQUtfREVURUNURUQpIHsKQEAgLTEzMzcsNyArMTMzNyw3IEBA CiAJCQlicmVhazsKIAkJY2FzZSBaTVNHX01FTU9SWV9MRUFLU19HUkFORF9UT1RBTDoKICNpZiBa RU5EX0RFQlVHCi0JCQlpZiAoRUcoZXJyb3JfcmVwb3J0aW5nKSAmIEVfV0FSTklORykgeworCQkJ aWYgKFJFUE9SVF9FUlJPUihFX1dBUk5JTkcpKSB7CiAJCQkJY2hhciBtZW1vcnlfbGVha19idWZb NTEyXTsKIAogCQkJCXNucHJpbnRmKG1lbW9yeV9sZWFrX2J1ZiwgNTEyLCAiPT09IFRvdGFsICVk IG1lbW9yeSBsZWFrcyBkZXRlY3RlZCA9PT1cbiIsICooKHplbmRfdWludCAqKSBkYXRhKSk7CmRp ZmYgLXIgOTlhYjFkMmQwYTA3IG1haW4vc3RyZWFtcy9zdHJlYW1zLmMKLS0tIGEvbWFpbi9zdHJl YW1zL3N0cmVhbXMuYwlUaHUgU2VwIDE3IDE4OjE0OjM4IDIwMDkgKzA1MzAKKysrIGIvbWFpbi9z dHJlYW1zL3N0cmVhbXMuYwlUaHUgT2N0IDIyIDE4OjEwOjU0IDIwMDkgKzA1MzAKQEAgLTM5Myw3 ICszOTMsNyBAQAogCQkJemVuZF9oYXNoX2FwcGx5X3dpdGhfYXJndW1lbnQoJkVHKHBlcnNpc3Rl bnRfbGlzdCksIChhcHBseV9mdW5jX2FyZ190KSBfcGhwX3N0cmVhbV9mcmVlX3BlcnNpc3RlbnQs IHN0cmVhbSBUU1JNTFNfQ0MpOwogCQl9CiAjaWYgWkVORF9ERUJVRwotCQlpZiAoKGNsb3NlX29w dGlvbnMgJiBQSFBfU1RSRUFNX0ZSRUVfUlNSQ19EVE9SKSAmJiAoc3RyZWFtLT5fX2V4cG9zZWQg PT0gMCkgJiYgKEVHKGVycm9yX3JlcG9ydGluZykgJiBFX1dBUk5JTkcpKSB7CisJCWlmICgoY2xv c2Vfb3B0aW9ucyAmIFBIUF9TVFJFQU1fRlJFRV9SU1JDX0RUT1IpICYmIChzdHJlYW0tPl9fZXhw b3NlZCA9PSAwKSAmJiBSRVBPUlRfRVJST1IoRV9XQVJOSU5HKSkgewogCQkJLyogaXQgbGVha2Vk OiBMZXRzIGRlbGliZXJhdGVseSBOT1QgcGVmcmVlIGl0IHNvIHRoYXQgdGhlIG1lbW9yeSBtYW5h Z2VyIHNob3dzIGl0CiAJCQkgKiBhcyBsZWFrZWQ7IGl0IHdpbGwgbG9nIGEgd2FybmluZywgYnV0 IGxldHMgaGVscCBpdCBvdXQgYW5kIGRpc3BsYXkgd2hhdCBraW5kCiAJCQkgKiBvZiBzdHJlYW0g aXQgd2FzLiAqLwo= --00504502ad143c8c2604772651ce--