From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Antipov Newsgroups: gmane.emacs.devel Subject: [RFC] Omit all GCPRO stuff if GC_MAKE_GCPROS_NOOPS Date: Sun, 15 Jul 2012 21:34:42 +0400 Message-ID: <5002FF32.2090308@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050606070908000607020405" X-Trace: dough.gmane.org 1342373562 2203 80.91.229.3 (15 Jul 2012 17:32:42 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sun, 15 Jul 2012 17:32:42 +0000 (UTC) To: Emacs development discussions Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Jul 15 19:32:41 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1SqSgS-000555-65 for ged-emacs-devel@m.gmane.org; Sun, 15 Jul 2012 19:32:40 +0200 Original-Received: from localhost ([::1]:37947 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SqSgR-00071s-GO for ged-emacs-devel@m.gmane.org; Sun, 15 Jul 2012 13:32:39 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:56447) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SqSgJ-00071A-Gg for emacs-devel@gnu.org; Sun, 15 Jul 2012 13:32:37 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SqSgD-0008LB-FO for emacs-devel@gnu.org; Sun, 15 Jul 2012 13:32:31 -0400 Original-Received: from forward2h.mail.yandex.net ([84.201.187.147]:35904) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SqSgC-0008KB-6O for emacs-devel@gnu.org; Sun, 15 Jul 2012 13:32:25 -0400 Original-Received: from smtp2h.mail.yandex.net (smtp2h.mail.yandex.net [84.201.187.145]) by forward2h.mail.yandex.net (Yandex) with ESMTP id 64C51701C0D for ; Sun, 15 Jul 2012 21:32:22 +0400 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1342373542; bh=zkxyOgFUJMEjNQ38HH4AxvGleXQ1yrmCokqVXoXlDtk=; h=Message-ID:Date:From:MIME-Version:To:Subject:Content-Type; b=XafUylPYh8/nwG9xgKIQur0IY9M2Xi0IGQpk8KsKMS0SdiU16aa4Qn3/Iv/hPC5KY hzsdvarRNNv3PjSlNhzYK9H5MLp/vJ1h4CFkZayzD2gj6PykigBM8/siG0mTD2sIjJ SqyzlKepzHrqarjwiKX5H1VaIbd13LkwoLZ+1fVY= Original-Received: from smtp2h.mail.yandex.net (localhost [127.0.0.1]) by smtp2h.mail.yandex.net (Yandex) with ESMTP id 4BEC9170006D for ; Sun, 15 Jul 2012 21:32:22 +0400 (MSK) Original-Received: from 216.gprs.mts.ru (216.gprs.mts.ru [213.87.128.216]) by smtp2h.mail.yandex.net (nwsmtp/Yandex) with ESMTP id WJKuBaoB-WKKiQVoi; Sun, 15 Jul 2012 21:32:20 +0400 X-Yandex-Rcpt-Suid: emacs-devel@gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1342373542; bh=zkxyOgFUJMEjNQ38HH4AxvGleXQ1yrmCokqVXoXlDtk=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: Content-Type; b=J4jdz4tSrBjsxLU+P6zRajdg/xmtsC4kjRidL2Q7D+q3mh4djAu3J/xHSuavFUw6Z mT7Ibo/ywGxZoW3Zcq+siqfuq09Fym+G5mwaLF/DSATcY1+JsTXJh66O6vKmlhGpuR NBvAR8ZJtUa4IozwEtGJfFZNrFm2T4i9W8XWWHL0= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 84.201.187.147 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:151631 Archived-At: This is a multi-part message in MIME format. --------------050606070908000607020405 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This patch moves all GCPRO stuff out of compilation if GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS. Dmitry --------------050606070908000607020405 Content-Type: text/plain; charset=UTF-8; name="gcpro.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="gcpro.patch" PT09IG1vZGlmaWVkIGZpbGUgJ2NvbmZpZ3VyZS5hYycKLS0tIGNvbmZpZ3VyZS5hYwkyMDEy LTA3LTE0IDAwOjA0OjEwICswMDAwCisrKyBjb25maWd1cmUuYWMJMjAxMi0wNy0xNSAxNzox NDoxMiArMDAwMApAQCAtNDI2NSw2ICs0MjY1LDggQEAKIAogI2RlZmluZSBBVFRSSUJVVEVf Q09OU1QgX0dMX0FUVFJJQlVURV9DT05TVAogCisjZGVmaW5lIEFUVFJJQlVURV9VTlVTRUQg X0dMX1VOVVNFRAorCiAvKiBTb21lIHZlcnNpb25zIG9mIEdOVS9MaW51eCBkZWZpbmUgbm9p bmxpbmUgaW4gdGhlaXIgaGVhZGVycy4gICovCiAjaWZkZWYgbm9pbmxpbmUKICN1bmRlZiBu b2lubGluZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9j LmMJMjAxMi0wNy0xNSAxMToxNzowOSArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMi0wNy0x NSAxNToyMzoyMyArMDAwMApAQCAtNDE5LDggKzQxOSw5IEBACiAjZW5kaWYKIAogLyogUmVj b3JkaW5nIHdoYXQgbmVlZHMgdG8gYmUgbWFya2VkIGZvciBnYy4gICovCi0KKyNpZiBHQ19N QVJLX1NUQUNLICE9IEdDX01BS0VfR0NQUk9TX05PT1BTCiBzdHJ1Y3QgZ2Nwcm8gKmdjcHJv bGlzdDsKKyNlbmRpZgogCiAvKiBBZGRyZXNzZXMgb2Ygc3RhdGljcHJvJ2QgdmFyaWFibGVz LiAgSW5pdGlhbGl6ZSBpdCB0byBhIG5vbnplcm8KICAgIHZhbHVlOyBvdGhlcndpc2Ugc29t ZSBjb21waWxlcnMgcHV0IGl0IGludG8gQlNTLiAgKi8KQEAgLTQ3MzUsNyArNDczNiw3IEBA CiAJYWJvcnQgKCk7CiB9CiAKLSNlbGlmIEdDX01BUktfU1RBQ0sgPT0gR0NfVVNFX0dDUFJP U19DSEVDS19aT01CSUVTCisjZWxpZiBHQ19NQVJLX1NUQUNLID09IEdDX1VTRV9HQ1BST1Nf Q0hFQ0tfWk9NQklFUyAmJiAwCiAKIHN0YXRpYyB2b2lkCiBkdW1wX3pvbWJpZXMgKHZvaWQp CkBAIC02Njc1LDggKzY2NzYsOCBAQAogdm9pZAogaW5pdF9hbGxvYyAodm9pZCkKIHsKLSAg Z2Nwcm9saXN0ID0gMDsKLSAgYnl0ZV9zdGFja19saXN0ID0gMDsKKyAgSUZfR0NQUk8gKGdj cHJvbGlzdCA9IE5VTEwpOworICBieXRlX3N0YWNrX2xpc3QgPSBOVUxMOwogI2lmIEdDX01B UktfU1RBQ0sKICNpZiAhZGVmaW5lZCBHQ19TQVZFX1JFR0lTVEVSU19PTl9TVEFDSyAmJiAh ZGVmaW5lZCBHQ19TRVRKTVBfV09SS1MKICAgc2V0am1wX3Rlc3RlZF9wID0gbG9uZ2ptcHNf ZG9uZSA9IDA7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2JpZGkuYycKLS0tIHNyYy9iaWRp LmMJMjAxMi0wNy0wNSAxODozNTo0OCArMDAwMAorKysgc3JjL2JpZGkuYwkyMDEyLTA3LTE1 IDE0OjQzOjI4ICswMDAwCkBAIC0yMzA2LDcgKzIzMDYsNyBAQAogewogICBpbnQgb2xkX2xl dmVsLCBuZXdfbGV2ZWwsIG5leHRfbGV2ZWw7CiAgIHN0cnVjdCBiaWRpX2l0IHNlbnRpbmVs OwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAKICAgaWYgKGJpZGlf aXQtPmNoYXJwb3MgPCAwIHx8IGJpZGlfaXQtPmJ5dGVwb3MgPCAwKQogICAgIGFib3J0ICgp OwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9idWZmZXIuYycKLS0tIHNyYy9idWZmZXIuYwky MDEyLTA3LTEwIDIzOjI0OjM2ICswMDAwCisrKyBzcmMvYnVmZmVyLmMJMjAxMi0wNy0xNSAx NDo0MzoyOCArMDAwMApAQCAtMTQ2Miw3ICsxNDYyLDcgQEAKICAgcmVnaXN0ZXIgc3RydWN0 IGJ1ZmZlciAqYjsKICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOwogICByZWdpc3RlciBz dHJ1Y3QgTGlzcF9NYXJrZXIgKm07Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdD UFJPMTsKIAogICBpZiAoTklMUCAoYnVmZmVyX29yX25hbWUpKQogICAgIGJ1ZmZlciA9IEZj dXJyZW50X2J1ZmZlciAoKTsKQEAgLTIxODEsNyArMjE4MSw3IEBACiAgIGludCBuYXJyb3dl ZCA9IChCRUcgIT0gQkVHViB8fCBaICE9IFpWKTsKICAgaW50IG1vZGlmaWVkX3AgPSAhTklM UCAoRmJ1ZmZlcl9tb2RpZmllZF9wIChRbmlsKSk7CiAgIExpc3BfT2JqZWN0IG9sZF91bmRv ID0gQlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCk7Ci0gIHN0cnVjdCBnY3BybyBn Y3BybzE7CisgIERFRkdDUFJPMTsKIAogICBpZiAoY3VycmVudF9idWZmZXItPmJhc2VfYnVm ZmVyKQogICAgIGVycm9yICgiQ2Fubm90IGRvIGBzZXQtYnVmZmVyLW11bHRpYnl0ZScgb24g YW4gaW5kaXJlY3QgYnVmZmVyIik7CkBAIC00MTQ5LDcgKzQxNDksNyBAQAogICBzdHJ1Y3Qg TGlzcF9PdmVybGF5ICp0YWlsOwogICAvKiAxIGlmIHRoaXMgY2hhbmdlIGlzIGFuIGluc2Vy dGlvbi4gICovCiAgIGludCBpbnNlcnRpb24gPSAoYWZ0ZXIgPyBYRkFTVElOVCAoYXJnMykg PT0gMCA6IEVRIChzdGFydCwgZW5kKSk7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJv MiwgZ2Nwcm8zLCBnY3BybzQ7CisgIERFRkdDUFJPNDsKIAogICBvdmVybGF5ID0gUW5pbDsK ICAgdGFpbCA9IE5VTEw7CkBAIC00MjUzLDggKzQyNTMsNyBAQAogCiAgICAgbWVtY3B5IChj b3B5LCBYVkVDVE9SIChsYXN0X292ZXJsYXlfbW9kaWZpY2F0aW9uX2hvb2tzKS0+Y29udGVu dHMsCiAJICAgIHNpemUgKiBzaXplb2YgKExpc3BfT2JqZWN0KSk7Ci0gICAgZ2Nwcm8xLnZh ciA9IGNvcHk7Ci0gICAgZ2Nwcm8xLm52YXJzID0gc2l6ZTsKKyAgICBJRl9HQ1BSTyAoZ2Nw cm8xLnZhciA9IGNvcHk7IGdjcHJvMS5udmFycyA9IHNpemUpOwogCiAgICAgZm9yIChpID0g MDsgaSA8IHNpemU7KQogICAgICAgewpAQCAtNDI3MSw3ICs0MjcwLDcgQEAKIGNhbGxfb3Zl cmxheV9tb2RfaG9va3MgKExpc3BfT2JqZWN0IGxpc3QsIExpc3BfT2JqZWN0IG92ZXJsYXks IGludCBhZnRlciwKIAkJCUxpc3BfT2JqZWN0IGFyZzEsIExpc3BfT2JqZWN0IGFyZzIsIExp c3BfT2JqZWN0IGFyZzMpCiB7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nw cm8zLCBnY3BybzQ7CisgIERFRkdDUFJPNDsKIAogICBHQ1BSTzQgKGxpc3QsIGFyZzEsIGFy ZzIsIGFyZzMpOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2NhbGxpbnQuYycKLS0tIHNy Yy9jYWxsaW50LmMJMjAxMi0wNy0xMCAxNjo1MzoyNiArMDAwMAorKysgc3JjL2NhbGxpbnQu YwkyMDEyLTA3LTE1IDE0OjQzOjI4ICswMDAwCkBAIC0yNzUsNyArMjc1LDcgQEAKICAgcHRy ZGlmZl90IGksIG5hcmdzOwogICBpbnQgZm9vOwogICBpbnQgYXJnX2Zyb21fdHR5ID0gMDsK LSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzMsIGdjcHJvNCwgZ2Nwcm81 OworICBERUZHQ1BSTzU7CiAgIHB0cmRpZmZfdCBrZXlfY291bnQ7CiAgIGludCByZWNvcmRf dGhlbl9mYWlsID0gMDsKIApAQCAtNDgxLDggKzQ4MSw3IEBACiAgICAgfQogCiAgIEdDUFJP NSAocHJlZml4X2FyZywgZnVuY3Rpb24sICphcmdzLCAqdmlzYXJncywgdXBfZXZlbnQpOwot ICBnY3BybzMubnZhcnMgPSBuYXJnczsKLSAgZ2Nwcm80Lm52YXJzID0gbmFyZ3M7CisgIElG X0dDUFJPIChnY3BybzMubnZhcnMgPSBuYXJnczsgZ2Nwcm80Lm52YXJzID0gbmFyZ3MpOwog CiAgIGlmICghTklMUCAoZW5hYmxlKSkKICAgICBzcGVjYmluZCAoUWVuYWJsZV9yZWN1cnNp dmVfbWluaWJ1ZmZlcnMsIFF0KTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvY2FsbHByb2Mu YycKLS0tIHNyYy9jYWxscHJvYy5jCTIwMTItMDctMDkgMjE6Mjg6MzkgKzAwMDAKKysrIHNy Yy9jYWxscHJvYy5jCTIwMTItMDctMTUgMTQ6NDM6MjggKzAwMDAKQEAgLTM1MCw3ICszNTAs NyBAQAogICAgICBwcm90ZWN0ZWQgYnkgdGhlIGNhbGxlciwgc28gYWxsIHdlIHJlYWxseSBo YXZlIHRvIHdvcnJ5IGFib3V0IGlzCiAgICAgIGJ1ZmZlci4gICovCiAgIHsKLSAgICBzdHJ1 Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJvMywgZ2Nwcm80LCBnY3BybzU7CisgICAg REVGR0NQUk81OwogCiAgICAgY3VycmVudF9kaXIgPSBCVkFSIChjdXJyZW50X2J1ZmZlciwg ZGlyZWN0b3J5KTsKIApAQCAtNDA5LDcgKzQwOSw3IEBACiAKICAgLyogU2VhcmNoIGZvciBw cm9ncmFtOyBiYXJmIGlmIG5vdCBmb3VuZC4gICovCiAgIHsKLSAgICBzdHJ1Y3QgZ2Nwcm8g Z2Nwcm8xLCBnY3BybzIsIGdjcHJvMywgZ2Nwcm80OworICAgIERFRkdDUFJPNDsKIAogICAg IEdDUFJPNCAoaW5maWxlLCBidWZmZXIsIGN1cnJlbnRfZGlyLCBlcnJvcl9maWxlKTsKICAg ICBvcGVucCAoVmV4ZWNfcGF0aCwgYXJnc1swXSwgVmV4ZWNfc3VmZml4ZXMsICZwYXRoLCBt YWtlX251bWJlciAoWF9PSykpOwpAQCAtNDMyLDcgKzQzMiw3IEBACiAgIGlmIChuYXJncyA+ IDQpCiAgICAgewogICAgICAgcHRyZGlmZl90IGk7Ci0gICAgICBzdHJ1Y3QgZ2Nwcm8gZ2Nw cm8xLCBnY3BybzIsIGdjcHJvMywgZ2Nwcm80LCBnY3BybzU7CisgICAgICBERUZHQ1BSTzU7 CiAKICAgICAgIEdDUFJPNSAoaW5maWxlLCBidWZmZXIsIGN1cnJlbnRfZGlyLCBwYXRoLCBl cnJvcl9maWxlKTsKICAgICAgIGFyZ3VtZW50X2NvZGluZy5kc3RfbXVsdGlieXRlID0gMDsK QEAgLTk3MCw3ICs5NzAsNyBAQAogdXNhZ2U6IChjYWxsLXByb2Nlc3MtcmVnaW9uIFNUQVJU IEVORCBQUk9HUkFNICZvcHRpb25hbCBERUxFVEUgQlVGRkVSIERJU1BMQVkgJnJlc3QgQVJH UykgICovKQogICAocHRyZGlmZl90IG5hcmdzLCBMaXNwX09iamVjdCAqYXJncykKIHsKLSAg c3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQUk8xOwogICBMaXNwX09iamVjdCBmaWxl bmFtZV9zdHJpbmc7CiAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN0YXJ0LCBlbmQ7CiAgIHB0 cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAn c3JjL2NoYXJzZXQuYycKLS0tIHNyYy9jaGFyc2V0LmMJMjAxMi0wNy0wNSAxODozNTo0OCAr MDAwMAorKysgc3JjL2NoYXJzZXQuYwkyMDEyLTA3LTE1IDE0OjQzOjI4ICswMDAwCkBAIC02 NjUsNyArNjY1LDcgQEAKICAgaW50IHRvX2lkeCA9IENPREVfUE9JTlRfVE9fSU5ERVggKHRl bXBfY2hhcnNldF93b3JrLT5jdXJyZW50LCB0byk7CiAgIExpc3BfT2JqZWN0IHJhbmdlOwog ICBpbnQgYywgc3RvcDsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQUk8xOwog CiAgIHJhbmdlID0gRmNvbnMgKFFuaWwsIFFuaWwpOwogICBHQ1BSTzEgKHJhbmdlKTsKCj09 PSBtb2RpZmllZCBmaWxlICdzcmMvY2hhcnRhYi5jJwotLS0gc3JjL2NoYXJ0YWIuYwkyMDEx LTEyLTExIDAwOjU2OjUwICswMDAwCisrKyBzcmMvY2hhcnRhYi5jCTIwMTItMDctMTUgMTQ6 NDM6MjggKzAwMDAKQEAgLTg4Miw3ICs4ODIsNyBAQAogCQlMaXNwX09iamVjdCBmdW5jdGlv biwgTGlzcF9PYmplY3QgdGFibGUsIExpc3BfT2JqZWN0IGFyZykKIHsKICAgTGlzcF9PYmpl Y3QgcmFuZ2UsIHZhbCwgcGFyZW50OwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIs IGdjcHJvMywgZ2Nwcm80OworICBERUZHQ1BSTzQ7CiAgIHVuaXByb3BfZGVjb2Rlcl90IGRl Y29kZXIgPSBVTklQUk9QX0dFVF9ERUNPREVSICh0YWJsZSk7CiAKICAgcmFuZ2UgPSBGY29u cyAobWFrZV9udW1iZXIgKDApLCBtYWtlX251bWJlciAoTUFYX0NIQVIpKTsKQEAgLTEwNTIs NyArMTA1Miw3IEBACiB7CiAgIExpc3BfT2JqZWN0IHJhbmdlOwogICBpbnQgYywgaTsKLSAg c3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQUk8xOwogCiAgIHJhbmdlID0gRmNvbnMg KFFuaWwsIFFuaWwpOwogICBHQ1BSTzEgKHJhbmdlKTsKQEAgLTEzMjgsNyArMTMyOCw3IEBA CiAgIHRhYmxlID0gWENEUiAodmFsKTsKICAgaWYgKFNUUklOR1AgKHRhYmxlKSkKICAgICB7 Ci0gICAgICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICAgICAgREVGR0NQUk8xOwogICAgICAg R0NQUk8xICh2YWwpOwogICAgICAgcmVzdWx0ID0gRmxvYWQgKGNvbmNhdDIgKGJ1aWxkX3N0 cmluZyAoImludGVybmF0aW9uYWwvIiksIHRhYmxlKSwKIAkJICAgICAgUXQsIFF0LCBRdCwg UXQpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9jb2RpbmcuYycKLS0tIHNyYy9jb2Rpbmcu YwkyMDEyLTA3LTExIDA3OjE5OjQ0ICswMDAwCisrKyBzcmMvY29kaW5nLmMJMjAxMi0wNy0x NSAxNDo0MzoyOCArMDAwMApAQCAtNzU3OSw3ICs3NTc5LDcgQEAKIGNvZGVfY29udmVyc2lv bl9yZXN0b3JlIChMaXNwX09iamVjdCBhcmcpCiB7CiAgIExpc3BfT2JqZWN0IGN1cnJlbnQs IHdvcmtidWY7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdDUFJPMTsKIAogICBH Q1BSTzEgKGFyZyk7CiAgIGN1cnJlbnQgPSBYQ0FSIChhcmcpOwpAQCAtNzc4Nyw3ICs3Nzg3 LDcgQEAKIAogICBpZiAoISBOSUxQIChDT0RJTkdfQVRUUl9QT1NUX1JFQUQgKGF0dHJzKSkp CiAgICAgewotICAgICAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzMsIGdj cHJvNCwgZ2Nwcm81OworICAgICAgREVGR0NQUk81OwogICAgICAgcHRyZGlmZl90IHByZXZf WiA9IFosIHByZXZfWl9CWVRFID0gWl9CWVRFOwogICAgICAgTGlzcF9PYmplY3QgdmFsOwog CkBAIC03OTMyLDcgKzc5MzIsNyBAQAogCiAgICAgICB7CiAJTGlzcF9PYmplY3QgYXJnc1sz XTsKLQlzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJvMywgZ2Nwcm80LCBnY3By bzU7CisJREVGR0NQUk81OwogCiAJR0NQUk81IChjb2RpbmctPnNyY19vYmplY3QsIGNvZGlu Zy0+ZHN0X29iamVjdCwgc3JjX29iamVjdCwgZHN0X29iamVjdCwKIAkJb2xkX2RlYWN0aXZh dGVfbWFyayk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2RhdGEuYycKLS0tIHNyYy9kYXRh LmMJMjAxMi0wNy0xMCAwODo0Mzo0NiArMDAwMAorKysgc3JjL2RhdGEuYwkyMDEyLTA3LTE1 IDE0OjQzOjI4ICswMDAwCkBAIC03NTksNyArNzU5LDcgQEAKIAlyZXR1cm4gRmFzc3EgKFFp bnRlcmFjdGl2ZSwgRmNkciAoWENEUiAoZnVuKSkpOwogICAgICAgZWxzZSBpZiAoRVEgKGZ1 bmNhciwgUWF1dG9sb2FkKSkKIAl7Ci0JICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworCSAgREVG R0NQUk8xOwogCSAgR0NQUk8xIChjbWQpOwogCSAgZG9fYXV0b2xvYWQgKGZ1biwgY21kKTsK IAkgIFVOR0NQUk87CkBAIC0xNDMxLDcgKzE0MzEsNyBAQAogewogICByZWdpc3RlciBMaXNw X09iamVjdCBhcmdzX2xlZnQ7CiAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbCwgc3ltYm9s OwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAKICAgaWYgKE5JTFAg KGFyZ3MpKQogICAgIHJldHVybiBRbmlsOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9kYnVz YmluZC5jJwotLS0gc3JjL2RidXNiaW5kLmMJMjAxMi0wNy0xMCAwODo0Mzo0NiArMDAwMAor Kysgc3JjL2RidXNiaW5kLmMJMjAxMi0wNy0xNSAxNDo0MzoyOCArMDAwMApAQCAtOTIwLDcg KzkyMCw3IEBACiAgICAgY2FzZSBEQlVTX1RZUEVfRElDVF9FTlRSWToKICAgICAgIHsKIAlM aXNwX09iamVjdCByZXN1bHQ7Ci0Jc3RydWN0IGdjcHJvIGdjcHJvMTsKKwlERUZHQ1BSTzE7 CiAJREJ1c01lc3NhZ2VJdGVyIHN1Yml0ZXI7CiAJaW50IHN1YnR5cGU7CiAJcmVzdWx0ID0g UW5pbDsKQEAgLTEyNDYsNyArMTI0Niw3IEBACiAgIExpc3BfT2JqZWN0IGludGVyZmFjZSA9 IFFuaWw7CiAgIExpc3BfT2JqZWN0IG1lbWJlciA9IFFuaWw7CiAgIExpc3BfT2JqZWN0IHJl c3VsdDsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzMsIGdjcHJvNCwg Z2Nwcm81LCBnY3BybzY7CisgIERFRkdDUFJPNjsKICAgREJ1c0Nvbm5lY3Rpb24gKmNvbm5l Y3Rpb247CiAgIERCdXNNZXNzYWdlICpkbWVzc2FnZTsKICAgREJ1c01lc3NhZ2VJdGVyIGl0 ZXI7CkBAIC0xNTAyLDcgKzE1MDIsNyBAQAogeGRfcmVhZF9tZXNzYWdlXzEgKERCdXNDb25u ZWN0aW9uICpjb25uZWN0aW9uLCBMaXNwX09iamVjdCBidXMpCiB7CiAgIExpc3BfT2JqZWN0 IGFyZ3MsIGtleSwgdmFsdWU7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdDUFJP MTsKICAgc3RydWN0IGlucHV0X2V2ZW50IGV2ZW50OwogICBEQnVzTWVzc2FnZSAqZG1lc3Nh Z2U7CiAgIERCdXNNZXNzYWdlSXRlciBpdGVyOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9k aXJlZC5jJwotLS0gc3JjL2RpcmVkLmMJMjAxMi0wNy0wMyAxODoyNDo0MiArMDAwMAorKysg c3JjL2RpcmVkLmMJMjAxMi0wNy0xNSAxNDo0MzoyOCArMDAwMApAQCAtMTIyLDcgKzEyMiw3 IEBACiAgIHN0cnVjdCByZV9wYXR0ZXJuX2J1ZmZlciAqYnVmcCA9IE5VTEw7CiAgIGludCBu ZWVkc2VwID0gMDsKICAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKLSAg c3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzMsIGdjcHJvNCwgZ2Nwcm81Owor ICBERUZHQ1BSTzU7CiAgIERJUkVOVFJZICpkcDsKICNpZmRlZiBXSU5ET1dTTlQKICAgTGlz cF9PYmplY3QgdzMyX3NhdmUgPSBRbmlsOwpAQCAtMjI5LDcgKzIyOSw3IEBACiAJICBwdHJk aWZmX3QgbGVuOwogCSAgaW50IHdhbnRlZCA9IDA7CiAJICBMaXNwX09iamVjdCBuYW1lLCBm aW5hbG5hbWU7Ci0JICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzI7CisJICBERUZHQ1BS TzI7CiAKIAkgIGxlbiA9IE5BTUxFTiAoZHApOwogCSAgbmFtZSA9IGZpbmFsbmFtZSA9IG1h a2VfdW5pYnl0ZV9zdHJpbmcgKGRwLT5kX25hbWUsIGxlbik7CkBAIC0yODksNyArMjg5LDcg QEAKIAkJICAvKiBDb25zdHJ1Y3QgYW4gZXhwYW5kZWQgZmlsZW5hbWUgZm9yIHRoZSBkaXJl Y3RvcnkgZW50cnkuCiAJCSAgICAgVXNlIHRoZSBkZWNvZGVkIG5hbWVzIGZvciBpbnB1dCB0 byBGZmlsZV9hdHRyaWJ1dGVzLiAgKi8KIAkJICBMaXNwX09iamVjdCBkZWNvZGVkX2Z1bGxu YW1lLCBmaWxlYXR0cnM7Ci0JCSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yOworCQkg IERFRkdDUFJPMjsKIAogCQkgIGRlY29kZWRfZnVsbG5hbWUgPSBmaWxlYXR0cnMgPSBRbmls OwogCQkgIEdDUFJPMiAoZGVjb2RlZF9mdWxsbmFtZSwgZmlsZWF0dHJzKTsKQEAgLTQ2NCw3 ICs0NjQsNyBAQAogICAgICBhbnl0aGluZy4gICovCiAgIGludCBpbmNsdWRlYWxsID0gMTsK ICAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKLSAgc3RydWN0IGdjcHJv IGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzMsIGdjcHJvNCwgZ2Nwcm81OworICBERUZHQ1BSTzU7 CiAKICAgZWx0ID0gUW5pbDsKIApAQCAtNjczLDcgKzY3Myw3IEBACiAgICAgICBpZiAoIU5J TFAgKHByZWRpY2F0ZSkpCiAJewogCSAgTGlzcF9PYmplY3QgdmFsOwotCSAgc3RydWN0IGdj cHJvIGdjcHJvMTsKKwkgIERFRkdDUFJPMTsKIAogCSAgR0NQUk8xIChuYW1lKTsKIAkgIHZh bCA9IGNhbGwxIChwcmVkaWNhdGUsIG5hbWUpOwpAQCAtOTM1LDcgKzkzNSw3IEBACiAgIGNo YXIgbW9kZXNbc2l6ZW9mICItcnd4ci14ci14ICJdOwogCiAgIExpc3BfT2JqZWN0IGhhbmRs ZXI7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdDUFJPMTsKICAgY2hhciAqdW5h bWUgPSBOVUxMLCAqZ25hbWUgPSBOVUxMOwogCiAgIGZpbGVuYW1lID0gRmV4cGFuZF9maWxl X25hbWUgKGZpbGVuYW1lLCBRbmlsKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZG9jLmMn Ci0tLSBzcmMvZG9jLmMJMjAxMi0wNy0xMCAyMTo0ODozNCArMDAwMAorKysgc3JjL2RvYy5j CTIwMTItMDctMTUgMTQ6NDM6MjggKzAwMDAKQEAgLTMwNiw3ICszMDYsNyBAQAogewogI2lm IDAKICAgTGlzcF9PYmplY3QgcmVwbHksIHByb21wdFszXTsKLSAgc3RydWN0IGdjcHJvIGdj cHJvMTsKKyAgREVGR0NQUk8xOwogICBHQ1BSTzEgKGZpbGUpOwogICBwcm9tcHRbMF0gPSBi dWlsZF9zdHJpbmcgKCJGaWxlICIpOwogICBwcm9tcHRbMV0gPSBOSUxQIChmaWxlKSA/IFZk b2NfZmlsZV9uYW1lIDogZmlsZTsKQEAgLTQzNiw3ICs0MzYsNyBAQAogICAgICAgaWYgKE5J TFAgKHRlbSkgJiYgdHJ5X3JlbG9hZCkKIAl7CiAJICAvKiBUaGUgZmlsZSBpcyBuZXdlciwg d2UgbmVlZCB0byByZXNldCB0aGUgcG9pbnRlcnMuICAqLwotCSAgc3RydWN0IGdjcHJvIGdj cHJvMSwgZ2Nwcm8yOworCSAgREVGR0NQUk8yOwogCSAgR0NQUk8yIChmdW5jdGlvbiwgcmF3 KTsKIAkgIHRyeV9yZWxvYWQgPSByZXJlYWRfZG9jX2ZpbGUgKEZjYXJfc2FmZSAoZG9jKSk7 CiAJICBVTkdDUFJPOwpAQCAtNDgxLDcgKzQ4MSw3IEBACiAgICAgICBpZiAoTklMUCAodGVt KSAmJiB0cnlfcmVsb2FkKQogCXsKIAkgIC8qIFRoZSBmaWxlIGlzIG5ld2VyLCB3ZSBuZWVk IHRvIHJlc2V0IHRoZSBwb2ludGVycy4gICovCi0JICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBn Y3BybzIsIGdjcHJvMzsKKwkgIERFRkdDUFJPMzsKIAkgIEdDUFJPMyAoc3ltYm9sLCBwcm9w LCByYXcpOwogCSAgdHJ5X3JlbG9hZCA9IHJlcmVhZF9kb2NfZmlsZSAoRmNhcl9zYWZlIChk b2MpKTsKIAkgIFVOR0NQUk87CkBAIC03MzEsNyArNzMxLDcgQEAKICAgdW5zaWduZWQgY2hh ciAqc3RhcnQ7CiAgIHB0cmRpZmZfdCBsZW5ndGgsIGxlbmd0aF9ieXRlOwogICBMaXNwX09i amVjdCBuYW1lOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJvMywgZ2Nw cm80OworICBERUZHQ1BSTzQ7CiAgIGludCBtdWx0aWJ5dGU7CiAgIHB0cmRpZmZfdCBuY2hh cnM7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZWRpdGZucy5jJwotLS0gc3JjL2VkaXRm bnMuYwkyMDEyLTA3LTEwIDIzOjI0OjM2ICswMDAwCisrKyBzcmMvZWRpdGZucy5jCTIwMTIt MDctMTUgMTQ6NDM6MjggKzAwMDAKQEAgLTgzOSw3ICs4MzksNyBAQAogc2F2ZV9leGN1cnNp b25fcmVzdG9yZSAoTGlzcF9PYmplY3QgaW5mbykKIHsKICAgTGlzcF9PYmplY3QgdGVtLCB0 ZW0xLCBvbWFyaywgbm1hcms7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nw cm8zOworICBERUZHQ1BSTzM7CiAgIGludCB2aXNpYmxlX3A7CiAKICAgdGVtID0gRm1hcmtl cl9idWZmZXIgKFhDQVIgKGluZm8pKTsKQEAgLTI5MzksNyArMjkzOSw3IEBACiAJICAgIHsK IAkgICAgICBMaXNwX09iamVjdCB0ZW0sIHN0cmluZzsKIAotCSAgICAgIHN0cnVjdCBnY3By byBnY3BybzE7CisJICAgICAgREVGR0NQUk8xOwogCiAJICAgICAgdGVtID0gQlZBUiAoY3Vy cmVudF9idWZmZXIsIHVuZG9fbGlzdCk7CiAJICAgICAgR0NQUk8xICh0ZW0pOwpAQCAtMzQ3 Myw3ICszNDczLDcgQEAKIAkgIHx8IEZSQU1FX01TRE9TX1AgKFhGUkFNRSAoc2VsZWN0ZWRf ZnJhbWUpKSkKICAgICAgIHsKIAlMaXNwX09iamVjdCBwYW5lLCBtZW51OwotCXN0cnVjdCBn Y3BybyBnY3BybzE7CisJREVGR0NQUk8xOwogCXBhbmUgPSBGY29ucyAoRmNvbnMgKGJ1aWxk X3N0cmluZyAoIk9LIiksIFF0KSwgUW5pbCk7CiAJR0NQUk8xIChwYW5lKTsKIAltZW51ID0g RmNvbnMgKHZhbCwgcGFuZSk7CkBAIC0zNTM1LDcgKzM1MzUsNyBAQAogICAocHRyZGlmZl90 IG5hcmdzLCBMaXNwX09iamVjdCAqYXJncykKIHsKICAgTGlzcF9PYmplY3QgcHJvcGVydGll cywgc3RyaW5nOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzI7CisgIERFRkdDUFJP MjsKICAgcHRyZGlmZl90IGk7CiAKICAgLyogTnVtYmVyIG9mIGFyZ3MgbXVzdCBiZSBvZGQu ICAqLwpAQCAtNDI1NCw3ICs0MjU0LDcgQEAKICAgaWYgKFNUUklOR19JTlRFUlZBTFMgKGFy Z3NbMF0pIHx8IGFyZ19pbnRlcnZhbHMpCiAgICAgewogICAgICAgTGlzcF9PYmplY3QgbGVu LCBuZXdfbGVuLCBwcm9wczsKLSAgICAgIHN0cnVjdCBnY3BybyBnY3BybzE7CisgICAgICBE RUZHQ1BSTzE7CiAKICAgICAgIC8qIEFkZCB0ZXh0IHByb3BlcnRpZXMgZnJvbSB0aGUgZm9y bWF0IHN0cmluZy4gICovCiAgICAgICBsZW4gPSBtYWtlX251bWJlciAoU0NIQVJTIChhcmdz WzBdKSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2VtYWNzLmMnCi0tLSBzcmMvZW1hY3Mu YwkyMDEyLTA3LTEyIDIzOjU2OjM5ICswMDAwCisrKyBzcmMvZW1hY3MuYwkyMDEyLTA3LTE1 IDE0OjQzOjI4ICswMDAwCkBAIC0xOTcxLDcgKzE5NzEsNyBAQAogYWxsIG9mIHdoaWNoIGFy ZSBjYWxsZWQgYmVmb3JlIEVtYWNzIGlzIGFjdHVhbGx5IGtpbGxlZC4gICovKQogICAoTGlz cF9PYmplY3QgYXJnKQogewotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7 CiAgIExpc3BfT2JqZWN0IGhvb2s7CiAgIGludCBleGl0X2NvZGU7CiAKCj09PSBtb2RpZmll ZCBmaWxlICdzcmMvZXZhbC5jJwotLS0gc3JjL2V2YWwuYwkyMDEyLTA3LTEwIDE2OjUzOjI2 ICswMDAwCisrKyBzcmMvZXZhbC5jCTIwMTItMDctMTUgMTQ6NTc6NTUgKzAwMDAKQEAgLTI1 Myw3ICsyNTMsNyBAQAogICAoTGlzcF9PYmplY3QgYXJncykKIHsKICAgcmVnaXN0ZXIgTGlz cF9PYmplY3QgdmFsID0gUW5pbDsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQ Uk8xOwogCiAgIEdDUFJPMSAoYXJncyk7CiAKQEAgLTI3Nyw3ICsyNzcsNyBAQAogICAoTGlz cF9PYmplY3QgYXJncykKIHsKICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsID0gUXQ7Ci0g IHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdDUFJPMTsKIAogICBHQ1BSTzEgKGFyZ3Mp OwogCkBAIC0zMDIsNyArMzAyLDcgQEAKICAgKExpc3BfT2JqZWN0IGFyZ3MpCiB7CiAgIHJl Z2lzdGVyIExpc3BfT2JqZWN0IGNvbmQ7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERF RkdDUFJPMTsKIAogICBHQ1BSTzEgKGFyZ3MpOwogICBjb25kID0gZXZhbF9zdWIgKEZjYXIg KGFyZ3MpKTsKQEAgLTMyNiw3ICszMjYsNyBAQAogICAoTGlzcF9PYmplY3QgYXJncykKIHsK ICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgY2xhdXNlLCB2YWw7Ci0gIHN0cnVjdCBnY3BybyBn Y3BybzE7CisgIERFRkdDUFJPMTsKIAogICB2YWwgPSBRbmlsOwogICBHQ1BSTzEgKGFyZ3Mp OwpAQCAtMzUzLDcgKzM1Myw3IEBACiAgIChMaXNwX09iamVjdCBhcmdzKQogewogICByZWdp c3RlciBMaXNwX09iamVjdCB2YWwgPSBRbmlsOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOwor ICBERUZHQ1BSTzE7CiAKICAgR0NQUk8xIChhcmdzKTsKIApAQCAtMzc2LDcgKzM3Niw3IEBA CiB7CiAgIExpc3BfT2JqZWN0IHZhbDsKICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgYXJnc19s ZWZ0OwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzI7CisgIERFRkdDUFJPMjsKIAog ICBhcmdzX2xlZnQgPSBhcmdzOwogICB2YWwgPSBRbmlsOwpAQCAtMzk3LDcgKzM5Nyw3IEBA CiB1c2FnZTogKHByb2cyIEZPUk0xIEZPUk0yIEJPRFkuLi4pICAqLykKICAgKExpc3BfT2Jq ZWN0IGFyZ3MpCiB7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdDUFJPMTsKIAog ICBHQ1BSTzEgKGFyZ3MpOwogICBldmFsX3N1YiAoWENBUiAoYXJncykpOwpAQCAtNDE4LDcg KzQxOCw3IEBACiB7CiAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZ3NfbGVmdDsKICAgcmVn aXN0ZXIgTGlzcF9PYmplY3QgdmFsLCBzeW0sIGxleF9iaW5kaW5nOwotICBzdHJ1Y3QgZ2Nw cm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAKICAgaWYgKE5JTFAgKGFyZ3MpKQogICAgIHJl dHVybiBRbmlsOwpAQCAtODExLDcgKzgxMSw3IEBACiB7CiAgIExpc3BfT2JqZWN0IHZhcmxp c3QsIHZhciwgdmFsLCBlbHQsIGxleGVudjsKICAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BE TF9JTkRFWCAoKTsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzM7Cisg IERFRkdDUFJPMzsKIAogICBHQ1BSTzMgKGFyZ3MsIGVsdCwgdmFybGlzdCk7CiAKQEAgLTg3 NSw3ICs4NzUsNyBAQAogICByZWdpc3RlciBMaXNwX09iamVjdCBlbHQsIHZhcmxpc3Q7CiAg IHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAgIHB0cmRpZmZfdCBhcmdu dW07Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKKyAgREVGR0NQUk8yOwogICBV U0VfU0FGRV9BTExPQ0E7CiAKICAgdmFybGlzdCA9IEZjYXIgKGFyZ3MpOwpAQCAtODg3LDcg Kzg4Nyw3IEBACiAgIC8qIENvbXB1dGUgdGhlIHZhbHVlcyBhbmQgc3RvcmUgdGhlbSBpbiBg dGVtcHMnLiAgKi8KIAogICBHQ1BSTzIgKGFyZ3MsICp0ZW1wcyk7Ci0gIGdjcHJvMi5udmFy cyA9IDA7CisgIElGX0dDUFJPIChnY3BybzIubnZhcnMgPSAwKTsKIAogICBmb3IgKGFyZ251 bSA9IDA7IENPTlNQICh2YXJsaXN0KTsgdmFybGlzdCA9IFhDRFIgKHZhcmxpc3QpKQogICAg IHsKQEAgLTg5OSw3ICs4OTksNyBAQAogCXNpZ25hbF9lcnJvciAoImBsZXQnIGJpbmRpbmdz IGNhbiBoYXZlIG9ubHkgb25lIHZhbHVlLWZvcm0iLCBlbHQpOwogICAgICAgZWxzZQogCXRl bXBzIFthcmdudW0rK10gPSBldmFsX3N1YiAoRmNhciAoRmNkciAoZWx0KSkpOwotICAgICAg Z2Nwcm8yLm52YXJzID0gYXJnbnVtOworICAgICAgSUZfR0NQUk8gKGdjcHJvMi5udmFycyA9 IGFyZ251bSk7CiAgICAgfQogICBVTkdDUFJPOwogCkBAIC05NDEsNyArOTQxLDcgQEAKICAg KExpc3BfT2JqZWN0IGFyZ3MpCiB7CiAgIExpc3BfT2JqZWN0IHRlc3QsIGJvZHk7Ci0gIHN0 cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKKyAgREVGR0NQUk8yOwogCiAgIEdDUFJPMiAo dGVzdCwgYm9keSk7CiAKQEAgLTEwMTAsNyArMTAxMCw3IEBACiAJICAgICAgaWYgKEVRICh0 ZW0sIFF0KSB8fCBFUSAodGVtLCBRbWFjcm8pKQogCQkvKiBZZXMsIGxvYWQgaXQgYW5kIHRy eSBhZ2Fpbi4gICovCiAJCXsKLQkJICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworCQkgIERFRkdD UFJPMTsKIAkJICBHQ1BSTzEgKGZvcm0pOwogCQkgIGRvX2F1dG9sb2FkIChkZWYsIHN5bSk7 CiAJCSAgVU5HQ1BSTzsKQEAgLTEwNTIsNyArMTA1Miw3IEBACiAgIChMaXNwX09iamVjdCBh cmdzKQogewogICByZWdpc3RlciBMaXNwX09iamVjdCB0YWc7Ci0gIHN0cnVjdCBnY3BybyBn Y3BybzE7CisgIERFRkdDUFJPMTsKIAogICBHQ1BSTzEgKGFyZ3MpOwogICB0YWcgPSBldmFs X3N1YiAoRmNhciAoYXJncykpOwpAQCAtMTA4MCw3ICsxMDgwLDcgQEAKICAgYy5wZGxjb3Vu dCA9IFNQRUNQRExfSU5ERVggKCk7CiAgIGMucG9sbF9zdXBwcmVzc19jb3VudCA9IHBvbGxf c3VwcHJlc3NfY291bnQ7CiAgIGMuaW50ZXJydXB0X2lucHV0X2Jsb2NrZWQgPSBpbnRlcnJ1 cHRfaW5wdXRfYmxvY2tlZDsKLSAgYy5nY3BybyA9IGdjcHJvbGlzdDsKKyAgSUZfR0NQUk8g KGMuZ2Nwcm8gPSBnY3Byb2xpc3QpOwogICBjLmJ5dGVfc3RhY2sgPSBieXRlX3N0YWNrX2xp c3Q7CiAgIGNhdGNobGlzdCA9ICZjOwogCkBAIC0xMTQ2LDcgKzExNDYsNyBAQAogI2VuZGlm CiAKICAgYnl0ZV9zdGFja19saXN0ID0gY2F0Y2gtPmJ5dGVfc3RhY2s7Ci0gIGdjcHJvbGlz dCA9IGNhdGNoLT5nY3BybzsKKyAgSUZfR0NQUk8gKGdjcHJvbGlzdCA9IGNhdGNoLT5nY3By byk7CiAjaWZkZWYgREVCVUdfR0NQUk8KICAgZ2Nwcm9fbGV2ZWwgPSBnY3Byb2xpc3QgPyBn Y3Byb2xpc3QtPmxldmVsICsgMSA6IDA7CiAjZW5kaWYKQEAgLTEyNjAsNyArMTI2MCw3IEBA CiAgIGMucGRsY291bnQgPSBTUEVDUERMX0lOREVYICgpOwogICBjLnBvbGxfc3VwcHJlc3Nf Y291bnQgPSBwb2xsX3N1cHByZXNzX2NvdW50OwogICBjLmludGVycnVwdF9pbnB1dF9ibG9j a2VkID0gaW50ZXJydXB0X2lucHV0X2Jsb2NrZWQ7Ci0gIGMuZ2Nwcm8gPSBnY3Byb2xpc3Q7 CisgIElGX0dDUFJPIChjLmdjcHJvID0gZ2Nwcm9saXN0KTsKICAgYy5ieXRlX3N0YWNrID0g Ynl0ZV9zdGFja19saXN0OwogICBpZiAoX3NldGptcCAoYy5qbXApKQogICAgIHsKQEAgLTEz MTUsNyArMTMxNSw3IEBACiAgIGMucGRsY291bnQgPSBTUEVDUERMX0lOREVYICgpOwogICBj LnBvbGxfc3VwcHJlc3NfY291bnQgPSBwb2xsX3N1cHByZXNzX2NvdW50OwogICBjLmludGVy cnVwdF9pbnB1dF9ibG9ja2VkID0gaW50ZXJydXB0X2lucHV0X2Jsb2NrZWQ7Ci0gIGMuZ2Nw cm8gPSBnY3Byb2xpc3Q7CisgIElGX0dDUFJPIChjLmdjcHJvID0gZ2Nwcm9saXN0KTsKICAg Yy5ieXRlX3N0YWNrID0gYnl0ZV9zdGFja19saXN0OwogICBpZiAoX3NldGptcCAoYy5qbXAp KQogICAgIHsKQEAgLTEzNTMsNyArMTM1Myw3IEBACiAgIGMucGRsY291bnQgPSBTUEVDUERM X0lOREVYICgpOwogICBjLnBvbGxfc3VwcHJlc3NfY291bnQgPSBwb2xsX3N1cHByZXNzX2Nv dW50OwogICBjLmludGVycnVwdF9pbnB1dF9ibG9ja2VkID0gaW50ZXJydXB0X2lucHV0X2Js b2NrZWQ7Ci0gIGMuZ2Nwcm8gPSBnY3Byb2xpc3Q7CisgIElGX0dDUFJPIChjLmdjcHJvID0g Z2Nwcm9saXN0KTsKICAgYy5ieXRlX3N0YWNrID0gYnl0ZV9zdGFja19saXN0OwogICBpZiAo X3NldGptcCAoYy5qbXApKQogICAgIHsKQEAgLTEzOTUsNyArMTM5NSw3IEBACiAgIGMucGRs Y291bnQgPSBTUEVDUERMX0lOREVYICgpOwogICBjLnBvbGxfc3VwcHJlc3NfY291bnQgPSBw b2xsX3N1cHByZXNzX2NvdW50OwogICBjLmludGVycnVwdF9pbnB1dF9ibG9ja2VkID0gaW50 ZXJydXB0X2lucHV0X2Jsb2NrZWQ7Ci0gIGMuZ2Nwcm8gPSBnY3Byb2xpc3Q7CisgIElGX0dD UFJPIChjLmdjcHJvID0gZ2Nwcm9saXN0KTsKICAgYy5ieXRlX3N0YWNrID0gYnl0ZV9zdGFj a19saXN0OwogICBpZiAoX3NldGptcCAoYy5qbXApKQogICAgIHsKQEAgLTE0MzcsNyArMTQz Nyw3IEBACiAgIGMucGRsY291bnQgPSBTUEVDUERMX0lOREVYICgpOwogICBjLnBvbGxfc3Vw cHJlc3NfY291bnQgPSBwb2xsX3N1cHByZXNzX2NvdW50OwogICBjLmludGVycnVwdF9pbnB1 dF9ibG9ja2VkID0gaW50ZXJydXB0X2lucHV0X2Jsb2NrZWQ7Ci0gIGMuZ2Nwcm8gPSBnY3By b2xpc3Q7CisgIElGX0dDUFJPIChjLmdjcHJvID0gZ2Nwcm9saXN0KTsKICAgYy5ieXRlX3N0 YWNrID0gYnl0ZV9zdGFja19saXN0OwogICBpZiAoX3NldGptcCAoYy5qbXApKQogICAgIHsK QEAgLTE5NjksNyArMTk2OSw3IEBACiB7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExf SU5ERVggKCk7CiAgIExpc3BfT2JqZWN0IGZ1bjsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwg Z2Nwcm8yLCBnY3BybzM7CisgIERFRkdDUFJPMzsKIAogICAvKiBUaGlzIGlzIHRvIG1ha2Ug c3VyZSB0aGF0IGxvYWR1cC5lbCBnaXZlcyBhIGNsZWFyIHBpY3R1cmUKICAgICAgb2Ygd2hh dCBmaWxlcyBhcmUgcHJlbG9hZGVkIGFuZCB3aGVuLiAgKi8KQEAgLTIwMjgsNyArMjAyOCw3 IEBACiAgIExpc3BfT2JqZWN0IGZ1biwgdmFsLCBvcmlnaW5hbF9mdW4sIG9yaWdpbmFsX2Fy Z3M7CiAgIExpc3BfT2JqZWN0IGZ1bmNhcjsKICAgc3RydWN0IGJhY2t0cmFjZSBiYWNrdHJh Y2U7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nwcm8zOworICBERUZHQ1BS TzM7CiAKICAgaWYgKGhhbmRsaW5nX3NpZ25hbCkKICAgICBhYm9ydCAoKTsKQEAgLTIxMjIs MTQgKzIxMjIsMTMgQEAKIAkgIFNBRkVfQUxMT0NBX0xJU1AgKHZhbHMsIFhJTlQgKG51bWFy Z3MpKTsKIAogCSAgR0NQUk8zIChhcmdzX2xlZnQsIGZ1biwgZnVuKTsKLQkgIGdjcHJvMy52 YXIgPSB2YWxzOwotCSAgZ2Nwcm8zLm52YXJzID0gMDsKKwkgIElGX0dDUFJPIChnY3BybzMu dmFyID0gdmFsczsgZ2Nwcm8zLm52YXJzID0gMCk7CiAKIAkgIHdoaWxlICghTklMUCAoYXJn c19sZWZ0KSkKIAkgICAgewogCSAgICAgIHZhbHNbYXJnbnVtKytdID0gZXZhbF9zdWIgKEZj YXIgKGFyZ3NfbGVmdCkpOwogCSAgICAgIGFyZ3NfbGVmdCA9IEZjZHIgKGFyZ3NfbGVmdCk7 Ci0JICAgICAgZ2Nwcm8zLm52YXJzID0gYXJnbnVtOworCSAgICAgIElGX0dDUFJPIChnY3By bzMubnZhcnMgPSBhcmdudW0pOwogCSAgICB9CiAKIAkgIGJhY2t0cmFjZS5hcmdzID0gdmFs czsKQEAgLTIxNDIsMTQgKzIxNDEsMTQgQEAKICAgICAgIGVsc2UKIAl7CiAJICBHQ1BSTzMg KGFyZ3NfbGVmdCwgZnVuLCBmdW4pOwotCSAgZ2Nwcm8zLnZhciA9IGFyZ3ZhbHM7Ci0JICBn Y3BybzMubnZhcnMgPSAwOworCSAgSUZfR0NQUk8gKGdjcHJvMy52YXIgPSBhcmd2YWxzOyBn Y3BybzMubnZhcnMgPSAwKTsKIAogCSAgbWF4YXJncyA9IFhTVUJSIChmdW4pLT5tYXhfYXJn czsKIAkgIGZvciAoaSA9IDA7IGkgPCBtYXhhcmdzOyBhcmdzX2xlZnQgPSBGY2RyIChhcmdz X2xlZnQpKQogCSAgICB7CiAJICAgICAgYXJndmFsc1tpXSA9IGV2YWxfc3ViIChGY2FyIChh cmdzX2xlZnQpKTsKLQkgICAgICBnY3BybzMubnZhcnMgPSArK2k7CisJICAgICAgaSsrOwor CSAgICAgIElGX0dDUFJPIChnY3BybzMubnZhcnMgPSBpKTsKIAkgICAgfQogCiAJICBVTkdD UFJPOwpAQCAtMjI0OCwxMiArMjI0NywxMiBAQAogdXNhZ2U6IChhcHBseSBGVU5DVElPTiAm cmVzdCBBUkdVTUVOVFMpICAqLykKICAgKHB0cmRpZmZfdCBuYXJncywgTGlzcF9PYmplY3Qg KmFyZ3MpCiB7Ci0gIHB0cmRpZmZfdCBpOworICBwdHJkaWZmX3QgaSwgZnVuY2FsbF9uYXJn czsKICAgRU1BQ1NfSU5UIG51bWFyZ3M7CiAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHNwcmVh ZF9hcmc7CiAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0ICpmdW5jYWxsX2FyZ3M7CiAgIExpc3Bf T2JqZWN0IGZ1biwgcmV0dmFsOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BS TzE7CiAgIFVTRV9TQUZFX0FMTE9DQTsKIAogICBmdW4gPSBhcmdzIFswXTsKQEAgLTIyOTcs NyArMjI5Niw4IEBACiAJICBmb3IgKGkgPSBudW1hcmdzOyBpIDwgWFNVQlIgKGZ1biktPm1h eF9hcmdzOykKIAkgICAgZnVuY2FsbF9hcmdzWysraV0gPSBRbmlsOwogCSAgR0NQUk8xICgq ZnVuY2FsbF9hcmdzKTsKLQkgIGdjcHJvMS5udmFycyA9IDEgKyBYU1VCUiAoZnVuKS0+bWF4 X2FyZ3M7CisJICBmdW5jYWxsX25hcmdzID0gMSArIFhTVUJSIChmdW4pLT5tYXhfYXJnczsg CisJICBJRl9HQ1BSTyAoZ2Nwcm8xLm52YXJzID0gZnVuY2FsbF9uYXJncyk7CiAJfQogICAg IH0KICBmdW5jYWxsOgpAQCAtMjMwNyw3ICsyMzA3LDggQEAKICAgICB7CiAgICAgICBTQUZF X0FMTE9DQV9MSVNQIChmdW5jYWxsX2FyZ3MsIDEgKyBudW1hcmdzKTsKICAgICAgIEdDUFJP MSAoKmZ1bmNhbGxfYXJncyk7Ci0gICAgICBnY3BybzEubnZhcnMgPSAxICsgbnVtYXJnczsK KyAgICAgIGZ1bmNhbGxfbmFyZ3MgPSAxICsgbnVtYXJnczsKKyAgICAgIElGX0dDUFJPIChn Y3BybzEubnZhcnMgPSBmdW5jYWxsX25hcmdzKTsKICAgICB9CiAKICAgbWVtY3B5IChmdW5j YWxsX2FyZ3MsIGFyZ3MsIG5hcmdzICogc2l6ZW9mIChMaXNwX09iamVjdCkpOwpAQCAtMjMy MSw3ICsyMzIyLDcgQEAKICAgICB9CiAKICAgLyogQnkgY29udmVudGlvbiwgdGhlIGNhbGxl ciBuZWVkcyB0byBnY3BybyBGZnVuY2FsbCdzIGFyZ3MuICAqLwotICByZXR2YWwgPSBGZnVu Y2FsbCAoZ2Nwcm8xLm52YXJzLCBmdW5jYWxsX2FyZ3MpOworICByZXR2YWwgPSBGZnVuY2Fs bCAoZnVuY2FsbF9uYXJncywgZnVuY2FsbF9hcmdzKTsKICAgVU5HQ1BSTzsKICAgU0FGRV9G UkVFICgpOwogCkBAIC0yNDY3LDcgKzI0NjgsNyBAQAogCQkgICAgTGlzcF9PYmplY3QgKCpm dW5jYWxsKSAocHRyZGlmZl90IG5hcmdzLCBMaXNwX09iamVjdCAqYXJncykpCiB7CiAgIExp c3BfT2JqZWN0IHN5bSwgdmFsLCByZXQgPSBRbmlsOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8x LCBnY3BybzIsIGdjcHJvMzsKKyAgREVGR0NQUk8zOwogCiAgIC8qIElmIHdlIGFyZSBkeWlu ZyBvciBzdGlsbCBpbml0aWFsaXppbmcsCiAgICAgIGRvbid0IGRvIGFueXRoaW5nLS1pdCB3 b3VsZCBwcm9iYWJseSBjcmFzaCBpZiB3ZSB0cmllZC4gICovCkBAIC0yNTQ4LDE3ICsyNTQ5 LDE3IEBACiBMaXNwX09iamVjdAogYXBwbHkxIChMaXNwX09iamVjdCBmbiwgTGlzcF9PYmpl Y3QgYXJnKQogewotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAKICAg R0NQUk8xIChmbik7CiAgIGlmIChOSUxQIChhcmcpKQogICAgIFJFVFVSTl9VTkdDUFJPIChG ZnVuY2FsbCAoMSwgJmZuKSk7Ci0gIGdjcHJvMS5udmFycyA9IDI7CisgIElGX0dDUFJPIChn Y3BybzEubnZhcnMgPSAyKTsKICAgewogICAgIExpc3BfT2JqZWN0IGFyZ3NbMl07CiAgICAg YXJnc1swXSA9IGZuOwogICAgIGFyZ3NbMV0gPSBhcmc7Ci0gICAgZ2Nwcm8xLnZhciA9IGFy Z3M7CisgICAgSUZfR0NQUk8gKGdjcHJvMS52YXIgPSBhcmdzKTsKICAgICBSRVRVUk5fVU5H Q1BSTyAoRmFwcGx5ICgyLCBhcmdzKSk7CiAgIH0KIH0KQEAgLTI1NjcsNyArMjU2OCw3IEBA CiBMaXNwX09iamVjdAogY2FsbDAgKExpc3BfT2JqZWN0IGZuKQogewotICBzdHJ1Y3QgZ2Nw cm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAKICAgR0NQUk8xIChmbik7CiAgIFJFVFVSTl9V TkdDUFJPIChGZnVuY2FsbCAoMSwgJmZuKSk7CkBAIC0yNTc4LDEzICsyNTc5LDEzIEBACiBM aXNwX09iamVjdAogY2FsbDEgKExpc3BfT2JqZWN0IGZuLCBMaXNwX09iamVjdCBhcmcxKQog ewotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAgIExpc3BfT2JqZWN0 IGFyZ3NbMl07CiAKICAgYXJnc1swXSA9IGZuOwogICBhcmdzWzFdID0gYXJnMTsKICAgR0NQ Uk8xIChhcmdzWzBdKTsKLSAgZ2Nwcm8xLm52YXJzID0gMjsKKyAgSUZfR0NQUk8gKGdjcHJv MS5udmFycyA9IDIpOwogICBSRVRVUk5fVU5HQ1BSTyAoRmZ1bmNhbGwgKDIsIGFyZ3MpKTsK IH0KIApAQCAtMjU5MywxMyArMjU5NCwxMyBAQAogTGlzcF9PYmplY3QKIGNhbGwyIChMaXNw X09iamVjdCBmbiwgTGlzcF9PYmplY3QgYXJnMSwgTGlzcF9PYmplY3QgYXJnMikKIHsKLSAg c3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQUk8xOwogICBMaXNwX09iamVjdCBhcmdz WzNdOwogICBhcmdzWzBdID0gZm47CiAgIGFyZ3NbMV0gPSBhcmcxOwogICBhcmdzWzJdID0g YXJnMjsKICAgR0NQUk8xIChhcmdzWzBdKTsKLSAgZ2Nwcm8xLm52YXJzID0gMzsKKyAgSUZf R0NQUk8gKGdjcHJvMS5udmFycyA9IDMpOwogICBSRVRVUk5fVU5HQ1BSTyAoRmZ1bmNhbGwg KDMsIGFyZ3MpKTsKIH0KIApAQCAtMjYwOCwxNCArMjYwOSwxNCBAQAogTGlzcF9PYmplY3QK IGNhbGwzIChMaXNwX09iamVjdCBmbiwgTGlzcF9PYmplY3QgYXJnMSwgTGlzcF9PYmplY3Qg YXJnMiwgTGlzcF9PYmplY3QgYXJnMykKIHsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAg REVGR0NQUk8xOwogICBMaXNwX09iamVjdCBhcmdzWzRdOwogICBhcmdzWzBdID0gZm47CiAg IGFyZ3NbMV0gPSBhcmcxOwogICBhcmdzWzJdID0gYXJnMjsKICAgYXJnc1szXSA9IGFyZzM7 CiAgIEdDUFJPMSAoYXJnc1swXSk7Ci0gIGdjcHJvMS5udmFycyA9IDQ7CisgIElGX0dDUFJP IChnY3BybzEubnZhcnMgPSA0KTsKICAgUkVUVVJOX1VOR0NQUk8gKEZmdW5jYWxsICg0LCBh cmdzKSk7CiB9CiAKQEAgLTI2MjUsNyArMjYyNiw3IEBACiBjYWxsNCAoTGlzcF9PYmplY3Qg Zm4sIExpc3BfT2JqZWN0IGFyZzEsIExpc3BfT2JqZWN0IGFyZzIsIExpc3BfT2JqZWN0IGFy ZzMsCiAgICAgICAgTGlzcF9PYmplY3QgYXJnNCkKIHsKLSAgc3RydWN0IGdjcHJvIGdjcHJv MTsKKyAgREVGR0NQUk8xOwogICBMaXNwX09iamVjdCBhcmdzWzVdOwogICBhcmdzWzBdID0g Zm47CiAgIGFyZ3NbMV0gPSBhcmcxOwpAQCAtMjYzMyw3ICsyNjM0LDcgQEAKICAgYXJnc1sz XSA9IGFyZzM7CiAgIGFyZ3NbNF0gPSBhcmc0OwogICBHQ1BSTzEgKGFyZ3NbMF0pOwotICBn Y3BybzEubnZhcnMgPSA1OworICBJRl9HQ1BSTyAoZ2Nwcm8xLm52YXJzID0gNSk7CiAgIFJF VFVSTl9VTkdDUFJPIChGZnVuY2FsbCAoNSwgYXJncykpOwogfQogCkBAIC0yNjQzLDcgKzI2 NDQsNyBAQAogY2FsbDUgKExpc3BfT2JqZWN0IGZuLCBMaXNwX09iamVjdCBhcmcxLCBMaXNw X09iamVjdCBhcmcyLCBMaXNwX09iamVjdCBhcmczLAogICAgICAgIExpc3BfT2JqZWN0IGFy ZzQsIExpc3BfT2JqZWN0IGFyZzUpCiB7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERF RkdDUFJPMTsKICAgTGlzcF9PYmplY3QgYXJnc1s2XTsKICAgYXJnc1swXSA9IGZuOwogICBh cmdzWzFdID0gYXJnMTsKQEAgLTI2NTIsNyArMjY1Myw3IEBACiAgIGFyZ3NbNF0gPSBhcmc0 OwogICBhcmdzWzVdID0gYXJnNTsKICAgR0NQUk8xIChhcmdzWzBdKTsKLSAgZ2Nwcm8xLm52 YXJzID0gNjsKKyAgSUZfR0NQUk8gKGdjcHJvMS5udmFycyA9IDYpOwogICBSRVRVUk5fVU5H Q1BSTyAoRmZ1bmNhbGwgKDYsIGFyZ3MpKTsKIH0KIApAQCAtMjY2Miw3ICsyNjYzLDcgQEAK IGNhbGw2IChMaXNwX09iamVjdCBmbiwgTGlzcF9PYmplY3QgYXJnMSwgTGlzcF9PYmplY3Qg YXJnMiwgTGlzcF9PYmplY3QgYXJnMywKICAgICAgICBMaXNwX09iamVjdCBhcmc0LCBMaXNw X09iamVjdCBhcmc1LCBMaXNwX09iamVjdCBhcmc2KQogewotICBzdHJ1Y3QgZ2Nwcm8gZ2Nw cm8xOworICBERUZHQ1BSTzE7CiAgIExpc3BfT2JqZWN0IGFyZ3NbN107CiAgIGFyZ3NbMF0g PSBmbjsKICAgYXJnc1sxXSA9IGFyZzE7CkBAIC0yNjcyLDcgKzI2NzMsNyBAQAogICBhcmdz WzVdID0gYXJnNTsKICAgYXJnc1s2XSA9IGFyZzY7CiAgIEdDUFJPMSAoYXJnc1swXSk7Ci0g IGdjcHJvMS5udmFycyA9IDc7CisgIElGX0dDUFJPIChnY3BybzEubnZhcnMgPSA3KTsKICAg UkVUVVJOX1VOR0NQUk8gKEZmdW5jYWxsICg3LCBhcmdzKSk7CiB9CiAKQEAgLTI2ODIsNyAr MjY4Myw3IEBACiBjYWxsNyAoTGlzcF9PYmplY3QgZm4sIExpc3BfT2JqZWN0IGFyZzEsIExp c3BfT2JqZWN0IGFyZzIsIExpc3BfT2JqZWN0IGFyZzMsCiAgICAgICAgTGlzcF9PYmplY3Qg YXJnNCwgTGlzcF9PYmplY3QgYXJnNSwgTGlzcF9PYmplY3QgYXJnNiwgTGlzcF9PYmplY3Qg YXJnNykKIHsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQUk8xOwogICBMaXNw X09iamVjdCBhcmdzWzhdOwogICBhcmdzWzBdID0gZm47CiAgIGFyZ3NbMV0gPSBhcmcxOwpA QCAtMjY5Myw3ICsyNjk0LDcgQEAKICAgYXJnc1s2XSA9IGFyZzY7CiAgIGFyZ3NbN10gPSBh cmc3OwogICBHQ1BSTzEgKGFyZ3NbMF0pOwotICBnY3BybzEubnZhcnMgPSA4OworICBJRl9H Q1BSTyAoZ2Nwcm8xLm52YXJzID0gOCk7CiAgIFJFVFVSTl9VTkdDUFJPIChGZnVuY2FsbCAo OCwgYXJncykpOwogfQogCkBAIC0yOTAzLDcgKzI5MDQsNyBAQAogICBwdHJkaWZmX3QgaTsK ICAgRU1BQ1NfSU5UIG51bWFyZ3M7CiAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0ICphcmdfdmVj dG9yOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJvMzsKKyAgREVGR0NQ Uk8zOwogICByZWdpc3RlciBMaXNwX09iamVjdCB0ZW07CiAgIFVTRV9TQUZFX0FMTE9DQTsK IApAQCAtMjkxMiwxNCArMjkxMywxNCBAQAogICBhcmdzX2xlZnQgPSBhcmdzOwogCiAgIEdD UFJPMyAoKmFyZ192ZWN0b3IsIGFyZ3NfbGVmdCwgZnVuKTsKLSAgZ2Nwcm8xLm52YXJzID0g MDsKKyAgSUZfR0NQUk8gKGdjcHJvMS5udmFycyA9IDApOwogCiAgIGZvciAoaSA9IDA7IGkg PCBudW1hcmdzOyApCiAgICAgewogICAgICAgdGVtID0gRmNhciAoYXJnc19sZWZ0KSwgYXJn c19sZWZ0ID0gRmNkciAoYXJnc19sZWZ0KTsKICAgICAgIHRlbSA9IGV2YWxfc3ViICh0ZW0p OwogICAgICAgYXJnX3ZlY3RvcltpKytdID0gdGVtOwotICAgICAgZ2Nwcm8xLm52YXJzID0g aTsKKyAgICAgIElGX0dDUFJPIChnY3BybzEubnZhcnMgPSBpKTsKICAgICB9CiAKICAgVU5H Q1BSTzsKQEAgLTMyMjcsNyArMzIyOCw3IEBACiB1bmJpbmRfdG8gKHB0cmRpZmZfdCBjb3Vu dCwgTGlzcF9PYmplY3QgdmFsdWUpCiB7CiAgIExpc3BfT2JqZWN0IHF1aXRmID0gVnF1aXRf ZmxhZzsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yOworICBERUZHQ1BSTzI7CiAK ICAgR0NQUk8yICh2YWx1ZSwgcXVpdGYpOwogICBWcXVpdF9mbGFnID0gUW5pbDsKQEAgLTMz MjcsNyArMzMyOCw3IEBACiAgIHJlZ2lzdGVyIHN0cnVjdCBiYWNrdHJhY2UgKmJhY2tsaXN0 ID0gYmFja3RyYWNlX2xpc3Q7CiAgIExpc3BfT2JqZWN0IHRhaWw7CiAgIExpc3BfT2JqZWN0 IHRlbTsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQUk8xOwogICBMaXNwX09i amVjdCBvbGRfcHJpbnRfbGV2ZWwgPSBWcHJpbnRfbGV2ZWw7CiAKICAgaWYgKE5JTFAgKFZw cmludF9sZXZlbCkpCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2ZpbGVpby5jJwotLS0gc3Jj L2ZpbGVpby5jCTIwMTItMDctMTAgMjM6MjQ6MzYgKzAwMDAKKysrIHNyYy9maWxlaW8uYwky MDEyLTA3LTE1IDE0OjQzOjI4ICswMDAwCkBAIC04NTQsNyArODU0LDcgQEAKICNlbmRpZiAv KiBub3QgRE9TX05UICovCiAJKQogICAgICAgewotCXN0cnVjdCBnY3BybyBnY3BybzE7CisJ REVGR0NQUk8xOwogCiAJR0NQUk8xIChuYW1lKTsKIAlkZWZhdWx0X2RpcmVjdG9yeSA9IEZl eHBhbmRfZmlsZV9uYW1lIChkZWZhdWx0X2RpcmVjdG9yeSwgUW5pbCk7CkBAIC0xODAzLDcg KzE4MDMsNyBAQAogewogICByZWdpc3RlciBMaXNwX09iamVjdCB0ZW0sIGVuY29kZWRfZmls ZW5hbWU7CiAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7 CisgIERFRkdDUFJPMTsKIAogICBlbmNvZGVkX2ZpbGVuYW1lID0gRU5DT0RFX0ZJTEUgKGFi c25hbWUpOwogCkBAIC0xODczLDcgKzE4NzMsNyBAQAogICBjaGFyIGJ1ZlsxNiAqIDEwMjRd OwogICBzdHJ1Y3Qgc3RhdCBzdCwgb3V0X3N0OwogICBMaXNwX09iamVjdCBoYW5kbGVyOwot ICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJvMywgZ2Nwcm80OworICBERUZH Q1BSTzQ7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAgIGludCBp bnB1dF9maWxlX3N0YXRhYmxlX3A7CiAgIExpc3BfT2JqZWN0IGVuY29kZWRfZmlsZSwgZW5j b2RlZF9uZXduYW1lOwpAQCAtMjE1OSw3ICsyMTU5LDcgQEAKIHsKICAgTGlzcF9PYmplY3Qg aGFuZGxlcjsKICAgTGlzcF9PYmplY3QgZW5jb2RlZF9maWxlOwotICBzdHJ1Y3QgZ2Nwcm8g Z2Nwcm8xOworICBERUZHQ1BSTzE7CiAKICAgR0NQUk8xIChmaWxlbmFtZSk7CiAgIGlmICgh TklMUCAoRmZpbGVfZGlyZWN0b3J5X3AgKGZpbGVuYW1lKSkKQEAgLTIyMTQsNyArMjIxNCw3 IEBACiAgIChMaXNwX09iamVjdCBmaWxlLCBMaXNwX09iamVjdCBuZXduYW1lLCBMaXNwX09i amVjdCBva19pZl9hbHJlYWR5X2V4aXN0cykKIHsKICAgTGlzcF9PYmplY3QgaGFuZGxlcjsK LSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzMsIGdjcHJvNCwgZ2Nwcm81 OworICBERUZHQ1BSTzU7CiAgIExpc3BfT2JqZWN0IGVuY29kZWRfZmlsZSwgZW5jb2RlZF9u ZXduYW1lLCBzeW1saW5rX3RhcmdldDsKIAogICBzeW1saW5rX3RhcmdldCA9IGVuY29kZWRf ZmlsZSA9IGVuY29kZWRfbmV3bmFtZSA9IFFuaWw7CkBAIC0yMzA1LDcgKzIzMDUsNyBAQAog ewogICBMaXNwX09iamVjdCBoYW5kbGVyOwogICBMaXNwX09iamVjdCBlbmNvZGVkX2ZpbGUs IGVuY29kZWRfbmV3bmFtZTsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3By bzMsIGdjcHJvNDsKKyAgREVGR0NQUk80OwogCiAgIEdDUFJPNCAoZmlsZSwgbmV3bmFtZSwg ZW5jb2RlZF9maWxlLCBlbmNvZGVkX25ld25hbWUpOwogICBlbmNvZGVkX2ZpbGUgPSBlbmNv ZGVkX25ld25hbWUgPSBRbmlsOwpAQCAtMjM2MCw3ICsyMzYwLDcgQEAKIHsKICAgTGlzcF9P YmplY3QgaGFuZGxlcjsKICAgTGlzcF9PYmplY3QgZW5jb2RlZF9maWxlbmFtZSwgZW5jb2Rl ZF9saW5rbmFtZTsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzMsIGdj cHJvNDsKKyAgREVGR0NQUk80OwogCiAgIEdDUFJPNCAoZmlsZW5hbWUsIGxpbmtuYW1lLCBl bmNvZGVkX2ZpbGVuYW1lLCBlbmNvZGVkX2xpbmtuYW1lKTsKICAgZW5jb2RlZF9maWxlbmFt ZSA9IGVuY29kZWRfbGlua25hbWUgPSBRbmlsOwpAQCAtMjczOSw3ICsyNzM5LDcgQEAKIHsK ICAgTGlzcF9PYmplY3QgaGFuZGxlcjsKICAgaW50IHRlbTsKLSAgc3RydWN0IGdjcHJvIGdj cHJvMTsKKyAgREVGR0NQUk8xOwogCiAgIC8qIElmIHRoZSBmaWxlIG5hbWUgaGFzIHNwZWNp YWwgY29uc3RydWN0cyBpbiBpdCwKICAgICAgY2FsbCB0aGUgY29ycmVzcG9uZGluZyBmaWxl IGhhbmRsZXIuICAqLwpAQCAtMzA4Myw3ICszMDgzLDcgQEAKICAgTGlzcF9PYmplY3QgYWJz bmFtZTEsIGFic25hbWUyOwogICBzdHJ1Y3Qgc3RhdCBzdDEsIHN0MjsKICAgTGlzcF9PYmpl Y3QgaGFuZGxlcjsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yOworICBERUZHQ1BS TzI7CiAKICAgQ0hFQ0tfU1RSSU5HIChmaWxlMSk7CiAgIENIRUNLX1NUUklORyAoZmlsZTIp OwpAQCAtMzI2MCw3ICszMjYwLDcgQEAKICAgb2ZmX3QgYmVnX29mZnNldCwgZW5kX29mZnNl dDsKICAgcmVnaXN0ZXIgaW50IHVucHJvY2Vzc2VkOwogICBwdHJkaWZmX3QgY291bnQgPSBT UEVDUERMX0lOREVYICgpOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJv MywgZ2Nwcm80LCBnY3BybzU7CisgIERFRkdDUFJPNTsKICAgTGlzcF9PYmplY3QgaGFuZGxl ciwgdmFsLCBpbnN2YWwsIG9yaWdfZmlsZW5hbWUsIG9sZF91bmRvOwogICBMaXNwX09iamVj dCBwOwogICBwdHJkaWZmX3QgdG90YWwgPSAwOwpAQCAtMzc2OCw3ICszNzY4LDcgQEAKICAg ICAgIHB0cmRpZmZfdCB0aGlzX2NvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKICAgICAgIGlu dCBtdWx0aWJ5dGUgPSAhIE5JTFAgKEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBlbmFibGVfbXVs dGlieXRlX2NoYXJhY3RlcnMpKTsKICAgICAgIExpc3BfT2JqZWN0IGNvbnZlcnNpb25fYnVm ZmVyOwotICAgICAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgICAgIERFRkdDUFJPMTsKIAog ICAgICAgY29udmVyc2lvbl9idWZmZXIgPSBjb2RlX2NvbnZlcnNpb25fc2F2ZSAoMSwgbXVs dGlieXRlKTsKIApAQCAtNDU1Niw3ICs0NTU2LDcgQEAKICAgTGlzcF9PYmplY3QgZW5jb2Rl ZF9maWxlbmFtZTsKICAgaW50IHZpc2l0aW5nID0gKEVRICh2aXNpdCwgUXQpIHx8IFNUUklO R1AgKHZpc2l0KSk7CiAgIGludCBxdWlldGx5ID0gIU5JTFAgKHZpc2l0KTsKLSAgc3RydWN0 IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzMsIGdjcHJvNCwgZ2Nwcm81OworICBERUZH Q1BSTzU7CiAgIHN0cnVjdCBidWZmZXIgKmdpdmVuX2J1ZmZlcjsKICAgc3RydWN0IGNvZGlu Z19zeXN0ZW0gY29kaW5nOwogCkBAIC00ODYzLDcgKzQ4NjMsNyBAQAogewogICBMaXNwX09i amVjdCBhbm5vdGF0aW9uczsKICAgTGlzcF9PYmplY3QgcCwgcmVzOwotICBzdHJ1Y3QgZ2Nw cm8gZ2Nwcm8xLCBnY3BybzI7CisgIERFRkdDUFJPMjsKICAgTGlzcF9PYmplY3Qgb3JpZ2lu YWxfYnVmZmVyOwogICBpbnQgaSwgdXNlZF9nbG9iYWwgPSAwOwogCkBAIC01MTkzLDcgKzUx OTMsNyBAQAogewogICBMaXNwX09iamVjdCBhcmdzWzNdLCBtc2c7CiAgIGludCBpLCBuYnl0 ZXM7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdDUFJPMTsKICAgY2hhciAqbXNn YnVmOwogICBVU0VfU0FGRV9BTExPQ0E7CiAKQEAgLTUzMTMsNyArNTMxMyw3IEBACiAgIHB0 cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAgIGludCBvcmlnX21pbmlidWZm ZXJfYXV0b19yYWlzZSA9IG1pbmlidWZmZXJfYXV0b19yYWlzZTsKICAgaW50IG9sZF9tZXNz YWdlX3AgPSAwOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzI7CisgIERFRkdDUFJP MjsKIAogICBpZiAobWF4X3NwZWNwZGxfc2l6ZSA8IHNwZWNwZGxfc2l6ZSArIDQwKQogICAg IG1heF9zcGVjcGRsX3NpemUgPSBzcGVjcGRsX3NpemUgKyA0MDsKQEAgLTU1NTYsNyArNTU1 Niw3IEBACiBMaXNwX09iamVjdAogRnJlYWRfZmlsZV9uYW1lIChMaXNwX09iamVjdCBwcm9t cHQsIExpc3BfT2JqZWN0IGRpciwgTGlzcF9PYmplY3QgZGVmYXVsdF9maWxlbmFtZSwgTGlz cF9PYmplY3QgbXVzdG1hdGNoLCBMaXNwX09iamVjdCBpbml0aWFsLCBMaXNwX09iamVjdCBw cmVkaWNhdGUpCiB7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdDUFJPMTsKICAg TGlzcF9PYmplY3QgYXJnc1s3XTsKIAogICBHQ1BSTzEgKGRlZmF1bHRfZmlsZW5hbWUpOwoK PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9maWxlbG9jay5jJwotLS0gc3JjL2ZpbGVsb2NrLmMJ MjAxMi0wNy0xMCAwNjoyMzo0NSArMDAwMAorKysgc3JjL2ZpbGVsb2NrLmMJMjAxMi0wNy0x NSAxNDo0MzoyOCArMDAwMApAQCAtNTQ4LDcgKzU0OCw3IEBACiAgIHB0cmRpZmZfdCBsb2Nr ZXJfc2l6ZTsKICAgbG9ja19pbmZvX3R5cGUgbG9ja19pbmZvOwogICBwcmludG1heF90IHBp ZDsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQUk8xOwogICBVU0VfU0FGRV9B TExPQ0E7CiAKICAgLyogRG9uJ3QgZG8gbG9ja2luZyBpZiB0aGUgdXNlciBoYXMgb3B0ZWQg b3V0LiAgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZm5zLmMnCi0tLSBzcmMvZm5zLmMJ MjAxMi0wNy0xNSAxMToxNzowOSArMDAwMAorKysgc3JjL2Zucy5jCTIwMTItMDctMTUgMTQ6 NDM6MjggKzAwMDAKQEAgLTE3NDcsNyArMTc0Nyw3IEBACiB7CiAgIExpc3BfT2JqZWN0IGZy b250LCBiYWNrOwogICByZWdpc3RlciBMaXNwX09iamVjdCBsZW4sIHRlbTsKLSAgc3RydWN0 IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yOworICBERUZHQ1BSTzI7CiAgIEVNQUNTX0lOVCBsZW5n dGg7CiAKICAgZnJvbnQgPSBsaXN0OwpAQCAtMTc3NSw3ICsxNzc1LDcgQEAKICAgcmVnaXN0 ZXIgTGlzcF9PYmplY3QgdGFpbDsKICAgTGlzcF9PYmplY3QgdGVtOwogICByZWdpc3RlciBM aXNwX09iamVjdCBsMSwgbDI7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nw cm8zLCBnY3BybzQ7CisgIERFRkdDUFJPNDsKIAogICBsMSA9IG9yZ19sMTsKICAgbDIgPSBv cmdfbDI7CkBAIC0yMjcxLDcgKzIyNzEsNyBAQAogICByZWdpc3RlciBMaXNwX09iamVjdCB0 YWlsOwogICBMaXNwX09iamVjdCBkdW1teTsKICAgcmVnaXN0ZXIgRU1BQ1NfSU5UIGk7Ci0g IHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nwcm8zOworICBERUZHQ1BSTzM7CiAK ICAgaWYgKHZhbHMpCiAgICAgewpAQCAtMjI4MCw4ICsyMjgwLDcgQEAKIAl2YWxzW2ldID0g UW5pbDsKIAogICAgICAgR0NQUk8zIChkdW1teSwgZm4sIHNlcSk7Ci0gICAgICBnY3BybzEu dmFyID0gdmFsczsKLSAgICAgIGdjcHJvMS5udmFycyA9IGxlbmk7CisgICAgICBJRl9HQ1BS TyAoZ2Nwcm8xLnZhciA9IHZhbHM7IGdjcHJvMS5udmFycyA9IGxlbmkpOwogICAgIH0KICAg ZWxzZQogICAgIEdDUFJPMiAoZm4sIHNlcSk7CkBAIC0yMzUzLDcgKzIzNTIsNyBAQAogICBF TUFDU19JTlQgbmFyZ3M7CiAgIHB0cmRpZmZfdCBpOwogICByZWdpc3RlciBMaXNwX09iamVj dCAqYXJnczsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQUk8xOwogICBMaXNw X09iamVjdCByZXQ7CiAgIFVTRV9TQUZFX0FMTE9DQTsKIApAQCAtMjQ1Miw3ICsyNDUxLDcg QEAKIHsKICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgYW5zOwogICBMaXNwX09iamVjdCBhcmdz WzJdOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAKICAgQ0hFQ0tf U1RSSU5HIChwcm9tcHQpOwogCkBAIC0yNjE0LDcgKzI2MTMsNyBAQAogICAoTGlzcF9PYmpl Y3QgZmVhdHVyZSwgTGlzcF9PYmplY3QgZmlsZW5hbWUsIExpc3BfT2JqZWN0IG5vZXJyb3Ip CiB7CiAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRlbTsKLSAgc3RydWN0IGdjcHJvIGdjcHJv MSwgZ2Nwcm8yOworICBERUZHQ1BSTzI7CiAgIGludCBmcm9tX2ZpbGUgPSBsb2FkX2luX3By b2dyZXNzOwogCiAgIENIRUNLX1NZTUJPTCAoZmVhdHVyZSk7CkBAIC0yNzYxLDcgKzI3NjAs NyBAQAogewogICAvKiBUaGlzIGZ1bmN0aW9uIGNhbiBHQy4gKi8KICAgTGlzcF9PYmplY3Qg bmV3YXJnc1szXTsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yOworICBERUZHQ1BS TzI7CiAgIExpc3BfT2JqZWN0IHJlc3VsdDsKIAogICBuZXdhcmdzWzBdID0gRndpZGdldF9n ZXQgKGFyZ3NbMF0sIGFyZ3NbMV0pOwpAQCAtMjgxMiw3ICsyODExLDcgQEAKICAgICAgIExp c3BfT2JqZWN0IHYgPSBGbWFrZV92ZWN0b3IgKG1ha2VfbnVtYmVyICg3KSwgUW5pbCk7CiAg ICAgICBjb25zdCBpbnQgZGF5c1s3XSA9IHtEQVlfMSwgREFZXzIsIERBWV8zLCBEQVlfNCwg REFZXzUsIERBWV82LCBEQVlfN307CiAgICAgICBpbnQgaTsKLSAgICAgIHN0cnVjdCBnY3By byBnY3BybzE7CisgICAgICBERUZHQ1BSTzE7CiAgICAgICBHQ1BSTzEgKHYpOwogICAgICAg c3luY2hyb25pemVfc3lzdGVtX3RpbWVfbG9jYWxlICgpOwogICAgICAgZm9yIChpID0gMDsg aSA8IDc7IGkrKykKQEAgLTI4MzYsNyArMjgzNSw3IEBACiAgICAgICBjb25zdCBpbnQgbW9u dGhzWzEyXSA9IHtNT05fMSwgTU9OXzIsIE1PTl8zLCBNT05fNCwgTU9OXzUsIE1PTl82LCBN T05fNywKIAkJCSAgICAgIE1PTl84LCBNT05fOSwgTU9OXzEwLCBNT05fMTEsIE1PTl8xMn07 CiAgICAgICBpbnQgaTsKLSAgICAgIHN0cnVjdCBnY3BybyBnY3BybzE7CisgICAgICBERUZH Q1BSTzE7CiAgICAgICBHQ1BSTzEgKHYpOwogICAgICAgc3luY2hyb25pemVfc3lzdGVtX3Rp bWVfbG9jYWxlICgpOwogICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3JjL2ZyYW1lLmMnCi0tLSBzcmMvZnJhbWUuYwkyMDEyLTA3LTExIDA0 OjMxOjUzICswMDAwCisrKyBzcmMvZnJhbWUuYwkyMDEyLTA3LTE1IDE0OjQzOjI4ICswMDAw CkBAIC0zNzAsNyArMzcwLDcgQEAKIG1ha2VfZnJhbWVfd2l0aG91dF9taW5pYnVmZmVyIChy ZWdpc3RlciBMaXNwX09iamVjdCBtaW5pX3dpbmRvdywgS0JPQVJEICprYiwgTGlzcF9PYmpl Y3QgZGlzcGxheSkKIHsKICAgcmVnaXN0ZXIgc3RydWN0IGZyYW1lICpmOwotICBzdHJ1Y3Qg Z2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAKICAgaWYgKCFOSUxQIChtaW5pX3dpbmRv dykpCiAgICAgQ0hFQ0tfTElWRV9XSU5ET1cgKG1pbmlfd2luZG93KTsKQEAgLTE0ODYsNyAr MTQ4Niw3IEBACiAgIExpc3BfT2JqZWN0IHgsIHksIHJldHZhbDsKICAgaW50IGNvbCwgcm93 OwogICBUaW1lIGxvbmdfZHVtbXk7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdD UFJPMTsKIAogICBmID0gU0VMRUNURURfRlJBTUUgKCk7CiAgIHggPSB5ID0gUW5pbDsKQEAg LTIxNDcsNyArMjE0Nyw3IEBACiAgIExpc3BfT2JqZWN0IGFsaXN0OwogICBGUkFNRV9QVFIg ZjsKICAgaW50IGhlaWdodCwgd2lkdGg7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERF RkdDUFJPMTsKIAogICBpZiAoTklMUCAoZnJhbWUpKQogICAgIGZyYW1lID0gc2VsZWN0ZWRf ZnJhbWU7CkBAIC0yNzUxLDcgKzI3NTEsNyBAQAogICBpbnQgbGVmdF9ub19jaGFuZ2UgPSAw LCB0b3Bfbm9fY2hhbmdlID0gMDsKICAgaW50IGljb25fbGVmdF9ub19jaGFuZ2UgPSAwLCBp Y29uX3RvcF9ub19jaGFuZ2UgPSAwOwogICBpbnQgc2l6ZV9jaGFuZ2VkID0gMDsKLSAgc3Ry dWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yOworICBERUZHQ1BSTzI7CiAKICAgaSA9IDA7CiAg IGZvciAodGFpbCA9IGFsaXN0OyBDT05TUCAodGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkK QEAgLTI3NzYsOCArMjc3Niw3IEBACiAgIGFsaXN0ID0gdGFpbCA9IFFuaWw7CiAKICAgR0NQ Uk8yICgqcGFybXMsICp2YWx1ZXMpOwotICBnY3BybzEubnZhcnMgPSBpOwotICBnY3BybzIu bnZhcnMgPSBpOworICBJRl9HQ1BSTyAoZ2Nwcm8xLm52YXJzID0gaTsgZ2Nwcm8yLm52YXJz ID0gaSk7CiAKICAgLyogVGhlcmUgaXMgbm8gbmVlZCB0byBnY3BybyBMRUZULCBUT1AsIElD T05fTEVGVCwgb3IgSUNPTl9UT1AsCiAgICAgIGJlY2F1c2UgdGhlaXIgdmFsdWVzIGFwcGVh ciBpbiBWQUxVRVMgYW5kIHN0cmluZ3MgYXJlIG5vdCB2YWxpZC4gICovCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3JjL2d0a3V0aWwuYycKLS0tIHNyYy9ndGt1dGlsLmMJMjAxMi0wNy0xMCAy MTo0ODozNCArMDAwMAorKysgc3JjL2d0a3V0aWwuYwkyMDEyLTA3LTE1IDE0OjQzOjI4ICsw MDAwCkBAIC0xODMwLDcgKzE4MzAsNyBAQAogICBpZiAoZGVmYXVsdF9maWxlbmFtZSkKICAg ICB7CiAgICAgICBMaXNwX09iamVjdCBmaWxlOwotICAgICAgc3RydWN0IGdjcHJvIGdjcHJv MTsKKyAgICAgIERFRkdDUFJPMTsKICAgICAgIGNoYXIgKnV0ZjhfZmlsZW5hbWU7CiAgICAg ICBHQ1BSTzEgKGZpbGUpOwogCkBAIC00MjI0LDcgKzQyMjQsNyBAQAogewogICBpbnQgaTsK ICAgTGlzcF9PYmplY3QgZmlsZSwgcnRsX25hbWU7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEs IGdjcHJvMjsKKyAgREVGR0NQUk8yOwogICBHQ1BSTzIgKGZpbGUsIHJ0bF9uYW1lKTsKIAog ICBydGxfbmFtZSA9IEZmaWxlX25hbWVfbm9uZGlyZWN0b3J5IChydGwpOwoKPT09IG1vZGlm aWVkIGZpbGUgJ3NyYy9pbmRlbnQuYycKLS0tIHNyYy9pbmRlbnQuYwkyMDEyLTA2LTI4IDEy OjI5OjM3ICswMDAwCisrKyBzcmMvaW5kZW50LmMJMjAxMi0wNy0xNSAxNToyMToxNCArMDAw MApAQCAtMTk3OCw3ICsxOTc4LDcgQEAKICAgc3RydWN0IHdpbmRvdyAqdzsKICAgTGlzcF9P YmplY3Qgb2xkX2J1ZmZlcjsKICAgRU1BQ1NfSU5UIG9sZF9jaGFycG9zIElGX0xJTlQgKD0g MCksIG9sZF9ieXRlcG9zIElGX0xJTlQgKD0gMCk7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEs IGdjcHJvMiwgZ2Nwcm8zOworICBERUZHQ1BSTzE7CiAgIExpc3BfT2JqZWN0IGxjb2xzID0g UW5pbDsKICAgZG91YmxlIGNvbHMgSUZfTElOVCAoPSAwKTsKICAgdm9pZCAqaXRkYXRhID0g TlVMTDsKQEAgLTE5OTksNyArMTk5OSw3IEBACiAgIHcgPSBYV0lORE9XICh3aW5kb3cpOwog CiAgIG9sZF9idWZmZXIgPSBRbmlsOwotICBHQ1BSTzMgKG9sZF9idWZmZXIsIG9sZF9jaGFy cG9zLCBvbGRfYnl0ZXBvcyk7CisgIEdDUFJPMSAob2xkX2J1ZmZlcik7CiAgIGlmIChYQlVG RkVSICh3LT5idWZmZXIpICE9IGN1cnJlbnRfYnVmZmVyKQogICAgIHsKICAgICAgIC8qIFNl dCB0aGUgd2luZG93J3MgYnVmZmVyIHRlbXBvcmFyaWx5IHRvIHRoZSBjdXJyZW50IGJ1ZmZl ci4gICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2luc2RlbC5jJwotLS0gc3JjL2luc2Rl bC5jCTIwMTItMDctMDMgMTg6MjQ6NDIgKzAwMDAKKysrIHNyYy9pbnNkZWwuYwkyMDEyLTA3 LTE1IDE0OjQzOjI4ICswMDAwCkBAIC05MTAsNyArOTEwLDcgQEAKIAkJICAgICAgcHRyZGlm Zl90IG5jaGFycywgcHRyZGlmZl90IG5ieXRlcywKIAkJICAgICAgaW50IGluaGVyaXQsIGlu dCBiZWZvcmVfbWFya2VycykKIHsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQ Uk8xOwogICBwdHJkaWZmX3Qgb3V0Z29pbmdfbmJ5dGVzID0gbmJ5dGVzOwogICBJTlRFUlZB TCBpbnRlcnZhbHM7CiAKQEAgLTEyOTEsNyArMTI5MSw3IEBACiAgIHB0cmRpZmZfdCBpbnNi eXRlcyA9IFNCWVRFUyAobmV3KTsKICAgcHRyZGlmZl90IGZyb21fYnl0ZSwgdG9fYnl0ZTsK ICAgcHRyZGlmZl90IG5ieXRlc19kZWwsIG5jaGFyc19kZWw7Ci0gIHN0cnVjdCBnY3BybyBn Y3BybzE7CisgIERFRkdDUFJPMTsKICAgSU5URVJWQUwgaW50ZXJ2YWxzOwogICBwdHJkaWZm X3Qgb3V0Z29pbmdfaW5zYnl0ZXMgPSBpbnNieXRlczsKICAgTGlzcF9PYmplY3QgZGVsZXRp b247CkBAIC0xNTc4LDcgKzE1NzgsNyBAQAogewogICBwdHJkaWZmX3QgZnJvbV9ieXRlLCB0 b19ieXRlOwogICBMaXNwX09iamVjdCBkZWxldGlvbjsKLSAgc3RydWN0IGdjcHJvIGdjcHJv MTsKKyAgREVGR0NQUk8xOwogCiAgIC8qIE1ha2UgYXJncyBiZSB2YWxpZCAqLwogICBpZiAo ZnJvbSA8IEJFR1YpCkBAIC0xODM5LDcgKzE4MzksNyBAQAogICAgICAgaWYgKHByZXNlcnZl X3B0cikKIAl7CiAJICBMaXNwX09iamVjdCBwcmVzZXJ2ZV9tYXJrZXI7Ci0JICBzdHJ1Y3Qg Z2Nwcm8gZ2Nwcm8xOworCSAgREVGR0NQUk8xOwogCSAgcHJlc2VydmVfbWFya2VyID0gRmNv cHlfbWFya2VyIChtYWtlX251bWJlciAoKnByZXNlcnZlX3B0ciksIFFuaWwpOwogCSAgR0NQ Uk8xIChwcmVzZXJ2ZV9tYXJrZXIpOwogCSAgdmVyaWZ5X2ludGVydmFsX21vZGlmaWNhdGlv biAoY3VycmVudF9idWZmZXIsIHN0YXJ0LCBlbmQpOwpAQCAtMTk1OCw3ICsxOTU4LDcgQEAK ICAgTGlzcF9PYmplY3Qgc3RhcnQsIGVuZDsKICAgTGlzcF9PYmplY3Qgc3RhcnRfbWFya2Vy LCBlbmRfbWFya2VyOwogICBMaXNwX09iamVjdCBwcmVzZXJ2ZV9tYXJrZXI7Ci0gIHN0cnVj dCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nwcm8zOworICBERUZHQ1BSTzM7CiAgIHB0cmRp ZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAKICAgaWYgKGluaGliaXRfbW9kaWZp Y2F0aW9uX2hvb2tzKQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9rZXlib2FyZC5jJwotLS0g c3JjL2tleWJvYXJkLmMJMjAxMi0wNy0xMiAwMzo0NTo0NiArMDAwMAorKysgc3JjL2tleWJv YXJkLmMJMjAxMi0wNy0xNSAxNDo0NDo0NiArMDAwMApAQCAtMjI4Miw3ICsyMjgyLDcgQEAK ICAgdm9sYXRpbGUgTGlzcF9PYmplY3QgcHJldmlvdXNfZWNob19hcmVhX21lc3NhZ2U7CiAg IHZvbGF0aWxlIExpc3BfT2JqZWN0IGFsc29fcmVjb3JkOwogICB2b2xhdGlsZSBpbnQgcmVy ZWFkOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzI7CisgIERFRkdDUFJPMjsKICAg aW50IHZvbGF0aWxlIHBvbGxpbmdfc3RvcHBlZF9oZXJlID0gMDsKICAgc3RydWN0IGtib2Fy ZCAqb3JpZ19rYm9hcmQgPSBjdXJyZW50X2tib2FyZDsKIApAQCAtMzAwNCw3ICszMDA0LDcg QEAKICAgICAgIExpc3BfT2JqZWN0IGtleXM7CiAgICAgICBwdHJkaWZmX3Qga2V5X2NvdW50 OwogICAgICAgaW50IGtleV9jb3VudF9yZXNldDsKLSAgICAgIHN0cnVjdCBnY3BybyBnY3By bzE7CisgICAgICBERUZHQ1BSTzE7CiAgICAgICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERM X0lOREVYICgpOwogCiAgICAgICAvKiBTYXZlIHRoZSBlY2hvIHN0YXR1cy4gICovCkBAIC00 MzI5LDcgKzQzMjksNyBAQAogICBFTUFDU19USU1FIG5vdzsKICAgRU1BQ1NfVElNRSBpZGxl bmVzc19ub3c7CiAgIExpc3BfT2JqZWN0IHRpbWVycywgaWRsZV90aW1lcnMsIGNob3Nlbl90 aW1lcjsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzM7CisgIERFRkdD UFJPMzsKIAogICBuZXh0dGltZSA9IGludmFsaWRfZW1hY3NfdGltZSAoKTsKIApAQCAtNzU2 NCw3ICs3NTY0LDcgQEAKIHN0YXRpYyB2b2lkCiBtZW51X2Jhcl9pdGVtIChMaXNwX09iamVj dCBrZXksIExpc3BfT2JqZWN0IGl0ZW0sIExpc3BfT2JqZWN0IGR1bW15MSwgdm9pZCAqZHVt bXkyKQogewotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAgIGludCBp OwogICBMaXNwX09iamVjdCB0ZW07CiAKQEAgLTgwNjQsNyArODA2NCw3IEBACiBwcm9jZXNz X3Rvb2xfYmFyX2l0ZW0gKExpc3BfT2JqZWN0IGtleSwgTGlzcF9PYmplY3QgZGVmLCBMaXNw X09iamVjdCBkYXRhLCB2b2lkICphcmdzKQogewogICBpbnQgaTsKLSAgc3RydWN0IGdjcHJv IGdjcHJvMSwgZ2Nwcm8yOworICBERUZHQ1BSTzI7CiAKICAgLyogUHJvdGVjdCBLRVkgYW5k IERFRiBmcm9tIEdDIGJlY2F1c2UgcGFyc2VfdG9vbF9iYXJfaXRlbSBtYXkgY2FsbAogICAg ICBldmFsLiAgKi8KQEAgLTkwNzQsNyArOTA3NCw3IEBACiAgIGludCBqdW5rOwogI2VuZGlm CiAKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQUk8xOwogCiAgIEdDUFJPMSAo ZmFrZV9wcmVmaXhlZF9rZXlzKTsKICAgcmF3X2tleWJ1Zl9jb3VudCA9IDA7CkBAIC05ODY5 LDcgKzk4NjksNyBAQAogCSBTY2FuIGZyb20gaW5kZWMuZW5kIHVudGlsIHdlIGZpbmQgYSBi b3VuZCBzdWZmaXguICAqLwogICAgICAgd2hpbGUgKGluZGVjLmVuZCA8IHQpCiAJewotCSAg c3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzMsIGdjcHJvNDsKKwkgIERFRkdD UFJPNDsKIAkgIGludCBkb25lLCBkaWZmOwogCiAJICBHQ1BSTzQgKGluZGVjLm1hcCwgZmtl eS5tYXAsIGtleXRyYW4ubWFwLCBkZWxheWVkX3N3aXRjaF9mcmFtZSk7CkBAIC05OTAzLDcg Kzk5MDMsNyBAQAogCS8qIENvbnRpbnVlIHNjYW4gZnJvbSBma2V5LmVuZCB1bnRpbCB3ZSBm aW5kIGEgYm91bmQgc3VmZml4LiAgKi8KIAl3aGlsZSAoZmtleS5lbmQgPCBpbmRlYy5zdGFy dCkKIAkgIHsKLQkgICAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzMsIGdj cHJvNDsKKwkgICAgREVGR0NQUk80OwogCSAgICBpbnQgZG9uZSwgZGlmZjsKIAogCSAgICBH Q1BSTzQgKGluZGVjLm1hcCwgZmtleS5tYXAsIGtleXRyYW4ubWFwLCBkZWxheWVkX3N3aXRj aF9mcmFtZSk7CkBAIC05OTMyLDcgKzk5MzIsNyBAQAogCSBTY2FuIGZyb20ga2V5dHJhbi5l bmQgdW50aWwgd2UgZmluZCBhIGJvdW5kIHN1ZmZpeC4gICovCiAgICAgICB3aGlsZSAoa2V5 dHJhbi5lbmQgPCBma2V5LnN0YXJ0KQogCXsKLQkgIHN0cnVjdCBnY3BybyBnY3BybzEsIGdj cHJvMiwgZ2Nwcm8zLCBnY3BybzQ7CisJICBERUZHQ1BSTzQ7CiAJICBpbnQgZG9uZSwgZGlm ZjsKIAogCSAgR0NQUk80IChpbmRlYy5tYXAsIGZrZXkubWFwLCBrZXl0cmFuLm1hcCwgZGVs YXllZF9zd2l0Y2hfZnJhbWUpOwpAQCAtMTAxMjcsNyArMTAxMjcsNyBAQAogewogICBMaXNw X09iamVjdCBrZXlidWZbMzBdOwogICByZWdpc3RlciBpbnQgaTsKLSAgc3RydWN0IGdjcHJv IGdjcHJvMTsKKyAgREVGR0NQUk8xOwogICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERMX0lO REVYICgpOwogCiAgIGlmICghTklMUCAocHJvbXB0KSkKQEAgLTEwMTQxLDcgKzEwMTQxLDcg QEAKIAogICBtZW1zZXQgKGtleWJ1ZiwgMCwgc2l6ZW9mIGtleWJ1Zik7CiAgIEdDUFJPMSAo a2V5YnVmWzBdKTsKLSAgZ2Nwcm8xLm52YXJzID0gKHNpemVvZiBrZXlidWYvc2l6ZW9mIChr ZXlidWZbMF0pKTsKKyAgSUZfR0NQUk8gKGdjcHJvMS5udmFycyA9IHNpemVvZiBrZXlidWYg LyBzaXplb2Yga2V5YnVmWzBdKTsKIAogICBpZiAoTklMUCAoY29udGludWVfZWNobykpCiAg ICAgewpAQCAtMTAxODQsNyArMTAxODQsNyBAQAogewogICBMaXNwX09iamVjdCBrZXlidWZb MzBdOwogICByZWdpc3RlciBpbnQgaTsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVG R0NQUk8xOwogICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVYICgpOwogCiAgIGlm ICghTklMUCAocHJvbXB0KSkKQEAgLTEwMTk4LDcgKzEwMTk4LDcgQEAKIAogICBtZW1zZXQg KGtleWJ1ZiwgMCwgc2l6ZW9mIGtleWJ1Zik7CiAgIEdDUFJPMSAoa2V5YnVmWzBdKTsKLSAg Z2Nwcm8xLm52YXJzID0gKHNpemVvZiBrZXlidWYgLyBzaXplb2YgKGtleWJ1ZlswXSkpOwor ICBJRl9HQ1BSTyAoZ2Nwcm8xLm52YXJzID0gc2l6ZW9mIGtleWJ1ZiAvIHNpemVvZiBrZXli dWZbMF0pOwogCiAgIGlmIChOSUxQIChjb250aW51ZV9lY2hvKSkKICAgICB7CkBAIC0xMDI3 NCw3ICsxMDI3NCw3IEBACiAKICAgICAgIGlmIChDT05TUCAoZmluYWwpICYmICh0ZW0gPSBG Y2FyIChmaW5hbCksIEVRICh0ZW0sIFFhdXRvbG9hZCkpKQogCXsKLQkgIHN0cnVjdCBnY3By byBnY3BybzEsIGdjcHJvMjsKKwkgIERFRkdDUFJPMjsKIAogCSAgR0NQUk8yIChjbWQsIHBy ZWZpeGFyZyk7CiAJICBkb19hdXRvbG9hZCAoZmluYWwsIGNtZCk7CkBAIC0xMDYxNiw3ICsx MDYxNiw3IEBACiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAgIGlu dCBvbGRfaGVpZ2h0LCBvbGRfd2lkdGg7CiAgIGludCB3aWR0aCwgaGVpZ2h0OwotICBzdHJ1 Y3QgZ2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAgIExpc3BfT2JqZWN0IGhvb2s7CiAK ICAgaWYgKHR0eV9saXN0ICYmIHR0eV9saXN0LT5uZXh0KQpAQCAtMTA4NzMsNyArMTA4NzMs NyBAQAogICAgICAgaWYgKGltbWVkaWF0ZV9xdWl0ICYmIE5JTFAgKFZpbmhpYml0X3F1aXQp KQogCXsKIAkgIHN0cnVjdCBnbF9zdGF0ZV9zIHNhdmVkOwotCSAgc3RydWN0IGdjcHJvIGdj cHJvMSwgZ2Nwcm8yLCBnY3BybzMsIGdjcHJvNDsKKwkgIERFRkdDUFJPNDsKIAogCSAgaW1t ZWRpYXRlX3F1aXQgPSAwOwogICAgICAgICAgIHNpZ2ZyZWUgKCk7Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3JjL2tleW1hcC5jJwotLS0gc3JjL2tleW1hcC5jCTIwMTItMDctMTUgMDc6NTc6 NTQgKzAwMDAKKysrIHNyYy9rZXltYXAuYwkyMDEyLTA3LTE1IDE0OjQzOjI4ICswMDAwCkBA IC0yNTYsNyArMjU2LDcgQEAKIAkgICAgewogCSAgICAgIGlmIChhdXRvbG9hZCkKIAkJewot CQkgIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKKwkJICBERUZHQ1BSTzI7CiAKIAkJ ICBHQ1BSTzIgKHRlbSwgb2JqZWN0KTsKIAkJICBkb19hdXRvbG9hZCAodGVtLCBvYmplY3Qp OwpAQCAtMzI0LDcgKzMyNCw3IEBACiAgIChMaXNwX09iamVjdCBrZXltYXAsIExpc3BfT2Jq ZWN0IHBhcmVudCkKIHsKICAgTGlzcF9PYmplY3QgbGlzdCwgcHJldjsKLSAgc3RydWN0IGdj cHJvIGdjcHJvMSwgZ2Nwcm8yOworICBERUZHQ1BSTzI7CiAKICAgLyogRmx1c2ggYW55IHJl dmVyc2UtbWFwIGNhY2hlLiAgKi8KICAgd2hlcmVfaXNfY2FjaGUgPSBRbmlsOyB3aGVyZV9p c19jYWNoZV9rZXltYXBzID0gUXQ7CkBAIC0zOTgsNyArMzk4LDcgQEAKICAgICB7CiAgICAg ICAvKiBTZWUgaWYgdGhlcmUgaXMgYSBtZXRhLW1hcC4gIElmIHRoZXJlJ3Mgbm9uZSwgdGhl cmUgaXMKICAgICAgICAgIG5vIGJpbmRpbmcgZm9yIElEWCwgdW5sZXNzIGEgZGVmYXVsdCBi aW5kaW5nIGV4aXN0cyBpbiBNQVAuICAqLwotICAgICAgc3RydWN0IGdjcHJvIGdjcHJvMTsK KyAgICAgIERFRkdDUFJPMTsKICAgICAgIExpc3BfT2JqZWN0IGV2ZW50X21ldGFfYmluZGlu ZywgZXZlbnRfbWV0YV9tYXA7CiAgICAgICBHQ1BSTzEgKG1hcCk7CiAgICAgICAvKiBBIHN0 cmFuZ2UgdmFsdWUgaW4gd2hpY2ggTWV0YSBpcyBzZXQgd291bGQgY2F1c2UKQEAgLTQzMCw3 ICs0MzAsNyBAQAogICAgIExpc3BfT2JqZWN0IHRfYmluZGluZyA9IFF1bmJvdW5kOwogICAg IExpc3BfT2JqZWN0IHJldHZhbCA9IFF1bmJvdW5kOwogICAgIExpc3BfT2JqZWN0IHJldHZh bF90YWlsID0gUW5pbDsKLSAgICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJv MywgZ2Nwcm80OworICAgIERFRkdDUFJPNDsKIAogICAgIEdDUFJPNCAodGFpbCwgaWR4LCB0 X2JpbmRpbmcsIHJldHZhbCk7CiAKQEAgLTU4Niw3ICs1ODYsNyBAQAogCQkgICAgIExpc3Bf T2JqZWN0IGFyZ3MsCiAJCSAgICAgdm9pZCAqZGF0YSkKIHsKLSAgc3RydWN0IGdjcHJvIGdj cHJvMSwgZ2Nwcm8yLCBnY3BybzM7CisgIERFRkdDUFJPMzsKICAgTGlzcF9PYmplY3QgdGFp bAogICAgID0gKENPTlNQIChtYXApICYmIEVRIChRa2V5bWFwLCBYQ0FSIChtYXApKSkgPyBY Q0RSIChtYXApIDogbWFwOwogCkBAIC02MzQsNyArNjM0LDcgQEAKIHZvaWQKIG1hcF9rZXlt YXAgKExpc3BfT2JqZWN0IG1hcCwgbWFwX2tleW1hcF9mdW5jdGlvbl90IGZ1biwgTGlzcF9P YmplY3QgYXJncywgdm9pZCAqZGF0YSwgaW50IGF1dG9sb2FkKQogewotICBzdHJ1Y3QgZ2Nw cm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAgIEdDUFJPMSAoYXJncyk7CiAgIG1hcCA9IGdl dF9rZXltYXAgKG1hcCwgMSwgYXV0b2xvYWQpOwogICB3aGlsZSAoQ09OU1AgKG1hcCkpCkBA IC02NTksNyArNjU5LDcgQEAKIHZvaWQKIG1hcF9rZXltYXBfY2Fub25pY2FsIChMaXNwX09i amVjdCBtYXAsIG1hcF9rZXltYXBfZnVuY3Rpb25fdCBmdW4sIExpc3BfT2JqZWN0IGFyZ3Ms IHZvaWQgKmRhdGEpCiB7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdDUFJPMTsK ICAgR0NQUk8xIChhcmdzKTsKICAgLyogbWFwX2tleW1hcF9jYW5vbmljYWwgbWF5IGJlIHVz ZWQgZnJvbSByZWRpc3BsYXkgKGUuZy4gd2hlbiBidWlsZGluZyBtZW51cykKICAgICAgc28g YmUgY2FyZWZ1bCB0byBpZ25vcmUgZXJyb3JzIGFuZCB0byBpbmhpYml0IHJlZGlzcGxheS4g ICovCkBAIC02NzYsNyArNjc2LDcgQEAKIElmIEtFWU1BUCBoYXMgYSBwYXJlbnQsIHRoaXMg ZnVuY3Rpb24gcmV0dXJucyBpdCB3aXRob3V0IHByb2Nlc3NpbmcgaXQuICAqLykKICAgKExp c3BfT2JqZWN0IGZ1bmN0aW9uLCBMaXNwX09iamVjdCBrZXltYXApCiB7Ci0gIHN0cnVjdCBn Y3BybyBnY3BybzE7CisgIERFRkdDUFJPMTsKICAgR0NQUk8xIChmdW5jdGlvbik7CiAgIGtl eW1hcCA9IGdldF9rZXltYXAgKGtleW1hcCwgMSwgMSk7CiAgIGtleW1hcCA9IG1hcF9rZXlt YXBfaW50ZXJuYWwgKGtleW1hcCwgbWFwX2tleW1hcF9jYWxsLCBmdW5jdGlvbiwgTlVMTCk7 CkBAIC0xMTIwLDcgKzExMjAsNyBAQAogICBpbnQgbWV0aXplZCA9IDA7CiAgIGludCBtZXRh X2JpdDsKICAgcHRyZGlmZl90IGxlbmd0aDsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nw cm8yLCBnY3BybzM7CisgIERFRkdDUFJPMzsKIAogICBHQ1BSTzMgKGtleW1hcCwga2V5LCBk ZWYpOwogICBrZXltYXAgPSBnZXRfa2V5bWFwIChrZXltYXAsIDEsIDEpOwpAQCAtMTI3Niw3 ICsxMjc2LDcgQEAKICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgYzsKICAgcHRyZGlmZl90IGxl bmd0aDsKICAgaW50IHRfb2sgPSAhTklMUCAoYWNjZXB0X2RlZmF1bHQpOwotICBzdHJ1Y3Qg Z2Nwcm8gZ2Nwcm8xLCBnY3BybzI7CisgIERFRkdDUFJPMjsKIAogICBHQ1BSTzIgKGtleW1h cCwga2V5KTsKICAga2V5bWFwID0gZ2V0X2tleW1hcCAoa2V5bWFwLCAxLCAxKTsKQEAgLTE3 OTEsNyArMTc5MSw3IEBACiAgIGludCBubWFwczsKICAgTGlzcF9PYmplY3QgYmluZGluZzsK ICAgaW50IGksIGo7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKKyAgREVGR0NQ Uk8yOwogCiAgIG5tYXBzID0gY3VycmVudF9taW5vcl9tYXBzICgmbW9kZXMsICZtYXBzKTsK ICAgLyogTm90ZSB0aGF0IGFsbCB0aGVzZSBtYXBzIGFyZSBHQ1BSTydkCkBAIC0yNjAzLDcg KzI2MDMsNyBAQAogICBMaXNwX09iamVjdCBmb3VuZCA9IFFuaWw7CiAgIC8qIDEgbWVhbnMg aWdub3JlIGFsbCBtZW51IGJpbmRpbmdzIGVudGlyZWx5LiAgKi8KICAgaW50IG5vbWVudXMg PSAhTklMUCAoZmlyc3Rvbmx5KSAmJiAhRVEgKGZpcnN0b25seSwgUW5vbl9hc2NpaSk7Ci0g IHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nwcm8zLCBnY3BybzQsIGdjcHJvNSwg Z2Nwcm82OworICBERUZHQ1BSTzY7CiAgIC8qIExpc3Qgb2Ygc2VxdWVuY2VzIGZvdW5kIHZp YSByZW1hcHBpbmcuICBLZWVwIHRoZW0gaW4gYSBzZXBhcmF0ZQogICAgICB2YXJpYWJsZSwg c28gYXMgdG8gcHVzaCB0aGVtIGxhdGVyLCBzaW5jZSB3ZSBwcmVmZXIKICAgICAgbm9uLXJl bWFwcGVkIGJpbmRpbmcuICAqLwpAQCAtMjgxOSw3ICsyODE5LDcgQEAKICAgTGlzcF9PYmpl Y3Qgb3V0YnVmLCBzaGFkb3c7CiAgIGludCBub21lbnUgPSBOSUxQIChtZW51cyk7CiAgIHJl Z2lzdGVyIExpc3BfT2JqZWN0IHN0YXJ0MTsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAg REVGR0NQUk8xOwogCiAgIGNvbnN0IGNoYXIgKmFsdGVybmF0ZV9oZWFkaW5nCiAgICAgPSAi XApAQCAtMjk5OSw3ICsyOTk5LDcgQEAKIAkJICAgaW50IGFsd2F5c190aXRsZSwgaW50IG1l bnRpb25fc2hhZG93KQogewogICBMaXNwX09iamVjdCBtYXBzLCBvcmlnX21hcHMsIHNlZW4s IHN1Yl9zaGFkb3dzOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJvMzsK KyAgREVGR0NQUk8zOwogICBpbnQgc29tZXRoaW5nID0gMDsKICAgY29uc3QgY2hhciAqa2V5 X2hlYWRpbmcKICAgICA9ICJcCkBAIC0zMjEzLDcgKzMyMTMsNyBAQAogICBMaXNwX09iamVj dCBzdXBwcmVzczsKICAgTGlzcF9PYmplY3Qga2x1ZGdlOwogICBpbnQgZmlyc3QgPSAxOwot ICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJvMzsKKyAgREVGR0NQUk8zOwog CiAgIC8qIFRoZXNlIGFjY3VtdWxhdGUgdGhlIHZhbHVlcyBmcm9tIHNwYXJzZSBrZXltYXAg YmluZGluZ3MsCiAgICAgIHNvIHdlIGNhbiBzb3J0IHRoZW0gYW5kIGhhbmRsZSB0aGVtIGlu IG9yZGVyLiAgKi8KQEAgLTM0NTQsNyArMzQ1NCw3IEBACiAgIExpc3BfT2JqZWN0IHN1cHBy ZXNzOwogICBMaXNwX09iamVjdCBrbHVkZ2U7CiAgIGludCBmaXJzdCA9IDE7Ci0gIHN0cnVj dCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nwcm8zLCBnY3BybzQ7CisgIERFRkdDUFJPNDsK ICAgLyogUmFuZ2Ugb2YgZWxlbWVudHMgdG8gYmUgaGFuZGxlZC4gICovCiAgIGludCBmcm9t LCB0bywgc3RvcDsKICAgTGlzcF9PYmplY3QgY2hhcmFjdGVyOwoKPT09IG1vZGlmaWVkIGZp bGUgJ3NyYy9saXNwLmgnCi0tLSBzcmMvbGlzcC5oCTIwMTItMDctMTUgMTE6MTc6MDkgKzAw MDAKKysrIHNyYy9saXNwLmgJMjAxMi0wNy0xNSAxNzoxNTowMiArMDAwMApAQCAtMTk0OCw2 ICsxOTQ4LDI0IEBACiAgICAgZGVmdmFyX2tib2FyZCAoJmtvX2Z3ZCwgbG5hbWUsIG9mZnNl dG9mIChLQk9BUkQsIHZuYW1lICMjIF8pKTsgXAogICB9IHdoaWxlICgwKQogCisvKiBWYWx1 ZXMgb2YgR0NfTUFSS19TVEFDSyBkdXJpbmcgY29tcGlsYXRpb246CisKKyAgIDAJVXNlIEdD UFJPIGFzIGJlZm9yZQorICAgMQlEbyB0aGUgcmVhbCB0aGluZywgbWFrZSBHQ1BST3MgYW5k IFVOR0NQUk8gbm8tb3BzLgorICAgMiAgICBNYXJrIHRoZSBzdGFjaywgYW5kIGNoZWNrIHRo YXQgZXZlcnl0aGluZyBHQ1BSTydkIGlzCisJbWFya2VkLgorICAgMwlNYXJrIHVzaW5nIEdD UFJPJ3MsIG1hcmsgc3RhY2sgbGFzdCwgYW5kIGNvdW50IGhvdyBtYW55CisJZGVhZCBvYmpl Y3RzIGFyZSBrZXB0IGFsaXZlLiAgKi8KKworCisjZGVmaW5lIEdDX1VTRV9HQ1BST1NfQVNf QkVGT1JFCQkwCisjZGVmaW5lIEdDX01BS0VfR0NQUk9TX05PT1BTCQkxCisjZGVmaW5lIEdD X01BUktfU1RBQ0tfQ0hFQ0tfR0NQUk9TCTIKKyNkZWZpbmUgR0NfVVNFX0dDUFJPU19DSEVD S19aT01CSUVTCTMKKworI2lmbmRlZiBHQ19NQVJLX1NUQUNLCisjZGVmaW5lIEdDX01BUktf U1RBQ0sgR0NfTUFLRV9HQ1BST1NfTk9PUFMKKyNlbmRpZgogCiAMCiAvKiBTdHJ1Y3R1cmUg Zm9yIHJlY29yZGluZyBMaXNwIGNhbGwgc3RhY2sgZm9yIGJhY2t0cmFjZSBwdXJwb3Nlcy4g ICovCkBAIC0yMDMyLDcgKzIwNTAsOSBAQAogICBMaXNwX09iamVjdCB0YWc7CiAgIExpc3Bf T2JqZWN0IHZhbDsKICAgc3RydWN0IGNhdGNodGFnICpuZXh0OworI2lmIEdDX01BUktfU1RB Q0sgIT0gR0NfTUFLRV9HQ1BST1NfTk9PUFMKICAgc3RydWN0IGdjcHJvICpnY3BybzsKKyNl bmRpZgogICBqbXBfYnVmIGptcDsKICAgc3RydWN0IGJhY2t0cmFjZSAqYmFja2xpc3Q7CiAg IHN0cnVjdCBoYW5kbGVyICpoYW5kbGVybGlzdDsKQEAgLTIwOTksNiArMjExOSw4IEBACiAK IGV4dGVybiBFTUFDU19JTlQgbWVtb3J5X2Z1bGxfY29uc190aHJlc2hvbGQ7CiAKKyNpZiBH Q19NQVJLX1NUQUNLICE9IEdDX01BS0VfR0NQUk9TX05PT1BTCisKIC8qIFN0cnVjdHVyZSBm b3IgcmVjb3JkaW5nIHN0YWNrIHNsb3RzIHRoYXQgbmVlZCBtYXJraW5nLiAgKi8KIAogLyog VGhpcyBpcyBhIGNoYWluIG9mIHN0cnVjdHVyZXMsIGVhY2ggb2Ygd2hpY2ggcG9pbnRzIGF0 IGEgTGlzcF9PYmplY3QKQEAgLTIxMjksMjQgKzIxNTEsNyBAQAogI2VuZGlmCiB9OwogCi0v KiBWYWx1ZXMgb2YgR0NfTUFSS19TVEFDSyBkdXJpbmcgY29tcGlsYXRpb246Ci0KLSAgIDAJ VXNlIEdDUFJPIGFzIGJlZm9yZQotICAgMQlEbyB0aGUgcmVhbCB0aGluZywgbWFrZSBHQ1BS T3MgYW5kIFVOR0NQUk8gbm8tb3BzLgotICAgMiAgICBNYXJrIHRoZSBzdGFjaywgYW5kIGNo ZWNrIHRoYXQgZXZlcnl0aGluZyBHQ1BSTydkIGlzCi0JbWFya2VkLgotICAgMwlNYXJrIHVz aW5nIEdDUFJPJ3MsIG1hcmsgc3RhY2sgbGFzdCwgYW5kIGNvdW50IGhvdyBtYW55Ci0JZGVh ZCBvYmplY3RzIGFyZSBrZXB0IGFsaXZlLiAgKi8KLQotCi0jZGVmaW5lIEdDX1VTRV9HQ1BS T1NfQVNfQkVGT1JFCQkwCi0jZGVmaW5lIEdDX01BS0VfR0NQUk9TX05PT1BTCQkxCi0jZGVm aW5lIEdDX01BUktfU1RBQ0tfQ0hFQ0tfR0NQUk9TCTIKLSNkZWZpbmUgR0NfVVNFX0dDUFJP U19DSEVDS19aT01CSUVTCTMKLQotI2lmbmRlZiBHQ19NQVJLX1NUQUNLCi0jZGVmaW5lIEdD X01BUktfU1RBQ0sgR0NfTUFLRV9HQ1BST1NfTk9PUFMKLSNlbmRpZgorI2VuZGlmIC8qIEdD X01BUktfU1RBQ0sgIT0gR0NfTUFLRV9HQ1BST1NfTk9PUFMgKi8KIAogLyogV2hldGhlciB3 ZSBkbyB0aGUgc3RhY2sgbWFya2luZyBtYW51YWxseS4gICovCiAjZGVmaW5lIEJZVEVfTUFS S19TVEFDSyAhKEdDX01BUktfU1RBQ0sgPT0gR0NfTUFLRV9HQ1BST1NfTk9PUFMJCVwKQEAg LTIxNTUsMjQgKzIxNjAsMzMgQEAKIAogI2lmIEdDX01BUktfU1RBQ0sgPT0gR0NfTUFLRV9H Q1BST1NfTk9PUFMKIAotLyogRG8gc29tZXRoaW5nIHNpbGx5IHdpdGggZ2Nwcm9OIHZhcnMg anVzdCBzbyBnY2Mgc2h1dHMgdXAuICAqLwotLyogWW91IGdldCB3YXJuaW5ncyBmcm9tIE1J UFNQcm8uLi4gICovCisjZGVmaW5lIERFRkdDUFJPMSB2b2lkICpfX2R1bW15IEFUVFJJQlVU RV9VTlVTRUQgPSAmX19kdW1teQorI2RlZmluZSBERUZHQ1BSTzIgdm9pZCAqX19kdW1teSBB VFRSSUJVVEVfVU5VU0VEID0gJl9fZHVtbXkKKyNkZWZpbmUgREVGR0NQUk8zIHZvaWQgKl9f ZHVtbXkgQVRUUklCVVRFX1VOVVNFRCA9ICZfX2R1bW15CisjZGVmaW5lIERFRkdDUFJPNCB2 b2lkICpfX2R1bW15IEFUVFJJQlVURV9VTlVTRUQgPSAmX19kdW1teQorI2RlZmluZSBERUZH Q1BSTzUgdm9pZCAqX19kdW1teSBBVFRSSUJVVEVfVU5VU0VEID0gJl9fZHVtbXkKKyNkZWZp bmUgREVGR0NQUk82IHZvaWQgKl9fZHVtbXkgQVRUUklCVVRFX1VOVVNFRCA9ICZfX2R1bW15 CiAKLSNkZWZpbmUgR0NQUk8xKHZhcm5hbWUpICgodm9pZCkgZ2Nwcm8xKQotI2RlZmluZSBH Q1BSTzIodmFybmFtZTEsIHZhcm5hbWUyKSAoKHZvaWQpIGdjcHJvMiwgKHZvaWQpIGdjcHJv MSkKLSNkZWZpbmUgR0NQUk8zKHZhcm5hbWUxLCB2YXJuYW1lMiwgdmFybmFtZTMpIFwKLSAg KCh2b2lkKSBnY3BybzMsICh2b2lkKSBnY3BybzIsICh2b2lkKSBnY3BybzEpCi0jZGVmaW5l IEdDUFJPNCh2YXJuYW1lMSwgdmFybmFtZTIsIHZhcm5hbWUzLCB2YXJuYW1lNCkgXAotICAo KHZvaWQpIGdjcHJvNCwgKHZvaWQpIGdjcHJvMywgKHZvaWQpIGdjcHJvMiwgKHZvaWQpIGdj cHJvMSkKLSNkZWZpbmUgR0NQUk81KHZhcm5hbWUxLCB2YXJuYW1lMiwgdmFybmFtZTMsIHZh cm5hbWU0LCB2YXJuYW1lNSkgXAotICAoKHZvaWQpIGdjcHJvNSwgKHZvaWQpIGdjcHJvNCwg KHZvaWQpIGdjcHJvMywgKHZvaWQpIGdjcHJvMiwgKHZvaWQpIGdjcHJvMSkKLSNkZWZpbmUg R0NQUk82KHZhcm5hbWUxLCB2YXJuYW1lMiwgdmFybmFtZTMsIHZhcm5hbWU0LCB2YXJuYW1l NSwgdmFybmFtZTYpIFwKLSAgKCh2b2lkKSBnY3BybzYsICh2b2lkKSBnY3BybzUsICh2b2lk KSBnY3BybzQsICh2b2lkKSBnY3BybzMsICh2b2lkKSBnY3BybzIsIFwKLSAgICh2b2lkKSBn Y3BybzEpCisjZGVmaW5lIEdDUFJPMShhKSAoKHZvaWQpIDApCisjZGVmaW5lIEdDUFJPMihh LGIpICgodm9pZCkgMCkKKyNkZWZpbmUgR0NQUk8zKGEsYixjKSAoKHZvaWQpIDApCisjZGVm aW5lIEdDUFJPNChhLGIsYyxkKSAoKHZvaWQpIDApCisjZGVmaW5lIEdDUFJPNShhLGIsYyxk LGUpICgodm9pZCkgMCkKKyNkZWZpbmUgR0NQUk82KGEsYixjLGQsZSxmKSAoKHZvaWQpIDAp CiAjZGVmaW5lIFVOR0NQUk8gKCh2b2lkKSAwKQorI2RlZmluZSBSRVRVUk5fVU5HQ1BSTyhl eHApIGRvIHsgcmV0dXJuIChleHApOyB9IHdoaWxlICgwKQorCisjZGVmaW5lIElGX0dDUFJP KGNvZGUpIGRvIHsgfSB3aGlsZSAoMCkKIAogI2Vsc2UgLyogR0NfTUFSS19TVEFDSyAhPSBH Q19NQUtFX0dDUFJPU19OT09QUyAqLwogCisjZGVmaW5lIERFRkdDUFJPMSBzdHJ1Y3QgZ2Nw cm8gZ2Nwcm8xCisjZGVmaW5lIERFRkdDUFJPMiBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3By bzIKKyNkZWZpbmUgREVGR0NQUk8zIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nw cm8zCisjZGVmaW5lIERFRkdDUFJPNCBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdj cHJvMywgZ2Nwcm80CisjZGVmaW5lIERFRkdDUFJPNSBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBn Y3BybzIsIGdjcHJvMywgZ2Nwcm80LCBnY3BybzUKKyNkZWZpbmUgREVGR0NQUk82IHN0cnVj dCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nwcm8zLCBnY3BybzQsIGdjcHJvNSwgZ2Nwcm82 CisKICNpZm5kZWYgREVCVUdfR0NQUk8KIAogI2RlZmluZSBHQ1BSTzEodmFybmFtZSkgXApA QCAtMjIxNiw3ICsyMjMwLDcgQEAKIAogI2RlZmluZSBVTkdDUFJPIChnY3Byb2xpc3QgPSBn Y3BybzEubmV4dCkKIAotI2Vsc2UKKyNlbHNlIC8qIERFQlVHX0dDUFJPICovCiAKIGV4dGVy biBpbnQgZ2Nwcm9fbGV2ZWw7CiAKQEAgLTIyNzYsMTkgKzIyOTAsMjEgQEAKICAgOiAoKGdj cHJvbGlzdCA9IGdjcHJvMS5uZXh0KSwgMCkpCiAKICNlbmRpZiAvKiBERUJVR19HQ1BSTyAq LwotI2VuZGlmIC8qIEdDX01BUktfU1RBQ0sgIT0gR0NfTUFLRV9HQ1BST1NfTk9PUFMgKi8K IAorI2RlZmluZSBJRl9HQ1BSTyhjb2RlKSBkbyB7IGNvZGU7IH0gd2hpbGUgKDApCiAKIC8q IEV2YWx1YXRlIGV4cHIsIFVOR0NQUk8sIGFuZCB0aGVuIHJldHVybiB0aGUgdmFsdWUgb2Yg ZXhwci4gICovCiAjZGVmaW5lIFJFVFVSTl9VTkdDUFJPKGV4cHIpCQkJXAotZG8JCQkJCQlc CisgIGRvCQkJCQkJXAogICAgIHsJCQkJCQlcCiAgICAgICBMaXNwX09iamVjdCByZXRfdW5n Y192YWw7CQkJXAogICAgICAgcmV0X3VuZ2NfdmFsID0gKGV4cHIpOwkJCVwKICAgICAgIFVO R0NQUk87CQkJCQlcCiAgICAgICByZXR1cm4gcmV0X3VuZ2NfdmFsOwkJCVwKICAgICB9CQkJ CQkJXAotd2hpbGUgKDApCisgIHdoaWxlICgwKQorCisjZW5kaWYgLyogR0NfTUFSS19TVEFD SyAhPSBHQ19NQUtFX0dDUFJPU19OT09QUyAqLwogCiAvKiBDYWxsIHN0YXRpY3BybyAoJnZh cikgdG8gcHJvdGVjdCBzdGF0aWMgdmFyaWFibGUgYHZhcicuICAqLwogCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3JjL2xyZWFkLmMnCi0tLSBzcmMvbHJlYWQuYwkyMDEyLTA3LTEyIDAzOjQ1 OjQ2ICswMDAwCisrKyBzcmMvbHJlYWQuYwkyMDEyLTA3LTE1IDE0OjQzOjI4ICswMDAwCkBA IC0xMDE1LDcgKzEwMTUsNyBAQAogICByZWdpc3RlciBGSUxFICpzdHJlYW07CiAgIHJlZ2lz dGVyIGludCBmZCA9IC0xOwogICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVYICgp OwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJvMzsKKyAgREVGR0NQUk8z OwogICBMaXNwX09iamVjdCBmb3VuZCwgZWZvdW5kLCBoaXN0X2ZpbGVfbmFtZTsKICAgLyog MSBtZWFucyB3ZSBwcmludGVkIHRoZSAiLmVsIGlzIG5ld2VyIiBtZXNzYWdlLiAgKi8KICAg aW50IG5ld2VyID0gMDsKQEAgLTE0NDIsNyArMTQ0Miw3IEBACiAgIHB0cmRpZmZfdCB3YW50 X2xlbmd0aDsKICAgTGlzcF9PYmplY3QgZmlsZW5hbWU7CiAgIHN0cnVjdCBzdGF0IHN0Owot ICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJvMywgZ2Nwcm80LCBnY3BybzUs IGdjcHJvNjsKKyAgREVGR0NQUk82OwogICBMaXNwX09iamVjdCBzdHJpbmcsIHRhaWwsIGVu Y29kZWRfZm47CiAgIHB0cmRpZmZfdCBtYXhfc3VmZml4X2xlbiA9IDA7CiAKQEAgLTE2NzQs NyArMTY3NCw3IEBACiAgIHJlZ2lzdGVyIGludCBjOwogICByZWdpc3RlciBMaXNwX09iamVj dCB2YWw7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7Ci0gIHN0cnVj dCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nwcm8zLCBnY3BybzQ7CisgIERFRkdDUFJPNDsK ICAgc3RydWN0IGJ1ZmZlciAqYiA9IDA7CiAgIGludCBjb250aW51ZV9yZWFkaW5nX3A7CiAg IExpc3BfT2JqZWN0IGxleF9ib3VuZDsKQEAgLTI1NDAsNyArMjU0MCw3IEBACiAgICAgICBp ZiAoYyA9PSAnKCcpCiAJewogCSAgTGlzcF9PYmplY3QgdG1wOwotCSAgc3RydWN0IGdjcHJv IGdjcHJvMTsKKwkgIERFRkdDUFJPMTsKIAkgIGludCBjaDsKIAogCSAgLyogUmVhZCB0aGUg c3RyaW5nIGl0c2VsZi4gICovCkBAIC0zNDU5LDcgKzM0NTksNyBAQAogewogICBMaXNwX09i amVjdCB2YWwsIHRhaWw7CiAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGVsdCwgdGVtOwotICBz dHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzI7CisgIERFRkdDUFJPMjsKICAgLyogMCBpcyB0 aGUgbm9ybWFsIGNhc2UuCiAgICAgIDEgbWVhbnMgdGhpcyBsaXN0IGlzIGEgZG9jIHJlZmVy ZW5jZTsgcmVwbGFjZSBpdCB3aXRoIHRoZSBudW1iZXIgMC4KICAgICAgMiBtZWFucyB0aGlz IGxpc3QgaXMgYSBkb2MgcmVmZXJlbmNlOyByZXBsYWNlIGl0IHdpdGggdGhlIGRvYyBzdHJp bmcuICAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9tYWNyb3MuYycKLS0tIHNyYy9tYWNy b3MuYwkyMDEyLTA3LTA1IDE4OjM1OjQ4ICswMDAwCisrKyBzcmMvbWFjcm9zLmMJMjAxMi0w Ny0xNSAxNDo0MzoyOCArMDAwMApAQCAtMzAzLDcgKzMwMyw3IEBACiAgIExpc3BfT2JqZWN0 IHRlbTsKICAgcHRyZGlmZl90IHBkbGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKICAgRU1B Q1NfSU5UIHJlcGVhdCA9IDE7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKKyAg REVGR0NQUk8yOwogICBFTUFDU19JTlQgc3VjY2Vzc19jb3VudCA9IDA7CiAKICAgZXhlY3V0 aW5nX2tiZF9tYWNyb19pdGVyYXRpb25zID0gMDsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMv bWVudS5jJwotLS0gc3JjL21lbnUuYwkyMDEyLTA3LTA1IDE4OjM1OjQ4ICswMDAwCisrKyBz cmMvbWVudS5jCTIwMTItMDctMTUgMTQ6NDM6MjggKzAwMDAKQEAgLTI5MCw3ICsyOTAsNyBA QAogCQkgICAgIExpc3BfT2JqZWN0IHByZWZpeCwgaW50IG1heGRlcHRoKQogewogICBzdHJ1 Y3Qgc2twIHNrcDsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQUk8xOwogCiAg IHNrcC5wZW5kaW5nX21hcHMgPSBRbmlsOwogICBza3AubWF4ZGVwdGggPSBtYXhkZXB0aDsK QEAgLTMzOCw3ICszMzgsNyBAQAogc2luZ2xlX21lbnVfaXRlbSAoTGlzcF9PYmplY3Qga2V5 LCBMaXNwX09iamVjdCBpdGVtLCBMaXNwX09iamVjdCBkdW1teSwgdm9pZCAqc2twX3YpCiB7 CiAgIExpc3BfT2JqZWN0IG1hcCwgaXRlbV9zdHJpbmcsIGVuYWJsZWQ7Ci0gIHN0cnVjdCBn Y3BybyBnY3BybzEsIGdjcHJvMjsKKyAgREVGR0NQUk8yOwogICBpbnQgcmVzOwogICBzdHJ1 Y3Qgc2twICpza3AgPSBza3BfdjsKIApAQCAtMTA4Myw3ICsxMDgzLDcgQEAKICAgaW50IGtl eW1hcHMgPSAwOwogICBpbnQgZm9yX2NsaWNrID0gMDsKICAgcHRyZGlmZl90IHNwZWNwZGxf Y291bnQgPSBTUEVDUERMX0lOREVYICgpOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICBE RUZHQ1BSTzE7CiAKICAgaWYgKE5JTFAgKHBvc2l0aW9uKSkKICAgICAvKiBUaGlzIGlzIGFu IG9ic29sZXRlIGNhbGwsIHdoaWNoIHdhbnRzIHVzIHRvIHByZWNvbXB1dGUgdGhlCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3JjL21pbmlidWYuYycKLS0tIHNyYy9taW5pYnVmLmMJMjAxMi0w Ny0xMSAwNzoxOTo0NCArMDAwMAorKysgc3JjL21pbmlidWYuYwkyMDEyLTA3LTE1IDE0OjQz OjI4ICswMDAwCkBAIC0xOTEsNyArMTkxLDcgQEAKIHN0YXRpYyBMaXNwX09iamVjdAogc3Ry aW5nX3RvX29iamVjdCAoTGlzcF9PYmplY3QgdmFsLCBMaXNwX09iamVjdCBkZWZhbHQpCiB7 Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKKyAgREVGR0NQUk8yOwogICBMaXNw X09iamVjdCBleHByX2FuZF9wb3M7CiAgIHB0cmRpZmZfdCBwb3M7CiAKQEAgLTM5Niw3ICsz OTYsNyBAQAogICBMaXNwX09iamVjdCB2YWw7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQ RExfSU5ERVggKCk7CiAgIExpc3BfT2JqZWN0IG1pbmlfZnJhbWUsIGFtYmllbnRfZGlyLCBt aW5pYnVmZmVyLCBpbnB1dF9tZXRob2Q7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJv MiwgZ2Nwcm8zLCBnY3BybzQsIGdjcHJvNTsKKyAgREVGR0NQUk81OwogICBMaXNwX09iamVj dCBlbmFibGVfbXVsdGlieXRlOwogICBFTUFDU19JTlQgcG9zID0gMDsKICAgLyogU3RyaW5n IHRvIGFkZCB0byB0aGUgaGlzdG9yeS4gICovCkBAIC05NTMsNyArOTUzLDcgQEAKICAgKExp c3BfT2JqZWN0IHByb21wdCwgTGlzcF9PYmplY3QgaW5pdGlhbF9jb250ZW50cywgTGlzcF9P YmplY3Qga2V5bWFwLCBMaXNwX09iamVjdCByZWFkLCBMaXNwX09iamVjdCBoaXN0LCBMaXNw X09iamVjdCBkZWZhdWx0X3ZhbHVlLCBMaXNwX09iamVjdCBpbmhlcml0X2lucHV0X21ldGhv ZCkKIHsKICAgTGlzcF9PYmplY3QgaGlzdHZhciwgaGlzdHBvcywgdmFsOwotICBzdHJ1Y3Qg Z2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAKICAgQ0hFQ0tfU1RSSU5HIChwcm9tcHQp OwogICBpZiAoTklMUCAoa2V5bWFwKSkKQEAgLTEyNTgsNyArMTI1OCw3IEBACiAgIGludCBt YXRjaGNvdW50ID0gMDsKICAgcHRyZGlmZl90IGJpbmRjb3VudCA9IC0xOwogICBMaXNwX09i amVjdCBidWNrZXQsIHplcm8sIGVuZCwgdGVtOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBn Y3BybzIsIGdjcHJvMywgZ2Nwcm80OworICBERUZHQ1BSTzQ7CiAKICAgQ0hFQ0tfU1RSSU5H IChzdHJpbmcpOwogICBpZiAodHlwZSA9PSBmdW5jdGlvbl90YWJsZSkKQEAgLTE1MjIsNyAr MTUyMiw3IEBACiAgIHB0cmRpZmZfdCBpZHggPSAwLCBvYnNpemUgPSAwOwogICBwdHJkaWZm X3QgYmluZGNvdW50ID0gLTE7CiAgIExpc3BfT2JqZWN0IGJ1Y2tldCwgdGVtLCB6ZXJvOwot ICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJvMywgZ2Nwcm80OworICBERUZH Q1BSTzQ7CiAKICAgQ0hFQ0tfU1RSSU5HIChzdHJpbmcpOwogICBpZiAodHlwZSA9PSAwKQoK PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9wcmludC5jJwotLS0gc3JjL3ByaW50LmMJMjAxMi0w Ny0wNSAxODozNTo0OCArMDAwMAorKysgc3JjL3ByaW50LmMJMjAxMi0wNy0xNSAxNjoxNjoz MSArMDAwMApAQCAtNDE2LDcgKzQxNiw3IEBACiAgICAgICBwdHJkaWZmX3QgaTsKICAgICAg IHB0cmRpZmZfdCBzaXplID0gU0NIQVJTIChzdHJpbmcpOwogICAgICAgcHRyZGlmZl90IHNp emVfYnl0ZSA9IFNCWVRFUyAoc3RyaW5nKTsKLSAgICAgIHN0cnVjdCBnY3BybyBnY3BybzE7 CisgICAgICBERUZHQ1BSTzE7CiAgICAgICBHQ1BSTzEgKHN0cmluZyk7CiAgICAgICBpZiAo c2l6ZSA9PSBzaXplX2J5dGUpCiAJZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKQEAgLTU4 OCw3ICs1ODgsNiBAQAogICAoTGlzcF9PYmplY3Qgb2JqZWN0LCBMaXNwX09iamVjdCBub2Vz Y2FwZSkKIHsKICAgTGlzcF9PYmplY3QgcHJpbnRjaGFyZnVuOwotICAvKiBzdHJ1Y3QgZ2Nw cm8gZ2Nwcm8xLCBnY3BybzI7ICovCiAgIExpc3BfT2JqZWN0IHNhdmVfZGVhY3RpdmF0ZV9t YXJrOwogICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVYICgpOwogICBzdHJ1Y3Qg YnVmZmVyICpwcmV2aW91czsKQEAgLTYwMiw3ICs2MDEsNiBAQAogICAgICAgIGJ1dCB3ZSBk b24ndCB3YW50IHRvIGRlYWN0aXZhdGUgdGhlIG1hcmsganVzdCBmb3IgdGhhdC4KICAgICAg ICBObyBuZWVkIGZvciBzcGVjYmluZCwgc2luY2UgZXJyb3JzIGRlYWN0aXZhdGUgdGhlIG1h cmsuICAqLwogICAgIHNhdmVfZGVhY3RpdmF0ZV9tYXJrID0gVmRlYWN0aXZhdGVfbWFyazsK LSAgICAvKiBHQ1BSTzIgKG9iamVjdCwgc2F2ZV9kZWFjdGl2YXRlX21hcmspOyAqLwogICAg IGFib3J0X29uX2djKys7CiAKICAgICBwcmludGNoYXJmdW4gPSBWcHJpbjFfdG9fc3RyaW5n X2J1ZmZlcjsKQEAgLTYyNSw3ICs2MjMsNiBAQAogICBzZXRfYnVmZmVyX2ludGVybmFsIChw cmV2aW91cyk7CiAKICAgVmRlYWN0aXZhdGVfbWFyayA9IHNhdmVfZGVhY3RpdmF0ZV9tYXJr OwotICAvKiBVTkdDUFJPOyAqLwogCiAgIGFib3J0X29uX2djLS07CiAgIHJldHVybiB1bmJp bmRfdG8gKGNvdW50LCBvYmplY3QpOwpAQCAtNjkxLDcgKzY4OCw3IEBACiAgIChMaXNwX09i amVjdCBvYmplY3QsIExpc3BfT2JqZWN0IHByaW50Y2hhcmZ1bikKIHsKICAgUFJJTlRERUNM QVJFOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAKICAgaWYgKE5J TFAgKHByaW50Y2hhcmZ1bikpCiAgICAgcHJpbnRjaGFyZnVuID0gVnN0YW5kYXJkX291dHB1 dDsKQEAgLTgxOCw3ICs4MTUsNyBAQAogewogICBzdHJ1Y3QgYnVmZmVyICpvbGQgPSBjdXJy ZW50X2J1ZmZlcjsKICAgTGlzcF9PYmplY3QgdmFsdWU7Ci0gIHN0cnVjdCBnY3BybyBnY3By bzE7CisgIERFRkdDUFJPMTsKIAogICAvKiBJZiBPQkogaXMgKGVycm9yIFNUUklORyksIGp1 c3QgcmV0dXJuIFNUUklORy4KICAgICAgVGhhdCBpcyBub3Qgb25seSBmYXN0ZXIsIGl0IGFs c28gYXZvaWRzIHRoZSBuZWVkIHRvIGFsbG9jYXRlCkBAIC04NTIsNyArODQ5LDcgQEAKIAkJ ICAgICBMaXNwX09iamVjdCBjYWxsZXIpCiB7CiAgIExpc3BfT2JqZWN0IGVycm5hbWUsIGVy cm1zZywgZmlsZV9lcnJvciwgdGFpbDsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVG R0NQUk8xOwogCiAgIGlmIChjb250ZXh0ICE9IDApCiAgICAgd3JpdGVfc3RyaW5nXzEgKGNv bnRleHQsIC0xLCBzdHJlYW0pOwpAQCAtMTM5Nyw3ICsxMzk0LDcgQEAKICAgICAgIGVsc2UK IAl7CiAJICByZWdpc3RlciBwdHJkaWZmX3QgaV9ieXRlOwotCSAgc3RydWN0IGdjcHJvIGdj cHJvMTsKKwkgIERFRkdDUFJPMTsKIAkgIHVuc2lnbmVkIGNoYXIgKnN0cjsKIAkgIHB0cmRp ZmZfdCBzaXplX2J5dGU7CiAJICAvKiAxIG1lYW5zIHdlIG11c3QgZW5zdXJlIHRoYXQgdGhl IG5leHQgY2hhcmFjdGVyIHdlIG91dHB1dApAQCAtMTcxMCw3ICsxNzA3LDcgQEAKIAkgIHB0 cmRpZmZfdCBpOwogCSAgaW50IGxlbjsKIAkgIHVuc2lnbmVkIGNoYXIgYzsKLQkgIHN0cnVj dCBnY3BybyBnY3BybzE7CisJICBERUZHQ1BSTzE7CiAJICBwdHJkaWZmX3Qgc2l6ZV9pbl9j aGFycwogCSAgICA9ICgoWEJPT0xfVkVDVE9SIChvYmopLT5zaXplICsgQk9PTF9WRUNUT1Jf QklUU19QRVJfQ0hBUiAtIDEpCiAJICAgICAgIC8gQk9PTF9WRUNUT1JfQklUU19QRVJfQ0hB Uik7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3Byb2Nlc3MuYycKLS0tIHNyYy9wcm9jZXNz LmMJMjAxMi0wNy0xMyAwMDowNzoyOSArMDAwMAorKysgc3JjL3Byb2Nlc3MuYwkyMDEyLTA3 LTE1IDE0OjQzOjI4ICswMDAwCkBAIC0xMjkxLDcgKzEyOTEsNyBAQAogICAgICBmdW5jdGlv bi4gIFRoZSBhcmd1bWVudCBsaXN0IGlzIHByb3RlY3RlZCBieSB0aGUgY2FsbGVyLCBzbyBh bGwKICAgICAgd2UgcmVhbGx5IGhhdmUgdG8gd29ycnkgYWJvdXQgaXMgYnVmZmVyLiAgKi8K ICAgewotICAgIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKKyAgICBERUZHQ1BSTzI7 CiAKICAgICBjdXJyZW50X2RpciA9IEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBkaXJlY3Rvcnkp OwogCkBAIC0xMzU5LDcgKzEzNTksNyBAQAogICAgIC8qIFF0IGRlbm90ZXMgd2UgaGF2ZSBu b3QgeWV0IGNhbGxlZCBGZmluZF9vcGVyYXRpb25fY29kaW5nX3N5c3RlbS4gICovCiAgICAg TGlzcF9PYmplY3QgY29kaW5nX3N5c3RlbXMgPSBRdDsKICAgICBMaXNwX09iamVjdCB2YWws ICphcmdzMjsKLSAgICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzI7CisgICAgREVGR0NQ Uk8yOwogCiAgICAgdmFsID0gVmNvZGluZ19zeXN0ZW1fZm9yX3JlYWQ7CiAgICAgaWYgKE5J TFAgKHZhbCkpCkBAIC0xNDIwLDcgKzE0MjAsNyBAQAogCSAgJiYgIShTQ0hBUlMgKHByb2dy YW0pID4gMQogCSAgICAgICAmJiBJU19ERVZJQ0VfU0VQIChTUkVGIChwcm9ncmFtLCAxKSkp KQogCXsKLQkgIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nwcm8zLCBnY3BybzQ7 CisJICBERUZHQ1BSTzQ7CiAKIAkgIHRlbSA9IFFuaWw7CiAJICBHQ1BSTzQgKG5hbWUsIHBy b2dyYW0sIGJ1ZmZlciwgY3VycmVudF9kaXIpOwpAQCAtMTQ0NSw3ICsxNDQ1LDcgQEAKIAog ICAgICAgewogCUxpc3BfT2JqZWN0IGFyZ19lbmNvZGluZyA9IFFuaWw7Ci0Jc3RydWN0IGdj cHJvIGdjcHJvMTsKKwlERUZHQ1BSTzE7CiAJR0NQUk8xICh0ZW0pOwogCiAJLyogRW5jb2Rl IHRoZSBmaWxlIG5hbWUgYW5kIHB1dCBpdCBpbiBORVdfQVJHVi4KQEAgLTI0NDQsNyArMjQ0 NCw3IEBACiAgIHN0cnVjdCBMaXNwX1Byb2Nlc3MgKnA7CiAgIExpc3BfT2JqZWN0IGNvbnRh Y3QgPSBRbmlsOwogICBMaXNwX09iamVjdCBwcm9jID0gUW5pbDsKLSAgc3RydWN0IGdjcHJv IGdjcHJvMTsKKyAgREVGR0NQUk8xOwogCiAgIGNvbnRhY3QgPSBGbGlzdCAobmFyZ3MsIGFy Z3MpOwogICBHQ1BSTzEgKGNvbnRhY3QpOwpAQCAtMjU2MSw3ICsyNTYxLDcgQEAKICAgaW50 IGZkID0gLTE7CiAgIExpc3BfT2JqZWN0IHByb2MsIGNvbnRhY3QsIHBvcnQ7CiAgIHN0cnVj dCBMaXNwX1Byb2Nlc3MgKnA7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdDUFJP MTsKICAgTGlzcF9PYmplY3QgbmFtZSwgYnVmZmVyOwogICBMaXNwX09iamVjdCB0ZW0sIHZh bDsKICAgcHRyZGlmZl90IHNwZWNwZGxfY291bnQgPSAtMTsKQEAgLTI4NjMsNyArMjg2Myw3 IEBACiAgIGludCByZXQgPSAwOwogICBpbnQgeGVycm5vID0gMDsKICAgaW50IHMgPSAtMSwg b3V0Y2gsIGluY2g7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdDUFJPMTsKICAg cHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKICAgcHRyZGlmZl90IGNvdW50 MTsKICAgTGlzcF9PYmplY3QgUUNhZGRyZXNzOyAgLyogb25lIG9mIFFDbG9jYWwgb3IgUUNy ZW1vdGUgKi8KQEAgLTM0NTksNyArMzQ1OSw3IEBACiAKICAgewogICAgIC8qIFNldHVwIGNv ZGluZyBzeXN0ZW1zIGZvciBjb21tdW5pY2F0aW5nIHdpdGggdGhlIG5ldHdvcmsgc3RyZWFt LiAgKi8KLSAgICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICAgIERFRkdDUFJPMTsKICAgICAv KiBRdCBkZW5vdGVzIHdlIGhhdmUgbm90IHlldCBjYWxsZWQgRmZpbmRfb3BlcmF0aW9uX2Nv ZGluZ19zeXN0ZW0uICAqLwogICAgIExpc3BfT2JqZWN0IGNvZGluZ19zeXN0ZW1zID0gUXQ7 CiAgICAgTGlzcF9PYmplY3QgZmFyZ3NbNV0sIHZhbDsKQEAgLTY1NzQsNyArNjU3NCw3IEBA CiB7CiAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByb2MsIGJ1ZmZlcjsKICAgTGlzcF9PYmpl Y3QgdGFpbCwgbXNnOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzI7CisgIERFRkdD UFJPMjsKIAogICB0YWlsID0gUW5pbDsKICAgbXNnID0gUW5pbDsKCj09PSBtb2RpZmllZCBm aWxlICdzcmMvc291bmQuYycKLS0tIHNyYy9zb3VuZC5jCTIwMTItMDctMTEgMDI6MTY6MjUg KzAwMDAKKysrIHNyYy9zb3VuZC5jCTIwMTItMDctMTUgMTQ6NDM6MjggKzAwMDAKQEAgLTEz NDIsNyArMTM0Miw3IEBACiAKICNpZm5kZWYgV0lORE9XU05UCiAgIExpc3BfT2JqZWN0IGZp bGU7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKKyAgREVGR0NQUk8yOwogICBM aXNwX09iamVjdCBhcmdzWzJdOwogI2Vsc2UgLyogV0lORE9XU05UICovCiAgIGludCBsZW4g PSAwOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9zeXNkZXAuYycKLS0tIHNyYy9zeXNkZXAu YwkyMDEyLTA3LTExIDA3OjA1OjIxICswMDAwCisrKyBzcmMvc3lzZGVwLmMJMjAxMi0wNy0x NSAxNDo0MzoyOCArMDAwMApAQCAtMjMxOSw3ICsyMzE5LDcgQEAKIGxpc3Rfc3lzdGVtX3By b2Nlc3NlcyAodm9pZCkKIHsKICAgTGlzcF9PYmplY3QgcHJvY2RpciwgbWF0Y2gsIHByb2Ns aXN0LCBuZXh0OwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzI7CisgIERFRkdDUFJP MjsKICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbDsKIAogICBHQ1BSTzIgKHByb2NkaXIs IG1hdGNoKTsKQEAgLTIzNTksNyArMjM1OSw3IEBACiAgIHN0cnVjdCBraW5mb19wcm9jICpw cm9jczsKICAgc2l6ZV90IGk7CiAKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQ Uk8xOwogICBMaXNwX09iamVjdCBwcm9jbGlzdCA9IFFuaWw7CiAKICAgaWYgKHN5c2N0bCAo bWliLCAzLCBOVUxMLCAmbGVuLCBOVUxMLCAwKSAhPSAwKQpAQCAtMjU4MSw3ICsyNTgxLDcg QEAKICAgZG91YmxlIHBjcHUsIHBtZW07CiAgIExpc3BfT2JqZWN0IGF0dHJzID0gUW5pbDsK ICAgTGlzcF9PYmplY3QgY21kX3N0ciwgZGVjb2RlZF9jbWQsIHRlbTsKLSAgc3RydWN0IGdj cHJvIGdjcHJvMSwgZ2Nwcm8yOworICBERUZHQ1BSTzI7CiAKICAgQ0hFQ0tfTlVNQkVSX09S X0ZMT0FUIChwaWQpOwogICBDT05TX1RPX0lOVEVHRVIgKHBpZCwgcGlkX3QsIHByb2NfaWQp OwpAQCAtMjgxOSw3ICsyODE5LDcgQEAKICAgZ2lkX3QgZ2lkOwogICBMaXNwX09iamVjdCBh dHRycyA9IFFuaWw7CiAgIExpc3BfT2JqZWN0IGRlY29kZWRfY21kLCB0ZW07Ci0gIHN0cnVj dCBnY3BybyBnY3BybzEsIGdjcHJvMjsKKyAgREVGR0NQUk8yOwogCiAgIENIRUNLX05VTUJF Ul9PUl9GTE9BVCAocGlkKTsKICAgQ09OU19UT19JTlRFR0VSIChwaWQsIHBpZF90LCBwcm9j X2lkKTsKQEAgLTI5NDgsNyArMjk0OCw3IEBACiAgIHN0cnVjdCBraW5mb19wcm9jIHByb2M7 CiAgIHNpemVfdCBwcm9jbGVuID0gc2l6ZW9mIHByb2M7CiAKLSAgc3RydWN0IGdjcHJvIGdj cHJvMSwgZ2Nwcm8yOworICBERUZHQ1BSTzI7CiAgIExpc3BfT2JqZWN0IGF0dHJzID0gUW5p bDsKICAgTGlzcF9PYmplY3QgZGVjb2RlZF9jb21tOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAn c3JjL3RleHRwcm9wLmMnCi0tLSBzcmMvdGV4dHByb3AuYwkyMDEyLTA3LTEwIDE2OjUzOjI2 ICswMDAwCisrKyBzcmMvdGV4dHByb3AuYwkyMDEyLTA3LTE1IDE0OjQzOjI4ICswMDAwCkBA IC0zNTYsNyArMzU2LDcgQEAKICAgTGlzcF9PYmplY3QgdGFpbDEsIHRhaWwyLCBzeW0xLCB2 YWwxOwogICByZWdpc3RlciBpbnQgY2hhbmdlZCA9IDA7CiAgIHJlZ2lzdGVyIGludCBmb3Vu ZDsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzM7CisgIERFRkdDUFJP MzsKIAogICB0YWlsMSA9IHBsaXN0OwogICBzeW0xID0gUW5pbDsKQEAgLTExMzUsNyArMTEz NSw3IEBACiAgIHJlZ2lzdGVyIElOVEVSVkFMIGksIHVuY2hhbmdlZDsKICAgcmVnaXN0ZXIg cHRyZGlmZl90IHMsIGxlbjsKICAgcmVnaXN0ZXIgaW50IG1vZGlmaWVkID0gMDsKLSAgc3Ry dWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQUk8xOwogCiAgIHByb3BlcnRpZXMgPSB2YWxp ZGF0ZV9wbGlzdCAocHJvcGVydGllcyk7CiAgIGlmIChOSUxQIChwcm9wZXJ0aWVzKSkKQEAg LTE3NzUsNyArMTc3NSw3IEBACiAgIExpc3BfT2JqZWN0IHBsaXN0OwogICBwdHJkaWZmX3Qg cywgZSwgZTIsIHAsIGxlbjsKICAgaW50IG1vZGlmaWVkID0gMDsKLSAgc3RydWN0IGdjcHJv IGdjcHJvMSwgZ2Nwcm8yOworICBERUZHQ1BSTzI7CiAKICAgaSA9IHZhbGlkYXRlX2ludGVy dmFsX3JhbmdlIChzcmMsICZzdGFydCwgJmVuZCwgc29mdCk7CiAgIGlmIChOVUxMX0lOVEVS VkFMX1AgKGkpKQpAQCAtMTkyMiw3ICsxOTIyLDcgQEAKIGludAogYWRkX3RleHRfcHJvcGVy dGllc19mcm9tX2xpc3QgKExpc3BfT2JqZWN0IG9iamVjdCwgTGlzcF9PYmplY3QgbGlzdCwg TGlzcF9PYmplY3QgZGVsdGEpCiB7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsK KyAgREVGR0NQUk8yOwogICBpbnQgbW9kaWZpZWRfcCA9IDA7CiAKICAgR0NQUk8yIChsaXN0 LCBvYmplY3QpOwpAQCAtMTk5MCw3ICsxOTkwLDcgQEAKIHN0YXRpYyB2b2lkCiBjYWxsX21v ZF9ob29rcyAoTGlzcF9PYmplY3QgbGlzdCwgTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2Jq ZWN0IGVuZCkKIHsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgREVGR0NQUk8xOwogICBH Q1BSTzEgKGxpc3QpOwogICB3aGlsZSAoIU5JTFAgKGxpc3QpKQogICAgIHsKQEAgLTIwMTcs NyArMjAxNyw3IEBACiAgIExpc3BfT2JqZWN0IGhvb2tzOwogICByZWdpc3RlciBMaXNwX09i amVjdCBwcmV2X21vZF9ob29rczsKICAgTGlzcF9PYmplY3QgbW9kX2hvb2tzOwotICBzdHJ1 Y3QgZ2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAKICAgaG9va3MgPSBRbmlsOwogICBw cmV2X21vZF9ob29rcyA9IFFuaWw7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3VuZG8uYycK LS0tIHNyYy91bmRvLmMJMjAxMi0wNy0xMCAyMzoyNDozNiArMDAwMAorKysgc3JjL3VuZG8u YwkyMDEyLTA3LTE1IDE0OjQzOjI4ICswMDAwCkBAIC00NTAsNyArNDUwLDcgQEAKIFJldHVy biB3aGF0IHJlbWFpbnMgb2YgdGhlIGxpc3QuICAqLykKICAgKExpc3BfT2JqZWN0IG4sIExp c3BfT2JqZWN0IGxpc3QpCiB7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKKyAg REVGR0NQUk8yOwogICBMaXNwX09iamVjdCBuZXh0OwogICBwdHJkaWZmX3QgY291bnQgPSBT UEVDUERMX0lOREVYICgpOwogICByZWdpc3RlciBFTUFDU19JTlQgYXJnOwoKPT09IG1vZGlm aWVkIGZpbGUgJ3NyYy93MzIuYycKLS0tIHNyYy93MzIuYwkyMDEyLTA3LTEwIDIzOjI0OjM2 ICswMDAwCisrKyBzcmMvdzMyLmMJMjAxMi0wNy0xNSAxNDo0MzoyOCArMDAwMApAQCAtMzk5 NSw3ICszOTk1LDcgQEAKIExpc3BfT2JqZWN0CiBsaXN0X3N5c3RlbV9wcm9jZXNzZXMgKHZv aWQpCiB7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdDUFJPMTsKICAgTGlzcF9P YmplY3QgcHJvY2xpc3QgPSBRbmlsOwogICBIQU5ETEUgaF9zbmFwc2hvdDsKIApAQCAtNDE0 OSw3ICs0MTQ5LDcgQEAKIExpc3BfT2JqZWN0CiBzeXN0ZW1fcHJvY2Vzc19hdHRyaWJ1dGVz IChMaXNwX09iamVjdCBwaWQpCiB7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwg Z2Nwcm8zOworICBERUZHQ1BSTzM7CiAgIExpc3BfT2JqZWN0IGF0dHJzID0gUW5pbDsKICAg TGlzcF9PYmplY3QgY21kX3N0ciwgZGVjb2RlZF9jbWQsIHRlbTsKICAgSEFORExFIGhfc25h cHNob3QsIGhfcHJvYzsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvdzMyZm5zLmMnCi0tLSBz cmMvdzMyZm5zLmMJMjAxMi0wNy0xMSAwNDozMTo1MyArMDAwMAorKysgc3JjL3czMmZucy5j CTIwMTItMDctMTUgMTQ6NDM6MjggKzAwMDAKQEAgLTQwNzIsNyArNDA3Miw3IEBACiAgIGxv bmcgd2luZG93X3Byb21wdGluZyA9IDA7CiAgIGludCB3aWR0aCwgaGVpZ2h0OwogICBwdHJk aWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVYICgpOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8x LCBnY3BybzIsIGdjcHJvMywgZ2Nwcm80OworICBERUZHQ1BSTzQ7CiAgIExpc3BfT2JqZWN0 IGRpc3BsYXk7CiAgIHN0cnVjdCB3MzJfZGlzcGxheV9pbmZvICpkcHlpbmZvID0gTlVMTDsK ICAgTGlzcF9PYmplY3QgcGFyZW50OwpAQCAtNDc2Myw3ICs0NzYzLDcgQEAKICAgICAgSE9N RSBkaXJlY3RvcnksIHRoZW4gaW4gRW1hY3MgZXRjIGRpciBmb3IgYSBmaWxlIGNhbGxlZCBy Z2IudHh0LiAqLwogICB7CiAgICAgTGlzcF9PYmplY3QgY29sb3JfZmlsZTsKLSAgICBzdHJ1 Y3QgZ2Nwcm8gZ2Nwcm8xOworICAgIERFRkdDUFJPMTsKIAogICAgIGNvbG9yX2ZpbGUgPSBi dWlsZF9zdHJpbmcgKCJ+L3JnYi50eHQiKTsKIApAQCAtNTE3NSw3ICs1MTc1LDcgQEAKICAg bG9uZyB3aW5kb3dfcHJvbXB0aW5nID0gMDsKICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgIHB0 cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7Ci0gIHN0cnVjdCBnY3BybyBnY3By bzEsIGdjcHJvMiwgZ2Nwcm8zOworICBERUZHQ1BSTzM7CiAgIHN0cnVjdCBrYm9hcmQgKmti OwogICBpbnQgZmFjZV9jaGFuZ2VfY291bnRfYmVmb3JlID0gZmFjZV9jaGFuZ2VfY291bnQ7 CiAgIExpc3BfT2JqZWN0IGJ1ZmZlcjsKQEAgLTU1MTksNyArNTUxOSw3IEBACiAgIHN0cnVj dCBidWZmZXIgKm9sZF9idWZmZXI7CiAgIHN0cnVjdCB0ZXh0X3BvcyBwb3M7CiAgIGludCBp LCB3aWR0aCwgaGVpZ2h0LCBzZWVuX3JldmVyc2VkX3A7Ci0gIHN0cnVjdCBnY3BybyBnY3By bzEsIGdjcHJvMiwgZ2Nwcm8zLCBnY3BybzQ7CisgIERFRkdDUFJPNDsKICAgaW50IG9sZF93 aW5kb3dzX29yX2J1ZmZlcnNfY2hhbmdlZCA9IHdpbmRvd3Nfb3JfYnVmZmVyc19jaGFuZ2Vk OwogICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVYICgpOwogCkBAIC01ODAyLDcg KzU4MDIsNyBAQAogewogICBwdHJkaWZmX3QgY291bnQ7CiAgIExpc3BfT2JqZWN0IGRlbGV0 ZWQsIGZyYW1lLCB0aW1lcjsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yOworICBE RUZHQ1BSTzI7CiAKICAgLyogUmV0dXJuIHF1aWNrbHkgaWYgbm90aGluZyB0byBkby4gICov CiAgIGlmIChOSUxQICh0aXBfdGltZXIpICYmIE5JTFAgKHRpcF9mcmFtZSkpCkBAIC01OTIz LDcgKzU5MjMsNyBAQAogICBzdHJ1Y3QgZnJhbWUgKmYgPSBTRUxFQ1RFRF9GUkFNRSAoKTsK ICAgTGlzcF9PYmplY3QgZmlsZSA9IFFuaWw7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQ RExfSU5ERVggKCk7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nwcm8zLCBn Y3BybzQsIGdjcHJvNSwgZ2Nwcm82OworICBERUZHQ1BSTzY7CiAgIGNoYXIgZmlsZW5hbWVb TUFYX1BBVEggKyAxXTsKICAgY2hhciBpbml0X2RpcltNQVhfUEFUSCArIDFdOwogICBpbnQg ZGVmYXVsdF9maWx0ZXJfaW5kZXggPSAxOyAvKiAxOiBBbGwgRmlsZXMsIDI6IERpcmVjdG9y aWVzIG9ubHkgICovCkBAIC02MjMxLDcgKzYyMzEsNyBAQAogICBpbnQgdmtfY29kZTsKICAg aW50IGxpc3BfbW9kaWZpZXJzOwogICBpbnQgdzMyX21vZGlmaWVyczsKLSAgc3RydWN0IGdj cHJvIGdjcHJvMTsKKyAgREVGR0NQUk8xOwogCiAgIENIRUNLX1ZFQ1RPUiAoa2V5KTsKIAoK PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy93MzJwcm9jLmMnCi0tLSBzcmMvdzMycHJvYy5jCTIw MTItMDYtMzAgMTU6NTU6MjcgKzAwMDAKKysrIHNyYy93MzJwcm9jLmMJMjAxMi0wNy0xNSAx NDo0MzoyOCArMDAwMApAQCAtNzgwLDcgKzc4MCw3IEBACiAgIHByb2dyYW0gPSBidWlsZF9z dHJpbmcgKGNtZG5hbWUpOwogICBpZiAoTklMUCAoRmZpbGVfZXhlY3V0YWJsZV9wIChwcm9n cmFtKSkpCiAgICAgewotICAgICAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgICAgIERFRkdD UFJPMTsKIAogICAgICAgZnVsbCA9IFFuaWw7CiAgICAgICBHQ1BSTzEgKHByb2dyYW0pOwoK PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy93MzJ1bmlzY3JpYmUuYycKLS0tIHNyYy93MzJ1bmlz Y3JpYmUuYwkyMDEyLTA3LTA1IDA2OjMyOjQxICswMDAwCisrKyBzcmMvdzMydW5pc2NyaWJl LmMJMjAxMi0wNy0xNSAxNDo0MzoyOCArMDAwMApAQCAtNjQ1LDcgKzY0NSw3IEBACiAgIEhE QyBjb250ZXh0OwogICBIRk9OVCBjaGVja19mb250LCBvbGRfZm9udDsKICAgaW50IGksIHJl dHZhbCA9IDA7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzE7CisgIERFRkdDUFJPMTsKIAogICAv KiBDaGVjayB0aGUgc3BlYyBpcyBpbiB0aGUgcmlnaHQgZm9ybWF0LiAgKi8KICAgaWYgKCFD T05TUCAob3RmX3NwZWMpIHx8IFhJTlQgKEZsZW5ndGggKG90Zl9zcGVjKSkgPCAzKQoKPT09 IG1vZGlmaWVkIGZpbGUgJ3NyYy93aW5kb3cuYycKLS0tIHNyYy93aW5kb3cuYwkyMDEyLTA3 LTEwIDE2OjUzOjI2ICswMDAwCisrKyBzcmMvd2luZG93LmMJMjAxMi0wNy0xNSAxNDo0Mzoy OCArMDAwMApAQCAtMjM4Nyw3ICsyMzg3LDcgQEAKICAgTGlzcF9PYmplY3Qgd2luZG93LCB3 aW5kb3dzLCBiZXN0X3dpbmRvdywgZnJhbWVfYXJnOwogICBpbnQgZnJhbWVfYmVzdF93aW5k b3dfZmxhZyA9IDA7CiAgIHN0cnVjdCBmcmFtZSAqZjsKLSAgc3RydWN0IGdjcHJvIGdjcHJv MTsKKyAgREVGR0NQUk8xOwogCiAgIC8qIElmIHdlJ3JlIG9ubHkgbG9vcGluZyB0aHJvdWdo IHdpbmRvd3Mgb24gYSBwYXJ0aWN1bGFyIGZyYW1lLAogICAgICBmcmFtZSBwb2ludHMgdG8g dGhhdCBmcmFtZS4gIElmIHdlJ3JlIGxvb3BpbmcgdGhyb3VnaCB3aW5kb3dzCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3JjL3hkaXNwLmMnCi0tLSBzcmMveGRpc3AuYwkyMDEyLTA3LTEzIDEw OjExOjM3ICswMDAwCisrKyBzcmMveGRpc3AuYwkyMDEyLTA3LTE1IDE0OjQzOjI4ICswMDAw CkBAIC0yNDIxLDEwICsyNDIxLDEwIEBACiAgIGVsc2UKICAgICB7CiAgICAgICBwdHJkaWZm X3QgY291bnQgPSBTUEVDUERMX0lOREVYICgpOwotICAgICAgc3RydWN0IGdjcHJvIGdjcHJv MTsKKyAgICAgIERFRkdDUFJPMTsKIAogICAgICAgR0NQUk8xIChhcmdzWzBdKTsKLSAgICAg IGdjcHJvMS5udmFycyA9IG5hcmdzOworICAgICAgSUZfR0NQUk8gKGdjcHJvMS5udmFycyA9 IG5hcmdzKTsKICAgICAgIHNwZWNiaW5kIChRaW5oaWJpdF9yZWRpc3BsYXksIFF0KTsKICAg ICAgIC8qIFVzZSBRdCB0byBlbnN1cmUgZGVidWdnZXIgZG9lcyBub3QgcnVuLAogCSBzbyB0 aGVyZSBpcyBubyBwb3NzaWJpbGl0eSBvZiB3YW50aW5nIHRvIHJlZGlzcGxheS4gICovCkBA IC0zNTg4LDcgKzM1ODgsNyBAQAogICAgICAgZWxzZQogCXsKIAkgIExpc3BfT2JqZWN0IGZu cywgZm47Ci0JICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzI7CisJICBERUZHQ1BSTzI7 CiAKIAkgIGZucyA9IFFuaWw7CiAJICBHQ1BSTzIgKHZhbCwgZm5zKTsKQEAgLTQ1NTgsNyAr NDU1OCw3IEBACiAgIGlmICghTklMUCAoZm9ybSkgJiYgIUVRIChmb3JtLCBRdCkpCiAgICAg ewogICAgICAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKLSAgICAgIHN0 cnVjdCBnY3BybyBnY3BybzE7CisgICAgICBERUZHQ1BSTzE7CiAKICAgICAgIC8qIEJpbmQg YG9iamVjdCcgdG8gdGhlIG9iamVjdCBoYXZpbmcgdGhlIGBkaXNwbGF5JyBwcm9wZXJ0eSwg YQogCSBidWZmZXIgb3Igc3RyaW5nLiAgQmluZCBgcG9zaXRpb24nIHRvIHRoZSBwb3NpdGlv biBpbiB0aGUKQEAgLTkyNDIsNyArOTI0Miw3IEBACiAgIExpc3BfT2JqZWN0IG1zZywgZm10 OwogICBjaGFyICpidWZmZXI7CiAgIHB0cmRpZmZfdCBsZW47Ci0gIHN0cnVjdCBnY3BybyBn Y3BybzEsIGdjcHJvMiwgZ2Nwcm8zLCBnY3BybzQ7CisgIERFRkdDUFJPNDsKICAgVVNFX1NB RkVfQUxMT0NBOwogCiAgIC8qIERvIG5vdGhpbmcgaWYgY2FsbGVkIGFzeW5jaHJvbm91c2x5 LiAgSW5zZXJ0aW5nIHRleHQgaW50bwpAQCAtOTMwNSw3ICs5MzA1LDcgQEAKICAgICAgIHB0 cmRpZmZfdCBwb2ludF9hdF9lbmQgPSAwOwogICAgICAgcHRyZGlmZl90IHp2X2F0X2VuZCA9 IDA7CiAgICAgICBMaXNwX09iamVjdCBvbGRfZGVhY3RpdmF0ZV9tYXJrLCB0ZW07Ci0gICAg ICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICAgICAgREVGR0NQUk8xOwogCiAgICAgICBvbGRf ZGVhY3RpdmF0ZV9tYXJrID0gVmRlYWN0aXZhdGVfbWFyazsKICAgICAgIG9sZGJ1ZiA9IGN1 cnJlbnRfYnVmZmVyOwpAQCAtOTU3Nyw3ICs5NTc3LDcgQEAKIHZvaWQKIG1lc3NhZ2UzIChM aXNwX09iamVjdCBtLCBwdHJkaWZmX3QgbmJ5dGVzLCBpbnQgbXVsdGlieXRlKQogewotICBz dHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICBERUZHQ1BSTzE7CiAKICAgR0NQUk8xIChtKTsKICAg Y2xlYXJfbWVzc2FnZSAoMSwxKTsKQEAgLTk3MjksMTIgKzk3MjksMTIgQEAKICAgICAgIGlm IChGUkFNRV9NRVNTQUdFX0JVRiAoZikpCiAJewogCSAgTGlzcF9PYmplY3QgYXJnc1syXSwg bXNnOwotCSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yOworCSAgREVGR0NQUk8yOwog CiAJICBhcmdzWzBdID0gYnVpbGRfc3RyaW5nIChtKTsKIAkgIGFyZ3NbMV0gPSBtc2cgPSBz dHJpbmc7CiAJICBHQ1BSTzIgKGFyZ3NbMF0sIG1zZyk7Ci0JICBnY3BybzEubnZhcnMgPSAy OworCSAgSUZfR0NQUk8gKGdjcHJvMS5udmFycyA9IDIpOwogCiAJICBtc2cgPSBGZm9ybWF0 ICgyLCBhcmdzKTsKIApAQCAtMTEwODUsNyArMTEwODUsNyBAQAogcHJlcGFyZV9tZW51X2Jh cnMgKHZvaWQpCiB7CiAgIGludCBhbGxfd2luZG93czsKLSAgc3RydWN0IGdjcHJvIGdjcHJv MSwgZ2Nwcm8yOworICBERUZHQ1BSTzI7CiAgIHN0cnVjdCBmcmFtZSAqZjsKICAgTGlzcF9P YmplY3QgdG9vbHRpcF9mcmFtZTsKIApAQCAtMTE0MzksNyArMTE0MzksNyBAQAogCSAgcHRy ZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKIAkgIExpc3BfT2JqZWN0IGZyYW1l LCBuZXdfdG9vbF9iYXI7CiAgICAgICAgICAgaW50IG5ld19uX3Rvb2xfYmFyOwotCSAgc3Ry dWN0IGdjcHJvIGdjcHJvMTsKKwkgIERFRkdDUFJPMTsKIAogCSAgLyogU2V0IGN1cnJlbnRf YnVmZmVyIHRvIHRoZSBidWZmZXIgb2YgdGhlIHNlbGVjdGVkCiAJICAgICB3aW5kb3cgb2Yg dGhlIGZyYW1lLCBzbyB0aGF0IHdlIGdldCB0aGUgcmlnaHQgbG9jYWwKQEAgLTExNTAyLDcg KzExNTAyLDcgQEAKIGJ1aWxkX2Rlc2lyZWRfdG9vbF9iYXJfc3RyaW5nIChzdHJ1Y3QgZnJh bWUgKmYpCiB7CiAgIGludCBpLCBzaXplLCBzaXplX25lZWRlZDsKLSAgc3RydWN0IGdjcHJv IGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzM7CisgIERFRkdDUFJPMzsKICAgTGlzcF9PYmplY3Qg aW1hZ2UsIHBsaXN0LCBwcm9wczsKIAogICBpbWFnZSA9IHBsaXN0ID0gcHJvcHMgPSBRbmls OwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy94ZmFjZXMuYycKLS0tIHNyYy94ZmFjZXMuYwky MDEyLTA3LTEwIDA4OjQzOjQ2ICswMDAwCisrKyBzcmMveGZhY2VzLmMJMjAxMi0wNy0xNSAx NDo0MzoyOCArMDAwMApAQCAtMjM1Niw3ICsyMzU2LDcgQEAKIAkJCSAgICAgIGZhY2VfbmFt ZSwgTkFNRURfTUVSR0VfUE9JTlRfTk9STUFMLAogCQkJICAgICAgJm5hbWVkX21lcmdlX3Bv aW50cykpCiAgICAgewotICAgICAgc3RydWN0IGdjcHJvIGdjcHJvMTsKKyAgICAgIERFRkdD UFJPMTsKICAgICAgIExpc3BfT2JqZWN0IGZyb21bTEZBQ0VfVkVDVE9SX1NJWkVdOwogICAg ICAgaW50IG9rID0gZ2V0X2xmYWNlX2F0dHJpYnV0ZXMgKGYsIGZhY2VfbmFtZSwgZnJvbSwg MCwgbmFtZWRfbWVyZ2VfcG9pbnRzKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy94Zm5z LmMnCi0tLSBzcmMveGZucy5jCTIwMTItMDctMTEgMDQ6MzE6NTMgKzAwMDAKKysrIHNyYy94 Zm5zLmMJMjAxMi0wNy0xNSAxNDo0MzoyOCArMDAwMApAQCAtMTUxMSw3ICsxNTExLDcgQEAK IAlMaXNwX09iamVjdCBjb2Rpbmdfc3lzdGVtOwogCUxpc3BfT2JqZWN0IGVuY29kZWRfbmFt ZTsKIAlMaXNwX09iamVjdCBlbmNvZGVkX2ljb25fbmFtZTsKLQlzdHJ1Y3QgZ2Nwcm8gZ2Nw cm8xOworCURFRkdDUFJPMTsKIAogCS8qIEFzIEVOQ09ERV9VVEZfOCBtYXkgY2F1c2UgR0Mg YW5kIHJlbG9jYXRpb24gb2Ygc3RyaW5nIGRhdGEsCiAJICAgd2UgdXNlIGl0IGJlZm9yZSB4 X2VuY29kZV90ZXh0IHRoYXQgbWF5IHJldHVybiBzdHJpbmcgZGF0YS4gICovCkBAIC0zMDU5 LDcgKzMwNTksNyBAQAogICBsb25nIHdpbmRvd19wcm9tcHRpbmcgPSAwOwogICBpbnQgd2lk dGgsIGhlaWdodDsKICAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKLSAg c3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzMsIGdjcHJvNDsKKyAgREVGR0NQ Uk80OwogICBMaXNwX09iamVjdCBkaXNwbGF5OwogICBzdHJ1Y3QgeF9kaXNwbGF5X2luZm8g KmRweWluZm8gPSBOVUxMOwogICBMaXNwX09iamVjdCBwYXJlbnQ7CkBAIC0zMTUwLDcgKzMx NTAsNyBAQAogICAgICB0byBnZXQgdGhlIGNvbG9yIHJlZmVyZW5jZSBjb3VudHMgcmlnaHQs IHNvIGluaXRpYWxpemUgdGhlbSEgICovCiAgIHsKICAgICBMaXNwX09iamVjdCBibGFjazsK LSAgICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICAgIERFRkdDUFJPMTsKIAogICAgIC8qIEZ1 bmN0aW9uIHhfZGVjb2RlX2NvbG9yIGNhbiBzaWduYWwgYW4gZXJyb3IuICBNYWtlCiAgICAg ICAgc3VyZSB0byBpbml0aWFsaXplIGNvbG9yIHNsb3RzIHNvIHRoYXQgd2Ugd29uJ3QgdHJ5 CkBAIC00MzE0LDcgKzQzMTQsNyBAQAogICBpbnQgYWN0dWFsX2Zvcm1hdDsKICAgdW5zaWdu ZWQgbG9uZyBhY3R1YWxfc2l6ZSwgYnl0ZXNfcmVtYWluaW5nOwogICBXaW5kb3cgdGFyZ2V0 X3dpbmRvdyA9IEZSQU1FX1hfV0lORE9XIChmKTsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsK KyAgREVGR0NQUk8xOwogCiAgIEdDUFJPMSAocHJvcF92YWx1ZSk7CiAgIENIRUNLX1NUUklO RyAocHJvcCk7CkBAIC00NTY3LDcgKzQ1NjcsNyBAQAogICBMaXNwX09iamVjdCBuYW1lOwog ICBpbnQgd2lkdGgsIGhlaWdodDsKICAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRF WCAoKTsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzM7CisgIERFRkdD UFJPMzsKICAgaW50IGZhY2VfY2hhbmdlX2NvdW50X2JlZm9yZSA9IGZhY2VfY2hhbmdlX2Nv dW50OwogICBMaXNwX09iamVjdCBidWZmZXI7CiAgIHN0cnVjdCBidWZmZXIgKm9sZF9idWZm ZXI7CkBAIC00NjMwLDcgKzQ2MzAsNyBAQAogICAgICB0byBnZXQgdGhlIGNvbG9yIHJlZmVy ZW5jZSBjb3VudHMgcmlnaHQsIHNvIGluaXRpYWxpemUgdGhlbSEgICovCiAgIHsKICAgICBM aXNwX09iamVjdCBibGFjazsKLSAgICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOworICAgIERFRkdD UFJPMTsKIAogICAgIC8qIEZ1bmN0aW9uIHhfZGVjb2RlX2NvbG9yIGNhbiBzaWduYWwgYW4g ZXJyb3IuICBNYWtlCiAgICAgICAgc3VyZSB0byBpbml0aWFsaXplIGNvbG9yIHNsb3RzIHNv IHRoYXQgd2Ugd29uJ3QgdHJ5CkBAIC00OTYwLDcgKzQ5NjAsNyBAQAogICBzdHJ1Y3QgYnVm ZmVyICpvbGRfYnVmZmVyOwogICBzdHJ1Y3QgdGV4dF9wb3MgcG9zOwogICBpbnQgaSwgd2lk dGgsIGhlaWdodCwgc2Vlbl9yZXZlcnNlZF9wOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBn Y3BybzIsIGdjcHJvMywgZ2Nwcm80OworICBERUZHQ1BSTzQ7CiAgIGludCBvbGRfd2luZG93 c19vcl9idWZmZXJzX2NoYW5nZWQgPSB3aW5kb3dzX29yX2J1ZmZlcnNfY2hhbmdlZDsKICAg cHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKIApAQCAtNTIyMSw3ICs1MjIx LDcgQEAKIHsKICAgcHRyZGlmZl90IGNvdW50OwogICBMaXNwX09iamVjdCBkZWxldGVkLCBm cmFtZSwgdGltZXI7Ci0gIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKKyAgREVGR0NQ Uk8yOwogCiAgIC8qIFJldHVybiBxdWlja2x5IGlmIG5vdGhpbmcgdG8gZG8uICAqLwogICBp ZiAoTklMUCAodGlwX3RpbWVyKSAmJiBOSUxQICh0aXBfZnJhbWUpKQpAQCAtNTM2Miw3ICs1 MzYyLDcgQEAKICAgaW50IGFjID0gMDsKICAgWG1TdHJpbmcgZGlyX3htc3RyaW5nLCBwYXR0 ZXJuX3htc3RyaW5nOwogICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVYICgpOwot ICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJvMywgZ2Nwcm80LCBnY3BybzUs IGdjcHJvNjsKKyAgREVGR0NQUk82OwogCiAgIGNoZWNrX3ggKCk7CiAKQEAgLTU1MzEsNyAr NTUzMSw3IEBACiAgIExpc3BfT2JqZWN0IGZpbGUgPSBRbmlsOwogICBMaXNwX09iamVjdCBk ZWNvZGVkX2ZpbGU7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7Ci0g IHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nwcm8zLCBnY3BybzQsIGdjcHJvNSwg Z2Nwcm82OworICBERUZHQ1BSTzY7CiAgIGNoYXIgKmNkZWZfZmlsZTsKIAogICBjaGVja194 ICgpOwpAQCAtNTU5Miw3ICs1NTkyLDcgQEAKICAgTGlzcF9PYmplY3QgZm9udDsKICAgTGlz cF9PYmplY3QgZm9udF9wYXJhbTsKICAgY2hhciAqZGVmYXVsdF9uYW1lID0gTlVMTDsKLSAg c3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yOworICBERUZHQ1BSTzI7CiAgIHB0cmRpZmZf dCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAKICAgY2hlY2tfeCAoKTsKCj09PSBtb2Rp ZmllZCBmaWxlICdzcmMveHNlbGVjdC5jJwotLS0gc3JjL3hzZWxlY3QuYwkyMDEyLTA3LTA1 IDE4OjM1OjQ4ICswMDAwCisrKyBzcmMveHNlbGVjdC5jCTIwMTItMDctMTUgMTQ6NDM6Mjgg KzAwMDAKQEAgLTc3NCw3ICs3NzQsNyBAQAogc3RhdGljIHZvaWQKIHhfaGFuZGxlX3NlbGVj dGlvbl9yZXF1ZXN0IChzdHJ1Y3QgaW5wdXRfZXZlbnQgKmV2ZW50KQogewotICBzdHJ1Y3Qg Z2Nwcm8gZ2Nwcm8xLCBnY3BybzI7CisgIERFRkdDUFJPMjsKICAgVGltZSBsb2NhbF9zZWxl Y3Rpb25fdGltZTsKIAogICBEaXNwbGF5ICpkaXNwbGF5ID0gU0VMRUNUSU9OX0VWRU5UX0RJ U1BMQVkgKGV2ZW50KTsKQEAgLTg5Miw3ICs4OTIsNyBAQAogCQkgICAgIExpc3BfT2JqZWN0 IHRhcmdldF9zeW1ib2wsIEF0b20gcHJvcGVydHksCiAJCSAgICAgaW50IGZvcl9tdWx0aXBs ZSwgc3RydWN0IHhfZGlzcGxheV9pbmZvICpkcHlpbmZvKQogewotICBzdHJ1Y3QgZ2Nwcm8g Z2Nwcm8xOworICBERUZHQ1BSTzE7CiAgIExpc3BfT2JqZWN0IGxpc3Bfc2VsZWN0aW9uOwog ICBzdHJ1Y3Qgc2VsZWN0aW9uX2RhdGEgKmNzOwogICBHQ1BSTzEgKGxpc3Bfc2VsZWN0aW9u KTsKQEAgLTIwMjgsNyArMjAyOCw3IEBACiAgICBMaXNwX09iamVjdCB0aW1lX3N0YW1wLCBM aXNwX09iamVjdCB0ZXJtaW5hbCkKIHsKICAgTGlzcF9PYmplY3QgdmFsID0gUW5pbDsKLSAg c3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yOworICBERUZHQ1BSTzI7CiAgIHN0cnVjdCBm cmFtZSAqZiA9IGZyYW1lX2Zvcl94X3NlbGVjdGlvbiAodGVybWluYWwpOwogICBHQ1BSTzIg KHRhcmdldF90eXBlLCB2YWwpOyAvKiB3ZSBzdG9yZSBuZXdseSBjb25zZWQgZGF0YSBpbnRv IHRoZXNlICovCiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMveHRlcm0uYycKLS0tIHNyYy94 dGVybS5jCTIwMTItMDctMTAgMjM6MjQ6MzYgKzAwMDAKKysrIHNyYy94dGVybS5jCTIwMTIt MDctMTUgMTQ6NDM6MjggKzAwMDAKQEAgLTEwMTI2LDcgKzEwMTI2LDcgQEAKIAogCSAgICAv KiBQcm90ZWN0IHRlcm1pbmFsIGZyb20gR0MgYmVmb3JlIHJlbW92aW5nIGl0IGZyb20gdGhl CiAJICAgICAgIGxpc3Qgb2YgdGVybWluYWxzLiAgKi8KLQkgICAgc3RydWN0IGdjcHJvIGdj cHJvMTsKKwkgICAgREVGR0NQUk8xOwogCSAgICBMaXNwX09iamVjdCBnY3Byb190ZXJtOwog CSAgICBYU0VUVEVSTUlOQUwgKGdjcHJvX3Rlcm0sIHRlcm1pbmFsKTsKIAkgICAgR0NQUk8x IChnY3Byb190ZXJtKTsKCg== --------------050606070908000607020405--