From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 03 02:09:58 2012 Received: (at submit) by debbugs.gnu.org; 3 Jun 2012 06:09:58 +0000 Received: from localhost ([127.0.0.1]:55191 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sb40Y-0002uS-2g for submit@debbugs.gnu.org; Sun, 03 Jun 2012 02:09:58 -0400 Received: from eggs.gnu.org ([208.118.235.92]:54727) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sb3zz-0002th-Uq for submit@debbugs.gnu.org; Sun, 03 Jun 2012 02:09:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sb3xt-0001ih-Oq for submit@debbugs.gnu.org; Sun, 03 Jun 2012 02:07:16 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:46603) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sb3xt-0001iP-J0 for submit@debbugs.gnu.org; Sun, 03 Jun 2012 02:07:01 -0400 Received: from eggs.gnu.org ([208.118.235.92]:35580) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sb3xd-0002iF-Is for bug-gnu-emacs@gnu.org; Sun, 03 Jun 2012 02:07:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sb3xM-0001W3-AN for bug-gnu-emacs@gnu.org; Sun, 03 Jun 2012 02:06:44 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:47401) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sb3xL-0001JW-AU for bug-gnu-emacs@gnu.org; Sun, 03 Jun 2012 02:06:28 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id AF7BBA60001 for ; Sat, 2 Jun 2012 23:06:16 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id H+vxH8qOgn4Z for ; Sat, 2 Jun 2012 23:06:09 -0700 (PDT) Received: from [192.168.1.10] (pool-71-189-109-235.lsanca.fios.verizon.net [71.189.109.235]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id EEA8C39E8006 for ; Sat, 2 Jun 2012 23:06:08 -0700 (PDT) Message-ID: <4FCAFED3.4080008@cs.ucla.edu> Date: Sat, 02 Jun 2012 23:06:11 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 MIME-Version: 1.0 To: bug-gnu-emacs@gnu.org Subject: Don't use 'register'; these days it's not needed. Content-Type: multipart/mixed; boundary="------------010202060104020205090600" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org This is a multi-part message in MIME format. --------------010202060104020205090600 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Attached is a patch to remove 'register' from the mainline Emacs source code. This is broken out of Bug#11604 and I will also follow up there. --------------010202060104020205090600 Content-Type: text/plain; charset=UTF-8; name="no-register.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="no-register.txt" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9DaGFuZ2VMb2cnCi0tLSBzcmMvQ2hhbmdlTG9nCTIw MTItMDYtMDIgMjE6MDE6MDcgKzAwMDAKKysrIHNyYy9DaGFuZ2VMb2cJMjAxMi0wNi0wMyAw NTo1NToyMyArMDAwMApAQCAtMSwzICsxLDIyIEBACisyMDEyLTA2LTAzICBQYXVsIEVnZ2Vy dCAgPGVnZ2VydEBjcy51Y2xhLmVkdT4KKworCURvbid0IHVzZSAncmVnaXN0ZXInOyB0aGVz ZSBkYXlzIGl0J3Mgbm90IG5lZWRlZC4KKwlXaXRoIHJlY2VudCBjb21waWxlcnMsICdyZWdp c3RlcicgZG9lc24ndCBzaWduaWZpY2FudGx5IGhlbHAKKwlwZXJmb3JtYW5jZSwgYW5kIHdp dGggb2xkZXIgY29tcGlsZXJzIHRoZXJlIGFyZSBzb21lIGJ1Z3MuCisJQ2hhbmdpbmcgdGhl IGRlZmF1bHQgc3R5bGUgdG8gb21pdCAncmVnaXN0ZXInIG1lYW5zIHRoYXQgd2UgY2FuCisJ YXNzdW1lIHRoYXQgdGhlIGNvZGUgbm9ybWFsbHkgd29uJ3QgdXNlICdyZWdpc3RlcicsIHNv IHRoZXJlJ3MKKwlubyBuZWVkIGZvciBjb21tZW50cyBsaWtlICJJZiB3ZSB1c2UgYHJlZ2lz dGVyJyBoZXJlLCBnY2MtNC4wLjIgb24KKwlhbWQ2NCB1c2luZyAtRFVTRV9MSVNQX1VOSU9O X1RZUEUgY29tcGxhaW5zIi4KKwkqIGFsbG9jLmMsIGJ1ZmZlci5jLCBieXRlY29kZS5jLCBj YWxsaW50LmMsIGNhbGxwcm9jLmMsIGNhc2VmaWRkbGUuYzoKKwkqIGNhc2V0YWIuYywgY2Ns LmMsIGNoYXJ0YWIuYywgY20uYywgY21kcy5jLCBjb2RpbmcuYywgZGF0YS5jLCBkaXJlZC5j OgorCSogZGlzcG5ldy5jLCBkb2MuYywgZG9wcm50LmMsIGVkaXRmbnMuYywgZXZhbC5jLCBm aWxlaW8uYywgZmlsZWxvY2suYzoKKwkqIGZsb2F0Zm5zLmMsIGZucy5jLCBmcmFtZS5jLCBn bWFsbG9jLmMsIGluZGVudC5jLCBpbnNkZWwuYzoKKwkqIGludGVydmFscy5jLCBrZXlib2Fy ZC5jLCBrZXltYXAuYywgbHJlYWQuYywgbWFya2VyLmMsIG1pbmlidWYuYzoKKwkqIHByaW50 LmMsIHByb2Nlc3MuYywgcmFsbG9jLmMsIHNjcm9sbC5jLCBzZWFyY2guYywgc3ludGF4LmMs IHN5c2RlcC5jOgorCSogdGVybS5jLCB0ZXJtY2FwLmMsIHRleHRwcm9wLmMsIHRwYXJhbS5j LCB1bmRvLmMsIHVuZXhjb2ZmLmM6CisJKiB2bS1saW1pdC5jLCB3aW5kb3cuYywgeGRpc3Au YywgeGZucy5jLCB4dGVybS5jOgorCU9taXQgJ3JlZ2lzdGVyJy4KKwogMjAxMi0wNi0wMiAg UGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CiAKIAkqIHN5c2RlcC5jIChzeXN0 ZW1fcHJvY2Vzc19hdHRyaWJ1dGVzKTogSW1wcm92ZSBjb21tZW50LgoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0wNi0wMiAwODo1Mjoy NyArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAt NjA4LDcgKzYwOCw3IEBACiBzdGF0aWMgdm9pZCAqCiBvdmVycnVuX2NoZWNrX21hbGxvYyAo c2l6ZV90IHNpemUpCiB7Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKnZhbDsKKyAgdW5z aWduZWQgY2hhciAqdmFsOwogICBpbnQgb3ZlcmhlYWQgPSArK2NoZWNrX2RlcHRoID09IDEg PyBYTUFMTE9DX09WRVJSVU5fQ0hFQ0tfT1ZFUkhFQUQgOiAwOwogICBpZiAoU0laRV9NQVgg LSBvdmVyaGVhZCA8IHNpemUpCiAgICAgYWJvcnQgKCk7CkBAIC02MzMsNyArNjMzLDcgQEAK IHN0YXRpYyB2b2lkICoKIG92ZXJydW5fY2hlY2tfcmVhbGxvYyAodm9pZCAqYmxvY2ssIHNp emVfdCBzaXplKQogewotICByZWdpc3RlciB1bnNpZ25lZCBjaGFyICp2YWwgPSAodW5zaWdu ZWQgY2hhciAqKSBibG9jazsKKyAgdW5zaWduZWQgY2hhciAqdmFsID0gKHVuc2lnbmVkIGNo YXIgKikgYmxvY2s7CiAgIGludCBvdmVyaGVhZCA9ICsrY2hlY2tfZGVwdGggPT0gMSA/IFhN QUxMT0NfT1ZFUlJVTl9DSEVDS19PVkVSSEVBRCA6IDA7CiAgIGlmIChTSVpFX01BWCAtIG92 ZXJoZWFkIDwgc2l6ZSkKICAgICBhYm9ydCAoKTsKQEAgLTg3Niw3ICs4NzYsNyBAQAogTGlz cF9PYmplY3QKIHNhZmVfYWxsb2NhX3Vud2luZCAoTGlzcF9PYmplY3QgYXJnKQogewotICBy ZWdpc3RlciBzdHJ1Y3QgTGlzcF9TYXZlX1ZhbHVlICpwID0gWFNBVkVfVkFMVUUgKGFyZyk7 CisgIHN0cnVjdCBMaXNwX1NhdmVfVmFsdWUgKnAgPSBYU0FWRV9WQUxVRSAoYXJnKTsKIAog ICBwLT5kb2djID0gMDsKICAgeGZyZWUgKHAtPnBvaW50ZXIpOwpAQCAtODk3LDcgKzg5Nyw3 IEBACiBzdGF0aWMgdm9pZCAqCiBsaXNwX21hbGxvYyAoc2l6ZV90IG5ieXRlcywgZW51bSBt ZW1fdHlwZSB0eXBlKQogewotICByZWdpc3RlciB2b2lkICp2YWw7CisgIHZvaWQgKnZhbDsK IAogICBNQUxMT0NfQkxPQ0tfSU5QVVQ7CiAKQEAgLTE1MjAsNyArMTUyMCw3IEBACiAgICAg ewogICAgICAgaWYgKGludGVydmFsX2Jsb2NrX2luZGV4ID09IElOVEVSVkFMX0JMT0NLX1NJ WkUpCiAJewotCSAgcmVnaXN0ZXIgc3RydWN0IGludGVydmFsX2Jsb2NrICpuZXdpOworCSAg c3RydWN0IGludGVydmFsX2Jsb2NrICpuZXdpOwogCiAJICBuZXdpID0gKHN0cnVjdCBpbnRl cnZhbF9ibG9jayAqKSBsaXNwX21hbGxvYyAoc2l6ZW9mICpuZXdpLAogCQkJCQkJCU1FTV9U WVBFX05PTl9MSVNQKTsKQEAgLTE1NDUsNyArMTU0NSw3IEBACiAvKiBNYXJrIExpc3Agb2Jq ZWN0cyBpbiBpbnRlcnZhbCBJLiAqLwogCiBzdGF0aWMgdm9pZAotbWFya19pbnRlcnZhbCAo cmVnaXN0ZXIgSU5URVJWQUwgaSwgTGlzcF9PYmplY3QgZHVtbXkpCittYXJrX2ludGVydmFs IChJTlRFUlZBTCBpLCBMaXNwX09iamVjdCBkdW1teSkKIHsKICAgZWFzc2VydCAoIWktPmdj bWFya2JpdCk7CQkvKiBJbnRlcnZhbHMgYXJlIG5ldmVyIHNoYXJlZC4gICovCiAgIGktPmdj bWFya2JpdCA9IDE7CkBAIC0xNTU3LDcgKzE1NTcsNyBAQAogICAgdXNlIHRoZSBtYWNybyBN QVJLX0lOVEVSVkFMX1RSRUUgaW5zdGVhZC4gICovCiAKIHN0YXRpYyB2b2lkCi1tYXJrX2lu dGVydmFsX3RyZWUgKHJlZ2lzdGVyIElOVEVSVkFMIHRyZWUpCittYXJrX2ludGVydmFsX3Ry ZWUgKElOVEVSVkFMIHRyZWUpCiB7CiAgIC8qIE5vIG5lZWQgdG8gdGVzdCBpZiB0aGlzIHRy ZWUgaGFzIGJlZW4gbWFya2VkIGFscmVhZHk7IHRoaXMKICAgICAgZnVuY3Rpb24gaXMgYWx3 YXlzIGNhbGxlZCB0aHJvdWdoIHRoZSBNQVJLX0lOVEVSVkFMX1RSRUUgbWFjcm8sCkBAIC0y MzQ3LDggKzIzNDcsOCBAQAogSU5JVCBtdXN0IGJlIGFuIGludGVnZXIgdGhhdCByZXByZXNl bnRzIGEgY2hhcmFjdGVyLiAgKi8pCiAgIChMaXNwX09iamVjdCBsZW5ndGgsIExpc3BfT2Jq ZWN0IGluaXQpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKLSAgcmVnaXN0ZXIg dW5zaWduZWQgY2hhciAqcCwgKmVuZDsKKyAgTGlzcF9PYmplY3QgdmFsOworICB1bnNpZ25l ZCBjaGFyICpwLCAqZW5kOwogICBpbnQgYzsKICAgRU1BQ1NfSU5UIG5ieXRlczsKIApAQCAt MjM5NCw3ICsyMzk0LDcgQEAKIExFTkdUSCBtdXN0IGJlIGEgbnVtYmVyLiAgSU5JVCBtYXR0 ZXJzIG9ubHkgaW4gd2hldGhlciBpdCBpcyB0IG9yIG5pbC4gICovKQogICAoTGlzcF9PYmpl Y3QgbGVuZ3RoLCBMaXNwX09iamVjdCBpbml0KQogewotICByZWdpc3RlciBMaXNwX09iamVj dCB2YWw7CisgIExpc3BfT2JqZWN0IHZhbDsKICAgc3RydWN0IExpc3BfQm9vbF9WZWN0b3Ig KnA7CiAgIHB0cmRpZmZfdCBsZW5ndGhfaW5fY2hhcnM7CiAgIEVNQUNTX0lOVCBsZW5ndGhf aW5fZWx0czsKQEAgLTI0MzgsNyArMjQzOCw3IEBACiBMaXNwX09iamVjdAogbWFrZV9zdHJp bmcgKGNvbnN0IGNoYXIgKmNvbnRlbnRzLCBwdHJkaWZmX3QgbmJ5dGVzKQogewotICByZWdp c3RlciBMaXNwX09iamVjdCB2YWw7CisgIExpc3BfT2JqZWN0IHZhbDsKICAgcHRyZGlmZl90 IG5jaGFycywgbXVsdGlieXRlX25ieXRlczsKIAogICBwYXJzZV9zdHJfYXNfbXVsdGlieXRl ICgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBjb250ZW50cywgbmJ5dGVzLApAQCAtMjQ1OCw3 ICsyNDU4LDcgQEAKIExpc3BfT2JqZWN0CiBtYWtlX3VuaWJ5dGVfc3RyaW5nIChjb25zdCBj aGFyICpjb250ZW50cywgcHRyZGlmZl90IGxlbmd0aCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9P YmplY3QgdmFsOworICBMaXNwX09iamVjdCB2YWw7CiAgIHZhbCA9IG1ha2VfdW5pbml0X3N0 cmluZyAobGVuZ3RoKTsKICAgbWVtY3B5IChTREFUQSAodmFsKSwgY29udGVudHMsIGxlbmd0 aCk7CiAgIHJldHVybiB2YWw7CkBAIC0yNDcyLDcgKzI0NzIsNyBAQAogbWFrZV9tdWx0aWJ5 dGVfc3RyaW5nIChjb25zdCBjaGFyICpjb250ZW50cywKIAkJICAgICAgIHB0cmRpZmZfdCBu Y2hhcnMsIHB0cmRpZmZfdCBuYnl0ZXMpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZh bDsKKyAgTGlzcF9PYmplY3QgdmFsOwogICB2YWwgPSBtYWtlX3VuaW5pdF9tdWx0aWJ5dGVf c3RyaW5nIChuY2hhcnMsIG5ieXRlcyk7CiAgIG1lbWNweSAoU0RBVEEgKHZhbCksIGNvbnRl bnRzLCBuYnl0ZXMpOwogICByZXR1cm4gdmFsOwpAQCAtMjQ4Niw3ICsyNDg2LDcgQEAKIG1h a2Vfc3RyaW5nX2Zyb21fYnl0ZXMgKGNvbnN0IGNoYXIgKmNvbnRlbnRzLAogCQkJcHRyZGlm Zl90IG5jaGFycywgcHRyZGlmZl90IG5ieXRlcykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgdmFsOworICBMaXNwX09iamVjdCB2YWw7CiAgIHZhbCA9IG1ha2VfdW5pbml0X211bHRp Ynl0ZV9zdHJpbmcgKG5jaGFycywgbmJ5dGVzKTsKICAgbWVtY3B5IChTREFUQSAodmFsKSwg Y29udGVudHMsIG5ieXRlcyk7CiAgIGlmIChTQllURVMgKHZhbCkgPT0gU0NIQVJTICh2YWwp KQpAQCAtMjUwNCw3ICsyNTA0LDcgQEAKIG1ha2Vfc3BlY2lmaWVkX3N0cmluZyAoY29uc3Qg Y2hhciAqY29udGVudHMsCiAJCSAgICAgICBwdHJkaWZmX3QgbmNoYXJzLCBwdHJkaWZmX3Qg bmJ5dGVzLCBpbnQgbXVsdGlieXRlKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWw7 CisgIExpc3BfT2JqZWN0IHZhbDsKIAogICBpZiAobmNoYXJzIDwgMCkKICAgICB7CkBAIC0y NjUxLDcgKzI2NTEsNyBAQAogTGlzcF9PYmplY3QKIG1ha2VfZmxvYXQgKGRvdWJsZSBmbG9h dF92YWx1ZSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsOworICBMaXNwX09iamVj dCB2YWw7CiAKICAgLyogZWFzc2VydCAoIWhhbmRsaW5nX3NpZ25hbCk7ICovCiAKQEAgLTI2 NjgsNyArMjY2OCw3IEBACiAgICAgewogICAgICAgaWYgKGZsb2F0X2Jsb2NrX2luZGV4ID09 IEZMT0FUX0JMT0NLX1NJWkUpCiAJewotCSAgcmVnaXN0ZXIgc3RydWN0IGZsb2F0X2Jsb2Nr ICpuZXc7CisJICBzdHJ1Y3QgZmxvYXRfYmxvY2sgKm5ldzsKIAogCSAgbmV3ID0gKHN0cnVj dCBmbG9hdF9ibG9jayAqKSBsaXNwX2FsaWduX21hbGxvYyAoc2l6ZW9mICpuZXcsCiAJCQkJ CQkJICBNRU1fVFlQRV9GTE9BVCk7CkBAIC0yNzcwLDcgKzI3NzAsNyBAQAogICAgICAgIGRv YzogLyogQ3JlYXRlIGEgbmV3IGNvbnMsIGdpdmUgaXQgQ0FSIGFuZCBDRFIgYXMgY29tcG9u ZW50cywgYW5kIHJldHVybiBpdC4gICovKQogICAoTGlzcF9PYmplY3QgY2FyLCBMaXNwX09i amVjdCBjZHIpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKKyAgTGlzcF9PYmpl Y3QgdmFsOwogCiAgIC8qIGVhc3NlcnQgKCFoYW5kbGluZ19zaWduYWwpOyAqLwogCkBAIC0y Nzg3LDcgKzI3ODcsNyBAQAogICAgIHsKICAgICAgIGlmIChjb25zX2Jsb2NrX2luZGV4ID09 IENPTlNfQkxPQ0tfU0laRSkKIAl7Ci0JICByZWdpc3RlciBzdHJ1Y3QgY29uc19ibG9jayAq bmV3OworCSAgc3RydWN0IGNvbnNfYmxvY2sgKm5ldzsKIAkgIG5ldyA9IChzdHJ1Y3QgY29u c19ibG9jayAqKSBsaXNwX2FsaWduX21hbGxvYyAoc2l6ZW9mICpuZXcsCiAJCQkJCQkJIE1F TV9UWVBFX0NPTlMpOwogCSAgbWVtc2V0IChuZXctPmdjbWFya2JpdHMsIDAsIHNpemVvZiBu ZXctPmdjbWFya2JpdHMpOwpAQCAtMjg2NCw3ICsyODY0LDcgQEAKIHVzYWdlOiAobGlzdCAm cmVzdCBPQkpFQ1RTKSAgKi8pCiAgIChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICph cmdzKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWw7CisgIExpc3BfT2JqZWN0IHZh bDsKICAgdmFsID0gUW5pbDsKIAogICB3aGlsZSAobmFyZ3MgPiAwKQpAQCAtMjg3OCwxMCAr Mjg3OCwxMCBAQAogCiBERUZVTiAoIm1ha2UtbGlzdCIsIEZtYWtlX2xpc3QsIFNtYWtlX2xp c3QsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gYSBuZXdseSBjcmVhdGVkIGxp c3Qgb2YgbGVuZ3RoIExFTkdUSCwgd2l0aCBlYWNoIGVsZW1lbnQgYmVpbmcgSU5JVC4gICov KQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgbGVuZ3RoLCBMaXNwX09iamVjdCBpbml0KQor ICAoTGlzcF9PYmplY3QgbGVuZ3RoLCBMaXNwX09iamVjdCBpbml0KQogewotICByZWdpc3Rl ciBMaXNwX09iamVjdCB2YWw7Ci0gIHJlZ2lzdGVyIEVNQUNTX0lOVCBzaXplOworICBMaXNw X09iamVjdCB2YWw7CisgIEVNQUNTX0lOVCBzaXplOwogCiAgIENIRUNLX05BVE5VTSAobGVu Z3RoKTsKICAgc2l6ZSA9IFhGQVNUSU5UIChsZW5ndGgpOwpAQCAtMzA2MCwxMiArMzA2MCwx MiBAQAogREVGVU4gKCJtYWtlLXZlY3RvciIsIEZtYWtlX3ZlY3RvciwgU21ha2VfdmVjdG9y LCAyLCAyLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIGEgbmV3bHkgY3JlYXRlZCB2ZWN0 b3Igb2YgbGVuZ3RoIExFTkdUSCwgd2l0aCBlYWNoIGVsZW1lbnQgYmVpbmcgSU5JVC4KIFNl ZSBhbHNvIHRoZSBmdW5jdGlvbiBgdmVjdG9yJy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9P YmplY3QgbGVuZ3RoLCBMaXNwX09iamVjdCBpbml0KQorICAoTGlzcF9PYmplY3QgbGVuZ3Ro LCBMaXNwX09iamVjdCBpbml0KQogewogICBMaXNwX09iamVjdCB2ZWN0b3I7Ci0gIHJlZ2lz dGVyIHB0cmRpZmZfdCBzaXplaTsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGk7Ci0gIHJlZ2lz dGVyIHN0cnVjdCBMaXNwX1ZlY3RvciAqcDsKKyAgcHRyZGlmZl90IHNpemVpOworICBwdHJk aWZmX3QgaTsKKyAgc3RydWN0IExpc3BfVmVjdG9yICpwOwogCiAgIENIRUNLX05BVE5VTSAo bGVuZ3RoKTsKIApAQCAtMzA4NSw5ICszMDg1LDkgQEAKIHVzYWdlOiAodmVjdG9yICZyZXN0 IE9CSkVDVFMpICAqLykKICAgKHB0cmRpZmZfdCBuYXJncywgTGlzcF9PYmplY3QgKmFyZ3Mp CiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGxlbiwgdmFsOworICBMaXNwX09iamVjdCBs ZW4sIHZhbDsKICAgcHRyZGlmZl90IGk7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX1ZlY3Rv ciAqcDsKKyAgc3RydWN0IExpc3BfVmVjdG9yICpwOwogCiAgIFhTRVRGQVNUSU5UIChsZW4s IG5hcmdzKTsKICAgdmFsID0gRm1ha2VfdmVjdG9yIChsZW4sIFFuaWwpOwpAQCAtMzExNiw5 ICszMTE2LDkgQEAKIHVzYWdlOiAobWFrZS1ieXRlLWNvZGUgQVJHTElTVCBCWVRFLUNPREUg Q09OU1RBTlRTIERFUFRIICZvcHRpb25hbCBET0NTVFJJTkcgSU5URVJBQ1RJVkUtU1BFQyAm cmVzdCBFTEVNRU5UUykgICovKQogICAocHRyZGlmZl90IG5hcmdzLCBMaXNwX09iamVjdCAq YXJncykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgbGVuLCB2YWw7CisgIExpc3BfT2Jq ZWN0IGxlbiwgdmFsOwogICBwdHJkaWZmX3QgaTsKLSAgcmVnaXN0ZXIgc3RydWN0IExpc3Bf VmVjdG9yICpwOworICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnA7CiAKICAgWFNFVEZBU1RJTlQg KGxlbiwgbmFyZ3MpOwogICBpZiAoIU5JTFAgKFZwdXJpZnlfZmxhZykpCkBAIC0zMjA1LDgg KzMyMDUsOCBAQAogSXRzIHZhbHVlIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9uIGFyZSB2b2lk LCBhbmQgaXRzIHByb3BlcnR5IGxpc3QgaXMgbmlsLiAgKi8pCiAgIChMaXNwX09iamVjdCBu YW1lKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWw7Ci0gIHJlZ2lzdGVyIHN0cnVj dCBMaXNwX1N5bWJvbCAqcDsKKyAgTGlzcF9PYmplY3QgdmFsOworICBzdHJ1Y3QgTGlzcF9T eW1ib2wgKnA7CiAKICAgQ0hFQ0tfU1RSSU5HIChuYW1lKTsKIApAQCAtMzM1Niw4ICszMzU2 LDggQEAKIExpc3BfT2JqZWN0CiBtYWtlX3NhdmVfdmFsdWUgKHZvaWQgKnBvaW50ZXIsIHB0 cmRpZmZfdCBpbnRlZ2VyKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWw7Ci0gIHJl Z2lzdGVyIHN0cnVjdCBMaXNwX1NhdmVfVmFsdWUgKnA7CisgIExpc3BfT2JqZWN0IHZhbDsK KyAgc3RydWN0IExpc3BfU2F2ZV9WYWx1ZSAqcDsKIAogICB2YWwgPSBhbGxvY2F0ZV9taXNj ICgpOwogICBYTUlTQ1RZUEUgKHZhbCkgPSBMaXNwX01pc2NfU2F2ZV9WYWx1ZTsKQEAgLTMz NzIsOCArMzM3Miw4IEBACiAgICAgICAgZG9jOiAvKiBSZXR1cm4gYSBuZXdseSBhbGxvY2F0 ZWQgbWFya2VyIHdoaWNoIGRvZXMgbm90IHBvaW50IGF0IGFueSBwbGFjZS4gICovKQogICAo dm9pZCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsOwotICByZWdpc3RlciBzdHJ1 Y3QgTGlzcF9NYXJrZXIgKnA7CisgIExpc3BfT2JqZWN0IHZhbDsKKyAgc3RydWN0IExpc3Bf TWFya2VyICpwOwogCiAgIHZhbCA9IGFsbG9jYXRlX21pc2MgKCk7CiAgIFhNSVNDVFlQRSAo dmFsKSA9IExpc3BfTWlzY19NYXJrZXI7CkBAIC0zNDAzLDcgKzM0MDMsNyBAQAogICAgQW55 IG51bWJlciBvZiBhcmd1bWVudHMsIGV2ZW4gemVybyBhcmd1bWVudHMsIGFyZSBhbGxvd2Vk LiAgKi8KIAogTGlzcF9PYmplY3QKLW1ha2VfZXZlbnRfYXJyYXkgKHJlZ2lzdGVyIGludCBu YXJncywgTGlzcF9PYmplY3QgKmFyZ3MpCittYWtlX2V2ZW50X2FycmF5IChpbnQgbmFyZ3Ms IExpc3BfT2JqZWN0ICphcmdzKQogewogICBpbnQgaTsKIApAQCAtNDQxNiw3ICs0NDE2LDcg QEAKIHRlc3Rfc2V0am1wICh2b2lkKQogewogICBjaGFyIGJ1ZlsxMF07Ci0gIHJlZ2lzdGVy IGludCB4OworICBpbnQgeDsKICAgam1wX2J1ZiBqYnVmOwogICBpbnQgcmVzdWx0ID0gMDsK IApAQCAtNDkxMSw3ICs0OTExLDcgQEAKIExpc3BfT2JqZWN0CiBwdXJlX2NvbnMgKExpc3Bf T2JqZWN0IGNhciwgTGlzcF9PYmplY3QgY2RyKQogewotICByZWdpc3RlciBMaXNwX09iamVj dCBuZXc7CisgIExpc3BfT2JqZWN0IG5ldzsKICAgc3RydWN0IExpc3BfQ29ucyAqcDsKIAog ICBwID0gKHN0cnVjdCBMaXNwX0NvbnMgKikgcHVyZV9hbGxvYyAoc2l6ZW9mICpwLCBMaXNw X0NvbnMpOwpAQCAtNDkyNyw3ICs0OTI3LDcgQEAKIHN0YXRpYyBMaXNwX09iamVjdAogbWFr ZV9wdXJlX2Zsb2F0IChkb3VibGUgbnVtKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCBu ZXc7CisgIExpc3BfT2JqZWN0IG5ldzsKICAgc3RydWN0IExpc3BfRmxvYXQgKnA7CiAKICAg cCA9IChzdHJ1Y3QgTGlzcF9GbG9hdCAqKSBwdXJlX2FsbG9jIChzaXplb2YgKnAsIExpc3Bf RmxvYXQpOwpAQCAtNDk1OSw3ICs0OTU5LDcgQEAKICAgICAgICBkb2M6IC8qIE1ha2UgYSBj b3B5IG9mIG9iamVjdCBPQkogaW4gcHVyZSBzdG9yYWdlLgogUmVjdXJzaXZlbHkgY29waWVz IGNvbnRlbnRzIG9mIHZlY3RvcnMgYW5kIGNvbnMgY2VsbHMuCiBEb2VzIG5vdCBjb3B5IHN5 bWJvbHMuICBDb3BpZXMgc3RyaW5ncyB3aXRob3V0IHRleHQgcHJvcGVydGllcy4gICovKQot ICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgb2JqKQorICAoTGlzcF9PYmplY3Qgb2JqKQogewog ICBpZiAoTklMUCAoVnB1cmlmeV9mbGFnKSkKICAgICByZXR1cm4gb2JqOwpAQCAtNDk4NCw4 ICs0OTg0LDggQEAKIAkJCSAgICBTVFJJTkdfTVVMVElCWVRFIChvYmopKTsKICAgZWxzZSBp ZiAoQ09NUElMRURQIChvYmopIHx8IFZFQ1RPUlAgKG9iaikpCiAgICAgewotICAgICAgcmVn aXN0ZXIgc3RydWN0IExpc3BfVmVjdG9yICp2ZWM7Ci0gICAgICByZWdpc3RlciBwdHJkaWZm X3QgaTsKKyAgICAgIHN0cnVjdCBMaXNwX1ZlY3RvciAqdmVjOworICAgICAgcHRyZGlmZl90 IGk7CiAgICAgICBwdHJkaWZmX3Qgc2l6ZTsKIAogICAgICAgc2l6ZSA9IEFTSVpFIChvYmop OwpAQCAtNTA2Miw3ICs1MDYyLDcgQEAKIFNlZSBJbmZvIG5vZGUgYChlbGlzcClHYXJiYWdl IENvbGxlY3Rpb24nLiAgKi8pCiAgICh2b2lkKQogewotICByZWdpc3RlciBzdHJ1Y3Qgc3Bl Y2JpbmRpbmcgKmJpbmQ7CisgIHN0cnVjdCBzcGVjYmluZGluZyAqYmluZDsKICAgY2hhciBz dGFja190b3BfdmFyaWFibGU7CiAgIHB0cmRpZmZfdCBpOwogICBpbnQgbWVzc2FnZV9wOwpA QCAtNTA4Myw3ICs1MDgzLDcgQEAKICAgLyogRG9uJ3Qga2VlcCB1bmRvIGluZm9ybWF0aW9u IGFyb3VuZCBmb3JldmVyLgogICAgICBEbyB0aGlzIGVhcmx5IG9uLCBzbyBpdCBpcyBubyBw cm9ibGVtIGlmIHRoZSB1c2VyIHF1aXRzLiAgKi8KICAgewotICAgIHJlZ2lzdGVyIHN0cnVj dCBidWZmZXIgKm5leHRiID0gYWxsX2J1ZmZlcnM7CisgICAgc3RydWN0IGJ1ZmZlciAqbmV4 dGIgPSBhbGxfYnVmZmVyczsKIAogICAgIHdoaWxlIChuZXh0YikKICAgICAgIHsKQEAgLTUx OTEsNyArNTE5MSw3IEBACiAgIG1hcmtfc3RhY2sgKCk7CiAjZWxzZQogICB7Ci0gICAgcmVn aXN0ZXIgc3RydWN0IGdjcHJvICp0YWlsOworICAgIHN0cnVjdCBnY3BybyAqdGFpbDsKICAg ICBmb3IgKHRhaWwgPSBnY3Byb2xpc3Q7IHRhaWw7IHRhaWwgPSB0YWlsLT5uZXh0KQogICAg ICAgZm9yIChpID0gMDsgaSA8IHRhaWwtPm52YXJzOyBpKyspCiAJbWFya19vYmplY3QgKHRh aWwtPnZhcltpXSk7CkBAIC01MjI5LDcgKzUyMjksNyBAQAogICAgICBmb3IgZWxlbWVudHMg dGhhdCB1cGRhdGUgbWFya2VycyB0aGF0IHdlcmUgbm90IG1hcmtlZCwKICAgICAgYW5kIGRl bGV0ZSB0aGVtLiAgKi8KICAgewotICAgIHJlZ2lzdGVyIHN0cnVjdCBidWZmZXIgKm5leHRi ID0gYWxsX2J1ZmZlcnM7CisgICAgc3RydWN0IGJ1ZmZlciAqbmV4dGIgPSBhbGxfYnVmZmVy czsKIAogICAgIHdoaWxlIChuZXh0YikKICAgICAgIHsKQEAgLTU0OTQsNyArNTQ5NCw3IEBA CiB2b2lkCiBtYXJrX29iamVjdCAoTGlzcF9PYmplY3QgYXJnKQogewotICByZWdpc3RlciBM aXNwX09iamVjdCBvYmogPSBhcmc7CisgIExpc3BfT2JqZWN0IG9iaiA9IGFyZzsKICNpZmRl ZiBHQ19DSEVDS19NQVJLRURfT0JKRUNUUwogICB2b2lkICpwbzsKICAgc3RydWN0IG1lbV9u b2RlICptOwpAQCAtNTU1Miw3ICs1NTUyLDcgQEAKICAgICB7CiAgICAgY2FzZSBMaXNwX1N0 cmluZzoKICAgICAgIHsKLQlyZWdpc3RlciBzdHJ1Y3QgTGlzcF9TdHJpbmcgKnB0ciA9IFhT VFJJTkcgKG9iaik7CisJc3RydWN0IExpc3BfU3RyaW5nICpwdHIgPSBYU1RSSU5HIChvYmop OwogCWlmIChTVFJJTkdfTUFSS0VEX1AgKHB0cikpCiAJICBicmVhazsKIAlDSEVDS19BTExP Q0FURURfQU5EX0xJVkUgKGxpdmVfc3RyaW5nX3ApOwpAQCAtNTU5OCw3ICs1NTk4LDcgQEAK IAkgICBzYXZlIHRoZSBDT01QSUxFRF9DT05TVEFOVFMgZWxlbWVudCBmb3IgbGFzdCBhbmQg YXZvaWQKIAkgICByZWN1cnNpb24gdGhlcmUuICAqLwogCXsKLQkgIHJlZ2lzdGVyIHN0cnVj dCBMaXNwX1ZlY3RvciAqcHRyID0gWFZFQ1RPUiAob2JqKTsKKwkgIHN0cnVjdCBMaXNwX1Zl Y3RvciAqcHRyID0gWFZFQ1RPUiAob2JqKTsKIAkgIGludCBzaXplID0gcHRyLT5oZWFkZXIu c2l6ZSAmIFBTRVVET1ZFQ1RPUl9TSVpFX01BU0s7CiAJICBpbnQgaTsKIApAQCAtNTYxNCwx MyArNTYxNCwxMyBAQAogCX0KICAgICAgIGVsc2UgaWYgKEZSQU1FUCAob2JqKSkKIAl7Ci0J ICByZWdpc3RlciBzdHJ1Y3QgZnJhbWUgKnB0ciA9IFhGUkFNRSAob2JqKTsKKwkgIHN0cnVj dCBmcmFtZSAqcHRyID0gWEZSQU1FIChvYmopOwogCSAgbWFya192ZWN0b3JsaWtlIChYVkVD VE9SIChvYmopKTsKIAkgIG1hcmtfZmFjZV9jYWNoZSAocHRyLT5mYWNlX2NhY2hlKTsKIAl9 CiAgICAgICBlbHNlIGlmIChXSU5ET1dQIChvYmopKQogCXsKLQkgIHJlZ2lzdGVyIHN0cnVj dCBMaXNwX1ZlY3RvciAqcHRyID0gWFZFQ1RPUiAob2JqKTsKKwkgIHN0cnVjdCBMaXNwX1Zl Y3RvciAqcHRyID0gWFZFQ1RPUiAob2JqKTsKIAkgIHN0cnVjdCB3aW5kb3cgKncgPSBYV0lO RE9XIChvYmopOwogCSAgbWFya192ZWN0b3JsaWtlIChwdHIpOwogCSAgLyogTWFyayBnbHlw aHMgZm9yIGxlYWYgd2luZG93cy4gIE1hcmtpbmcgd2luZG93IG1hdHJpY2VzIGlzCkBAIC01 NjUzLDcgKzU2NTMsNyBAQAogCiAgICAgY2FzZSBMaXNwX1N5bWJvbDoKICAgICAgIHsKLQly ZWdpc3RlciBzdHJ1Y3QgTGlzcF9TeW1ib2wgKnB0ciA9IFhTWU1CT0wgKG9iaik7CisJc3Ry dWN0IExpc3BfU3ltYm9sICpwdHIgPSBYU1lNQk9MIChvYmopOwogCXN0cnVjdCBMaXNwX1N5 bWJvbCAqcHRyeDsKIAogCWlmIChwdHItPmdjbWFya2JpdCkKQEAgLTU3MjQsNyArNTcyNCw3 IEBACiAJY2FzZSBMaXNwX01pc2NfU2F2ZV9WYWx1ZToKICNpZiBHQ19NQVJLX1NUQUNLCiAJ ICB7Ci0JICAgIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX1NhdmVfVmFsdWUgKnB0ciA9IFhTQVZF X1ZBTFVFIChvYmopOworCSAgICBzdHJ1Y3QgTGlzcF9TYXZlX1ZhbHVlICpwdHIgPSBYU0FW RV9WQUxVRSAob2JqKTsKIAkgICAgLyogSWYgRE9HQyBpcyBzZXQsIFBPSU5URVIgaXMgdGhl IGFkZHJlc3Mgb2YgYSBtZW1vcnkKIAkgICAgICAgYXJlYSBjb250YWluaW5nIElOVEVHRVIg cG90ZW50aWFsIExpc3BfT2JqZWN0cy4gICovCiAJICAgIGlmIChwdHItPmRvZ2MpCkBAIC01 NzU5LDcgKzU3NTksNyBAQAogCiAgICAgY2FzZSBMaXNwX0NvbnM6CiAgICAgICB7Ci0JcmVn aXN0ZXIgc3RydWN0IExpc3BfQ29ucyAqcHRyID0gWENPTlMgKG9iaik7CisJc3RydWN0IExp c3BfQ29ucyAqcHRyID0gWENPTlMgKG9iaik7CiAJaWYgKENPTlNfTUFSS0VEX1AgKHB0cikp CiAJICBicmVhazsKIAlDSEVDS19BTExPQ0FURURfQU5EX0xJVkUgKGxpdmVfY29uc19wKTsK QEAgLTU4MDEsOCArNTgwMSw4IEBACiBzdGF0aWMgdm9pZAogbWFya19idWZmZXIgKExpc3Bf T2JqZWN0IGJ1ZikKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYnVmZmVyID0gWEJV RkZFUiAoYnVmKTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgKnB0ciwgdG1wOworICBzdHJ1 Y3QgYnVmZmVyICpidWZmZXIgPSBYQlVGRkVSIChidWYpOworICBMaXNwX09iamVjdCAqcHRy LCB0bXA7CiAgIExpc3BfT2JqZWN0IGJhc2VfYnVmZmVyOwogCiAgIGVhc3NlcnQgKCFWRUNU T1JfTUFSS0VEX1AgKGJ1ZmZlcikpOwpAQCAtNTkyOCwxNiArNTkyOCwxNiBAQAogCiAgIC8q IFB1dCBhbGwgdW5tYXJrZWQgY29uc2VzIG9uIGZyZWUgbGlzdCAqLwogICB7Ci0gICAgcmVn aXN0ZXIgc3RydWN0IGNvbnNfYmxvY2sgKmNibGs7CisgICAgc3RydWN0IGNvbnNfYmxvY2sg KmNibGs7CiAgICAgc3RydWN0IGNvbnNfYmxvY2sgKipjcHJldiA9ICZjb25zX2Jsb2NrOwot ICAgIHJlZ2lzdGVyIGludCBsaW0gPSBjb25zX2Jsb2NrX2luZGV4OworICAgIGludCBsaW0g PSBjb25zX2Jsb2NrX2luZGV4OwogICAgIEVNQUNTX0lOVCBudW1fZnJlZSA9IDAsIG51bV91 c2VkID0gMDsKIAogICAgIGNvbnNfZnJlZV9saXN0ID0gMDsKIAogICAgIGZvciAoY2JsayA9 IGNvbnNfYmxvY2s7IGNibGs7IGNibGsgPSAqY3ByZXYpCiAgICAgICB7Ci0JcmVnaXN0ZXIg aW50IGkgPSAwOworCWludCBpID0gMDsKIAlpbnQgdGhpc19mcmVlID0gMDsKIAlpbnQgaWxp bSA9IChsaW0gKyBCSVRTX1BFUl9JTlQgLSAxKSAvIEJJVFNfUEVSX0lOVDsKIApAQCAtNjAw NSwxNiArNjAwNSwxNiBAQAogCiAgIC8qIFB1dCBhbGwgdW5tYXJrZWQgZmxvYXRzIG9uIGZy ZWUgbGlzdCAqLwogICB7Ci0gICAgcmVnaXN0ZXIgc3RydWN0IGZsb2F0X2Jsb2NrICpmYmxr OworICAgIHN0cnVjdCBmbG9hdF9ibG9jayAqZmJsazsKICAgICBzdHJ1Y3QgZmxvYXRfYmxv Y2sgKipmcHJldiA9ICZmbG9hdF9ibG9jazsKLSAgICByZWdpc3RlciBpbnQgbGltID0gZmxv YXRfYmxvY2tfaW5kZXg7CisgICAgaW50IGxpbSA9IGZsb2F0X2Jsb2NrX2luZGV4OwogICAg IEVNQUNTX0lOVCBudW1fZnJlZSA9IDAsIG51bV91c2VkID0gMDsKIAogICAgIGZsb2F0X2Zy ZWVfbGlzdCA9IDA7CiAKICAgICBmb3IgKGZibGsgPSBmbG9hdF9ibG9jazsgZmJsazsgZmJs ayA9ICpmcHJldikKICAgICAgIHsKLQlyZWdpc3RlciBpbnQgaTsKKwlpbnQgaTsKIAlpbnQg dGhpc19mcmVlID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwgbGltOyBpKyspCiAJICBpZiAoIUZM T0FUX01BUktFRF9QICgmZmJsay0+ZmxvYXRzW2ldKSkKQEAgLTYwNTEsMTYgKzYwNTEsMTYg QEAKIAogICAvKiBQdXQgYWxsIHVubWFya2VkIGludGVydmFscyBvbiBmcmVlIGxpc3QgKi8K ICAgewotICAgIHJlZ2lzdGVyIHN0cnVjdCBpbnRlcnZhbF9ibG9jayAqaWJsazsKKyAgICBz dHJ1Y3QgaW50ZXJ2YWxfYmxvY2sgKmlibGs7CiAgICAgc3RydWN0IGludGVydmFsX2Jsb2Nr ICoqaXByZXYgPSAmaW50ZXJ2YWxfYmxvY2s7Ci0gICAgcmVnaXN0ZXIgaW50IGxpbSA9IGlu dGVydmFsX2Jsb2NrX2luZGV4OworICAgIGludCBsaW0gPSBpbnRlcnZhbF9ibG9ja19pbmRl eDsKICAgICBFTUFDU19JTlQgbnVtX2ZyZWUgPSAwLCBudW1fdXNlZCA9IDA7CiAKICAgICBp bnRlcnZhbF9mcmVlX2xpc3QgPSAwOwogCiAgICAgZm9yIChpYmxrID0gaW50ZXJ2YWxfYmxv Y2s7IGlibGs7IGlibGsgPSAqaXByZXYpCiAgICAgICB7Ci0JcmVnaXN0ZXIgaW50IGk7CisJ aW50IGk7CiAJaW50IHRoaXNfZnJlZSA9IDA7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbGltOyBp KyspCkBAIC02MTAwLDkgKzYxMDAsOSBAQAogCiAgIC8qIFB1dCBhbGwgdW5tYXJrZWQgc3lt Ym9scyBvbiBmcmVlIGxpc3QgKi8KICAgewotICAgIHJlZ2lzdGVyIHN0cnVjdCBzeW1ib2xf YmxvY2sgKnNibGs7CisgICAgc3RydWN0IHN5bWJvbF9ibG9jayAqc2JsazsKICAgICBzdHJ1 Y3Qgc3ltYm9sX2Jsb2NrICoqc3ByZXYgPSAmc3ltYm9sX2Jsb2NrOwotICAgIHJlZ2lzdGVy IGludCBsaW0gPSBzeW1ib2xfYmxvY2tfaW5kZXg7CisgICAgaW50IGxpbSA9IHN5bWJvbF9i bG9ja19pbmRleDsKICAgICBFTUFDU19JTlQgbnVtX2ZyZWUgPSAwLCBudW1fdXNlZCA9IDA7 CiAKICAgICBzeW1ib2xfZnJlZV9saXN0ID0gTlVMTDsKQEAgLTYxNjQsMTYgKzYxNjQsMTYg QEAKICAgLyogUHV0IGFsbCB1bm1hcmtlZCBtaXNjJ3Mgb24gZnJlZSBsaXN0LgogICAgICBG b3IgYSBtYXJrZXIsIGZpcnN0IHVuY2hhaW4gaXQgZnJvbSB0aGUgYnVmZmVyIGl0IHBvaW50 cyBpbnRvLiAgKi8KICAgewotICAgIHJlZ2lzdGVyIHN0cnVjdCBtYXJrZXJfYmxvY2sgKm1i bGs7CisgICAgc3RydWN0IG1hcmtlcl9ibG9jayAqbWJsazsKICAgICBzdHJ1Y3QgbWFya2Vy X2Jsb2NrICoqbXByZXYgPSAmbWFya2VyX2Jsb2NrOwotICAgIHJlZ2lzdGVyIGludCBsaW0g PSBtYXJrZXJfYmxvY2tfaW5kZXg7CisgICAgaW50IGxpbSA9IG1hcmtlcl9ibG9ja19pbmRl eDsKICAgICBFTUFDU19JTlQgbnVtX2ZyZWUgPSAwLCBudW1fdXNlZCA9IDA7CiAKICAgICBt YXJrZXJfZnJlZV9saXN0ID0gMDsKIAogICAgIGZvciAobWJsayA9IG1hcmtlcl9ibG9jazsg bWJsazsgbWJsayA9ICptcHJldikKICAgICAgIHsKLQlyZWdpc3RlciBpbnQgaTsKKwlpbnQg aTsKIAlpbnQgdGhpc19mcmVlID0gMDsKIAogCWZvciAoaSA9IDA7IGkgPCBsaW07IGkrKykK QEAgLTYyMjAsNyArNjIyMCw3IEBACiAKICAgLyogRnJlZSBhbGwgdW5tYXJrZWQgYnVmZmVy cyAqLwogICB7Ci0gICAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYnVmZmVyID0gYWxsX2J1 ZmZlcnMsICpwcmV2ID0gMCwgKm5leHQ7CisgICAgc3RydWN0IGJ1ZmZlciAqYnVmZmVyID0g YWxsX2J1ZmZlcnMsICpwcmV2ID0gMCwgKm5leHQ7CiAKICAgICB3aGlsZSAoYnVmZmVyKQog ICAgICAgaWYgKCFWRUNUT1JfTUFSS0VEX1AgKGJ1ZmZlcikpCkBAIC02MjQzLDcgKzYyNDMs NyBAQAogCiAgIC8qIEZyZWUgYWxsIHVubWFya2VkIHZlY3RvcnMgKi8KICAgewotICAgIHJl Z2lzdGVyIHN0cnVjdCBMaXNwX1ZlY3RvciAqdmVjdG9yID0gYWxsX3ZlY3RvcnMsICpwcmV2 ID0gMCwgKm5leHQ7CisgICAgc3RydWN0IExpc3BfVmVjdG9yICp2ZWN0b3IgPSBhbGxfdmVj dG9ycywgKnByZXYgPSAwLCAqbmV4dDsKICAgICB0b3RhbF92ZWN0b3Jfc2l6ZSA9IDA7CiAK ICAgICB3aGlsZSAodmVjdG9yKQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9idWZmZXIuYycK LS0tIHNyYy9idWZmZXIuYwkyMDEyLTA1LTI5IDE2OjEzOjM4ICswMDAwCisrKyBzcmMvYnVm ZmVyLmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMjI2LDEyICsyMjYsMTIgQEAK ICAgIGFuZCBkb24ndCBldmVyIFFVSVQuICAqLwogCiBzdGF0aWMgTGlzcF9PYmplY3QKLWFz c29jX2lnbm9yZV90ZXh0X3Byb3BlcnRpZXMgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGtleSwg TGlzcF9PYmplY3QgbGlzdCkKK2Fzc29jX2lnbm9yZV90ZXh0X3Byb3BlcnRpZXMgKExpc3Bf T2JqZWN0IGtleSwgTGlzcF9PYmplY3QgbGlzdCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgdGFpbDsKKyAgTGlzcF9PYmplY3QgdGFpbDsKICAgZm9yICh0YWlsID0gbGlzdDsgQ09O U1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCiAgICAgewotICAgICAgcmVnaXN0ZXIg TGlzcF9PYmplY3QgZWx0LCB0ZW07CisgICAgICBMaXNwX09iamVjdCBlbHQsIHRlbTsKICAg ICAgIGVsdCA9IFhDQVIgKHRhaWwpOwogICAgICAgdGVtID0gRnN0cmluZ19lcXVhbCAoRmNh ciAoZWx0KSwga2V5KTsKICAgICAgIGlmICghTklMUCAodGVtKSkKQEAgLTI0NSw3ICsyNDUs NyBAQAogQlVGRkVSLU9SLU5BTUUgbXVzdCBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBidWZm ZXIuICBJZiBCVUZGRVItT1ItTkFNRQogaXMgYSBzdHJpbmcgYW5kIHRoZXJlIGlzIG5vIGJ1 ZmZlciB3aXRoIHRoYXQgbmFtZSwgcmV0dXJuIG5pbC4gIElmCiBCVUZGRVItT1ItTkFNRSBp cyBhIGJ1ZmZlciwgcmV0dXJuIGl0IGFzIGdpdmVuLiAgKi8pCi0gIChyZWdpc3RlciBMaXNw X09iamVjdCBidWZmZXJfb3JfbmFtZSkKKyAgKExpc3BfT2JqZWN0IGJ1ZmZlcl9vcl9uYW1l KQogewogICBpZiAoQlVGRkVSUCAoYnVmZmVyX29yX25hbWUpKQogICAgIHJldHVybiBidWZm ZXJfb3JfbmFtZTsKQEAgLTI1OSw5ICsyNTksOSBAQAogVGhlIGJ1ZmZlcidzIGBidWZmZXIt ZmlsZS1uYW1lJyBtdXN0IG1hdGNoIGV4YWN0bHkgdGhlIGV4cGFuc2lvbiBvZiBGSUxFTkFN RS4KIElmIHRoZXJlIGlzIG5vIHN1Y2ggbGl2ZSBidWZmZXIsIHJldHVybiBuaWwuCiBTZWUg YWxzbyBgZmluZC1idWZmZXItdmlzaXRpbmcnLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09i amVjdCBmaWxlbmFtZSkKKyAgKExpc3BfT2JqZWN0IGZpbGVuYW1lKQogewotICByZWdpc3Rl ciBMaXNwX09iamVjdCB0YWlsLCBidWYsIHRlbTsKKyAgTGlzcF9PYmplY3QgdGFpbCwgYnVm LCB0ZW07CiAgIExpc3BfT2JqZWN0IGhhbmRsZXI7CiAKICAgQ0hFQ0tfU1RSSU5HIChmaWxl bmFtZSk7CkBAIC0yOTAsOSArMjkwLDkgQEAKIH0KIAogTGlzcF9PYmplY3QKLWdldF90cnVl bmFtZV9idWZmZXIgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZpbGVuYW1lKQorZ2V0X3RydWVu YW1lX2J1ZmZlciAoTGlzcF9PYmplY3QgZmlsZW5hbWUpCiB7Ci0gIHJlZ2lzdGVyIExpc3Bf T2JqZWN0IHRhaWwsIGJ1ZiwgdGVtOworICBMaXNwX09iamVjdCB0YWlsLCBidWYsIHRlbTsK IAogICBmb3IgKHRhaWwgPSBWYnVmZmVyX2FsaXN0OyBDT05TUCAodGFpbCk7IHRhaWwgPSBY Q0RSICh0YWlsKSkKICAgICB7CkBAIC0zMTUsMTAgKzMxNSwxMCBAQAogCiBJZiBCVUZGRVIt T1ItTkFNRSBpcyBhIGJ1ZmZlciBpbnN0ZWFkIG9mIGEgc3RyaW5nLCByZXR1cm4gaXQgYXMg Z2l2ZW4sCiBldmVuIGlmIGl0IGlzIGRlYWQuICBUaGUgcmV0dXJuIHZhbHVlIGlzIG5ldmVy IG5pbC4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYnVmZmVyX29yX25hbWUpCisg IChMaXNwX09iamVjdCBidWZmZXJfb3JfbmFtZSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgYnVmZmVyLCBuYW1lOwotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpiOworICBMaXNw X09iamVjdCBidWZmZXIsIG5hbWU7CisgIHN0cnVjdCBidWZmZXIgKmI7CiAKICAgYnVmZmVy ID0gRmdldF9idWZmZXIgKGJ1ZmZlcl9vcl9uYW1lKTsKICAgaWYgKCFOSUxQIChidWZmZXIp KQpAQCAtNzA0LDcgKzcwNCw3IEBACiAgICBjbGFpbXMgaXQgZG9lc24ndCBiZWxvbmcgdG8g aXQuICAqLwogCiB2b2lkCi1yZXNldF9idWZmZXIgKHJlZ2lzdGVyIHN0cnVjdCBidWZmZXIg KmIpCityZXNldF9idWZmZXIgKHN0cnVjdCBidWZmZXIgKmIpCiB7CiAgIEJWQVIgKGIsIGZp bGVuYW1lKSA9IFFuaWw7CiAgIEJWQVIgKGIsIGZpbGVfdHJ1ZW5hbWUpID0gUW5pbDsKQEAg LTc0OCw5ICs3NDgsOSBAQAogICAgd2UgcHJlc2VydmUgdGhvc2UuICAqLwogCiBzdGF0aWMg dm9pZAotcmVzZXRfYnVmZmVyX2xvY2FsX3ZhcmlhYmxlcyAocmVnaXN0ZXIgc3RydWN0IGJ1 ZmZlciAqYiwgaW50IHBlcm1hbmVudF90b28pCityZXNldF9idWZmZXJfbG9jYWxfdmFyaWFi bGVzIChzdHJ1Y3QgYnVmZmVyICpiLCBpbnQgcGVybWFuZW50X3RvbykKIHsKLSAgcmVnaXN0 ZXIgaW50IG9mZnNldDsKKyAgaW50IG9mZnNldDsKICAgaW50IGk7CiAKICAgLyogUmVzZXQg dGhlIG1ham9yIG1vZGUgdG8gRnVuZGFtZW50YWwsIHRvZ2V0aGVyIHdpdGggYWxsIHRoZQpA QCAtODQ5LDkgKzg0OSw5IEBACiBcKHN0YXJ0aW5nIGF0IDIpIHVudGlsIGFuIHVudXNlZCBu YW1lIGlzIGZvdW5kLCBhbmQgdGhlbiByZXR1cm4gdGhhdCBuYW1lLgogT3B0aW9uYWwgc2Vj b25kIGFyZ3VtZW50IElHTk9SRSBzcGVjaWZpZXMgYSBuYW1lIHRoYXQgaXMgb2theSB0byB1 c2UgKGlmCiBpdCBpcyBpbiB0aGUgc2VxdWVuY2UgdG8gYmUgdHJpZWQpIGV2ZW4gaWYgYSBi dWZmZXIgd2l0aCB0aGF0IG5hbWUgZXhpc3RzLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09i amVjdCBuYW1lLCBMaXNwX09iamVjdCBpZ25vcmUpCisgIChMaXNwX09iamVjdCBuYW1lLCBM aXNwX09iamVjdCBpZ25vcmUpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGdlbnRlbXAs IHRlbTsKKyAgTGlzcF9PYmplY3QgZ2VudGVtcCwgdGVtOwogICBwdHJkaWZmX3QgY291bnQ7 CiAgIGNoYXIgbnVtYmVyW0lOVF9CVUZTSVpFX0JPVU5EIChwdHJkaWZmX3QpICsgc2l6ZW9m ICI8PiJdOwogCkBAIC04ODMsNyArODgzLDcgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0 aGUgbmFtZSBvZiBCVUZGRVIsIGFzIGEgc3RyaW5nLgogQlVGRkVSIGRlZmF1bHRzIHRvIHRo ZSBjdXJyZW50IGJ1ZmZlci4KIFJldHVybiBuaWwgaWYgQlVGRkVSIGhhcyBiZWVuIGtpbGxl ZC4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYnVmZmVyKQorICAoTGlzcF9PYmpl Y3QgYnVmZmVyKQogewogICBpZiAoTklMUCAoYnVmZmVyKSkKICAgICByZXR1cm4gQlZBUiAo Y3VycmVudF9idWZmZXIsIG5hbWUpOwpAQCAtODk0LDcgKzg5NCw3IEBACiBERUZVTiAoImJ1 ZmZlci1maWxlLW5hbWUiLCBGYnVmZmVyX2ZpbGVfbmFtZSwgU2J1ZmZlcl9maWxlX25hbWUs IDAsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gbmFtZSBvZiBmaWxlIEJVRkZFUiBp cyB2aXNpdGluZywgb3IgbmlsIGlmIG5vbmUuCiBObyBhcmd1bWVudCBvciBuaWwgYXMgYXJn dW1lbnQgbWVhbnMgdXNlIHRoZSBjdXJyZW50IGJ1ZmZlci4gICovKQotICAocmVnaXN0ZXIg TGlzcF9PYmplY3QgYnVmZmVyKQorICAoTGlzcF9PYmplY3QgYnVmZmVyKQogewogICBpZiAo TklMUCAoYnVmZmVyKSkKICAgICByZXR1cm4gQlZBUiAoY3VycmVudF9idWZmZXIsIGZpbGVu YW1lKTsKQEAgLTkwNyw3ICs5MDcsNyBAQAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBi YXNlIGJ1ZmZlciBvZiBpbmRpcmVjdCBidWZmZXIgQlVGRkVSLgogSWYgQlVGRkVSIGlzIG5v dCBpbmRpcmVjdCwgcmV0dXJuIG5pbC4KIEJVRkZFUiBkZWZhdWx0cyB0byB0aGUgY3VycmVu dCBidWZmZXIuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGJ1ZmZlcikKKyAgKExp c3BfT2JqZWN0IGJ1ZmZlcikKIHsKICAgc3RydWN0IGJ1ZmZlciAqYmFzZTsKICAgTGlzcF9P YmplY3QgYmFzZV9idWZmZXI7CkBAIC05MzEsMTAgKzkzMSwxMCBAQAogICAgICAgIGRvYzog LyogUmV0dXJuIHRoZSB2YWx1ZSBvZiBWQVJJQUJMRSBpbiBCVUZGRVIuCiBJZiBWQVJJQUJM RSBkb2VzIG5vdCBoYXZlIGEgYnVmZmVyLWxvY2FsIGJpbmRpbmcgaW4gQlVGRkVSLCB0aGUg dmFsdWUKIGlzIHRoZSBkZWZhdWx0IGJpbmRpbmcgb2YgdGhlIHZhcmlhYmxlLiAqLykKLSAg KHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhcmlhYmxlLCByZWdpc3RlciBMaXNwX09iamVjdCBi dWZmZXIpCisgIChMaXNwX09iamVjdCB2YXJpYWJsZSwgTGlzcF9PYmplY3QgYnVmZmVyKQog ewotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpidWY7Ci0gIHJlZ2lzdGVyIExpc3BfT2Jq ZWN0IHJlc3VsdDsKKyAgc3RydWN0IGJ1ZmZlciAqYnVmOworICBMaXNwX09iamVjdCByZXN1 bHQ7CiAgIHN0cnVjdCBMaXNwX1N5bWJvbCAqc3ltOwogCiAgIENIRUNLX1NZTUJPTCAodmFy aWFibGUpOwpAQCAtOTk5LDcgKzk5OSw3IEBACiBidWZmZXJfbGlzcF9sb2NhbF92YXJpYWJs ZXMgKHN0cnVjdCBidWZmZXIgKmJ1ZikKIHsKICAgTGlzcF9PYmplY3QgcmVzdWx0ID0gUW5p bDsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbDsKKyAgTGlzcF9PYmplY3QgdGFpbDsK ICAgZm9yICh0YWlsID0gQlZBUiAoYnVmLCBsb2NhbF92YXJfYWxpc3QpOyBDT05TUCAodGFp bCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkKICAgICB7CiAgICAgICBMaXNwX09iamVjdCB2YWws IGVsdDsKQEAgLTEwMzIsMTAgKzEwMzIsMTAgQEAKIEZvciBhIHN5bWJvbCB0aGF0IGlzIGxv Y2FsbHkgdW5ib3VuZCwganVzdCB0aGUgc3ltYm9sIGFwcGVhcnMgaW4gdGhlIHZhbHVlLgog Tm90ZSB0aGF0IHN0b3JpbmcgbmV3IFZBTFVFcyBpbiB0aGVzZSBlbGVtZW50cyBkb2Vzbid0 IGNoYW5nZSB0aGUgdmFyaWFibGVzLgogTm8gYXJndW1lbnQgb3IgbmlsIGFzIGFyZ3VtZW50 IG1lYW5zIHVzZSBjdXJyZW50IGJ1ZmZlciBhcyBCVUZGRVIuICAqLykKLSAgKHJlZ2lzdGVy IExpc3BfT2JqZWN0IGJ1ZmZlcikKKyAgKExpc3BfT2JqZWN0IGJ1ZmZlcikKIHsKLSAgcmVn aXN0ZXIgc3RydWN0IGJ1ZmZlciAqYnVmOwotICByZWdpc3RlciBMaXNwX09iamVjdCByZXN1 bHQ7CisgIHN0cnVjdCBidWZmZXIgKmJ1ZjsKKyAgTGlzcF9PYmplY3QgcmVzdWx0OwogCiAg IGlmIChOSUxQIChidWZmZXIpKQogICAgIGJ1ZiA9IGN1cnJlbnRfYnVmZmVyOwpAQCAtMTA3 Nyw5ICsxMDc3LDkgQEAKICAgICAgICAwLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJu IHQgaWYgQlVGRkVSIHdhcyBtb2RpZmllZCBzaW5jZSBpdHMgZmlsZSB3YXMgbGFzdCByZWFk IG9yIHNhdmVkLgogTm8gYXJndW1lbnQgb3IgbmlsIGFzIGFyZ3VtZW50IG1lYW5zIHVzZSBj dXJyZW50IGJ1ZmZlciBhcyBCVUZGRVIuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0 IGJ1ZmZlcikKKyAgKExpc3BfT2JqZWN0IGJ1ZmZlcikKIHsKLSAgcmVnaXN0ZXIgc3RydWN0 IGJ1ZmZlciAqYnVmOworICBzdHJ1Y3QgYnVmZmVyICpidWY7CiAgIGlmIChOSUxQIChidWZm ZXIpKQogICAgIGJ1ZiA9IGN1cnJlbnRfYnVmZmVyOwogICBlbHNlCkBAIC0xMDk1LDEwICsx MDk1LDEwIEBACiAgICAgICAgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIE1hcmsgY3VycmVu dCBidWZmZXIgYXMgbW9kaWZpZWQgb3IgdW5tb2RpZmllZCBhY2NvcmRpbmcgdG8gRkxBRy4K IEEgbm9uLW5pbCBGTEFHIG1lYW5zIG1hcmsgdGhlIGJ1ZmZlciBtb2RpZmllZC4gICovKQot ICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgZmxhZykKKyAgKExpc3BfT2JqZWN0IGZsYWcpCiB7 Ci0gIHJlZ2lzdGVyIGludCBhbHJlYWR5OwotICByZWdpc3RlciBMaXNwX09iamVjdCBmbjsK KyAgaW50IGFscmVhZHk7CisgIExpc3BfT2JqZWN0IGZuOwogICBMaXNwX09iamVjdCBidWZm ZXIsIHdpbmRvdzsKIAogI2lmZGVmIENMQVNIX0RFVEVDVElPTgpAQCAtMTE5NCw5ICsxMTk0 LDkgQEAKIEVhY2ggYnVmZmVyIGhhcyBhIHRpY2sgY291bnRlciB3aGljaCBpcyBpbmNyZW1l bnRlZCBlYWNoIHRpbWUgdGhlCiB0ZXh0IGluIHRoYXQgYnVmZmVyIGlzIGNoYW5nZWQuICBJ dCB3cmFwcyBhcm91bmQgb2NjYXNpb25hbGx5LgogTm8gYXJndW1lbnQgb3IgbmlsIGFzIGFy Z3VtZW50IG1lYW5zIHVzZSBjdXJyZW50IGJ1ZmZlciBhcyBCVUZGRVIuICAqLykKLSAgKHJl Z2lzdGVyIExpc3BfT2JqZWN0IGJ1ZmZlcikKKyAgKExpc3BfT2JqZWN0IGJ1ZmZlcikKIHsK LSAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYnVmOworICBzdHJ1Y3QgYnVmZmVyICpidWY7 CiAgIGlmIChOSUxQIChidWZmZXIpKQogICAgIGJ1ZiA9IGN1cnJlbnRfYnVmZmVyOwogICBl bHNlCkBAIC0xMjE4LDkgKzEyMTgsOSBAQAogeW91IGNhbiB0ZWxsIHdoZXRoZXIgYSBjaGFy YWN0ZXIgY2hhbmdlIG9jY3VycmVkIGluIHRoYXQgYnVmZmVyIGluCiBiZXR3ZWVuIHRoZXNl IGNhbGxzLiAgTm8gYXJndW1lbnQgb3IgbmlsIGFzIGFyZ3VtZW50IG1lYW5zIHVzZSBjdXJy ZW50CiBidWZmZXIgYXMgQlVGRkVSLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBi dWZmZXIpCisgIChMaXNwX09iamVjdCBidWZmZXIpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBi dWZmZXIgKmJ1ZjsKKyAgc3RydWN0IGJ1ZmZlciAqYnVmOwogICBpZiAoTklMUCAoYnVmZmVy KSkKICAgICBidWYgPSBjdXJyZW50X2J1ZmZlcjsKICAgZWxzZQpAQCAtMTI0NCw5ICsxMjQ0 LDkgQEAKIEludGVyYWN0aXZlbHksIHlvdSBjYW4gc2V0IFVOSVFVRSB3aXRoIGEgcHJlZml4 IGFyZ3VtZW50LgogV2UgcmV0dXJuIHRoZSBuYW1lIHdlIGFjdHVhbGx5IGdhdmUgdGhlIGJ1 ZmZlci4KIFRoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSB2aXNpdGVkIGZp bGUgKGlmIGFueSkuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IG5ld25hbWUsIExp c3BfT2JqZWN0IHVuaXF1ZSkKKyAgKExpc3BfT2JqZWN0IG5ld25hbWUsIExpc3BfT2JqZWN0 IHVuaXF1ZSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtLCBidWY7CisgIExpc3Bf T2JqZWN0IHRlbSwgYnVmOwogCiAgIENIRUNLX1NUUklORyAobmV3bmFtZSk7CiAKQEAgLTEy OTksNyArMTI5OSw3IEBACiBUaGUgYnVmZmVyIGlzIGZvdW5kIGJ5IHNjYW5uaW5nIHRoZSBz ZWxlY3RlZCBvciBzcGVjaWZpZWQgZnJhbWUncyBidWZmZXIKIGxpc3QgZmlyc3QsIGZvbGxv d2VkIGJ5IHRoZSBsaXN0IG9mIGFsbCBidWZmZXJzLiAgSWYgbm8gb3RoZXIgYnVmZmVyCiBl eGlzdHMsIHJldHVybiB0aGUgYnVmZmVyIGAqc2NyYXRjaConIChjcmVhdGluZyBpdCBpZiBu ZWNlc3NhcnkpLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBidWZmZXIsIExpc3Bf T2JqZWN0IHZpc2libGVfb2ssIExpc3BfT2JqZWN0IGZyYW1lKQorICAoTGlzcF9PYmplY3Qg YnVmZmVyLCBMaXNwX09iamVjdCB2aXNpYmxlX29rLCBMaXNwX09iamVjdCBmcmFtZSkKIHsK ICAgTGlzcF9PYmplY3QgRnNldF9idWZmZXJfbWFqb3JfbW9kZSAoTGlzcF9PYmplY3QgYnVm ZmVyKTsKICAgTGlzcF9PYmplY3QgdGFpbCwgYnVmLCBwcmVkOwpAQCAtMTM5OSw3ICsxMzk5 LDcgQEAKICAgICAgICAwLCAxLCAiIiwKICAgICAgICBkb2M6IC8qIFN0YXJ0IGtlZXBpbmcg dW5kbyBpbmZvcm1hdGlvbiBmb3IgYnVmZmVyIEJVRkZFUi4KIE5vIGFyZ3VtZW50IG9yIG5p bCBhcyBhcmd1bWVudCBtZWFucyBkbyB0aGlzIGZvciB0aGUgY3VycmVudCBidWZmZXIuICAq LykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGJ1ZmZlcikKKyAgKExpc3BfT2JqZWN0IGJ1 ZmZlcikKIHsKICAgTGlzcF9PYmplY3QgcmVhbF9idWZmZXI7CiAKQEAgLTE0NDMsOSArMTQ0 Myw5IEBACiAgIChMaXNwX09iamVjdCBidWZmZXJfb3JfbmFtZSkKIHsKICAgTGlzcF9PYmpl Y3QgYnVmZmVyOwotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpiOwotICByZWdpc3RlciBM aXNwX09iamVjdCB0ZW07Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX01hcmtlciAqbTsKKyAg c3RydWN0IGJ1ZmZlciAqYjsKKyAgTGlzcF9PYmplY3QgdGVtOworICBzdHJ1Y3QgTGlzcF9N YXJrZXIgKm07CiAgIHN0cnVjdCBnY3BybyBnY3BybzE7CiAKICAgaWYgKE5JTFAgKGJ1ZmZl cl9vcl9uYW1lKSkKQEAgLTE2NzgsNyArMTY3OCw3IEBACiByZWNvcmRfYnVmZmVyIChMaXNw X09iamVjdCBidWZmZXIpCiB7CiAgIExpc3BfT2JqZWN0IGFlbHQsIGFlbHRfY29ucywgdGVt OwotICByZWdpc3RlciBzdHJ1Y3QgZnJhbWUgKmYgPSBYRlJBTUUgKHNlbGVjdGVkX2ZyYW1l KTsKKyAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChzZWxlY3RlZF9mcmFtZSk7CiAKICAg Q0hFQ0tfQlVGRkVSIChidWZmZXIpOwogCkBAIC0xNzE2LDcgKzE3MTYsNyBAQAogICAoTGlz cF9PYmplY3QgYnVmZmVyKQogewogICBMaXNwX09iamVjdCBhZWx0LCBhZWx0X2NvbnMsIHRl bTsKLSAgcmVnaXN0ZXIgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChzZWxlY3RlZF9mcmFt ZSk7CisgIHN0cnVjdCBmcmFtZSAqZiA9IFhGUkFNRSAoc2VsZWN0ZWRfZnJhbWUpOwogCiAg IENIRUNLX0JVRkZFUiAoYnVmZmVyKTsKIApAQCAtMTc4Nyw3ICsxNzg3LDcgQEAKICAgICAg ICBkb2M6IC8qIFJldHVybiB0aGUgY3VycmVudCBidWZmZXIgYXMgYSBMaXNwIG9iamVjdC4g ICovKQogICAodm9pZCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgYnVmOworICBMaXNw X09iamVjdCBidWY7CiAgIFhTRVRCVUZGRVIgKGJ1ZiwgY3VycmVudF9idWZmZXIpOwogICBy ZXR1cm4gYnVmOwogfQpAQCAtMTgwMiw3ICsxODAyLDcgQEAKICAgIHRpbWUsIGFuZCB0aGF0 IGluY3JlbWVudHMgd2luZG93c19vcl9idWZmZXJzX2NoYW5nZWQuICAqLwogCiB2b2lkCi1z ZXRfYnVmZmVyX2ludGVybmFsIChyZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpiKQorc2V0X2J1 ZmZlcl9pbnRlcm5hbCAoc3RydWN0IGJ1ZmZlciAqYikKIHsKICAgaWYgKGN1cnJlbnRfYnVm ZmVyICE9IGIpCiAgICAgc2V0X2J1ZmZlcl9pbnRlcm5hbF8xIChiKTsKQEAgLTE4MTIsMTAg KzE4MTIsMTAgQEAKICAgIFRoaXMgaXMgdXNlZCBieSByZWRpc3BsYXkuICAqLwogCiB2b2lk Ci1zZXRfYnVmZmVyX2ludGVybmFsXzEgKHJlZ2lzdGVyIHN0cnVjdCBidWZmZXIgKmIpCitz ZXRfYnVmZmVyX2ludGVybmFsXzEgKHN0cnVjdCBidWZmZXIgKmIpCiB7Ci0gIHJlZ2lzdGVy IHN0cnVjdCBidWZmZXIgKm9sZF9idWY7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRhaWw7 CisgIHN0cnVjdCBidWZmZXIgKm9sZF9idWY7CisgIExpc3BfT2JqZWN0IHRhaWw7CiAKICNp ZmRlZiBVU0VfTU1BUF9GT1JfQlVGRkVSUwogICBpZiAoYi0+dGV4dC0+YmVnID09IE5VTEwp CkBAIC0xODc2LDcgKzE4NzYsNyBAQAogdm9pZAogc2V0X2J1ZmZlcl90ZW1wIChzdHJ1Y3Qg YnVmZmVyICpiKQogewotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpvbGRfYnVmOworICBz dHJ1Y3QgYnVmZmVyICpvbGRfYnVmOwogCiAgIGlmIChjdXJyZW50X2J1ZmZlciA9PSBiKQog ICAgIHJldHVybjsKQEAgLTE5MDAsOSArMTkwMCw5IEBACiB0ZW1wb3JhcmlseS4gIFRoaXMg ZnVuY3Rpb24gZG9lcyBub3QgZGlzcGxheSB0aGUgYnVmZmVyLCBzbyBpdHMgZWZmZWN0CiBl bmRzIHdoZW4gdGhlIGN1cnJlbnQgY29tbWFuZCB0ZXJtaW5hdGVzLiAgVXNlIGBzd2l0Y2gt dG8tYnVmZmVyJyBvcgogYHBvcC10by1idWZmZXInIHRvIHN3aXRjaCBidWZmZXJzIHBlcm1h bmVudGx5LiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBidWZmZXJfb3JfbmFtZSkK KyAgKExpc3BfT2JqZWN0IGJ1ZmZlcl9vcl9uYW1lKQogewotICByZWdpc3RlciBMaXNwX09i amVjdCBidWZmZXI7CisgIExpc3BfT2JqZWN0IGJ1ZmZlcjsKICAgYnVmZmVyID0gRmdldF9i dWZmZXIgKGJ1ZmZlcl9vcl9uYW1lKTsKICAgaWYgKE5JTFAgKGJ1ZmZlcikpCiAgICAgbnNi ZXJyb3IgKGJ1ZmZlcl9vcl9uYW1lKTsKQEAgLTE5NTIsNyArMTk1Miw3IEBACiB9CiAKIHZv aWQKLXZhbGlkYXRlX3JlZ2lvbiAocmVnaXN0ZXIgTGlzcF9PYmplY3QgKmIsIHJlZ2lzdGVy IExpc3BfT2JqZWN0ICplKQordmFsaWRhdGVfcmVnaW9uIChMaXNwX09iamVjdCAqYiwgTGlz cF9PYmplY3QgKmUpCiB7CiAgIENIRUNLX05VTUJFUl9DT0VSQ0VfTUFSS0VSICgqYik7CiAg IENIRUNLX05VTUJFUl9DT0VSQ0VfTUFSS0VSICgqZSk7CkBAIC0zMzE1LDcgKzMzMTUsNyBA QAogICAgU3VjaCBhbiBvdmVybGF5IG1pZ2h0IGV2ZW4gaGF2ZSBuZWdhdGl2ZSBzaXplIGF0 IHRoaXMgcG9pbnQuCiAgICBJZiBzbywgd2UnbGwgbWFrZSB0aGUgb3ZlcmxheSBlbXB0eS4g Ki8KIHZvaWQKLWZpeF9zdGFydF9lbmRfaW5fb3ZlcmxheXMgKHJlZ2lzdGVyIHB0cmRpZmZf dCBzdGFydCwgcmVnaXN0ZXIgcHRyZGlmZl90IGVuZCkKK2ZpeF9zdGFydF9lbmRfaW5fb3Zl cmxheXMgKHB0cmRpZmZfdCBzdGFydCwgcHRyZGlmZl90IGVuZCkKIHsKICAgTGlzcF9PYmpl Y3Qgb3ZlcmxheTsKICAgc3RydWN0IExpc3BfT3ZlcmxheSAqYmVmb3JlX2xpc3QgSUZfTElO VCAoPSBOVUxMKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvYnl0ZWNvZGUuYycKLS0tIHNy Yy9ieXRlY29kZS5jCTIwMTItMDItMTAgMTg6NTg6NDggKzAwMDAKKysrIHNyYy9ieXRlY29k ZS5jCTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTk0Miw3ICs5NDIsNyBAQAogCiAJ Y2FzZSBCc2F2ZV93aW5kb3dfZXhjdXJzaW9uOiAvKiBPYnNvbGV0ZSBzaW5jZSAyNC4xLiAg Ki8KIAkgIHsKLQkgICAgcmVnaXN0ZXIgcHRyZGlmZl90IGNvdW50MSA9IFNQRUNQRExfSU5E RVggKCk7CisJICAgIHB0cmRpZmZfdCBjb3VudDEgPSBTUEVDUERMX0lOREVYICgpOwogCSAg ICByZWNvcmRfdW53aW5kX3Byb3RlY3QgKEZzZXRfd2luZG93X2NvbmZpZ3VyYXRpb24sCiAJ CQkJICAgRmN1cnJlbnRfd2luZG93X2NvbmZpZ3VyYXRpb24gKFFuaWwpKTsKIAkgICAgQkVG T1JFX1BPVEVOVElBTF9HQyAoKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvY2FsbGludC5j JwotLS0gc3JjL2NhbGxpbnQuYwkyMDEyLTA2LTAyIDE5OjIxOjM0ICswMDAwCisrKyBzcmMv Y2FsbGludC5jCTIwMTItMDYtMDMgMDU6NTU6MjMgKzAwMDAKQEAgLTEyMiw3ICsxMjIsNyBA QAogLyogUXVvdGlmeSBFWFA6IGlmIEVYUCBpcyBjb25zdGFudCwgcmV0dXJuIGl0LgogICAg SWYgRVhQIGlzIG5vdCBjb25zdGFudCwgcmV0dXJuIChxdW90ZSBFWFApLiAgKi8KIHN0YXRp YyBMaXNwX09iamVjdAotcXVvdGlmeV9hcmcgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGV4cCkK K3F1b3RpZnlfYXJnIChMaXNwX09iamVjdCBleHApCiB7CiAgIGlmIChDT05TUCAoZXhwKQog ICAgICAgfHwgKFNZTUJPTFAgKGV4cCkKQEAgLTEzNiw3ICsxMzYsNyBAQAogc3RhdGljIExp c3BfT2JqZWN0CiBxdW90aWZ5X2FyZ3MgKExpc3BfT2JqZWN0IGV4cCkKIHsKLSAgcmVnaXN0 ZXIgTGlzcF9PYmplY3QgdGFpbDsKKyAgTGlzcF9PYmplY3QgdGFpbDsKICAgTGlzcF9PYmpl Y3QgbmV4dDsKICAgZm9yICh0YWlsID0gZXhwOyBDT05TUCAodGFpbCk7IHRhaWwgPSBuZXh0 KQogICAgIHsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvY2FsbHByb2MuYycKLS0tIHNyYy9j YWxscHJvYy5jCTIwMTItMDUtMzAgMTQ6MjA6NDUgKzAwMDAKKysrIHNyYy9jYWxscHJvYy5j CTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTIwMiw3ICsyMDIsNyBAQAogICBwdHJk aWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVYICgpOwogICBVU0VfU0FGRV9BTExPQ0E7CiAK LSAgcmVnaXN0ZXIgY29uc3QgdW5zaWduZWQgY2hhciAqKm5ld19hcmd2OworICBjb25zdCB1 bnNpZ25lZCBjaGFyICoqbmV3X2FyZ3Y7CiAgIC8qIEZpbGUgdG8gdXNlIGZvciBzdGRlcnIg aW4gdGhlIGNoaWxkLgogICAgICB0IG1lYW5zIHVzZSBzYW1lIGFzIHN0YW5kYXJkIG91dHB1 dC4gICovCiAgIExpc3BfT2JqZWN0IGVycm9yX2ZpbGU7CkBAIC00OTgsOCArNDk4LDggQEAK ICAgewogICAgIC8qIGNoaWxkX3NldHVwIG11c3QgY2xvYmJlciBlbnZpcm9uIGluIHN5c3Rl bXMgd2l0aCB0cnVlIHZmb3JrLgogICAgICAgIFByb3RlY3QgaXQgZnJvbSBwZXJtYW5lbnQg Y2hhbmdlLiAgKi8KLSAgICByZWdpc3RlciBjaGFyICoqc2F2ZV9lbnZpcm9uID0gZW52aXJv bjsKLSAgICByZWdpc3RlciBpbnQgZmQxID0gZmRbMV07CisgICAgY2hhciAqKnNhdmVfZW52 aXJvbiA9IGVudmlyb247CisgICAgaW50IGZkMSA9IGZkWzFdOwogICAgIGludCBmZF9lcnJv ciA9IGZkMTsKICNpZmRlZiBIQVZFX1dPUktJTkdfVkZPUksKICAgICBzaWdzZXRfdCBwcm9j bWFzazsKQEAgLTc2OSw3ICs3NjksNyBAQAogCiAgIGlmIChvdXRwdXRfdG9fYnVmZmVyKQog ICAgIHsKLSAgICAgIHJlZ2lzdGVyIGludCBucmVhZDsKKyAgICAgIGludCBucmVhZDsKICAg ICAgIGludCBmaXJzdCA9IDE7CiAgICAgICBFTUFDU19JTlQgdG90YWxfcmVhZCA9IDA7CiAg ICAgICBpbnQgY2FycnlvdmVyID0gMDsKQEAgLTk3MCw3ICs5NzAsNyBAQAogewogICBzdHJ1 Y3QgZ2Nwcm8gZ2Nwcm8xOwogICBMaXNwX09iamVjdCBmaWxlbmFtZV9zdHJpbmc7Ci0gIHJl Z2lzdGVyIExpc3BfT2JqZWN0IHN0YXJ0LCBlbmQ7CisgIExpc3BfT2JqZWN0IHN0YXJ0LCBl bmQ7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAgIC8qIFF0IGRl bm90ZXMgd2UgaGF2ZSBub3QgeWV0IGNhbGxlZCBGZmluZF9vcGVyYXRpb25fY29kaW5nX3N5 c3RlbS4gICovCiAgIExpc3BfT2JqZWN0IGNvZGluZ19zeXN0ZW1zOwpAQCAtMTEzOSw3ICsx MTM5LDcgQEAKICAgIGV4ZWN1dGFibGUgZGlyZWN0b3J5IGJ5IHRoZSBwYXJlbnQuICAqLwog CiBpbnQKLWNoaWxkX3NldHVwIChpbnQgaW4sIGludCBvdXQsIGludCBlcnIsIHJlZ2lzdGVy IGNoYXIgKipuZXdfYXJndiwgaW50IHNldF9wZ3JwLCBMaXNwX09iamVjdCBjdXJyZW50X2Rp cikKK2NoaWxkX3NldHVwIChpbnQgaW4sIGludCBvdXQsIGludCBlcnIsIGNoYXIgKipuZXdf YXJndiwgaW50IHNldF9wZ3JwLCBMaXNwX09iamVjdCBjdXJyZW50X2RpcikKIHsKICAgY2hh ciAqKmVudjsKICAgY2hhciAqcHdkX3ZhcjsKQEAgLTExNjYsNyArMTE2Niw3IEBACiAgICAg IHN0YXRpYyB2YXJpYWJsZXMgYXMgaWYgdGhlIHN1cGVyaW9yIGhhZCBkb25lIGFsbG9jYSBh bmQgd2lsbCBiZQogICAgICBjbGVhbmVkIHVwIGluIHRoZSB1c3VhbCB3YXkuICovCiAgIHsK LSAgICByZWdpc3RlciBjaGFyICp0ZW1wOworICAgIGNoYXIgKnRlbXA7CiAgICAgc2l6ZV90 IGk7IC8qIHNpemVfdCwgYmVjYXVzZSBwdHJkaWZmX3QgbWlnaHQgb3ZlcmZsb3cgaGVyZSEg ICovCiAKICAgICBpID0gU0JZVEVTIChjdXJyZW50X2Rpcik7CkBAIC0xMjA4LDEwICsxMjA4 LDEwIEBACiAKICAgLyogU2V0IGBlbnYnIHRvIGEgdmVjdG9yIG9mIHRoZSBzdHJpbmdzIGlu IHRoZSBlbnZpcm9ubWVudC4gICovCiAgIHsKLSAgICByZWdpc3RlciBMaXNwX09iamVjdCB0 ZW07Ci0gICAgcmVnaXN0ZXIgY2hhciAqKm5ld19lbnY7CisgICAgTGlzcF9PYmplY3QgdGVt OworICAgIGNoYXIgKipuZXdfZW52OwogICAgIGNoYXIgKipwLCAqKnE7Ci0gICAgcmVnaXN0 ZXIgaW50IG5ld19sZW5ndGg7CisgICAgaW50IG5ld19sZW5ndGg7CiAgICAgTGlzcF9PYmpl Y3QgZGlzcGxheSA9IFFuaWw7CiAKICAgICBuZXdfbGVuZ3RoID0gMDsKQEAgLTE1MzcsNyAr MTUzNyw3IEBACiB7CiAgIGNoYXIgKmRhdGFfZGlyID0gZWdldGVudiAoIkVNQUNTREFUQSIp OwogCi0gIHJlZ2lzdGVyIGNoYXIgKiBzaDsKKyAgY2hhciAqc2g7CiAgIExpc3BfT2JqZWN0 IHRlbXBkaXI7CiAKICAgaWYgKCFOSUxQIChWaW5zdGFsbGF0aW9uX2RpcmVjdG9yeSkpCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2Nhc2VmaWRkbGUuYycKLS0tIHNyYy9jYXNlZmlkZGxl LmMJMjAxMi0wMi0xMCAxODo1ODo0OCArMDAwMAorKysgc3JjL2Nhc2VmaWRkbGUuYwkyMDEy LTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC0zNSw4ICszNSw4IEBACiBzdGF0aWMgTGlzcF9P YmplY3QKIGNhc2lmeV9vYmplY3QgKGVudW0gY2FzZV9hY3Rpb24gZmxhZywgTGlzcF9PYmpl Y3Qgb2JqKQogewotICByZWdpc3RlciBpbnQgYywgYzE7Ci0gIHJlZ2lzdGVyIGludCBpbndv cmQgPSBmbGFnID09IENBU0VfRE9XTjsKKyAgaW50IGMsIGMxOworICBpbnQgaW53b3JkID0g ZmxhZyA9PSBDQVNFX0RPV047CiAKICAgLyogSWYgdGhlIGNhc2UgdGFibGUgaXMgZmxhZ2dl ZCBhcyBtb2RpZmllZCwgcmVzY2FuIGl0LiAgKi8KICAgaWYgKE5JTFAgKFhDSEFSX1RBQkxF IChCVkFSIChjdXJyZW50X2J1ZmZlciwgZG93bmNhc2VfdGFibGUpKS0+ZXh0cmFzWzFdKSkK QEAgLTE5MCw5ICsxOTAsOSBAQAogc3RhdGljIHZvaWQKIGNhc2lmeV9yZWdpb24gKGVudW0g Y2FzZV9hY3Rpb24gZmxhZywgTGlzcF9PYmplY3QgYiwgTGlzcF9PYmplY3QgZSkKIHsKLSAg cmVnaXN0ZXIgaW50IGM7Ci0gIHJlZ2lzdGVyIGludCBpbndvcmQgPSBmbGFnID09IENBU0Vf RE9XTjsKLSAgcmVnaXN0ZXIgaW50IG11bHRpYnl0ZSA9ICFOSUxQIChCVkFSIChjdXJyZW50 X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0ZXJzKSk7CisgIGludCBjOworICBp bnQgaW53b3JkID0gZmxhZyA9PSBDQVNFX0RPV047CisgIGludCBtdWx0aWJ5dGUgPSAhTklM UCAoQlZBUiAoY3VycmVudF9idWZmZXIsIGVuYWJsZV9tdWx0aWJ5dGVfY2hhcmFjdGVycykp OwogICBwdHJkaWZmX3Qgc3RhcnQsIGVuZDsKICAgcHRyZGlmZl90IHN0YXJ0X2J5dGU7CiAK Cj09PSBtb2RpZmllZCBmaWxlICdzcmMvY2FzZXRhYi5jJwotLS0gc3JjL2Nhc2V0YWIuYwky MDEyLTAyLTEwIDE4OjU4OjQ4ICswMDAwCisrKyBzcmMvY2FzZXRhYi5jCTIwMTItMDYtMDMg MDU6NTM6MzggKzAwMDAKQEAgLTI0NSw3ICsyNDUsNyBAQAogdm9pZAogaW5pdF9jYXNldGFi X29uY2UgKHZvaWQpCiB7Ci0gIHJlZ2lzdGVyIGludCBpOworICBpbnQgaTsKICAgTGlzcF9P YmplY3QgZG93biwgdXA7CiAgIERFRlNZTSAoUWNhc2VfdGFibGUsICJjYXNlLXRhYmxlIik7 CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvY2NsLmMnCi0tLSBzcmMvY2NsLmMJMjAxMi0w Mi0xMCAxODo1ODo0OCArMDAwMAorKysgc3JjL2NjbC5jCTIwMTItMDYtMDMgMDU6NTM6Mzgg KzAwMDAKQEAgLTg3NCwxMCArODc0LDEwIEBACiB2b2lkCiBjY2xfZHJpdmVyIChzdHJ1Y3Qg Y2NsX3Byb2dyYW0gKmNjbCwgaW50ICpzb3VyY2UsIGludCAqZGVzdGluYXRpb24sIGludCBz cmNfc2l6ZSwgaW50IGRzdF9zaXplLCBMaXNwX09iamVjdCBjaGFyc2V0X2xpc3QpCiB7Ci0g IHJlZ2lzdGVyIGludCAqcmVnID0gY2NsLT5yZWc7Ci0gIHJlZ2lzdGVyIGludCBpYyA9IGNj bC0+aWM7Ci0gIHJlZ2lzdGVyIGludCBjb2RlID0gMCwgZmllbGQxLCBmaWVsZDI7Ci0gIHJl Z2lzdGVyIExpc3BfT2JqZWN0ICpjY2xfcHJvZyA9IGNjbC0+cHJvZzsKKyAgaW50ICpyZWcg PSBjY2wtPnJlZzsKKyAgaW50IGljID0gY2NsLT5pYzsKKyAgaW50IGNvZGUgPSAwLCBmaWVs ZDEsIGZpZWxkMjsKKyAgTGlzcF9PYmplY3QgKmNjbF9wcm9nID0gY2NsLT5wcm9nOwogICBp bnQgKnNyYyA9IHNvdXJjZSwgKnNyY19lbmQgPSBzcmMgKyBzcmNfc2l6ZTsKICAgaW50ICpk c3QgPSBkZXN0aW5hdGlvbiwgKmRzdF9lbmQgPSBkc3QgKyBkc3Rfc2l6ZTsKICAgaW50IGp1 bXBfYWRkcmVzczsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvY2hhcnRhYi5jJwotLS0gc3Jj L2NoYXJ0YWIuYwkyMDExLTEyLTExIDAwOjU2OjUwICswMDAwCisrKyBzcmMvY2hhcnRhYi5j CTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTkzLDcgKzkzLDcgQEAKIHByb3BlcnR5 LCB0aGUgcHJvcGVydHkncyB2YWx1ZSBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAg YW5kIDEwCiB0aGF0IHNwZWNpZmllcyBob3cgbWFueSBleHRyYSBzbG90cyB0aGUgY2hhci10 YWJsZSBoYXMuICBPdGhlcndpc2UsCiB0aGUgY2hhci10YWJsZSBoYXMgbm8gZXh0cmEgc2xv dC4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHVycG9zZSwgTGlzcF9PYmplY3Qg aW5pdCkKKyAgKExpc3BfT2JqZWN0IHB1cnBvc2UsIExpc3BfT2JqZWN0IGluaXQpCiB7CiAg IExpc3BfT2JqZWN0IHZlY3RvcjsKICAgTGlzcF9PYmplY3QgbjsKCj09PSBtb2RpZmllZCBm aWxlICdzcmMvY20uYycKLS0tIHNyYy9jbS5jCTIwMTItMDEtMTkgMDc6MjE6MjUgKzAwMDAK KysrIHNyYy9jbS5jCTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTE4MiwxNiArMTgy LDE2IEBACiBjYWxjY29zdCAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwKICAgICAg ICAgICBpbnQgc3JjeSwgaW50IHNyY3gsIGludCBkc3R5LCBpbnQgZHN0eCwgaW50IGRvaXQp CiB7Ci0gICAgcmVnaXN0ZXIgaW50ICAgIGRlbHRheSwKLSAgICAgICAgICAgICAgICAgICAg ZGVsdGF4LAotICAgICAgICAgICAgICAgICAgICBjLAotICAgICAgICAgICAgICAgICAgICB0 b3RhbGNvc3Q7CisgICAgaW50ICAgICBkZWx0YXksCisJICAgIGRlbHRheCwKKwkgICAgYywK KwkgICAgdG90YWxjb3N0OwogICAgIGludCAgICAgbnRhYnMsCiAgICAgICAgICAgICBuMnRh YnMsCiAgICAgICAgICAgICB0YWJ4LAogICAgICAgICAgICAgdGFiMngsCiAgICAgICAgICAg ICB0YWJjb3N0OwotICAgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnA7CisgICAgY29uc3QgY2hh ciAqcDsKIAogICAgIC8qIElmIGhhdmUganVzdCB3cmFwcGVkIG9uIGEgdGVybWluYWwgd2l0 aCB4biwKICAgICAgICBkb24ndCBiZWxpZXZlIHRoZSBjdXJzb3IgcG9zaXRpb246IGdpdmUg dXAgaGVyZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9jbWRzLmMnCi0tLSBzcmMvY21kcy5j CTIwMTItMDItMTAgMTg6NTg6NDggKzAwMDAKKysrIHNyYy9jbWRzLmMJMjAxMi0wNi0wMyAw NTo1MzozOCArMDAwMApAQCAtMzI5LDcgKzMyOSw3IEBACiB7CiAgIGludCBoYWlyeSA9IDA7 CiAgIExpc3BfT2JqZWN0IHRlbTsKLSAgcmVnaXN0ZXIgZW51bSBzeW50YXhjb2RlIHN5bnQ7 CisgIGVudW0gc3ludGF4Y29kZSBzeW50OwogICBMaXNwX09iamVjdCBvdmVyd3JpdGU7CiAg IC8qIExlbmd0aCBvZiBtdWx0aS1ieXRlIGZvcm0gb2YgQy4gICovCiAgIGludCBsZW47Cgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2NvZGluZy5jJwotLS0gc3JjL2NvZGluZy5jCTIwMTIt MDUtMjYgMjI6Mjc6MjEgKzAwMDAKKysrIHNyYy9jb2RpbmcuYwkyMDEyLTA2LTAzIDA1OjUz OjM4ICswMDAwCkBAIC05NDA1LDcgKzk0MDUsNyBAQAogICAocHRyZGlmZl90IG5hcmdzLCBM aXNwX09iamVjdCAqYXJncykKIHsKICAgTGlzcF9PYmplY3Qgb3BlcmF0aW9uLCB0YXJnZXRf aWR4LCB0YXJnZXQsIHZhbDsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgY2hhaW47CisgIExp c3BfT2JqZWN0IGNoYWluOwogCiAgIGlmIChuYXJncyA8IDIpCiAgICAgZXJyb3IgKCJUb28g ZmV3IGFyZ3VtZW50cyIpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9kYXRhLmMnCi0tLSBz cmMvZGF0YS5jCTIwMTItMDUtMzAgMDM6NTk6NDIgKzAwMDAKKysrIHNyYy9kYXRhLmMJMjAx Mi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMTAxLDcgKzEwMSw3IEBACiAKIAogTGlzcF9P YmplY3QKLXdyb25nX3R5cGVfYXJndW1lbnQgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByZWRp Y2F0ZSwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsdWUpCit3cm9uZ190eXBlX2FyZ3VtZW50 IChMaXNwX09iamVjdCBwcmVkaWNhdGUsIExpc3BfT2JqZWN0IHZhbHVlKQogewogICAvKiBJ ZiBWQUxVRSBpcyBub3QgZXZlbiBhIHZhbGlkIExpc3Agb2JqZWN0LCB3ZSdkIHdhbnQgdG8g YWJvcnQgaGVyZQogICAgICB3aGVyZSB3ZSBjYW4gZ2V0IGEgYmFja3RyYWNlIHNob3dpbmcg d2hlcmUgaXQgY2FtZSBmcm9tLiAgV2UgdXNlZApAQCAtMzQ5LDcgKzM0OSw3IEBACiAKIERF RlVOICgic2VxdWVuY2VwIiwgRnNlcXVlbmNlcCwgU3NlcXVlbmNlcCwgMSwgMSwgMCwKICAg ICAgICBkb2M6IC8qIFJldHVybiB0IGlmIE9CSkVDVCBpcyBhIHNlcXVlbmNlIChsaXN0IG9y IGFycmF5KS4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgb2JqZWN0KQorICAoTGlz cF9PYmplY3Qgb2JqZWN0KQogewogICBpZiAoQ09OU1AgKG9iamVjdCkgfHwgTklMUCAob2Jq ZWN0KSB8fCBBUlJBWVAgKG9iamVjdCkpCiAgICAgcmV0dXJuIFF0OwpAQCAtMzk1LDcgKzM5 NSw3IEBACiAKIERFRlVOICgiY2hhci1vci1zdHJpbmctcCIsIEZjaGFyX29yX3N0cmluZ19w LCBTY2hhcl9vcl9zdHJpbmdfcCwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0 IGlmIE9CSkVDVCBpcyBhIGNoYXJhY3RlciBvciBhIHN0cmluZy4gICovKQotICAocmVnaXN0 ZXIgTGlzcF9PYmplY3Qgb2JqZWN0KQorICAoTGlzcF9PYmplY3Qgb2JqZWN0KQogewogICBp ZiAoQ0hBUkFDVEVSUCAob2JqZWN0KSB8fCBTVFJJTkdQIChvYmplY3QpKQogICAgIHJldHVy biBRdDsKQEAgLTQxMyw3ICs0MTMsNyBAQAogCiBERUZVTiAoImludGVnZXItb3ItbWFya2Vy LXAiLCBGaW50ZWdlcl9vcl9tYXJrZXJfcCwgU2ludGVnZXJfb3JfbWFya2VyX3AsIDEsIDEs IDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdCBpZiBPQkpFQ1QgaXMgYW4gaW50ZWdlciBv ciBhIG1hcmtlciAoZWRpdG9yIHBvaW50ZXIpLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09i amVjdCBvYmplY3QpCisgIChMaXNwX09iamVjdCBvYmplY3QpCiB7CiAgIGlmIChNQVJLRVJQ IChvYmplY3QpIHx8IElOVEVHRVJQIChvYmplY3QpKQogICAgIHJldHVybiBRdDsKQEAgLTQ2 Nyw3ICs0NjcsNyBAQAogCiBTZWUgSW5mbyBub2RlIGAoZWxpc3ApQ29ucyBDZWxscycgZm9y IGEgZGlzY3Vzc2lvbiBvZiByZWxhdGVkIGJhc2ljCiBMaXNwIGNvbmNlcHRzIHN1Y2ggYXMg Y2FyLCBjZHIsIGNvbnMgY2VsbCBhbmQgbGlzdC4gICovKQotICAocmVnaXN0ZXIgTGlzcF9P YmplY3QgbGlzdCkKKyAgKExpc3BfT2JqZWN0IGxpc3QpCiB7CiAgIHJldHVybiBDQVIgKGxp c3QpOwogfQpAQCAtNDg1LDcgKzQ4NSw3IEBACiAKIFNlZSBJbmZvIG5vZGUgYChlbGlzcClD b25zIENlbGxzJyBmb3IgYSBkaXNjdXNzaW9uIG9mIHJlbGF0ZWQgYmFzaWMKIExpc3AgY29u Y2VwdHMgc3VjaCBhcyBjZHIsIGNhciwgY29ucyBjZWxsIGFuZCBsaXN0LiAgKi8pCi0gIChy ZWdpc3RlciBMaXNwX09iamVjdCBsaXN0KQorICAoTGlzcF9PYmplY3QgbGlzdCkKIHsKICAg cmV0dXJuIENEUiAobGlzdCk7CiB9CkBAIC00OTksNyArNDk5LDcgQEAKIAogREVGVU4gKCJz ZXRjYXIiLCBGc2V0Y2FyLCBTc2V0Y2FyLCAyLCAyLCAwLAogICAgICAgIGRvYzogLyogU2V0 IHRoZSBjYXIgb2YgQ0VMTCB0byBiZSBORVdDQVIuICBSZXR1cm5zIE5FV0NBUi4gICovKQot ICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgY2VsbCwgTGlzcF9PYmplY3QgbmV3Y2FyKQorICAo TGlzcF9PYmplY3QgY2VsbCwgTGlzcF9PYmplY3QgbmV3Y2FyKQogewogICBDSEVDS19DT05T IChjZWxsKTsKICAgQ0hFQ0tfSU1QVVJFIChjZWxsKTsKQEAgLTUwOSw3ICs1MDksNyBAQAog CiBERUZVTiAoInNldGNkciIsIEZzZXRjZHIsIFNzZXRjZHIsIDIsIDIsIDAsCiAgICAgICAg ZG9jOiAvKiBTZXQgdGhlIGNkciBvZiBDRUxMIHRvIGJlIE5FV0NEUi4gIFJldHVybnMgTkVX Q0RSLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBjZWxsLCBMaXNwX09iamVjdCBu ZXdjZHIpCisgIChMaXNwX09iamVjdCBjZWxsLCBMaXNwX09iamVjdCBuZXdjZHIpCiB7CiAg IENIRUNLX0NPTlMgKGNlbGwpOwogICBDSEVDS19JTVBVUkUgKGNlbGwpOwpAQCAtNTIxLDcg KzUyMSw3IEBACiAKIERFRlVOICgiYm91bmRwIiwgRmJvdW5kcCwgU2JvdW5kcCwgMSwgMSwg MCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0IGlmIFNZTUJPTCdzIHZhbHVlIGlzIG5vdCB2 b2lkLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBzeW1ib2wpCisgIChMaXNwX09i amVjdCBzeW1ib2wpCiB7CiAgIExpc3BfT2JqZWN0IHZhbGNvbnRlbnRzOwogICBzdHJ1Y3Qg TGlzcF9TeW1ib2wgKnN5bTsKQEAgLTU1OSw3ICs1NTksNyBAQAogCiBERUZVTiAoImZib3Vu ZHAiLCBGZmJvdW5kcCwgU2Zib3VuZHAsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1 cm4gdCBpZiBTWU1CT0wncyBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIG5vdCB2b2lkLiAgKi8p Ci0gIChyZWdpc3RlciBMaXNwX09iamVjdCBzeW1ib2wpCisgIChMaXNwX09iamVjdCBzeW1i b2wpCiB7CiAgIENIRUNLX1NZTUJPTCAoc3ltYm9sKTsKICAgcmV0dXJuIChFUSAoWFNZTUJP TCAoc3ltYm9sKS0+ZnVuY3Rpb24sIFF1bmJvdW5kKSA/IFFuaWwgOiBRdCk7CkBAIC01Njgs NyArNTY4LDcgQEAKIERFRlVOICgibWFrdW5ib3VuZCIsIEZtYWt1bmJvdW5kLCBTbWFrdW5i b3VuZCwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIE1ha2UgU1lNQk9MJ3MgdmFsdWUgYmUg dm9pZC4KIFJldHVybiBTWU1CT0wuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN5 bWJvbCkKKyAgKExpc3BfT2JqZWN0IHN5bWJvbCkKIHsKICAgQ0hFQ0tfU1lNQk9MIChzeW1i b2wpOwogICBpZiAoU1lNQk9MX0NPTlNUQU5UX1AgKHN5bWJvbCkpCkBAIC01ODAsNyArNTgw LDcgQEAKIERFRlVOICgiZm1ha3VuYm91bmQiLCBGZm1ha3VuYm91bmQsIFNmbWFrdW5ib3Vu ZCwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIE1ha2UgU1lNQk9MJ3MgZnVuY3Rpb24gZGVm aW5pdGlvbiBiZSB2b2lkLgogUmV0dXJuIFNZTUJPTC4gICovKQotICAocmVnaXN0ZXIgTGlz cF9PYmplY3Qgc3ltYm9sKQorICAoTGlzcF9PYmplY3Qgc3ltYm9sKQogewogICBDSEVDS19T WU1CT0wgKHN5bWJvbCk7CiAgIGlmIChOSUxQIChzeW1ib2wpIHx8IEVRIChzeW1ib2wsIFF0 KSkKQEAgLTU5MSw3ICs1OTEsNyBAQAogCiBERUZVTiAoInN5bWJvbC1mdW5jdGlvbiIsIEZz eW1ib2xfZnVuY3Rpb24sIFNzeW1ib2xfZnVuY3Rpb24sIDEsIDEsIDAsCiAgICAgICAgZG9j OiAvKiBSZXR1cm4gU1lNQk9MJ3MgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIEVycm9yIGlmIHRo YXQgaXMgdm9pZC4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3ltYm9sKQorICAo TGlzcF9PYmplY3Qgc3ltYm9sKQogewogICBDSEVDS19TWU1CT0wgKHN5bWJvbCk7CiAgIGlm ICghRVEgKFhTWU1CT0wgKHN5bWJvbCktPmZ1bmN0aW9uLCBRdW5ib3VuZCkpCkBAIC02MDEs NyArNjAxLDcgQEAKIAogREVGVU4gKCJzeW1ib2wtcGxpc3QiLCBGc3ltYm9sX3BsaXN0LCBT c3ltYm9sX3BsaXN0LCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIFNZTUJPTCdz IHByb3BlcnR5IGxpc3QuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN5bWJvbCkK KyAgKExpc3BfT2JqZWN0IHN5bWJvbCkKIHsKICAgQ0hFQ0tfU1lNQk9MIChzeW1ib2wpOwog ICByZXR1cm4gWFNZTUJPTCAoc3ltYm9sKS0+cGxpc3Q7CkBAIC02MDksOSArNjA5LDkgQEAK IAogREVGVU4gKCJzeW1ib2wtbmFtZSIsIEZzeW1ib2xfbmFtZSwgU3N5bWJvbF9uYW1lLCAx LCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIFNZTUJPTCdzIG5hbWUsIGEgc3RyaW5n LiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBzeW1ib2wpCisgIChMaXNwX09iamVj dCBzeW1ib2wpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IG5hbWU7CisgIExpc3BfT2Jq ZWN0IG5hbWU7CiAKICAgQ0hFQ0tfU1lNQk9MIChzeW1ib2wpOwogICBuYW1lID0gU1lNQk9M X05BTUUgKHN5bWJvbCk7CkBAIC02MjAsOSArNjIwLDkgQEAKIAogREVGVU4gKCJmc2V0Iiwg RmZzZXQsIFNmc2V0LCAyLCAyLCAwLAogICAgICAgIGRvYzogLyogU2V0IFNZTUJPTCdzIGZ1 bmN0aW9uIGRlZmluaXRpb24gdG8gREVGSU5JVElPTiwgYW5kIHJldHVybiBERUZJTklUSU9O LiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBzeW1ib2wsIExpc3BfT2JqZWN0IGRl ZmluaXRpb24pCisgIChMaXNwX09iamVjdCBzeW1ib2wsIExpc3BfT2JqZWN0IGRlZmluaXRp b24pCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZ1bmN0aW9uOworICBMaXNwX09iamVj dCBmdW5jdGlvbjsKIAogICBDSEVDS19TWU1CT0wgKHN5bWJvbCk7CiAgIGlmIChOSUxQIChz eW1ib2wpIHx8IEVRIChzeW1ib2wsIFF0KSkKQEAgLTY1Miw3ICs2NTIsNyBAQAogVGhlIG9w dGlvbmFsIHRoaXJkIGFyZ3VtZW50IERPQ1NUUklORyBzcGVjaWZpZXMgdGhlIGRvY3VtZW50 YXRpb24gc3RyaW5nCiBmb3IgU1lNQk9MOyBpZiBpdCBpcyBvbWl0dGVkIG9yIG5pbCwgU1lN Qk9MIHVzZXMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nCiBkZXRlcm1pbmVkIGJ5IERFRklO SVRJT04uICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9PYmpl Y3QgZGVmaW5pdGlvbiwgTGlzcF9PYmplY3QgZG9jc3RyaW5nKQorICAoTGlzcF9PYmplY3Qg c3ltYm9sLCBMaXNwX09iamVjdCBkZWZpbml0aW9uLCBMaXNwX09iamVjdCBkb2NzdHJpbmcp CiB7CiAgIENIRUNLX1NZTUJPTCAoc3ltYm9sKTsKICAgaWYgKENPTlNQIChYU1lNQk9MIChz eW1ib2wpLT5mdW5jdGlvbikKQEAgLTY3MSw3ICs2NzEsNyBAQAogCiBERUZVTiAoInNldHBs aXN0IiwgRnNldHBsaXN0LCBTc2V0cGxpc3QsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBT ZXQgU1lNQk9MJ3MgcHJvcGVydHkgbGlzdCB0byBORVdQTElTVCwgYW5kIHJldHVybiBORVdQ TElTVC4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3ltYm9sLCBMaXNwX09iamVj dCBuZXdwbGlzdCkKKyAgKExpc3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9PYmplY3QgbmV3cGxp c3QpCiB7CiAgIENIRUNLX1NZTUJPTCAoc3ltYm9sKTsKICAgWFNZTUJPTCAoc3ltYm9sKS0+ cGxpc3QgPSBuZXdwbGlzdDsKQEAgLTgyNCw5ICs4MjQsOSBAQAogICAgc3dhcF9pbl9zeW12 YWxfZm9yd2FyZGluZyBmb3IgdGhhdC4gICovCiAKIExpc3BfT2JqZWN0Ci1kb19zeW12YWxf Zm9yd2FyZGluZyAocmVnaXN0ZXIgdW5pb24gTGlzcF9Gd2QgKnZhbGNvbnRlbnRzKQorZG9f c3ltdmFsX2ZvcndhcmRpbmcgKHVuaW9uIExpc3BfRndkICp2YWxjb250ZW50cykKIHsKLSAg cmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsOworICBMaXNwX09iamVjdCB2YWw7CiAgIHN3aXRj aCAoWEZXRFRZUEUgKHZhbGNvbnRlbnRzKSkKICAgICB7CiAgICAgY2FzZSBMaXNwX0Z3ZF9J bnQ6CkBAIC04NzAsNyArODcwLDggQEAKICAgIGN1cnJlbnQgYnVmZmVyLiAgVGhpcyBvbmx5 IHBsYXlzIGEgcm9sZSBmb3IgcGVyLWJ1ZmZlciB2YXJpYWJsZXMuICAqLwogCiBzdGF0aWMg dm9pZAotc3RvcmVfc3ltdmFsX2ZvcndhcmRpbmcgKHVuaW9uIExpc3BfRndkICp2YWxjb250 ZW50cywgcmVnaXN0ZXIgTGlzcF9PYmplY3QgbmV3dmFsLCBzdHJ1Y3QgYnVmZmVyICpidWYp CitzdG9yZV9zeW12YWxfZm9yd2FyZGluZyAodW5pb24gTGlzcF9Gd2QgKnZhbGNvbnRlbnRz LCBMaXNwX09iamVjdCBuZXd2YWwsCisJCQkgc3RydWN0IGJ1ZmZlciAqYnVmKQogewogICBz d2l0Y2ggKFhGV0RUWVBFICh2YWxjb250ZW50cykpCiAgICAgewpAQCAtOTc5LDcgKzk4MCw3 IEBACiBzdGF0aWMgdm9pZAogc3dhcF9pbl9zeW12YWxfZm9yd2FyZGluZyAoc3RydWN0IExp c3BfU3ltYm9sICpzeW1ib2wsIHN0cnVjdCBMaXNwX0J1ZmZlcl9Mb2NhbF9WYWx1ZSAqYmx2 KQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB0ZW0xOworICBMaXNwX09iamVjdCB0ZW0x OwogCiAgIGVhc3NlcnQgKGJsdiA9PSBTWU1CT0xfQkxWIChzeW1ib2wpKTsKIApAQCAtMTA2 Nyw3ICsxMDY4LDcgQEAKIAogREVGVU4gKCJzZXQiLCBGc2V0LCBTc2V0LCAyLCAyLCAwLAog ICAgICAgIGRvYzogLyogU2V0IFNZTUJPTCdzIHZhbHVlIHRvIE5FV1ZBTCwgYW5kIHJldHVy biBORVdWQUwuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9P YmplY3QgbmV3dmFsKQorICAoTGlzcF9PYmplY3Qgc3ltYm9sLCBMaXNwX09iamVjdCBuZXd2 YWwpCiB7CiAgIHNldF9pbnRlcm5hbCAoc3ltYm9sLCBuZXd2YWwsIFFuaWwsIDApOwogICBy ZXR1cm4gbmV3dmFsOwpAQCAtMTExNiw3ICsxMTE3LDggQEAKICAgIElmIEJJTkRGTEFHIGlz IG5vbnplcm8sIHdlIGRvbid0IGRvIHRoYXQuICAqLwogCiB2b2lkCi1zZXRfaW50ZXJuYWwg KHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN5bWJvbCwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgbmV3 dmFsLCByZWdpc3RlciBMaXNwX09iamVjdCB3aGVyZSwgaW50IGJpbmRmbGFnKQorc2V0X2lu dGVybmFsIChMaXNwX09iamVjdCBzeW1ib2wsIExpc3BfT2JqZWN0IG5ld3ZhbCwgTGlzcF9P YmplY3Qgd2hlcmUsCisJICAgICAgaW50IGJpbmRmbGFnKQogewogICBpbnQgdm9pZGUgPSBF USAobmV3dmFsLCBRdW5ib3VuZCk7CiAgIHN0cnVjdCBMaXNwX1N5bWJvbCAqc3ltOwpAQCAt MTMxNyw3ICsxMzE5LDcgQEAKIGZvciB0aGlzIHZhcmlhYmxlLiAgKi8pCiAgIChMaXNwX09i amVjdCBzeW1ib2wpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbHVlOworICBMaXNw X09iamVjdCB2YWx1ZTsKIAogICB2YWx1ZSA9IGRlZmF1bHRfdmFsdWUgKHN5bWJvbCk7CiAg IHJldHVybiAoRVEgKHZhbHVlLCBRdW5ib3VuZCkgPyBRbmlsIDogUXQpOwpAQCAtMTMzMCw3 ICsxMzMyLDcgQEAKIGxvY2FsIGJpbmRpbmdzIGluIGNlcnRhaW4gYnVmZmVycy4gICovKQog ICAoTGlzcF9PYmplY3Qgc3ltYm9sKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWx1 ZTsKKyAgTGlzcF9PYmplY3QgdmFsdWU7CiAKICAgdmFsdWUgPSBkZWZhdWx0X3ZhbHVlIChz eW1ib2wpOwogICBpZiAoIUVRICh2YWx1ZSwgUXVuYm91bmQpKQpAQCAtMTQyNCw4ICsxNDI2 LDggQEAKIHVzYWdlOiAoc2V0cS1kZWZhdWx0IFtWQVIgVkFMVUVdLi4uKSAgKi8pCiAgIChM aXNwX09iamVjdCBhcmdzKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCBhcmdzX2xlZnQ7 Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbCwgc3ltYm9sOworICBMaXNwX09iamVjdCBh cmdzX2xlZnQ7CisgIExpc3BfT2JqZWN0IHZhbCwgc3ltYm9sOwogICBzdHJ1Y3QgZ2Nwcm8g Z2Nwcm8xOwogCiAgIGlmIChOSUxQIChhcmdzKSkKQEAgLTE0OTYsNyArMTQ5OCw3IEBACiB3 aGljaCBtYWtlcyBhIHZhcmlhYmxlIGxvY2FsIGluIGp1c3Qgb25lIGJ1ZmZlci4KIAogVGhl IGZ1bmN0aW9uIGBkZWZhdWx0LXZhbHVlJyBnZXRzIHRoZSBkZWZhdWx0IHZhbHVlIGFuZCBg c2V0LWRlZmF1bHQnIHNldHMgaXQuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZh cmlhYmxlKQorICAoTGlzcF9PYmplY3QgdmFyaWFibGUpCiB7CiAgIHN0cnVjdCBMaXNwX1N5 bWJvbCAqc3ltOwogICBzdHJ1Y3QgTGlzcF9CdWZmZXJfTG9jYWxfVmFsdWUgKmJsdiA9IE5V TEw7CkBAIC0xNTczLDkgKzE1NzUsOSBAQAogCiBEbyBub3QgdXNlIGBtYWtlLWxvY2FsLXZh cmlhYmxlJyB0byBtYWtlIGEgaG9vayB2YXJpYWJsZSBidWZmZXItbG9jYWwuCiBJbnN0ZWFk LCB1c2UgYGFkZC1ob29rJyBhbmQgc3BlY2lmeSB0IGZvciB0aGUgTE9DQUwgYXJndW1lbnQu ICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhcmlhYmxlKQorICAoTGlzcF9PYmpl Y3QgdmFyaWFibGUpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRlbTsKKyAgTGlzcF9P YmplY3QgdGVtOwogICBpbnQgZm9yd2FyZGVkIElGX0xJTlQgKD0gMCk7CiAgIHVuaW9uIExp c3BfVmFsX0Z3ZCB2YWxjb250ZW50cyBJRl9MSU5UICg9IHswfSk7CiAgIHN0cnVjdCBMaXNw X1N5bWJvbCAqc3ltOwpAQCAtMTY3NCw5ICsxNjc2LDkgQEAKICAgICAgICAxLCAxLCAidktp bGwgTG9jYWwgVmFyaWFibGU6ICIsCiAgICAgICAgZG9jOiAvKiBNYWtlIFZBUklBQkxFIG5v IGxvbmdlciBoYXZlIGEgc2VwYXJhdGUgdmFsdWUgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLgog RnJvbSBub3cgb24gdGhlIGRlZmF1bHQgdmFsdWUgd2lsbCBhcHBseSBpbiB0aGlzIGJ1ZmZl ci4gIFJldHVybiBWQVJJQUJMRS4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFy aWFibGUpCisgIChMaXNwX09iamVjdCB2YXJpYWJsZSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9P YmplY3QgdGVtOworICBMaXNwX09iamVjdCB0ZW07CiAgIHN0cnVjdCBMaXNwX0J1ZmZlcl9M b2NhbF9WYWx1ZSAqYmx2OwogICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKnN5bTsKIApAQCAtMTc2 Miw3ICsxNzY0LDcgQEAKIE5vdGUgdGhhdCBzaW5jZSBFbWFjcyAyMy4xLCB2YXJpYWJsZXMg Y2Fubm90IGJlIGJvdGggYnVmZmVyLWxvY2FsIGFuZAogZnJhbWUtbG9jYWwgYW55IG1vcmUg KGJ1ZmZlci1sb2NhbCBiaW5kaW5ncyB1c2VkIHRvIHRha2UgcHJlY2VkZW5jZSBvdmVyCiBm cmFtZS1sb2NhbCBiaW5kaW5ncykuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZh cmlhYmxlKQorICAoTGlzcF9PYmplY3QgdmFyaWFibGUpCiB7CiAgIGludCBmb3J3YXJkZWQ7 CiAgIHVuaW9uIExpc3BfVmFsX0Z3ZCB2YWxjb250ZW50czsKQEAgLTE4MTcsOSArMTgxOSw5 IEBACiAgICAgICAgMSwgMiwgMCwKICAgICAgICBkb2M6IC8qIE5vbi1uaWwgaWYgVkFSSUFC TEUgaGFzIGEgbG9jYWwgYmluZGluZyBpbiBidWZmZXIgQlVGRkVSLgogQlVGRkVSIGRlZmF1 bHRzIHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmpl Y3QgdmFyaWFibGUsIExpc3BfT2JqZWN0IGJ1ZmZlcikKKyAgKExpc3BfT2JqZWN0IHZhcmlh YmxlLCBMaXNwX09iamVjdCBidWZmZXIpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBidWZmZXIg KmJ1ZjsKKyAgc3RydWN0IGJ1ZmZlciAqYnVmOwogICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKnN5 bTsKIAogICBpZiAoTklMUCAoYnVmZmVyKSkKQEAgLTE4ODIsNyArMTg4NCw3IEBACiB3aWxs IHByb2R1Y2UgYSBidWZmZXIgbG9jYWwgYmluZGluZy4gIFNlZSBJbmZvIG5vZGUKIGAoZWxp c3ApQ3JlYXRpbmcgQnVmZmVyLUxvY2FsJy4KIEJVRkZFUiBkZWZhdWx0cyB0byB0aGUgY3Vy cmVudCBidWZmZXIuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhcmlhYmxlLCBM aXNwX09iamVjdCBidWZmZXIpCisgIChMaXNwX09iamVjdCB2YXJpYWJsZSwgTGlzcF9PYmpl Y3QgYnVmZmVyKQogewogICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKnN5bTsKIApAQCAtMTkxNSw3 ICsxOTE3LDcgQEAKIElmIHRoZSBjdXJyZW50IGJpbmRpbmcgaXMgYnVmZmVyLWxvY2FsLCB0 aGUgdmFsdWUgaXMgdGhlIGN1cnJlbnQgYnVmZmVyLgogSWYgdGhlIGN1cnJlbnQgYmluZGlu ZyBpcyBmcmFtZS1sb2NhbCwgdGhlIHZhbHVlIGlzIHRoZSBzZWxlY3RlZCBmcmFtZS4KIElm IHRoZSBjdXJyZW50IGJpbmRpbmcgaXMgZ2xvYmFsICh0aGUgZGVmYXVsdCksIHRoZSB2YWx1 ZSBpcyBuaWwuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhcmlhYmxlKQorICAo TGlzcF9PYmplY3QgdmFyaWFibGUpCiB7CiAgIHN0cnVjdCBMaXNwX1N5bWJvbCAqc3ltOwog CkBAIC0yMDA1LDcgKzIwMDcsNyBAQAogICAgVGhpcyBpcyBsaWtlIEZpbmRpcmVjdF9mdW5j dGlvbiwgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBzaWduYWwgYW4KICAgIGVycm9yIGlmIHRo ZSBjaGFpbiBlbmRzIHVwIHVuYm91bmQuICAqLwogTGlzcF9PYmplY3QKLWluZGlyZWN0X2Z1 bmN0aW9uIChyZWdpc3RlciBMaXNwX09iamVjdCBvYmplY3QpCitpbmRpcmVjdF9mdW5jdGlv biAoTGlzcF9PYmplY3Qgb2JqZWN0KQogewogICBMaXNwX09iamVjdCB0b3J0b2lzZSwgaGFy ZTsKIApAQCAtMjAzNyw3ICsyMDM5LDcgQEAKIE9wdGlvbmFsIGFyZyBOT0VSUk9SIG5vbi1u aWwgbWVhbnMgdG8gcmV0dXJuIG5pbCBpbnN0ZWFkIG9mIHNpZ25hbGluZy4KIFNpZ25hbCBh IGN5Y2xpYy1mdW5jdGlvbi1pbmRpcmVjdGlvbiBlcnJvciBpZiB0aGVyZSBpcyBhIGxvb3Ag aW4gdGhlCiBmdW5jdGlvbiBjaGFpbiBvZiBzeW1ib2xzLiAgKi8pCi0gIChyZWdpc3RlciBM aXNwX09iamVjdCBvYmplY3QsIExpc3BfT2JqZWN0IG5vZXJyb3IpCisgIChMaXNwX09iamVj dCBvYmplY3QsIExpc3BfT2JqZWN0IG5vZXJyb3IpCiB7CiAgIExpc3BfT2JqZWN0IHJlc3Vs dDsKIApAQCAtMjA2MSw5ICsyMDYzLDkgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUg ZWxlbWVudCBvZiBBUlJBWSBhdCBpbmRleCBJRFguCiBBUlJBWSBtYXkgYmUgYSB2ZWN0b3Is IGEgc3RyaW5nLCBhIGNoYXItdGFibGUsIGEgYm9vbC12ZWN0b3IsCiBvciBhIGJ5dGUtY29k ZSBvYmplY3QuICBJRFggc3RhcnRzIGF0IDAuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2Jq ZWN0IGFycmF5LCBMaXNwX09iamVjdCBpZHgpCisgIChMaXNwX09iamVjdCBhcnJheSwgTGlz cF9PYmplY3QgaWR4KQogewotICByZWdpc3RlciBFTUFDU19JTlQgaWR4dmFsOworICBFTUFD U19JTlQgaWR4dmFsOwogCiAgIENIRUNLX05VTUJFUiAoaWR4KTsKICAgaWR4dmFsID0gWElO VCAoaWR4KTsKQEAgLTIxMTYsOSArMjExOCw5IEBACiAgICAgICAgZG9jOiAvKiBTdG9yZSBp bnRvIHRoZSBlbGVtZW50IG9mIEFSUkFZIGF0IGluZGV4IElEWCB0aGUgdmFsdWUgTkVXRUxU LgogUmV0dXJuIE5FV0VMVC4gIEFSUkFZIG1heSBiZSBhIHZlY3RvciwgYSBzdHJpbmcsIGEg Y2hhci10YWJsZSBvciBhCiBib29sLXZlY3Rvci4gIElEWCBzdGFydHMgYXQgMC4gICovKQot ICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYXJyYXksIExpc3BfT2JqZWN0IGlkeCwgTGlzcF9P YmplY3QgbmV3ZWx0KQorICAoTGlzcF9PYmplY3QgYXJyYXksIExpc3BfT2JqZWN0IGlkeCwg TGlzcF9PYmplY3QgbmV3ZWx0KQogewotICByZWdpc3RlciBFTUFDU19JTlQgaWR4dmFsOwor ICBFTUFDU19JTlQgaWR4dmFsOwogCiAgIENIRUNLX05VTUJFUiAoaWR4KTsKICAgaWR4dmFs ID0gWElOVCAoaWR4KTsKQEAgLTIyNzIsMjEgKzIyNzQsMjEgQEAKIAogREVGVU4gKCI9Iiwg RmVxbHNpZ24sIFNlcWxzaWduLCAyLCAyLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHQg aWYgdHdvIGFyZ3MsIGJvdGggbnVtYmVycyBvciBtYXJrZXJzLCBhcmUgZXF1YWwuICAqLykK LSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IG51bTEsIExpc3BfT2JqZWN0IG51bTIpCisgIChM aXNwX09iamVjdCBudW0xLCBMaXNwX09iamVjdCBudW0yKQogewogICByZXR1cm4gYXJpdGhj b21wYXJlIChudW0xLCBudW0yLCBlcXVhbCk7CiB9CiAKIERFRlVOICgiPCIsIEZsc3MsIFNs c3MsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdCBpZiBmaXJzdCBhcmcgaXMg bGVzcyB0aGFuIHNlY29uZCBhcmcuICBCb3RoIG11c3QgYmUgbnVtYmVycyBvciBtYXJrZXJz LiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBudW0xLCBMaXNwX09iamVjdCBudW0y KQorICAoTGlzcF9PYmplY3QgbnVtMSwgTGlzcF9PYmplY3QgbnVtMikKIHsKICAgcmV0dXJu IGFyaXRoY29tcGFyZSAobnVtMSwgbnVtMiwgbGVzcyk7CiB9CiAKIERFRlVOICgiPiIsIEZn dHIsIFNndHIsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdCBpZiBmaXJzdCBh cmcgaXMgZ3JlYXRlciB0aGFuIHNlY29uZCBhcmcuICBCb3RoIG11c3QgYmUgbnVtYmVycyBv ciBtYXJrZXJzLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBudW0xLCBMaXNwX09i amVjdCBudW0yKQorICAoTGlzcF9PYmplY3QgbnVtMSwgTGlzcF9PYmplY3QgbnVtMikKIHsK ICAgcmV0dXJuIGFyaXRoY29tcGFyZSAobnVtMSwgbnVtMiwgZ3J0cik7CiB9CkBAIC0yMjk0 LDcgKzIyOTYsNyBAQAogREVGVU4gKCI8PSIsIEZsZXEsIFNsZXEsIDIsIDIsIDAsCiAgICAg ICAgZG9jOiAvKiBSZXR1cm4gdCBpZiBmaXJzdCBhcmcgaXMgbGVzcyB0aGFuIG9yIGVxdWFs IHRvIHNlY29uZCBhcmcuCiBCb3RoIG11c3QgYmUgbnVtYmVycyBvciBtYXJrZXJzLiAgKi8p Ci0gIChyZWdpc3RlciBMaXNwX09iamVjdCBudW0xLCBMaXNwX09iamVjdCBudW0yKQorICAo TGlzcF9PYmplY3QgbnVtMSwgTGlzcF9PYmplY3QgbnVtMikKIHsKICAgcmV0dXJuIGFyaXRo Y29tcGFyZSAobnVtMSwgbnVtMiwgbGVzc19vcl9lcXVhbCk7CiB9CkBAIC0yMzAyLDIxICsy MzA0LDIxIEBACiBERUZVTiAoIj49IiwgRmdlcSwgU2dlcSwgMiwgMiwgMCwKICAgICAgICBk b2M6IC8qIFJldHVybiB0IGlmIGZpcnN0IGFyZyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwg dG8gc2Vjb25kIGFyZy4KIEJvdGggbXVzdCBiZSBudW1iZXJzIG9yIG1hcmtlcnMuICAqLykK LSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IG51bTEsIExpc3BfT2JqZWN0IG51bTIpCisgIChM aXNwX09iamVjdCBudW0xLCBMaXNwX09iamVjdCBudW0yKQogewogICByZXR1cm4gYXJpdGhj b21wYXJlIChudW0xLCBudW0yLCBncnRyX29yX2VxdWFsKTsKIH0KIAogREVGVU4gKCIvPSIs IEZuZXEsIFNuZXEsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdCBpZiBmaXJz dCBhcmcgaXMgbm90IGVxdWFsIHRvIHNlY29uZCBhcmcuICBCb3RoIG11c3QgYmUgbnVtYmVy cyBvciBtYXJrZXJzLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBudW0xLCBMaXNw X09iamVjdCBudW0yKQorICAoTGlzcF9PYmplY3QgbnVtMSwgTGlzcF9PYmplY3QgbnVtMikK IHsKICAgcmV0dXJuIGFyaXRoY29tcGFyZSAobnVtMSwgbnVtMiwgbm90ZXF1YWwpOwogfQog CiBERUZVTiAoInplcm9wIiwgRnplcm9wLCBTemVyb3AsIDEsIDEsIDAsCiAgICAgICAgZG9j OiAvKiBSZXR1cm4gdCBpZiBOVU1CRVIgaXMgemVyby4gICovKQotICAocmVnaXN0ZXIgTGlz cF9PYmplY3QgbnVtYmVyKQorICAoTGlzcF9PYmplY3QgbnVtYmVyKQogewogICBDSEVDS19O VU1CRVJfT1JfRkxPQVQgKG51bWJlcik7CiAKQEAgLTI0NjgsMTAgKzI0NzAsMTAgQEAKIElm IEJBU0UsIGludGVycHJldCBTVFJJTkcgYXMgYSBudW1iZXIgaW4gdGhhdCBiYXNlLiAgSWYg QkFTRSBpc24ndAogcHJlc2VudCwgYmFzZSAxMCBpcyB1c2VkLiAgQkFTRSBtdXN0IGJlIGJl dHdlZW4gMiBhbmQgMTYgKGluY2x1c2l2ZSkuCiBJZiB0aGUgYmFzZSB1c2VkIGlzIG5vdCAx MCwgU1RSSU5HIGlzIGFsd2F5cyBwYXJzZWQgYXMgaW50ZWdlci4gICovKQotICAocmVnaXN0 ZXIgTGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBiYXNlKQorICAoTGlzcF9PYmpl Y3Qgc3RyaW5nLCBMaXNwX09iamVjdCBiYXNlKQogewotICByZWdpc3RlciBjaGFyICpwOwot ICByZWdpc3RlciBpbnQgYjsKKyAgY2hhciAqcDsKKyAgaW50IGI7CiAgIExpc3BfT2JqZWN0 IHZhbDsKIAogICBDSEVDS19TVFJJTkcgKHN0cmluZyk7CkBAIC0yNTEyLDEwICsyNTE0LDEw IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIGFyaXRoX2RyaXZlciAoZW51bSBhcml0aG9wIGNv ZGUsIHB0cmRpZmZfdCBuYXJncywgTGlzcF9PYmplY3QgKmFyZ3MpCiB7Ci0gIHJlZ2lzdGVy IExpc3BfT2JqZWN0IHZhbDsKKyAgTGlzcF9PYmplY3QgdmFsOwogICBwdHJkaWZmX3QgYXJn bnVtOwotICByZWdpc3RlciBFTUFDU19JTlQgYWNjdW0gPSAwOwotICByZWdpc3RlciBFTUFD U19JTlQgbmV4dDsKKyAgRU1BQ1NfSU5UIGFjY3VtID0gMDsKKyAgRU1BQ1NfSU5UIG5leHQ7 CiAKICAgaW50IG92ZXJmbG93ID0gMDsKICAgcHRyZGlmZl90IG9rX2FyZ3M7CkBAIC0yNjI1 LDcgKzI2MjcsNyBAQAogZmxvYXRfYXJpdGhfZHJpdmVyIChkb3VibGUgYWNjdW0sIHB0cmRp ZmZfdCBhcmdudW0sIGVudW0gYXJpdGhvcCBjb2RlLAogCQkgICAgcHRyZGlmZl90IG5hcmdz LCBMaXNwX09iamVjdCAqYXJncykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsOwor ICBMaXNwX09iamVjdCB2YWw7CiAgIGRvdWJsZSBuZXh0OwogCiAgIGZvciAoOyBhcmdudW0g PCBuYXJnczsgYXJnbnVtKyspCkBAIC0yNzI0LDcgKzI3MjYsNyBAQAogREVGVU4gKCIlIiwg RnJlbSwgU3JlbSwgMiwgMiwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiByZW1haW5kZXIg b2YgWCBkaXZpZGVkIGJ5IFkuCiBCb3RoIG11c3QgYmUgaW50ZWdlcnMgb3IgbWFya2Vycy4g ICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgeCwgTGlzcF9PYmplY3QgeSkKKyAgKExp c3BfT2JqZWN0IHgsIExpc3BfT2JqZWN0IHkpCiB7CiAgIExpc3BfT2JqZWN0IHZhbDsKIApA QCAtMjc2NCw3ICsyNzY2LDcgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiBYIG1vZHVsbyBZ LgogVGhlIHJlc3VsdCBmYWxscyBiZXR3ZWVuIHplcm8gKGluY2x1c2l2ZSkgYW5kIFkgKGV4 Y2x1c2l2ZSkuCiBCb3RoIFggYW5kIFkgbXVzdCBiZSBudW1iZXJzIG9yIG1hcmtlcnMuICAq LykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHgsIExpc3BfT2JqZWN0IHkpCisgIChMaXNw X09iamVjdCB4LCBMaXNwX09iamVjdCB5KQogewogICBMaXNwX09iamVjdCB2YWw7CiAgIEVN QUNTX0lOVCBpMSwgaTI7CkBAIC0yODQwLDkgKzI4NDIsOSBAQAogICAgICAgIGRvYzogLyog UmV0dXJuIFZBTFVFIHdpdGggaXRzIGJpdHMgc2hpZnRlZCBsZWZ0IGJ5IENPVU5ULgogSWYg Q09VTlQgaXMgbmVnYXRpdmUsIHNoaWZ0aW5nIGlzIGFjdHVhbGx5IHRvIHRoZSByaWdodC4K IEluIHRoaXMgY2FzZSwgdGhlIHNpZ24gYml0IGlzIGR1cGxpY2F0ZWQuICAqLykKLSAgKHJl Z2lzdGVyIExpc3BfT2JqZWN0IHZhbHVlLCBMaXNwX09iamVjdCBjb3VudCkKKyAgKExpc3Bf T2JqZWN0IHZhbHVlLCBMaXNwX09iamVjdCBjb3VudCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9P YmplY3QgdmFsOworICBMaXNwX09iamVjdCB2YWw7CiAKICAgQ0hFQ0tfTlVNQkVSICh2YWx1 ZSk7CiAgIENIRUNLX05VTUJFUiAoY291bnQpOwpAQCAtMjg2Miw5ICsyODY0LDkgQEAKICAg ICAgICBkb2M6IC8qIFJldHVybiBWQUxVRSB3aXRoIGl0cyBiaXRzIHNoaWZ0ZWQgbGVmdCBi eSBDT1VOVC4KIElmIENPVU5UIGlzIG5lZ2F0aXZlLCBzaGlmdGluZyBpcyBhY3R1YWxseSB0 byB0aGUgcmlnaHQuCiBJbiB0aGlzIGNhc2UsIHplcm9zIGFyZSBzaGlmdGVkIGluIG9uIHRo ZSBsZWZ0LiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCB2YWx1ZSwgTGlzcF9PYmpl Y3QgY291bnQpCisgIChMaXNwX09iamVjdCB2YWx1ZSwgTGlzcF9PYmplY3QgY291bnQpCiB7 Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKKyAgTGlzcF9PYmplY3QgdmFsOwogCiAg IENIRUNLX05VTUJFUiAodmFsdWUpOwogICBDSEVDS19OVU1CRVIgKGNvdW50KTsKQEAgLTI4 ODMsNyArMjg4NSw3IEBACiBERUZVTiAoIjErIiwgRmFkZDEsIFNhZGQxLCAxLCAxLCAwLAog ICAgICAgIGRvYzogLyogUmV0dXJuIE5VTUJFUiBwbHVzIG9uZS4gIE5VTUJFUiBtYXkgYmUg YSBudW1iZXIgb3IgYSBtYXJrZXIuCiBNYXJrZXJzIGFyZSBjb252ZXJ0ZWQgdG8gaW50ZWdl cnMuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IG51bWJlcikKKyAgKExpc3BfT2Jq ZWN0IG51bWJlcikKIHsKICAgQ0hFQ0tfTlVNQkVSX09SX0ZMT0FUX0NPRVJDRV9NQVJLRVIg KG51bWJlcik7CiAKQEAgLTI4OTcsNyArMjg5OSw3IEBACiBERUZVTiAoIjEtIiwgRnN1YjEs IFNzdWIxLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIE5VTUJFUiBtaW51cyBv bmUuICBOVU1CRVIgbWF5IGJlIGEgbnVtYmVyIG9yIGEgbWFya2VyLgogTWFya2VycyBhcmUg Y29udmVydGVkIHRvIGludGVnZXJzLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBu dW1iZXIpCisgIChMaXNwX09iamVjdCBudW1iZXIpCiB7CiAgIENIRUNLX05VTUJFUl9PUl9G TE9BVF9DT0VSQ0VfTUFSS0VSIChudW1iZXIpOwogCkBAIC0yOTEwLDcgKzI5MTIsNyBAQAog CiBERUZVTiAoImxvZ25vdCIsIEZsb2dub3QsIFNsb2dub3QsIDEsIDEsIDAsCiAgICAgICAg ZG9jOiAvKiBSZXR1cm4gdGhlIGJpdHdpc2UgY29tcGxlbWVudCBvZiBOVU1CRVIuICBOVU1C RVIgbXVzdCBiZSBhbiBpbnRlZ2VyLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBu dW1iZXIpCisgIChMaXNwX09iamVjdCBudW1iZXIpCiB7CiAgIENIRUNLX05VTUJFUiAobnVt YmVyKTsKICAgWFNFVElOVCAobnVtYmVyLCB+WElOVCAobnVtYmVyKSk7Cgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3JjL2RpcmVkLmMnCi0tLSBzcmMvZGlyZWQuYwkyMDEyLTA0LTIyIDAwOjUz OjMyICswMDAwCisrKyBzcmMvZGlyZWQuYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBA IC03ODcsNyArNzg3LDcgQEAKIHN0YXRpYyBwdHJkaWZmX3QKIHNjbXAgKGNvbnN0IGNoYXIg KnMxLCBjb25zdCBjaGFyICpzMiwgcHRyZGlmZl90IGxlbikKIHsKLSAgcmVnaXN0ZXIgcHRy ZGlmZl90IGwgPSBsZW47CisgIHB0cmRpZmZfdCBsID0gbGVuOwogCiAgIGlmIChjb21wbGV0 aW9uX2lnbm9yZV9jYXNlKQogICAgIHsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZGlzcG5l dy5jJwotLS0gc3JjL2Rpc3BuZXcuYwkyMDEyLTA1LTMwIDE5OjIzOjM3ICswMDAwCisrKyBz cmMvZGlzcG5ldy5jCTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTg0OCw3ICs4NDgs NyBAQAogICAgY3VycmVudCBtYXRyaXguICAqLwogCiB2b2lkCi1jbGVhcl9jdXJyZW50X21h dHJpY2VzIChyZWdpc3RlciBzdHJ1Y3QgZnJhbWUgKmYpCitjbGVhcl9jdXJyZW50X21hdHJp Y2VzIChzdHJ1Y3QgZnJhbWUgKmYpCiB7CiAgIC8qIENsZWFyIGZyYW1lIGN1cnJlbnQgbWF0 cml4LCBpZiB3ZSBoYXZlIG9uZS4gICovCiAgIGlmIChmLT5jdXJyZW50X21hdHJpeCkKQEAg LTg3Myw3ICs4NzMsNyBAQAogLyogQ2xlYXIgb3V0IGFsbCBkaXNwbGF5IGxpbmVzIG9mIEYg Zm9yIGEgY29taW5nIHJlZGlzcGxheS4gICovCiAKIHZvaWQKLWNsZWFyX2Rlc2lyZWRfbWF0 cmljZXMgKHJlZ2lzdGVyIHN0cnVjdCBmcmFtZSAqZikKK2NsZWFyX2Rlc2lyZWRfbWF0cmlj ZXMgKHN0cnVjdCBmcmFtZSAqZikKIHsKICAgaWYgKGYtPmRlc2lyZWRfbWF0cml4KQogICAg IGNsZWFyX2dseXBoX21hdHJpeCAoZi0+ZGVzaXJlZF9tYXRyaXgpOwpAQCAtNDg4OSw3ICs0 ODg5LDcgQEAKICAgaW50ICpuZXdfaGFzaCA9IChpbnQgKikgYWxsb2NhIChGUkFNRV9MSU5F UyAoZnJhbWUpICogc2l6ZW9mIChpbnQpKTsKICAgaW50ICpkcmF3X2Nvc3QgPSAoaW50ICop IGFsbG9jYSAoRlJBTUVfTElORVMgKGZyYW1lKSAqIHNpemVvZiAoaW50KSk7CiAgIGludCAq b2xkX2RyYXdfY29zdCA9IChpbnQgKikgYWxsb2NhIChGUkFNRV9MSU5FUyAoZnJhbWUpICog c2l6ZW9mIChpbnQpKTsKLSAgcmVnaXN0ZXIgaW50IGk7CisgIGludCBpOwogICBpbnQgZnJl ZV9hdF9lbmRfdnBvcyA9IEZSQU1FX0xJTkVTIChmcmFtZSk7CiAgIHN0cnVjdCBnbHlwaF9t YXRyaXggKmN1cnJlbnRfbWF0cml4ID0gZnJhbWUtPmN1cnJlbnRfbWF0cml4OwogICBzdHJ1 Y3QgZ2x5cGhfbWF0cml4ICpkZXNpcmVkX21hdHJpeCA9IGZyYW1lLT5kZXNpcmVkX21hdHJp eDsKQEAgLTU3MjQsNyArNTcyNCw4IEBACiAgICBzYWZlIHRvIGNoYW5nZSBmcmFtZSBzaXpl cyB3aGlsZSBhIHJlZGlzcGxheSBpcyBpbiBwcm9ncmVzcy4gICovCiAKIHZvaWQKLWNoYW5n ZV9mcmFtZV9zaXplIChyZWdpc3RlciBzdHJ1Y3QgZnJhbWUgKmYsIGludCBuZXdoZWlnaHQs IGludCBuZXd3aWR0aCwgaW50IHByZXRlbmQsIGludCBkZWxheSwgaW50IHNhZmUpCitjaGFu Z2VfZnJhbWVfc2l6ZSAoc3RydWN0IGZyYW1lICpmLCBpbnQgbmV3aGVpZ2h0LCBpbnQgbmV3 d2lkdGgsCisJCSAgIGludCBwcmV0ZW5kLCBpbnQgZGVsYXksIGludCBzYWZlKQogewogICBM aXNwX09iamVjdCB0YWlsLCBmcmFtZTsKIApAQCAtNTc0Myw3ICs1NzQ0LDggQEAKIH0KIAog c3RhdGljIHZvaWQKLWNoYW5nZV9mcmFtZV9zaXplXzEgKHJlZ2lzdGVyIHN0cnVjdCBmcmFt ZSAqZiwgaW50IG5ld2hlaWdodCwgaW50IG5ld3dpZHRoLCBpbnQgcHJldGVuZCwgaW50IGRl bGF5LCBpbnQgc2FmZSkKK2NoYW5nZV9mcmFtZV9zaXplXzEgKHN0cnVjdCBmcmFtZSAqZiwg aW50IG5ld2hlaWdodCwgaW50IG5ld3dpZHRoLAorCQkgICAgIGludCBwcmV0ZW5kLCBpbnQg ZGVsYXksIGludCBzYWZlKQogewogICBpbnQgbmV3X2ZyYW1lX3RvdGFsX2NvbHM7CiAgIHB0 cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAn c3JjL2RvYy5jJwotLS0gc3JjL2RvYy5jCTIwMTItMDUtMzEgMDY6MDY6NDIgKzAwMDAKKysr IHNyYy9kb2MuYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC04Myw5ICs4Myw5IEBA CiBnZXRfZG9jX3N0cmluZyAoTGlzcF9PYmplY3QgZmlsZXBvcywgaW50IHVuaWJ5dGUsIGlu dCBkZWZpbml0aW9uKQogewogICBjaGFyICpmcm9tLCAqdG87Ci0gIHJlZ2lzdGVyIGludCBm ZDsKLSAgcmVnaXN0ZXIgY2hhciAqbmFtZTsKLSAgcmVnaXN0ZXIgY2hhciAqcCwgKnAxOwor ICBpbnQgZmQ7CisgIGNoYXIgKm5hbWU7CisgIGNoYXIgKnAsICpwMTsKICAgcHRyZGlmZl90 IG1pbnNpemU7CiAgIGludCBvZmZzZXQ7CiAgIEVNQUNTX0lOVCBwb3NpdGlvbjsKQEAgLTU2 NCw5ICs1NjQsOSBAQAogewogICBpbnQgZmQ7CiAgIGNoYXIgYnVmWzEwMjQgKyAxXTsKLSAg cmVnaXN0ZXIgaW50IGZpbGxlZDsKLSAgcmVnaXN0ZXIgRU1BQ1NfSU5UIHBvczsKLSAgcmVn aXN0ZXIgY2hhciAqcDsKKyAgaW50IGZpbGxlZDsKKyAgRU1BQ1NfSU5UIHBvczsKKyAgY2hh ciAqcDsKICAgTGlzcF9PYmplY3Qgc3ltOwogICBjaGFyICpuYW1lOwogICBpbnQgc2tpcF9m aWxlID0gMDsKQEAgLTYyNSw3ICs2MjUsNyBAQAogICBwb3MgPSAwOwogICB3aGlsZSAoMSkK ICAgICB7Ci0gICAgICByZWdpc3RlciBjaGFyICplbmQ7CisgICAgICBjaGFyICplbmQ7CiAg ICAgICBpZiAoZmlsbGVkIDwgNTEyKQogCWZpbGxlZCArPSBlbWFjc19yZWFkIChmZCwgJmJ1 ZltmaWxsZWRdLCBzaXplb2YgYnVmIC0gMSAtIGZpbGxlZCk7CiAgICAgICBpZiAoIWZpbGxl ZCkKQEAgLTcyNiw4ICs3MjYsOCBAQAogewogICBjaGFyICpidWY7CiAgIGludCBjaGFuZ2Vk ID0gMDsKLSAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqc3RycDsKLSAgcmVnaXN0ZXIgY2hh ciAqYnVmcDsKKyAgdW5zaWduZWQgY2hhciAqc3RycDsKKyAgY2hhciAqYnVmcDsKICAgcHRy ZGlmZl90IGlkeDsKICAgcHRyZGlmZl90IGJzaXplOwogICBMaXNwX09iamVjdCB0ZW07Cgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2RvcHJudC5jJwotLS0gc3JjL2RvcHJudC5jCTIwMTIt MDItMTAgMTg6NTg6NDggKzAwMDAKKysrIHNyYy9kb3BybnQuYwkyMDEyLTA2LTAzIDA1OjUz OjM4ICswMDAwCkBAIC0xMzYsNyArMTM2LDcgQEAKIAljb25zdCBjaGFyICpmb3JtYXRfZW5k LCB2YV9saXN0IGFwKQogewogICBjb25zdCBjaGFyICpmbXQgPSBmb3JtYXQ7CS8qIFBvaW50 ZXIgaW50byBmb3JtYXQgc3RyaW5nICovCi0gIHJlZ2lzdGVyIGNoYXIgKmJ1ZnB0ciA9IGJ1 ZmZlcjsgLyogUG9pbnRlciBpbnRvIG91dHB1dCBidWZmZXIuLiAqLworICBjaGFyICpidWZw dHIgPSBidWZmZXI7IC8qIFBvaW50ZXIgaW50byBvdXRwdXQgYnVmZmVyLi4gKi8KIAogICAv KiBVc2UgdGhpcyBmb3Igc3ByaW50ZiB1bmxlc3Mgd2UgbmVlZCBzb21ldGhpbmcgcmVhbGx5 IGJpZy4gICovCiAgIGNoYXIgdGVtYnVmW0RCTF9NQVhfMTBfRVhQICsgMTAwXTsKQEAgLTE1 MCw3ICsxNTAsNyBAQAogICAvKiBCdWZmZXIgd2UgaGF2ZSBnb3Qgd2l0aCBtYWxsb2MuICAq LwogICBjaGFyICpiaWdfYnVmZmVyID0gTlVMTDsKIAotICByZWdpc3RlciBzaXplX3QgdGVt OworICBzaXplX3QgdGVtOwogICBjaGFyICpzdHJpbmc7CiAgIGNoYXIgZml4ZWRfYnVmZmVy WzIwXTsJLyogRGVmYXVsdCBidWZmZXIgZm9yIHNtYWxsIGZvcm1hdHRpbmcuICovCiAgIGNo YXIgKmZtdGNweTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZWRpdGZucy5jJwotLS0gc3Jj L2VkaXRmbnMuYwkyMDEyLTA1LTI1IDE5OjI0OjU0ICswMDAwCisrKyBzcmMvZWRpdGZucy5j CTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTk1LDcgKzk1LDcgQEAKIGluaXRfZWRp dGZucyAodm9pZCkKIHsKICAgY29uc3QgY2hhciAqdXNlcl9uYW1lOwotICByZWdpc3RlciBj aGFyICpwOworICBjaGFyICpwOwogICBzdHJ1Y3QgcGFzc3dkICpwdzsJLyogcGFzc3dvcmQg ZW50cnkgZm9yIHRoZSBjdXJyZW50IHVzZXIgKi8KICAgTGlzcF9PYmplY3QgdGVtOwogCkBA IC0xOTIsOSArMTkyLDkgQEAKIAogREVGVU4gKCJzdHJpbmctdG8tY2hhciIsIEZzdHJpbmdf dG9fY2hhciwgU3N0cmluZ190b19jaGFyLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0 dXJuIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gU1RSSU5HLiAgKi8pCi0gIChyZWdpc3RlciBM aXNwX09iamVjdCBzdHJpbmcpCisgIChMaXNwX09iamVjdCBzdHJpbmcpCiB7Ci0gIHJlZ2lz dGVyIExpc3BfT2JqZWN0IHZhbDsKKyAgTGlzcF9PYmplY3QgdmFsOwogICBDSEVDS19TVFJJ TkcgKHN0cmluZyk7CiAgIGlmIChTQ0hBUlMgKHN0cmluZykpCiAgICAgewpAQCAtMjExLDcg KzIxMSw3IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIGJ1aWxkbWFyayAocHRyZGlmZl90IGNo YXJwb3MsIHB0cmRpZmZfdCBieXRlcG9zKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCBt YXJrOworICBMaXNwX09iamVjdCBtYXJrOwogICBtYXJrID0gRm1ha2VfbWFya2VyICgpOwog ICBzZXRfbWFya2VyX2JvdGggKG1hcmssIFFuaWwsIGNoYXJwb3MsIGJ5dGVwb3MpOwogICBy ZXR1cm4gbWFyazsKQEAgLTIzOSw3ICsyMzksNyBAQAogQmVnaW5uaW5nIG9mIGJ1ZmZlciBp cyBwb3NpdGlvbiAocG9pbnQtbWluKSwgZW5kIGlzIChwb2ludC1tYXgpLgogCiBUaGUgcmV0 dXJuIHZhbHVlIGlzIFBPU0lUSU9OLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBw b3NpdGlvbikKKyAgKExpc3BfT2JqZWN0IHBvc2l0aW9uKQogewogICBwdHJkaWZmX3QgcG9z OwogCkBAIC0zNzMsNyArMzczLDcgQEAKICAgIHdpbmRvdy1zcGVjaWZpYyBvdmVybGF5cyBh cmUgY29uc2lkZXJlZCBvbmx5IGlmIHRoZXkgYXJlIGFzc29jaWF0ZWQKICAgIHdpdGggT0JK RUNULiAqLwogTGlzcF9PYmplY3QKLWdldF9wb3NfcHJvcGVydHkgKExpc3BfT2JqZWN0IHBv c2l0aW9uLCByZWdpc3RlciBMaXNwX09iamVjdCBwcm9wLCBMaXNwX09iamVjdCBvYmplY3Qp CitnZXRfcG9zX3Byb3BlcnR5IChMaXNwX09iamVjdCBwb3NpdGlvbiwgTGlzcF9PYmplY3Qg cHJvcCwgTGlzcF9PYmplY3Qgb2JqZWN0KQogewogICBDSEVDS19OVU1CRVJfQ09FUkNFX01B UktFUiAocG9zaXRpb24pOwogCkBAIC05NTAsNyArOTUwLDcgQEAKIHVzYWdlOiAoc2F2ZS1l eGN1cnNpb24gJnJlc3QgQk9EWSkgICovKQogICAoTGlzcF9PYmplY3QgYXJncykKIHsKLSAg cmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsOworICBMaXNwX09iamVjdCB2YWw7CiAgIHB0cmRp ZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAKICAgcmVjb3JkX3Vud2luZF9wcm90 ZWN0IChzYXZlX2V4Y3Vyc2lvbl9yZXN0b3JlLCBzYXZlX2V4Y3Vyc2lvbl9zYXZlICgpKTsK QEAgLTExNDYsNyArMTE0Niw3IEBACiBJZiBQT1MgaXMgb3V0IG9mIHJhbmdlLCB0aGUgdmFs dWUgaXMgbmlsLiAgKi8pCiAgIChMaXNwX09iamVjdCBwb3MpCiB7Ci0gIHJlZ2lzdGVyIHB0 cmRpZmZfdCBwb3NfYnl0ZTsKKyAgcHRyZGlmZl90IHBvc19ieXRlOwogCiAgIGlmIChOSUxQ IChwb3MpKQogICAgIHsKQEAgLTExNzgsOCArMTE3OCw4IEBACiBJZiBQT1MgaXMgb3V0IG9m IHJhbmdlLCB0aGUgdmFsdWUgaXMgbmlsLiAgKi8pCiAgIChMaXNwX09iamVjdCBwb3MpCiB7 Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IHBv c19ieXRlOworICBMaXNwX09iamVjdCB2YWw7CisgIHB0cmRpZmZfdCBwb3NfYnl0ZTsKIAog ICBpZiAoTklMUCAocG9zKSkKICAgICB7CkBAIC0xMjkxLDcgKzEyOTEsNyBAQAogICAoTGlz cF9PYmplY3QgdWlkKQogewogICBzdHJ1Y3QgcGFzc3dkICpwdzsKLSAgcmVnaXN0ZXIgY2hh ciAqcCwgKnE7CisgIGNoYXIgKnAsICpxOwogICBMaXNwX09iamVjdCBmdWxsOwogCiAgIGlm IChOSUxQICh1aWQpKQpAQCAtMTMyNyw3ICsxMzI3LDcgQEAKICAgLyogU3Vic3RpdHV0ZSB0 aGUgbG9naW4gbmFtZSBmb3IgdGhlICYsIHVwY2FzaW5nIHRoZSBmaXJzdCBjaGFyYWN0ZXIu ICAqLwogICBpZiAocSkKICAgICB7Ci0gICAgICByZWdpc3RlciBjaGFyICpyOworICAgICAg Y2hhciAqcjsKICAgICAgIExpc3BfT2JqZWN0IGxvZ2luOwogCiAgICAgICBsb2dpbiA9IEZ1 c2VyX2xvZ2luX25hbWUgKG1ha2VfbnVtYmVyIChwdy0+cHdfdWlkKSk7CkBAIC0yMTg1LDcg KzIxODUsNyBAQAogCQkJIGludCBpbmhlcml0LCBwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2Jq ZWN0ICphcmdzKQogewogICBwdHJkaWZmX3QgYXJnbnVtOwotICByZWdpc3RlciBMaXNwX09i amVjdCB2YWw7CisgIExpc3BfT2JqZWN0IHZhbDsKIAogICBmb3IgKGFyZ251bSA9IDA7IGFy Z251bSA8IG5hcmdzOyBhcmdudW0rKykKICAgICB7CkBAIC0yMzE3LDcgKzIzMTcsNyBAQAog ICAoTGlzcF9PYmplY3QgY2hhcmFjdGVyLCBMaXNwX09iamVjdCBjb3VudCwgTGlzcF9PYmpl Y3QgaW5oZXJpdCkKIHsKICAgaW50IGksIHN0cmluZ2xlbjsKLSAgcmVnaXN0ZXIgcHRyZGlm Zl90IG47CisgIHB0cmRpZmZfdCBuOwogICBpbnQgYywgbGVuOwogICB1bnNpZ25lZCBjaGFy IHN0cltNQVhfTVVMVElCWVRFX0xFTkdUSF07CiAgIGNoYXIgc3RyaW5nWzQwMDBdOwpAQCAt MjQ5MCw3ICsyNDkwLDcgQEAKIHVzZSBgYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVz JyBpbnN0ZWFkLiAgKi8pCiAgIChMaXNwX09iamVjdCBzdGFydCwgTGlzcF9PYmplY3QgZW5k KQogewotICByZWdpc3RlciBwdHJkaWZmX3QgYiwgZTsKKyAgcHRyZGlmZl90IGIsIGU7CiAK ICAgdmFsaWRhdGVfcmVnaW9uICgmc3RhcnQsICZlbmQpOwogICBiID0gWElOVCAoc3RhcnQp OwpAQCAtMjUwNiw3ICsyNTA2LDcgQEAKIHRoZXkgY2FuIGJlIGluIGVpdGhlciBvcmRlci4g ICovKQogICAoTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2JqZWN0IGVuZCkKIHsKLSAgcmVn aXN0ZXIgcHRyZGlmZl90IGIsIGU7CisgIHB0cmRpZmZfdCBiLCBlOwogCiAgIHZhbGlkYXRl X3JlZ2lvbiAoJnN0YXJ0LCAmZW5kKTsKICAgYiA9IFhJTlQgKHN0YXJ0KTsKQEAgLTI1MzIs OCArMjUzMiw4IEBACiBUaGV5IGRlZmF1bHQgdG8gdGhlIHZhbHVlcyBvZiAocG9pbnQtbWlu KSBhbmQgKHBvaW50LW1heCkgaW4gQlVGRkVSLiAgKi8pCiAgIChMaXNwX09iamVjdCBidWZm ZXIsIExpc3BfT2JqZWN0IHN0YXJ0LCBMaXNwX09iamVjdCBlbmQpCiB7Ci0gIHJlZ2lzdGVy IEVNQUNTX0lOVCBiLCBlLCB0ZW1wOwotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpicCwg Km9idWY7CisgIEVNQUNTX0lOVCBiLCBlLCB0ZW1wOworICBzdHJ1Y3QgYnVmZmVyICpicCwg Km9idWY7CiAgIExpc3BfT2JqZWN0IGJ1ZjsKIAogICBidWYgPSBGZ2V0X2J1ZmZlciAoYnVm ZmVyKTsKQEAgLTI1ODUsOSArMjU4NSw5IEBACiBkZXRlcm1pbmVzIHdoZXRoZXIgY2FzZSBp cyBzaWduaWZpY2FudCBvciBpZ25vcmVkLiAgKi8pCiAgIChMaXNwX09iamVjdCBidWZmZXIx LCBMaXNwX09iamVjdCBzdGFydDEsIExpc3BfT2JqZWN0IGVuZDEsIExpc3BfT2JqZWN0IGJ1 ZmZlcjIsIExpc3BfT2JqZWN0IHN0YXJ0MiwgTGlzcF9PYmplY3QgZW5kMikKIHsKLSAgcmVn aXN0ZXIgRU1BQ1NfSU5UIGJlZ3AxLCBlbmRwMSwgYmVncDIsIGVuZHAyLCB0ZW1wOwotICBy ZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpicDEsICpicDI7Ci0gIHJlZ2lzdGVyIExpc3BfT2Jq ZWN0IHRydAorICBFTUFDU19JTlQgYmVncDEsIGVuZHAxLCBiZWdwMiwgZW5kcDIsIHRlbXA7 CisgIHN0cnVjdCBidWZmZXIgKmJwMSwgKmJwMjsKKyAgTGlzcF9PYmplY3QgdHJ0CiAgICAg PSAoIU5JTFAgKEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBjYXNlX2ZvbGRfc2VhcmNoKSkKICAg ICAgICA/IEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBjYXNlX2Nhbm9uX3RhYmxlKSA6IFFuaWwp OwogICBwdHJkaWZmX3QgY2hhcnMgPSAwOwpAQCAtMjc1Miw3ICsyNzUyLDcgQEAKIEJvdGgg Y2hhcmFjdGVycyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIG9mIG11bHRpLWJ5dGUgZm9y bS4gICovKQogICAoTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2JqZWN0IGVuZCwgTGlzcF9P YmplY3QgZnJvbWNoYXIsIExpc3BfT2JqZWN0IHRvY2hhciwgTGlzcF9PYmplY3Qgbm91bmRv KQogewotICByZWdpc3RlciBwdHJkaWZmX3QgcG9zLCBwb3NfYnl0ZSwgc3RvcCwgaSwgbGVu LCBlbmRfYnl0ZTsKKyAgcHRyZGlmZl90IHBvcywgcG9zX2J5dGUsIHN0b3AsIGksIGxlbiwg ZW5kX2J5dGU7CiAgIC8qIEtlZXAgdHJhY2sgb2YgdGhlIGZpcnN0IGNoYW5nZSBpbiB0aGUg YnVmZmVyOgogICAgICBpZiAwIHdlIGhhdmVuJ3QgZm91bmQgaXQgeWV0LgogICAgICBpZiA8 IDAgd2UndmUgZm91bmQgaXQgYW5kIHdlJ3ZlIHJ1biB0aGUgYmVmb3JlLWNoYW5nZS1mdW5j dGlvbi4KQEAgLTI5OTYsMTAgKzI5OTYsMTAgQEAKIFRBQkxFIGlzIGEgc3RyaW5nIG9yIGEg Y2hhci10YWJsZTsgdGhlIE50aCBjaGFyYWN0ZXIgaW4gaXQgaXMgdGhlCiBtYXBwaW5nIGZv ciB0aGUgY2hhcmFjdGVyIHdpdGggY29kZSBOLgogSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9m IGNoYXJhY3RlcnMgY2hhbmdlZC4gICovKQotICAoTGlzcF9PYmplY3Qgc3RhcnQsIExpc3Bf T2JqZWN0IGVuZCwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFibGUpCisgIChMaXNwX09iamVj dCBzdGFydCwgTGlzcF9PYmplY3QgZW5kLCBMaXNwX09iamVjdCB0YWJsZSkKIHsKLSAgcmVn aXN0ZXIgdW5zaWduZWQgY2hhciAqdHQ7CS8qIFRyYW5zIHRhYmxlLiAqLwotICByZWdpc3Rl ciBpbnQgbmM7CQkvKiBOZXcgY2hhcmFjdGVyLiAqLworICB1bnNpZ25lZCBjaGFyICp0dDsJ LyogVHJhbnMgdGFibGUuICovCisgIGludCBuYzsJCS8qIE5ldyBjaGFyYWN0ZXIuICovCiAg IGludCBjbnQ7CQkJLyogTnVtYmVyIG9mIGNoYW5nZXMgbWFkZS4gKi8KICAgcHRyZGlmZl90 IHNpemU7CQkvKiBTaXplIG9mIHRyYW5zbGF0ZSB0YWJsZS4gKi8KICAgcHRyZGlmZl90IHBv cywgcG9zX2J5dGUsIGVuZF9wb3M7CkBAIC0zMDMzLDcgKzMwMzMsNyBAQAogICBjbnQgPSAw OwogICBmb3IgKDsgcG9zIDwgZW5kX3BvczsgKQogICAgIHsKLSAgICAgIHJlZ2lzdGVyIHVu c2lnbmVkIGNoYXIgKnAgPSBCWVRFX1BPU19BRERSIChwb3NfYnl0ZSk7CisgICAgICB1bnNp Z25lZCBjaGFyICpwID0gQllURV9QT1NfQUREUiAocG9zX2J5dGUpOwogICAgICAgdW5zaWdu ZWQgY2hhciAqc3RyLCBidWZbTUFYX01VTFRJQllURV9MRU5HVEhdOwogICAgICAgaW50IGxl biwgc3RyX2xlbjsKICAgICAgIGludCBvYzsKQEAgLTMxOTksNyArMzE5OSw3IEBACiAKIFdo ZW4gY2FsbGluZyBmcm9tIGEgcHJvZ3JhbSwgcGFzcyB0d28gYXJndW1lbnRzOyBwb3NpdGlv bnMgKGludGVnZXJzCiBvciBtYXJrZXJzKSBib3VuZGluZyB0aGUgdGV4dCB0aGF0IHNob3Vs ZCByZW1haW4gdmlzaWJsZS4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3RhcnQs IExpc3BfT2JqZWN0IGVuZCkKKyAgKExpc3BfT2JqZWN0IHN0YXJ0LCBMaXNwX09iamVjdCBl bmQpCiB7CiAgIENIRUNLX05VTUJFUl9DT0VSQ0VfTUFSS0VSIChzdGFydCk7CiAgIENIRUNL X05VTUJFUl9DT0VSQ0VfTUFSS0VSIChlbmQpOwpAQCAtMzMzNyw3ICszMzM3LDcgQEAKIHVz YWdlOiAoc2F2ZS1yZXN0cmljdGlvbiAmcmVzdCBCT0RZKSAgKi8pCiAgIChMaXNwX09iamVj dCBib2R5KQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWw7CisgIExpc3BfT2JqZWN0 IHZhbDsKICAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKIAogICByZWNv cmRfdW53aW5kX3Byb3RlY3QgKHNhdmVfcmVzdHJpY3Rpb25fcmVzdG9yZSwgc2F2ZV9yZXN0 cmljdGlvbl9zYXZlICgpKTsKQEAgLTMzNzksNyArMzM3OSw3IEBACiAgICAgfQogICBlbHNl CiAgICAgewotICAgICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsOworICAgICAgTGlzcF9P YmplY3QgdmFsOwogICAgICAgdmFsID0gRmZvcm1hdCAobmFyZ3MsIGFyZ3MpOwogICAgICAg bWVzc2FnZTMgKHZhbCwgU0JZVEVTICh2YWwpLCBTVFJJTkdfTVVMVElCWVRFICh2YWwpKTsK ICAgICAgIHJldHVybiB2YWw7CkBAIC0zNDA1LDcgKzM0MDUsNyBAQAogICAgIH0KICAgZWxz ZQogICAgIHsKLSAgICAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKKyAgICAgIExpc3Bf T2JqZWN0IHZhbDsKICAgICAgIHZhbCA9IEZmb3JtYXQgKG5hcmdzLCBhcmdzKTsKICNpZmRl ZiBIQVZFX01FTlVTCiAgICAgICAvKiBUaGUgTVMtRE9TIGZyYW1lcyBzdXBwb3J0IHBvcHVw IG1lbnVzIGV2ZW4gdGhvdWdoIHRoZXkgYXJlCkBAIC0zNTYwLDcgKzM1NjAsNyBAQAogICBw dHJkaWZmX3QgbWF4X2J1ZnNpemUgPSBTVFJJTkdfQllURVNfQk9VTkQgKyAxOwogICBjaGFy ICpwOwogICBMaXNwX09iamVjdCBidWZfc2F2ZV92YWx1ZSBJRl9MSU5UICg9IHswfSk7Ci0g IHJlZ2lzdGVyIGNoYXIgKmZvcm1hdCwgKmVuZCwgKmZvcm1hdF9zdGFydDsKKyAgY2hhciAq Zm9ybWF0LCAqZW5kLCAqZm9ybWF0X3N0YXJ0OwogICBwdHJkaWZmX3QgZm9ybWF0bGVuLCBu Y2hhcnM7CiAgIC8qIE5vbnplcm8gaWYgdGhlIGZvcm1hdCBpcyBtdWx0aWJ5dGUuICAqLwog ICBpbnQgbXVsdGlieXRlX2Zvcm1hdCA9IDA7CkBAIC00MzE0LDcgKzQzMTQsNyBAQAogICAg ICAgIGRvYzogLyogUmV0dXJuIHQgaWYgdHdvIGNoYXJhY3RlcnMgbWF0Y2gsIG9wdGlvbmFs bHkgaWdub3JpbmcgY2FzZS4KIEJvdGggYXJndW1lbnRzIG11c3QgYmUgY2hhcmFjdGVycyAo aS5lLiBpbnRlZ2VycykuCiBDYXNlIGlzIGlnbm9yZWQgaWYgYGNhc2UtZm9sZC1zZWFyY2gn IGlzIG5vbi1uaWwgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLiAgKi8pCi0gIChyZWdpc3RlciBM aXNwX09iamVjdCBjMSwgTGlzcF9PYmplY3QgYzIpCisgIChMaXNwX09iamVjdCBjMSwgTGlz cF9PYmplY3QgYzIpCiB7CiAgIGludCBpMSwgaTI7CiAgIC8qIENoZWNrIHRoZXkncmUgY2hh cnMsIG5vdCBqdXN0IGludGVnZXJzLCBvdGhlcndpc2Ugd2UgY291bGQgZ2V0IGFycmF5CkBA IC00MzYzLDggKzQzNjMsOCBAQAogCQkgICBwdHJkaWZmX3Qgc3RhcnQxX2J5dGUsIHB0cmRp ZmZfdCBlbmQxX2J5dGUsCiAJCSAgIHB0cmRpZmZfdCBzdGFydDJfYnl0ZSwgcHRyZGlmZl90 IGVuZDJfYnl0ZSkKIHsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGFtdDEsIGFtdDFfYnl0ZSwg YW10MiwgYW10Ml9ieXRlLCBkaWZmLCBkaWZmX2J5dGUsIG1wb3M7Ci0gIHJlZ2lzdGVyIHN0 cnVjdCBMaXNwX01hcmtlciAqbWFya2VyOworICBwdHJkaWZmX3QgYW10MSwgYW10MV9ieXRl LCBhbXQyLCBhbXQyX2J5dGUsIGRpZmYsIGRpZmZfYnl0ZSwgbXBvczsKKyAgc3RydWN0IExp c3BfTWFya2VyICptYXJrZXI7CiAKICAgLyogVXBkYXRlIHBvaW50IGFzIGlmIGl0IHdlcmUg YSBtYXJrZXIuICAqLwogICBpZiAoUFQgPCBzdGFydDEpCkBAIC00NDM3LDcgKzQ0MzcsNyBA QAogVHJhbnNwb3NpbmcgYmV5b25kIGJ1ZmZlciBib3VuZGFyaWVzIGlzIGFuIGVycm9yLiAg Ki8pCiAgIChMaXNwX09iamVjdCBzdGFydHIxLCBMaXNwX09iamVjdCBlbmRyMSwgTGlzcF9P YmplY3Qgc3RhcnRyMiwgTGlzcF9PYmplY3QgZW5kcjIsIExpc3BfT2JqZWN0IGxlYXZlX21h cmtlcnMpCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBzdGFydDEsIGVuZDEsIHN0YXJ0Miwg ZW5kMjsKKyAgcHRyZGlmZl90IHN0YXJ0MSwgZW5kMSwgc3RhcnQyLCBlbmQyOwogICBwdHJk aWZmX3Qgc3RhcnQxX2J5dGUsIHN0YXJ0Ml9ieXRlLCBsZW4xX2J5dGUsIGxlbjJfYnl0ZTsK ICAgcHRyZGlmZl90IGdhcCwgbGVuMSwgbGVuX21pZCwgbGVuMjsKICAgdW5zaWduZWQgY2hh ciAqc3RhcnQxX2FkZHIsICpzdGFydDJfYWRkciwgKnRlbXA7CkBAIC00NDYwLDcgKzQ0NjAs NyBAQAogICAvKiBTd2FwIHRoZSByZWdpb25zIGlmIHRoZXkncmUgcmV2ZXJzZWQuICAqLwog ICBpZiAoc3RhcnQyIDwgZW5kMSkKICAgICB7Ci0gICAgICByZWdpc3RlciBwdHJkaWZmX3Qg Z2x1bXBoID0gc3RhcnQxOworICAgICAgcHRyZGlmZl90IGdsdW1waCA9IHN0YXJ0MTsKICAg ICAgIHN0YXJ0MSA9IHN0YXJ0MjsKICAgICAgIHN0YXJ0MiA9IGdsdW1waDsKICAgICAgIGds dW1waCA9IGVuZDE7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2VtYWNzLmMnCi0tLSBzcmMv ZW1hY3MuYwkyMDEyLTA1LTMwIDE5OjIzOjM3ICswMDAwCisrKyBzcmMvZW1hY3MuYwkyMDEy LTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC00MDUsNyArNDA1LDcgQEAKIHN0YXRpYyB2b2lk CiBpbml0X2NtZGFyZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndiwgaW50IHNraXBfYXJncykK IHsKLSAgcmVnaXN0ZXIgaW50IGk7CisgIGludCBpOwogICBMaXNwX09iamVjdCBuYW1lLCBk aXIsIGhhbmRsZXI7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAg IExpc3BfT2JqZWN0IHJhd19uYW1lOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9ldmFsLmMn Ci0tLSBzcmMvZXZhbC5jCTIwMTItMDUtMzAgMDM6NTk6NDIgKzAwMDAKKysrIHNyYy9ldmFs LmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMjU0LDcgKzI1NCw3IEBACiB1c2Fn ZTogKG9yIENPTkRJVElPTlMuLi4pICAqLykKICAgKExpc3BfT2JqZWN0IGFyZ3MpCiB7Ci0g IHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbCA9IFFuaWw7CisgIExpc3BfT2JqZWN0IHZhbCA9 IFFuaWw7CiAgIHN0cnVjdCBnY3BybyBnY3BybzE7CiAKICAgR0NQUk8xIChhcmdzKTsKQEAg LTI3OCw3ICsyNzgsNyBAQAogdXNhZ2U6IChhbmQgQ09ORElUSU9OUy4uLikgICovKQogICAo TGlzcF9PYmplY3QgYXJncykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsID0gUXQ7 CisgIExpc3BfT2JqZWN0IHZhbCA9IFF0OwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOwogCiAg IEdDUFJPMSAoYXJncyk7CkBAIC0zMDMsNyArMzAzLDcgQEAKIHVzYWdlOiAoaWYgQ09ORCBU SEVOIEVMU0UuLi4pICAqLykKICAgKExpc3BfT2JqZWN0IGFyZ3MpCiB7Ci0gIHJlZ2lzdGVy IExpc3BfT2JqZWN0IGNvbmQ7CisgIExpc3BfT2JqZWN0IGNvbmQ7CiAgIHN0cnVjdCBnY3By byBnY3BybzE7CiAKICAgR0NQUk8xIChhcmdzKTsKQEAgLTMyNyw3ICszMjcsNyBAQAogdXNh Z2U6IChjb25kIENMQVVTRVMuLi4pICAqLykKICAgKExpc3BfT2JqZWN0IGFyZ3MpCiB7Ci0g IHJlZ2lzdGVyIExpc3BfT2JqZWN0IGNsYXVzZSwgdmFsOworICBMaXNwX09iamVjdCBjbGF1 c2UsIHZhbDsKICAgc3RydWN0IGdjcHJvIGdjcHJvMTsKIAogICB2YWwgPSBRbmlsOwpAQCAt MzU0LDcgKzM1NCw3IEBACiB1c2FnZTogKHByb2duIEJPRFkuLi4pICAqLykKICAgKExpc3Bf T2JqZWN0IGFyZ3MpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbCA9IFFuaWw7Cisg IExpc3BfT2JqZWN0IHZhbCA9IFFuaWw7CiAgIHN0cnVjdCBnY3BybyBnY3BybzE7CiAKICAg R0NQUk8xIChhcmdzKTsKQEAgLTM3Nyw3ICszNzcsNyBAQAogICAoTGlzcF9PYmplY3QgYXJn cykKIHsKICAgTGlzcF9PYmplY3QgdmFsOwotICByZWdpc3RlciBMaXNwX09iamVjdCBhcmdz X2xlZnQ7CisgIExpc3BfT2JqZWN0IGFyZ3NfbGVmdDsKICAgc3RydWN0IGdjcHJvIGdjcHJv MSwgZ2Nwcm8yOwogCiAgIGFyZ3NfbGVmdCA9IGFyZ3M7CkBAIC00MTgsOCArNDE4LDggQEAK IHVzYWdlOiAoc2V0cSBbU1lNIFZBTF0uLi4pICAqLykKICAgKExpc3BfT2JqZWN0IGFyZ3Mp CiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZ3NfbGVmdDsKLSAgcmVnaXN0ZXIgTGlz cF9PYmplY3QgdmFsLCBzeW0sIGxleF9iaW5kaW5nOworICBMaXNwX09iamVjdCBhcmdzX2xl ZnQ7CisgIExpc3BfT2JqZWN0IHZhbCwgc3ltLCBsZXhfYmluZGluZzsKICAgc3RydWN0IGdj cHJvIGdjcHJvMTsKIAogICBpZiAoTklMUCAoYXJncykpCkBAIC02ODAsNyArNjgwLDcgQEAK IHVzYWdlOiAoZGVmdmFyIFNZTUJPTCAmb3B0aW9uYWwgSU5JVFZBTFVFIERPQ1NUUklORykg ICovKQogICAoTGlzcF9PYmplY3QgYXJncykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qg c3ltLCB0ZW0sIHRhaWw7CisgIExpc3BfT2JqZWN0IHN5bSwgdGVtLCB0YWlsOwogCiAgIHN5 bSA9IEZjYXIgKGFyZ3MpOwogICB0YWlsID0gRmNkciAoYXJncyk7CkBAIC03NjcsNyArNzY3 LDcgQEAKIHVzYWdlOiAoZGVmY29uc3QgU1lNQk9MIElOSVRWQUxVRSBbRE9DU1RSSU5HXSkg ICovKQogICAoTGlzcF9PYmplY3QgYXJncykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qg c3ltLCB0ZW07CisgIExpc3BfT2JqZWN0IHN5bSwgdGVtOwogCiAgIHN5bSA9IEZjYXIgKGFy Z3MpOwogICBpZiAoIU5JTFAgKEZjZHIgKEZjZHIgKEZjZHIgKGFyZ3MpKSkpKQpAQCAtODYz LDcgKzg2Myw3IEBACiAgIChMaXNwX09iamVjdCBhcmdzKQogewogICBMaXNwX09iamVjdCAq dGVtcHMsIHRlbSwgbGV4ZW52OwotICByZWdpc3RlciBMaXNwX09iamVjdCBlbHQsIHZhcmxp c3Q7CisgIExpc3BfT2JqZWN0IGVsdCwgdmFybGlzdDsKICAgcHRyZGlmZl90IGNvdW50ID0g U1BFQ1BETF9JTkRFWCAoKTsKICAgcHRyZGlmZl90IGFyZ251bTsKICAgc3RydWN0IGdjcHJv IGdjcHJvMSwgZ2Nwcm8yOwpAQCAtOTU5LDcgKzk1OSw3IEBACiAgIChMaXNwX09iamVjdCBm b3JtLCBMaXNwX09iamVjdCBlbnZpcm9ubWVudCkKIHsKICAgLyogV2l0aCBjbGVhbnVwcyBm cm9tIEhhbGx2YXJkIEZ1cnVzZXRoLiAgKi8KLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgZXhw YW5kZXIsIHN5bSwgZGVmLCB0ZW07CisgIExpc3BfT2JqZWN0IGV4cGFuZGVyLCBzeW0sIGRl ZiwgdGVtOwogCiAgIHdoaWxlICgxKQogICAgIHsKQEAgLTEwMzYsNyArMTAzNiw3IEBACiB1 c2FnZTogKGNhdGNoIFRBRyBCT0RZLi4uKSAgKi8pCiAgIChMaXNwX09iamVjdCBhcmdzKQog ewotICByZWdpc3RlciBMaXNwX09iamVjdCB0YWc7CisgIExpc3BfT2JqZWN0IHRhZzsKICAg c3RydWN0IGdjcHJvIGdjcHJvMTsKIAogICBHQ1BSTzEgKGFyZ3MpOwpAQCAtMTA5Nyw3ICsx MDk3LDcgQEAKIHN0YXRpYyB2b2lkCiB1bndpbmRfdG9fY2F0Y2ggKHN0cnVjdCBjYXRjaHRh ZyAqY2F0Y2gsIExpc3BfT2JqZWN0IHZhbHVlKQogewotICByZWdpc3RlciBpbnQgbGFzdF90 aW1lOworICBpbnQgbGFzdF90aW1lOwogCiAgIC8qIFNhdmUgdGhlIHZhbHVlIGluIHRoZSB0 YWcuICAqLwogICBjYXRjaC0+dmFsID0gdmFsdWU7CkBAIC0xMTQ0LDkgKzExNDQsOSBAQAog REVGVU4gKCJ0aHJvdyIsIEZ0aHJvdywgU3Rocm93LCAyLCAyLCAwLAogICAgICAgIGRvYzog LyogVGhyb3cgdG8gdGhlIGNhdGNoIGZvciBUQUcgYW5kIHJldHVybiBWQUxVRSBmcm9tIGl0 LgogQm90aCBUQUcgYW5kIFZBTFVFIGFyZSBldmFsbGVkLiAgKi8pCi0gIChyZWdpc3RlciBM aXNwX09iamVjdCB0YWcsIExpc3BfT2JqZWN0IHZhbHVlKQorICAoTGlzcF9PYmplY3QgdGFn LCBMaXNwX09iamVjdCB2YWx1ZSkKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IGNhdGNodGFnICpj OworICBzdHJ1Y3QgY2F0Y2h0YWcgKmM7CiAKICAgaWYgKCFOSUxQICh0YWcpKQogICAgIGZv ciAoYyA9IGNhdGNobGlzdDsgYzsgYyA9IGMtPm5leHQpCkBAIC0xMjAyLDcgKzEyMDIsNyBA QAogdXNhZ2U6IChjb25kaXRpb24tY2FzZSBWQVIgQk9EWUZPUk0gJnJlc3QgSEFORExFUlMp ICAqLykKICAgKExpc3BfT2JqZWN0IGFyZ3MpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0 IGJvZHlmb3JtLCBoYW5kbGVyczsKKyAgTGlzcF9PYmplY3QgYm9keWZvcm0sIGhhbmRsZXJz OwogICB2b2xhdGlsZSBMaXNwX09iamVjdCB2YXI7CiAKICAgdmFyICAgICAgPSBGY2FyIChh cmdzKTsKQEAgLTE0ODIsNyArMTQ4Miw3IEBACiAgIExpc3BfT2JqZWN0IHN0cmluZzsKICAg TGlzcF9PYmplY3QgcmVhbF9lcnJvcl9zeW1ib2wKICAgICA9IChOSUxQIChlcnJvcl9zeW1i b2wpID8gRmNhciAoZGF0YSkgOiBlcnJvcl9zeW1ib2wpOwotICByZWdpc3RlciBMaXNwX09i amVjdCBjbGF1c2UgPSBRbmlsOworICBMaXNwX09iamVjdCBjbGF1c2UgPSBRbmlsOwogICBz dHJ1Y3QgaGFuZGxlciAqaDsKICAgc3RydWN0IGJhY2t0cmFjZSAqYnA7CiAKQEAgLTE3Mzks NyArMTczOSw3IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIGZpbmRfaGFuZGxlcl9jbGF1c2Ug KExpc3BfT2JqZWN0IGhhbmRsZXJzLCBMaXNwX09iamVjdCBjb25kaXRpb25zKQogewotICBy ZWdpc3RlciBMaXNwX09iamVjdCBoOworICBMaXNwX09iamVjdCBoOwogCiAgIC8qIHQgaXMg dXNlZCBieSBoYW5kbGVycyBmb3IgYWxsIGNvbmRpdGlvbnMsIHNldCB1cCBieSBDIGNvZGUu ICAqLwogICBpZiAoRVEgKGhhbmRsZXJzLCBRdCkpCkBAIC0xODMxLDggKzE4MzEsOCBAQAog dGhlbiBzdHJpbmdzIGFuZCB2ZWN0b3JzIGFyZSBub3QgYWNjZXB0ZWQuICAqLykKICAgKExp c3BfT2JqZWN0IGZ1bmN0aW9uLCBMaXNwX09iamVjdCBmb3JfY2FsbF9pbnRlcmFjdGl2ZWx5 KQogewotICByZWdpc3RlciBMaXNwX09iamVjdCBmdW47Ci0gIHJlZ2lzdGVyIExpc3BfT2Jq ZWN0IGZ1bmNhcjsKKyAgTGlzcF9PYmplY3QgZnVuOworICBMaXNwX09iamVjdCBmdW5jYXI7 CiAgIExpc3BfT2JqZWN0IGlmX3Byb3AgPSBRbmlsOwogCiAgIGZ1biA9IGZ1bmN0aW9uOwpA QCAtMTkyNSw3ICsxOTI1LDcgQEAKIExpc3BfT2JqZWN0CiB1bl9hdXRvbG9hZCAoTGlzcF9P YmplY3Qgb2xkcXVldWUpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHF1ZXVlLCBmaXJz dCwgc2Vjb25kOworICBMaXNwX09iamVjdCBxdWV1ZSwgZmlyc3QsIHNlY29uZDsKIAogICAv KiBRdWV1ZSB0byB1bndpbmQgaXMgY3VycmVudCB2YWx1ZSBvZiBWYXV0b2xvYWRfcXVldWUu CiAgICAgIG9sZHF1ZXVlIGlzIHRoZSBzaGFkb3dlZCB2YWx1ZSB0byBsZWF2ZSBpbiBWYXV0 b2xvYWRfcXVldWUuICAqLwpAQCAtMjA4Myw3ICsyMDgzLDcgQEAKICAgICAgIExpc3BfT2Jq ZWN0IG51bWFyZ3M7CiAgICAgICBMaXNwX09iamVjdCBhcmd2YWxzWzhdOwogICAgICAgTGlz cF9PYmplY3QgYXJnc19sZWZ0OwotICAgICAgcmVnaXN0ZXIgaW50IGksIG1heGFyZ3M7Cisg ICAgICBpbnQgaSwgbWF4YXJnczsKIAogICAgICAgYXJnc19sZWZ0ID0gb3JpZ2luYWxfYXJn czsKICAgICAgIG51bWFyZ3MgPSBGbGVuZ3RoIChhcmdzX2xlZnQpOwpAQCAtMjIzNSw4ICsy MjM1LDggQEAKIHsKICAgcHRyZGlmZl90IGk7CiAgIEVNQUNTX0lOVCBudW1hcmdzOwotICBy ZWdpc3RlciBMaXNwX09iamVjdCBzcHJlYWRfYXJnOwotICByZWdpc3RlciBMaXNwX09iamVj dCAqZnVuY2FsbF9hcmdzOworICBMaXNwX09iamVjdCBzcHJlYWRfYXJnOworICBMaXNwX09i amVjdCAqZnVuY2FsbF9hcmdzOwogICBMaXNwX09iamVjdCBmdW4sIHJldHZhbDsKICAgc3Ry dWN0IGdjcHJvIGdjcHJvMTsKICAgVVNFX1NBRkVfQUxMT0NBOwpAQCAtMjczMCw3ICsyNzMw LDcgQEAKICAgTGlzcF9PYmplY3QgbGlzcF9udW1hcmdzOwogICBMaXNwX09iamVjdCB2YWw7 CiAgIHN0cnVjdCBiYWNrdHJhY2UgYmFja3RyYWNlOwotICByZWdpc3RlciBMaXNwX09iamVj dCAqaW50ZXJuYWxfYXJnczsKKyAgTGlzcF9PYmplY3QgKmludGVybmFsX2FyZ3M7CiAgIHB0 cmRpZmZfdCBpOwogCiAgIFFVSVQ7CkBAIC0yODg2LDkgKzI4ODYsOSBAQAogICBMaXNwX09i amVjdCBhcmdzX2xlZnQ7CiAgIHB0cmRpZmZfdCBpOwogICBFTUFDU19JTlQgbnVtYXJnczsK LSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgKmFyZ192ZWN0b3I7CisgIExpc3BfT2JqZWN0ICph cmdfdmVjdG9yOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJvMzsKLSAg cmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICBMaXNwX09iamVjdCB0ZW07CiAgIFVTRV9T QUZFX0FMTE9DQTsKIAogICBudW1hcmdzID0gWEZBU1RJTlQgKEZsZW5ndGggKGFyZ3MpKTsK QEAgLTI5MjcsNyArMjkyNyw3IEBACiAKIHN0YXRpYyBMaXNwX09iamVjdAogZnVuY2FsbF9s YW1iZGEgKExpc3BfT2JqZWN0IGZ1biwgcHRyZGlmZl90IG5hcmdzLAotCQlyZWdpc3RlciBM aXNwX09iamVjdCAqYXJnX3ZlY3RvcikKKwkJTGlzcF9PYmplY3QgKmFyZ192ZWN0b3IpCiB7 CiAgIExpc3BfT2JqZWN0IHZhbCwgc3ltc19sZWZ0LCBuZXh0LCBsZXhlbnY7CiAgIHB0cmRp ZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CkBAIC0zMDY5LDcgKzMwNjksNyBAQAog c3RhdGljIHZvaWQKIGdyb3dfc3BlY3BkbCAodm9pZCkKIHsKLSAgcmVnaXN0ZXIgcHRyZGlm Zl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKKyAgcHRyZGlmZl90IGNvdW50ID0gU1BF Q1BETF9JTkRFWCAoKTsKICAgcHRyZGlmZl90IG1heF9zaXplID0gbWluIChtYXhfc3BlY3Bk bF9zaXplLCBQVFJESUZGX01BWCk7CiAgIGlmIChtYXhfc2l6ZSA8PSBzcGVjcGRsX3NpemUp CiAgICAgewpAQCAtMzI4Nyw4ICszMjg3LDggQEAKIFRoZSBkZWJ1Z2dlciBpcyBlbnRlcmVk IHdoZW4gdGhhdCBmcmFtZSBleGl0cywgaWYgdGhlIGZsYWcgaXMgbm9uLW5pbC4gICovKQog ICAoTGlzcF9PYmplY3QgbGV2ZWwsIExpc3BfT2JqZWN0IGZsYWcpCiB7Ci0gIHJlZ2lzdGVy IHN0cnVjdCBiYWNrdHJhY2UgKmJhY2tsaXN0ID0gYmFja3RyYWNlX2xpc3Q7Ci0gIHJlZ2lz dGVyIEVNQUNTX0lOVCBpOworICBzdHJ1Y3QgYmFja3RyYWNlICpiYWNrbGlzdCA9IGJhY2t0 cmFjZV9saXN0OworICBFTUFDU19JTlQgaTsKIAogICBDSEVDS19OVU1CRVIgKGxldmVsKTsK IApAQCAtMzMwOCw3ICszMzA4LDcgQEAKIE91dHB1dCBzdHJlYW0gdXNlZCBpcyB2YWx1ZSBv ZiBgc3RhbmRhcmQtb3V0cHV0Jy4gICovKQogICAodm9pZCkKIHsKLSAgcmVnaXN0ZXIgc3Ry dWN0IGJhY2t0cmFjZSAqYmFja2xpc3QgPSBiYWNrdHJhY2VfbGlzdDsKKyAgc3RydWN0IGJh Y2t0cmFjZSAqYmFja2xpc3QgPSBiYWNrdHJhY2VfbGlzdDsKICAgTGlzcF9PYmplY3QgdGFp bDsKICAgTGlzcF9PYmplY3QgdGVtOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOwpAQCAtMzM3 NSw4ICszMzc1LDggQEAKIElmIE5GUkFNRVMgaXMgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2Yg ZnJhbWVzLCB0aGUgdmFsdWUgaXMgbmlsLiAgKi8pCiAgIChMaXNwX09iamVjdCBuZnJhbWVz KQogewotICByZWdpc3RlciBzdHJ1Y3QgYmFja3RyYWNlICpiYWNrbGlzdCA9IGJhY2t0cmFj ZV9saXN0OwotICByZWdpc3RlciBFTUFDU19JTlQgaTsKKyAgc3RydWN0IGJhY2t0cmFjZSAq YmFja2xpc3QgPSBiYWNrdHJhY2VfbGlzdDsKKyAgRU1BQ1NfSU5UIGk7CiAgIExpc3BfT2Jq ZWN0IHRlbTsKIAogICBDSEVDS19OQVROVU0gKG5mcmFtZXMpOwpAQCAtMzQwNSw3ICszNDA1 LDcgQEAKIHZvaWQKIG1hcmtfYmFja3RyYWNlICh2b2lkKQogewotICByZWdpc3RlciBzdHJ1 Y3QgYmFja3RyYWNlICpiYWNrbGlzdDsKKyAgc3RydWN0IGJhY2t0cmFjZSAqYmFja2xpc3Q7 CiAgIHB0cmRpZmZfdCBpOwogCiAgIGZvciAoYmFja2xpc3QgPSBiYWNrdHJhY2VfbGlzdDsg YmFja2xpc3Q7IGJhY2tsaXN0ID0gYmFja2xpc3QtPm5leHQpCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3JjL2ZpbGVpby5jJwotLS0gc3JjL2ZpbGVpby5jCTIwMTItMDYtMDEgMDM6NDE6MDMg KzAwMDAKKysrIHNyYy9maWxlaW8uYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC0z MTUsMTEgKzMxNSwxMSBAQAogICAoTGlzcF9PYmplY3QgZmlsZW5hbWUpCiB7CiAjaWZuZGVm IERPU19OVAotICByZWdpc3RlciBjb25zdCBjaGFyICpiZWc7CisgIGNvbnN0IGNoYXIgKmJl ZzsKICNlbHNlCi0gIHJlZ2lzdGVyIGNoYXIgKmJlZzsKKyAgY2hhciAqYmVnOwogI2VuZGlm Ci0gIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnA7CisgIGNvbnN0IGNoYXIgKnA7CiAgIExpc3Bf T2JqZWN0IGhhbmRsZXI7CiAKICAgQ0hFQ0tfU1RSSU5HIChmaWxlbmFtZSk7CkBAIC0zOTIs NyArMzkyLDcgQEAKIG9yIHRoZSBlbnRpcmUgbmFtZSBpZiBpdCBjb250YWlucyBubyBzbGFz aC4gICovKQogICAoTGlzcF9PYmplY3QgZmlsZW5hbWUpCiB7Ci0gIHJlZ2lzdGVyIGNvbnN0 IGNoYXIgKmJlZywgKnAsICplbmQ7CisgIGNvbnN0IGNoYXIgKmJlZywgKnAsICplbmQ7CiAg IExpc3BfT2JqZWN0IGhhbmRsZXI7CiAKICAgQ0hFQ0tfU1RSSU5HIChmaWxlbmFtZSk7CkBA IC0xMzYwLDcgKzEzNjAsNyBAQAogewogICB1bnNpZ25lZCBjaGFyICpubTsKIAotICByZWdp c3RlciB1bnNpZ25lZCBjaGFyICpuZXdkaXIsICpwLCAqbzsKKyAgdW5zaWduZWQgY2hhciAq bmV3ZGlyLCAqcCwgKm87CiAgIHB0cmRpZmZfdCB0bGVuOwogICB1bnNpZ25lZCBjaGFyICp0 YXJnZXQ7CiAgIHN0cnVjdCBwYXNzd2QgKnB3OwpAQCAtMTU2Niw3ICsxNTY2LDcgQEAKIHsK ICAgY2hhciAqbm07CiAKLSAgcmVnaXN0ZXIgY2hhciAqcywgKnAsICpvLCAqeCwgKmVuZHA7 CisgIGNoYXIgKnMsICpwLCAqbywgKngsICplbmRwOwogICBjaGFyICp0YXJnZXQgPSBOVUxM OwogICBpbnQgdG90YWwgPSAwOwogICBpbnQgc3Vic3RpdHV0ZWQgPSAwOwpAQCAtMTc2OSw3 ICsxNzY5LDcgQEAKIExpc3BfT2JqZWN0CiBleHBhbmRfYW5kX2Rpcl90b19maWxlIChMaXNw X09iamVjdCBmaWxlbmFtZSwgTGlzcF9PYmplY3QgZGVmZGlyKQogewotICByZWdpc3RlciBM aXNwX09iamVjdCBhYnNuYW1lOworICBMaXNwX09iamVjdCBhYnNuYW1lOwogCiAgIGFic25h bWUgPSBGZXhwYW5kX2ZpbGVfbmFtZSAoZmlsZW5hbWUsIGRlZmRpcik7CiAKQEAgLTE3OTks NyArMTc5OSw3IEBACiBiYXJmX29yX3F1ZXJ5X2lmX2ZpbGVfZXhpc3RzIChMaXNwX09iamVj dCBhYnNuYW1lLCBjb25zdCBjaGFyICpxdWVyeXN0cmluZywKIAkJCSAgICAgIGludCBpbnRl cmFjdGl2ZSwgc3RydWN0IHN0YXQgKnN0YXRwdHIsIGludCBxdWljaykKIHsKLSAgcmVnaXN0 ZXIgTGlzcF9PYmplY3QgdGVtLCBlbmNvZGVkX2ZpbGVuYW1lOworICBMaXNwX09iamVjdCB0 ZW0sIGVuY29kZWRfZmlsZW5hbWU7CiAgIHN0cnVjdCBzdGF0IHN0YXRidWY7CiAgIHN0cnVj dCBnY3BybyBnY3BybzE7CiAKQEAgLTI3MDgsNyArMjcwOCw3IEBACiBTZWUgYGZpbGUtc3lt bGluay1wJyB0byBkaXN0aW5ndWlzaCBzeW1saW5rcy4gICovKQogICAoTGlzcF9PYmplY3Qg ZmlsZW5hbWUpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFic25hbWU7CisgIExpc3Bf T2JqZWN0IGFic25hbWU7CiAgIHN0cnVjdCBzdGF0IHN0OwogICBMaXNwX09iamVjdCBoYW5k bGVyOwogCkBAIC0yNzYyLDcgKzI3NjIsNyBAQAogU2VlIGBmaWxlLXN5bWxpbmstcCcgdG8g ZGlzdGluZ3Vpc2ggc3ltbGlua3MuICAqLykKICAgKExpc3BfT2JqZWN0IGZpbGVuYW1lKQog ewotICByZWdpc3RlciBMaXNwX09iamVjdCBhYnNuYW1lOworICBMaXNwX09iamVjdCBhYnNu YW1lOwogICBzdHJ1Y3Qgc3RhdCBzdDsKICAgTGlzcF9PYmplY3QgaGFuZGxlcjsKIApAQCAt MzI1MiwxMiArMzI1MiwxMiBAQAogICAoTGlzcF9PYmplY3QgZmlsZW5hbWUsIExpc3BfT2Jq ZWN0IHZpc2l0LCBMaXNwX09iamVjdCBiZWcsIExpc3BfT2JqZWN0IGVuZCwgTGlzcF9PYmpl Y3QgcmVwbGFjZSkKIHsKICAgc3RydWN0IHN0YXQgc3Q7Ci0gIHJlZ2lzdGVyIGludCBmZDsK KyAgaW50IGZkOwogICBwdHJkaWZmX3QgaW5zZXJ0ZWQgPSAwOwogICBpbnQgbm9jaGFuZ2Ug PSAwOwotICByZWdpc3RlciBwdHJkaWZmX3QgaG93X211Y2g7CisgIHB0cmRpZmZfdCBob3df bXVjaDsKICAgb2ZmX3QgYmVnX29mZnNldCwgZW5kX29mZnNldDsKLSAgcmVnaXN0ZXIgaW50 IHVucHJvY2Vzc2VkOworICBpbnQgdW5wcm9jZXNzZWQ7CiAgIHB0cmRpZmZfdCBjb3VudCA9 IFNQRUNQRExfSU5ERVggKCk7CiAgIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nw cm8zLCBnY3BybzQsIGdjcHJvNTsKICAgTGlzcF9PYmplY3QgaGFuZGxlciwgdmFsLCBpbnN2 YWwsIG9yaWdfZmlsZW5hbWUsIG9sZF91bmRvOwpAQCAtNDUzOSw3ICs0NTM5LDcgQEAKIGB3 cml0ZS1yZWdpb24tcG9zdC1hbm5vdGF0aW9uLWZ1bmN0aW9uJyBhdCB0aGUgZW5kLiAgKi8p CiAgIChMaXNwX09iamVjdCBzdGFydCwgTGlzcF9PYmplY3QgZW5kLCBMaXNwX09iamVjdCBm aWxlbmFtZSwgTGlzcF9PYmplY3QgYXBwZW5kLCBMaXNwX09iamVjdCB2aXNpdCwgTGlzcF9P YmplY3QgbG9ja25hbWUsIExpc3BfT2JqZWN0IG11c3RiZW5ldykKIHsKLSAgcmVnaXN0ZXIg aW50IGRlc2M7CisgIGludCBkZXNjOwogICBpbnQgZmFpbHVyZTsKICAgaW50IHNhdmVfZXJy bm8gPSAwOwogICBjb25zdCBjaGFyICpmbjsKQEAgLTQ5NDUsNyArNDk0NSw3IEBACiAKIHN0 YXRpYyBpbnQKIGFfd3JpdGUgKGludCBkZXNjLCBMaXNwX09iamVjdCBzdHJpbmcsIHB0cmRp ZmZfdCBwb3MsCi0JIHJlZ2lzdGVyIHB0cmRpZmZfdCBuY2hhcnMsIExpc3BfT2JqZWN0ICph bm5vdCwKKwkgcHRyZGlmZl90IG5jaGFycywgTGlzcF9PYmplY3QgKmFubm90LAogCSBzdHJ1 Y3QgY29kaW5nX3N5c3RlbSAqY29kaW5nKQogewogICBMaXNwX09iamVjdCB0ZW07CkBAIC01 MTYyLDcgKzUxNjIsNyBAQAogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAgIHJlZ2lzdGVy IExpc3BfT2JqZWN0IGZpbGVuYW1lOworICAgICAgTGlzcF9PYmplY3QgZmlsZW5hbWU7CiAg ICAgICBzdHJ1Y3Qgc3RhdCBzdDsKICAgICAgIExpc3BfT2JqZWN0IGhhbmRsZXI7CiAKCj09 PSBtb2RpZmllZCBmaWxlICdzcmMvZmlsZWxvY2suYycKLS0tIHNyYy9maWxlbG9jay5jCTIw MTItMDUtMTAgMDA6NTU6NTcgKzAwMDAKKysrIHNyYy9maWxlbG9jay5jCTIwMTItMDYtMDMg MDU6NTM6MzggKzAwMDAKQEAgLTI5OCw5ICsyOTgsOSBAQAogICAgZmlsbF9pbl9sb2NrX2Zp bGVfbmFtZSAobG9jaywgKGZpbGUpKSkKIAogc3RhdGljIHZvaWQKLWZpbGxfaW5fbG9ja19m aWxlX25hbWUgKHJlZ2lzdGVyIGNoYXIgKmxvY2tmaWxlLCByZWdpc3RlciBMaXNwX09iamVj dCBmbikKK2ZpbGxfaW5fbG9ja19maWxlX25hbWUgKGNoYXIgKmxvY2tmaWxlLCBMaXNwX09i amVjdCBmbikKIHsKLSAgcmVnaXN0ZXIgY2hhciAqcDsKKyAgY2hhciAqcDsKICAgc3RydWN0 IHN0YXQgc3Q7CiAgIGludCBjb3VudCA9IDA7CiAKQEAgLTMzNiw3ICszMzYsNyBAQAogc3Rh dGljIGludAogbG9ja19maWxlXzEgKGNoYXIgKmxmbmFtZSwgaW50IGZvcmNlKQogewotICBy ZWdpc3RlciBpbnQgZXJyOworICBpbnQgZXJyOwogICBwcmludG1heF90IGJvb3QsIHBpZDsK ICAgY29uc3QgY2hhciAqdXNlcl9uYW1lOwogICBjb25zdCBjaGFyICpob3N0X25hbWU7CkBA IC00OTcsNyArNDk3LDcgQEAKICAgIFJldHVybiAtMSBpZiBjYW5ub3QgbG9jayBmb3IgYW55 IG90aGVyIHJlYXNvbi4gICovCiAKIHN0YXRpYyBpbnQKLWxvY2tfaWZfZnJlZSAobG9ja19p bmZvX3R5cGUgKmNsYXNoZXIsIHJlZ2lzdGVyIGNoYXIgKmxmbmFtZSkKK2xvY2tfaWZfZnJl ZSAobG9ja19pbmZvX3R5cGUgKmNsYXNoZXIsIGNoYXIgKmxmbmFtZSkKIHsKICAgd2hpbGUg KGxvY2tfZmlsZV8xIChsZm5hbWUsIDApID09IDApCiAgICAgewpAQCAtNTQyLDggKzU0Miw4 IEBACiB2b2lkCiBsb2NrX2ZpbGUgKExpc3BfT2JqZWN0IGZuKQogewotICByZWdpc3RlciBM aXNwX09iamVjdCBhdHRhY2ssIG9yaWdfZm4sIGVuY29kZWRfZm47Ci0gIHJlZ2lzdGVyIGNo YXIgKmxmbmFtZSwgKmxvY2tlcjsKKyAgTGlzcF9PYmplY3QgYXR0YWNrLCBvcmlnX2ZuLCBl bmNvZGVkX2ZuOworICBjaGFyICpsZm5hbWUsICpsb2NrZXI7CiAgIHB0cmRpZmZfdCBsb2Nr ZXJfc2l6ZTsKICAgbG9ja19pbmZvX3R5cGUgbG9ja19pbmZvOwogICBwcmludG1heF90IHBp ZDsKQEAgLTU3MSw3ICs1NzEsNyBAQAogICAvKiBTZWUgaWYgdGhpcyBmaWxlIGlzIHZpc2l0 ZWQgYW5kIGhhcyBjaGFuZ2VkIG9uIGRpc2sgc2luY2UgaXQgd2FzCiAgICAgIHZpc2l0ZWQu ICAqLwogICB7Ci0gICAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3ViamVjdF9idWY7CisgICAg TGlzcF9PYmplY3Qgc3ViamVjdF9idWY7CiAKICAgICBzdWJqZWN0X2J1ZiA9IGdldF90cnVl bmFtZV9idWZmZXIgKG9yaWdfZm4pOwogCkBAIC02MTAsOSArNjEwLDkgQEAKIH0KIAogdm9p ZAotdW5sb2NrX2ZpbGUgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZuKQordW5sb2NrX2ZpbGUg KExpc3BfT2JqZWN0IGZuKQogewotICByZWdpc3RlciBjaGFyICpsZm5hbWU7CisgIGNoYXIg KmxmbmFtZTsKIAogICBmbiA9IEZleHBhbmRfZmlsZV9uYW1lIChmbiwgUW5pbCk7CiAgIGZu ID0gRU5DT0RFX0ZJTEUgKGZuKTsKQEAgLTYyNiw4ICs2MjYsOCBAQAogdm9pZAogdW5sb2Nr X2FsbF9maWxlcyAodm9pZCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbDsKLSAg cmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYjsKKyAgTGlzcF9PYmplY3QgdGFpbDsKKyAgc3Ry dWN0IGJ1ZmZlciAqYjsKIAogICBmb3IgKHRhaWwgPSBWYnVmZmVyX2FsaXN0OyBDT05TUCAo dGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkKICAgICB7CkBAIC02ODYsNyArNjg2LDcgQEAK ICAgKExpc3BfT2JqZWN0IGZpbGVuYW1lKQogewogICBMaXNwX09iamVjdCByZXQ7Ci0gIHJl Z2lzdGVyIGNoYXIgKmxmbmFtZTsKKyAgY2hhciAqbGZuYW1lOwogICBpbnQgb3duZXI7CiAg IGxvY2tfaW5mb190eXBlIGxvY2tlcjsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9mbG9h dGZucy5jJwotLS0gc3JjL2Zsb2F0Zm5zLmMJMjAxMi0wMi0xMCAxODo1ODo0OCArMDAwMAor Kysgc3JjL2Zsb2F0Zm5zLmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMjA1LDcg KzIwNSw3IEBACiAKIERFRlVOICgiYWNvcyIsIEZhY29zLCBTYWNvcywgMSwgMSwgMCwKICAg ICAgICBkb2M6IC8qIFJldHVybiB0aGUgaW52ZXJzZSBjb3NpbmUgb2YgQVJHLiAgKi8pCi0g IChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNwX09iamVjdCBhcmcpCiB7CiAg IGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKICNpZmRlZiBGTE9BVF9DSEVDS19E T01BSU4KQEAgLTIxOCw3ICsyMTgsNyBAQAogCiBERUZVTiAoImFzaW4iLCBGYXNpbiwgU2Fz aW4sIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIGludmVyc2Ugc2luZSBv ZiBBUkcuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2Jq ZWN0IGFyZykKIHsKICAgZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogI2lmZGVm IEZMT0FUX0NIRUNLX0RPTUFJTgpAQCAtMjM1LDcgKzIzNSw3IEBACiBJZiB0d28gYXJndW1l bnRzIFkgYW5kIFggYXJlIGdpdmVuLCByZXR1cm4gdGhlIGludmVyc2UgdGFuZ2VudCBvZiBZ CiBkaXZpZGVkIGJ5IFgsIGkuZS4gdGhlIGFuZ2xlIGluIHJhZGlhbnMgYmV0d2VlbiB0aGUg dmVjdG9yIChYLCBZKQogYW5kIHRoZSB4LWF4aXMuICAqLykKLSAgKHJlZ2lzdGVyIExpc3Bf T2JqZWN0IHksIExpc3BfT2JqZWN0IHgpCisgIChMaXNwX09iamVjdCB5LCBMaXNwX09iamVj dCB4KQogewogICBkb3VibGUgZCA9IGV4dHJhY3RfZmxvYXQgKHkpOwogCkBAIC0yNTIsNyAr MjUyLDcgQEAKIAogREVGVU4gKCJjb3MiLCBGY29zLCBTY29zLCAxLCAxLCAwLAogICAgICAg IGRvYzogLyogUmV0dXJuIHRoZSBjb3NpbmUgb2YgQVJHLiAgKi8pCi0gIChyZWdpc3RlciBM aXNwX09iamVjdCBhcmcpCisgIChMaXNwX09iamVjdCBhcmcpCiB7CiAgIGRvdWJsZSBkID0g ZXh0cmFjdF9mbG9hdCAoYXJnKTsKICAgSU5fRkxPQVQgKGQgPSBjb3MgKGQpLCAiY29zIiwg YXJnKTsKQEAgLTI2MSw3ICsyNjEsNyBAQAogCiBERUZVTiAoInNpbiIsIEZzaW4sIFNzaW4s IDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHNpbmUgb2YgQVJHLiAgKi8p Ci0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNwX09iamVjdCBhcmcpCiB7 CiAgIGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKICAgSU5fRkxPQVQgKGQgPSBz aW4gKGQpLCAic2luIiwgYXJnKTsKQEAgLTI3MCw3ICsyNzAsNyBAQAogCiBERUZVTiAoInRh biIsIEZ0YW4sIFN0YW4sIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHRh bmdlbnQgb2YgQVJHLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChM aXNwX09iamVjdCBhcmcpCiB7CiAgIGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsK ICAgZG91YmxlIGMgPSBjb3MgKGQpOwpAQCAtMzQ5LDcgKzM0OSw3IEBACiAKIERFRlVOICgi YmVzc2VsLWowIiwgRmJlc3NlbF9qMCwgU2Jlc3NlbF9qMCwgMSwgMSwgMCwKICAgICAgICBk b2M6IC8qIFJldHVybiB0aGUgYmVzc2VsIGZ1bmN0aW9uIGowIG9mIEFSRy4gICovKQotICAo cmVnaXN0ZXIgTGlzcF9PYmplY3QgYXJnKQorICAoTGlzcF9PYmplY3QgYXJnKQogewogICBk b3VibGUgZCA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7CiAgIElOX0ZMT0FUIChkID0gajAgKGQp LCAiYmVzc2VsLWowIiwgYXJnKTsKQEAgLTM1OCw3ICszNTgsNyBAQAogCiBERUZVTiAoImJl c3NlbC1qMSIsIEZiZXNzZWxfajEsIFNiZXNzZWxfajEsIDEsIDEsIDAsCiAgICAgICAgZG9j OiAvKiBSZXR1cm4gdGhlIGJlc3NlbCBmdW5jdGlvbiBqMSBvZiBBUkcuICAqLykKLSAgKHJl Z2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2JqZWN0IGFyZykKIHsKICAgZG91 YmxlIGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogICBJTl9GTE9BVCAoZCA9IGoxIChkKSwg ImJlc3NlbC1qMSIsIGFyZyk7CkBAIC0zNjgsNyArMzY4LDcgQEAKIERFRlVOICgiYmVzc2Vs LWpuIiwgRmJlc3NlbF9qbiwgU2Jlc3NlbF9qbiwgMiwgMiwgMCwKICAgICAgICBkb2M6IC8q IFJldHVybiB0aGUgb3JkZXIgTiBiZXNzZWwgZnVuY3Rpb24gb3V0cHV0IGpuIG9mIEFSRy4K IFRoZSBmaXJzdCBhcmcgKHRoZSBvcmRlcikgaXMgdHJ1bmNhdGVkIHRvIGFuIGludGVnZXIu ICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IG4sIExpc3BfT2JqZWN0IGFyZykKKyAg KExpc3BfT2JqZWN0IG4sIExpc3BfT2JqZWN0IGFyZykKIHsKICAgaW50IGkxID0gZXh0cmFj dF9mbG9hdCAobik7CiAgIGRvdWJsZSBmMiA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7CkBAIC0z NzksNyArMzc5LDcgQEAKIAogREVGVU4gKCJiZXNzZWwteTAiLCBGYmVzc2VsX3kwLCBTYmVz c2VsX3kwLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBiZXNzZWwgZnVu Y3Rpb24geTAgb2YgQVJHLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisg IChMaXNwX09iamVjdCBhcmcpCiB7CiAgIGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJn KTsKICAgSU5fRkxPQVQgKGQgPSB5MCAoZCksICJiZXNzZWwteTAiLCBhcmcpOwpAQCAtMzg4 LDcgKzM4OCw3IEBACiAKIERFRlVOICgiYmVzc2VsLXkxIiwgRmJlc3NlbF95MSwgU2Jlc3Nl bF95MSwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgYmVzc2VsIGZ1bmN0 aW9uIHkxIG9mIEFSRy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYXJnKQorICAo TGlzcF9PYmplY3QgYXJnKQogewogICBkb3VibGUgZCA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7 CiAgIElOX0ZMT0FUIChkID0geTEgKGQpLCAiYmVzc2VsLXkwIiwgYXJnKTsKQEAgLTM5OCw3 ICszOTgsNyBAQAogREVGVU4gKCJiZXNzZWwteW4iLCBGYmVzc2VsX3luLCBTYmVzc2VsX3lu LCAyLCAyLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBvcmRlciBOIGJlc3NlbCBm dW5jdGlvbiBvdXRwdXQgeW4gb2YgQVJHLgogVGhlIGZpcnN0IGFyZyAodGhlIG9yZGVyKSBp cyB0cnVuY2F0ZWQgdG8gYW4gaW50ZWdlci4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmpl Y3QgbiwgTGlzcF9PYmplY3QgYXJnKQorICAoTGlzcF9PYmplY3QgbiwgTGlzcF9PYmplY3Qg YXJnKQogewogICBpbnQgaTEgPSBleHRyYWN0X2Zsb2F0IChuKTsKICAgZG91YmxlIGYyID0g ZXh0cmFjdF9mbG9hdCAoYXJnKTsKQEAgLTQxMyw3ICs0MTMsNyBAQAogCiBERUZVTiAoImVy ZiIsIEZlcmYsIFNlcmYsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIG1h dGhlbWF0aWNhbCBlcnJvciBmdW5jdGlvbiBvZiBBUkcuICAqLykKLSAgKHJlZ2lzdGVyIExp c3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2JqZWN0IGFyZykKIHsKICAgZG91YmxlIGQgPSBl eHRyYWN0X2Zsb2F0IChhcmcpOwogICBJTl9GTE9BVCAoZCA9IGVyZiAoZCksICJlcmYiLCBh cmcpOwpAQCAtNDIyLDcgKzQyMiw3IEBACiAKIERFRlVOICgiZXJmYyIsIEZlcmZjLCBTZXJm YywgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgY29tcGxlbWVudGFyeSBl cnJvciBmdW5jdGlvbiBvZiBBUkcuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFy ZykKKyAgKExpc3BfT2JqZWN0IGFyZykKIHsKICAgZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0 IChhcmcpOwogICBJTl9GTE9BVCAoZCA9IGVyZmMgKGQpLCAiZXJmYyIsIGFyZyk7CkBAIC00 MzEsNyArNDMxLDcgQEAKIAogREVGVU4gKCJsb2ctZ2FtbWEiLCBGbG9nX2dhbW1hLCBTbG9n X2dhbW1hLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBsb2cgZ2FtbWEg b2YgQVJHLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNwX09i amVjdCBhcmcpCiB7CiAgIGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKICAgSU5f RkxPQVQgKGQgPSBsZ2FtbWEgKGQpLCAibG9nLWdhbW1hIiwgYXJnKTsKQEAgLTQ0MCw3ICs0 NDAsNyBAQAogCiBERUZVTiAoImN1YmUtcm9vdCIsIEZjdWJlX3Jvb3QsIFNjdWJlX3Jvb3Qs IDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIGN1YmUgcm9vdCBvZiBBUkcu ICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2JqZWN0IGFy ZykKIHsKICAgZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogI2lmZGVmIEhBVkVf Q0JSVApAQCAtNDU4LDcgKzQ1OCw3IEBACiAMCiBERUZVTiAoImV4cCIsIEZleHAsIFNleHAs IDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIGV4cG9uZW50aWFsIGJhc2Ug ZSBvZiBBUkcuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3Bf T2JqZWN0IGFyZykKIHsKICAgZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogI2lm ZGVmIEZMT0FUX0NIRUNLX0RPTUFJTgpAQCAtNDc0LDcgKzQ3NCw3IEBACiAKIERFRlVOICgi ZXhwdCIsIEZleHB0LCBTZXhwdCwgMiwgMiwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0 aGUgZXhwb25lbnRpYWwgQVJHMSAqKiBBUkcyLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09i amVjdCBhcmcxLCBMaXNwX09iamVjdCBhcmcyKQorICAoTGlzcF9PYmplY3QgYXJnMSwgTGlz cF9PYmplY3QgYXJnMikKIHsKICAgZG91YmxlIGYxLCBmMiwgZjM7CiAKQEAgLTUyMCw3ICs1 MjAsNyBAQAogREVGVU4gKCJsb2ciLCBGbG9nLCBTbG9nLCAxLCAyLCAwLAogICAgICAgIGRv YzogLyogUmV0dXJuIHRoZSBuYXR1cmFsIGxvZ2FyaXRobSBvZiBBUkcuCiBJZiB0aGUgb3B0 aW9uYWwgYXJndW1lbnQgQkFTRSBpcyBnaXZlbiwgcmV0dXJuIGxvZyBBUkcgdXNpbmcgdGhh dCBiYXNlLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0 IGJhc2UpCisgIChMaXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0IGJhc2UpCiB7CiAgIGRv dWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKIApAQCAtNTQ4LDcgKzU0OCw3IEBACiAK IERFRlVOICgibG9nMTAiLCBGbG9nMTAsIFNsb2cxMCwgMSwgMSwgMCwKICAgICAgICBkb2M6 IC8qIFJldHVybiB0aGUgbG9nYXJpdGhtIGJhc2UgMTAgb2YgQVJHLiAgKi8pCi0gIChyZWdp c3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNwX09iamVjdCBhcmcpCiB7CiAgIGRvdWJs ZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKICNpZmRlZiBGTE9BVF9DSEVDS19ET01BSU4K QEAgLTU2MSw3ICs1NjEsNyBAQAogCiBERUZVTiAoInNxcnQiLCBGc3FydCwgU3NxcnQsIDEs IDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHNxdWFyZSByb290IG9mIEFSRy4g ICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYXJnKQorICAoTGlzcF9PYmplY3QgYXJn KQogewogICBkb3VibGUgZCA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7CiAjaWZkZWYgRkxPQVRf Q0hFQ0tfRE9NQUlOCkBAIC01NzYsNyArNTc2LDcgQEAKIAogREVGVU4gKCJhY29zaCIsIEZh Y29zaCwgU2Fjb3NoLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBpbnZl cnNlIGh5cGVyYm9saWMgY29zaW5lIG9mIEFSRy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9P YmplY3QgYXJnKQorICAoTGlzcF9PYmplY3QgYXJnKQogewogICBkb3VibGUgZCA9IGV4dHJh Y3RfZmxvYXQgKGFyZyk7CiAjaWZkZWYgRkxPQVRfQ0hFQ0tfRE9NQUlOCkBAIC01OTMsNyAr NTkzLDcgQEAKIAogREVGVU4gKCJhc2luaCIsIEZhc2luaCwgU2FzaW5oLCAxLCAxLCAwLAog ICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgc2luZSBvZiBB UkcuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2JqZWN0 IGFyZykKIHsKICAgZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogI2lmZGVmIEhB VkVfSU5WRVJTRV9IWVBFUkJPTElDCkBAIC02MDYsNyArNjA2LDcgQEAKIAogREVGVU4gKCJh dGFuaCIsIEZhdGFuaCwgU2F0YW5oLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJu IHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiBBUkcuICAqLykKLSAgKHJlZ2lz dGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2JqZWN0IGFyZykKIHsKICAgZG91Ymxl IGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogI2lmZGVmIEZMT0FUX0NIRUNLX0RPTUFJTgpA QCAtNjIzLDcgKzYyMyw3IEBACiAKIERFRlVOICgiY29zaCIsIEZjb3NoLCBTY29zaCwgMSwg MSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgaHlwZXJib2xpYyBjb3NpbmUgb2Yg QVJHLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNwX09iamVj dCBhcmcpCiB7CiAgIGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKICNpZmRlZiBG TE9BVF9DSEVDS19ET01BSU4KQEAgLTYzNiw3ICs2MzYsNyBAQAogCiBERUZVTiAoInNpbmgi LCBGc2luaCwgU3NpbmgsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIGh5 cGVyYm9saWMgc2luZSBvZiBBUkcuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFy ZykKKyAgKExpc3BfT2JqZWN0IGFyZykKIHsKICAgZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0 IChhcmcpOwogI2lmZGVmIEZMT0FUX0NIRUNLX0RPTUFJTgpAQCAtNjQ5LDcgKzY0OSw3IEBA CiAKIERFRlVOICgidGFuaCIsIEZ0YW5oLCBTdGFuaCwgMSwgMSwgMCwKICAgICAgICBkb2M6 IC8qIFJldHVybiB0aGUgaHlwZXJib2xpYyB0YW5nZW50IG9mIEFSRy4gICovKQotICAocmVn aXN0ZXIgTGlzcF9PYmplY3QgYXJnKQorICAoTGlzcF9PYmplY3QgYXJnKQogewogICBkb3Vi bGUgZCA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7CiAgIElOX0ZMT0FUIChkID0gdGFuaCAoZCks ICJ0YW5oIiwgYXJnKTsKQEAgLTY1OSw3ICs2NTksNyBAQAogDAogREVGVU4gKCJhYnMiLCBG YWJzLCBTYWJzLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBhYnNvbHV0 ZSB2YWx1ZSBvZiBBUkcuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAg KExpc3BfT2JqZWN0IGFyZykKIHsKICAgQ0hFQ0tfTlVNQkVSX09SX0ZMT0FUIChhcmcpOwog CkBAIC02NzMsNyArNjczLDcgQEAKIAogREVGVU4gKCJmbG9hdCIsIEZmbG9hdCwgU2Zsb2F0 LCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBmbG9hdGluZyBwb2ludCBu dW1iZXIgZXF1YWwgdG8gQVJHLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcp CisgIChMaXNwX09iamVjdCBhcmcpCiB7CiAgIENIRUNLX05VTUJFUl9PUl9GTE9BVCAoYXJn KTsKIApAQCAtOTA4LDcgKzkwOCw3IEBACiBERUZVTiAoImZjZWlsaW5nIiwgRmZjZWlsaW5n LCBTZmNlaWxpbmcsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHNtYWxs ZXN0IGludGVnZXIgbm8gbGVzcyB0aGFuIEFSRywgYXMgYSBmbG9hdC4KIFwoUm91bmQgdG93 YXJkICtpbmYuXCkgICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYXJnKQorICAoTGlz cF9PYmplY3QgYXJnKQogewogICBkb3VibGUgZCA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7CiAg IElOX0ZMT0FUIChkID0gY2VpbCAoZCksICJmY2VpbGluZyIsIGFyZyk7CkBAIC05MTgsNyAr OTE4LDcgQEAKIERFRlVOICgiZmZsb29yIiwgRmZmbG9vciwgU2ZmbG9vciwgMSwgMSwgMCwK ICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgbGFyZ2VzdCBpbnRlZ2VyIG5vIGdyZWF0ZXIg dGhhbiBBUkcsIGFzIGEgZmxvYXQuCiBcKFJvdW5kIHRvd2FyZHMgLWluZi5cKSAgKi8pCi0g IChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNwX09iamVjdCBhcmcpCiB7CiAg IGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKICAgSU5fRkxPQVQgKGQgPSBmbG9v ciAoZCksICJmZmxvb3IiLCBhcmcpOwpAQCAtOTI3LDcgKzkyNyw3IEBACiAKIERFRlVOICgi ZnJvdW5kIiwgRmZyb3VuZCwgU2Zyb3VuZCwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJl dHVybiB0aGUgbmVhcmVzdCBpbnRlZ2VyIHRvIEFSRywgYXMgYSBmbG9hdC4gICovKQotICAo cmVnaXN0ZXIgTGlzcF9PYmplY3QgYXJnKQorICAoTGlzcF9PYmplY3QgYXJnKQogewogICBk b3VibGUgZCA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7CiAgIElOX0ZMT0FUIChkID0gZW1hY3Nf cmludCAoZCksICJmcm91bmQiLCBhcmcpOwpAQCAtOTM3LDcgKzkzNyw3IEBACiBERUZVTiAo ImZ0cnVuY2F0ZSIsIEZmdHJ1bmNhdGUsIFNmdHJ1bmNhdGUsIDEsIDEsIDAsCiAgICAgICAg ZG9jOiAvKiBUcnVuY2F0ZSBhIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byBhbiBpbnRlZ3Jh bCBmbG9hdCB2YWx1ZS4KIFJvdW5kcyB0aGUgdmFsdWUgdG93YXJkIHplcm8uICAqLykKLSAg KHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2JqZWN0IGFyZykKIHsKICAg ZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogICBpZiAoZCA+PSAwLjApCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3JjL2Zucy5jJwotLS0gc3JjL2Zucy5jCTIwMTItMDUtMjUgMTg6 MTk6MjQgKzAwMDAKKysrIHNyYy9mbnMuYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBA IC0xMTUsOSArMTE1LDkgQEAKIElmIHRoZSBzdHJpbmcgY29udGFpbnMgbXVsdGlieXRlIGNo YXJhY3RlcnMsIHRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5CiB0aGUgbnVtYmVyIG9mIGJ5dGVz IGluIHRoZSBzdHJpbmc7IGl0IGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycy4KIFRvIGdl dCB0aGUgbnVtYmVyIG9mIGJ5dGVzLCB1c2UgYHN0cmluZy1ieXRlcycuICAqLykKLSAgKHJl Z2lzdGVyIExpc3BfT2JqZWN0IHNlcXVlbmNlKQorICAoTGlzcF9PYmplY3Qgc2VxdWVuY2Up CiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKKyAgTGlzcF9PYmplY3QgdmFsOwog CiAgIGlmIChTVFJJTkdQIChzZXF1ZW5jZSkpCiAgICAgWFNFVEZBU1RJTlQgKHZhbCwgU0NI QVJTIChzZXF1ZW5jZSkpOwpAQCAtMjE0LDcgKzIxNCw3IEBACiAgICAgICAgZG9jOiAvKiBS ZXR1cm4gdCBpZiB0d28gc3RyaW5ncyBoYXZlIGlkZW50aWNhbCBjb250ZW50cy4KIENhc2Ug aXMgc2lnbmlmaWNhbnQsIGJ1dCB0ZXh0IHByb3BlcnRpZXMgYXJlIGlnbm9yZWQuCiBTeW1i b2xzIGFyZSBhbHNvIGFsbG93ZWQ7IHRoZWlyIHByaW50IG5hbWVzIGFyZSB1c2VkIGluc3Rl YWQuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHMxLCBMaXNwX09iamVjdCBzMikK KyAgKExpc3BfT2JqZWN0IHMxLCBMaXNwX09iamVjdCBzMikKIHsKICAgaWYgKFNZTUJPTFAg KHMxKSkKICAgICBzMSA9IFNZTUJPTF9OQU1FIChzMSk7CkBAIC0yNDYsOCArMjQ2LDggQEAK ICAgTiAtIDEgaXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgbWF0Y2ggYXQgdGhl IGJlZ2lubmluZy4gICovKQogICAoTGlzcF9PYmplY3Qgc3RyMSwgTGlzcF9PYmplY3Qgc3Rh cnQxLCBMaXNwX09iamVjdCBlbmQxLCBMaXNwX09iamVjdCBzdHIyLCBMaXNwX09iamVjdCBz dGFydDIsIExpc3BfT2JqZWN0IGVuZDIsIExpc3BfT2JqZWN0IGlnbm9yZV9jYXNlKQogewot ICByZWdpc3RlciBwdHJkaWZmX3QgZW5kMV9jaGFyLCBlbmQyX2NoYXI7Ci0gIHJlZ2lzdGVy IHB0cmRpZmZfdCBpMSwgaTFfYnl0ZSwgaTIsIGkyX2J5dGU7CisgIHB0cmRpZmZfdCBlbmQx X2NoYXIsIGVuZDJfY2hhcjsKKyAgcHRyZGlmZl90IGkxLCBpMV9ieXRlLCBpMiwgaTJfYnl0 ZTsKIAogICBDSEVDS19TVFJJTkcgKHN0cjEpOwogICBDSEVDS19TVFJJTkcgKHN0cjIpOwpA QCAtMzM5LDEwICszMzksMTAgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0IGlmIGZpcnN0 IGFyZyBzdHJpbmcgaXMgbGVzcyB0aGFuIHNlY29uZCBpbiBsZXhpY29ncmFwaGljIG9yZGVy LgogQ2FzZSBpcyBzaWduaWZpY2FudC4KIFN5bWJvbHMgYXJlIGFsc28gYWxsb3dlZDsgdGhl aXIgcHJpbnQgbmFtZXMgYXJlIHVzZWQgaW5zdGVhZC4gICovKQotICAocmVnaXN0ZXIgTGlz cF9PYmplY3QgczEsIExpc3BfT2JqZWN0IHMyKQorICAoTGlzcF9PYmplY3QgczEsIExpc3Bf T2JqZWN0IHMyKQogewotICByZWdpc3RlciBwdHJkaWZmX3QgZW5kOwotICByZWdpc3RlciBw dHJkaWZmX3QgaTEsIGkxX2J5dGUsIGkyLCBpMl9ieXRlOworICBwdHJkaWZmX3QgZW5kOwor ICBwdHJkaWZmX3QgaTEsIGkxX2J5dGUsIGkyLCBpMl9ieXRlOwogCiAgIGlmIChTWU1CT0xQ IChzMSkpCiAgICAgczEgPSBTWU1CT0xfTkFNRSAoczEpOwpAQCAtNDc0LDEyICs0NzQsMTIg QEAKIAllbnVtIExpc3BfVHlwZSB0YXJnZXRfdHlwZSwgaW50IGxhc3Rfc3BlY2lhbCkKIHsK ICAgTGlzcF9PYmplY3QgdmFsOwotICByZWdpc3RlciBMaXNwX09iamVjdCB0YWlsOwotICBy ZWdpc3RlciBMaXNwX09iamVjdCB0aGlzOworICBMaXNwX09iamVjdCB0YWlsOworICBMaXNw X09iamVjdCB0aGlzOwogICBwdHJkaWZmX3QgdG9pbmRleDsKICAgcHRyZGlmZl90IHRvaW5k ZXhfYnl0ZSA9IDA7Ci0gIHJlZ2lzdGVyIEVNQUNTX0lOVCByZXN1bHRfbGVuOwotICByZWdp c3RlciBFTUFDU19JTlQgcmVzdWx0X2xlbl9ieXRlOworICBFTUFDU19JTlQgcmVzdWx0X2xl bjsKKyAgRU1BQ1NfSU5UIHJlc3VsdF9sZW5fYnl0ZTsKICAgcHRyZGlmZl90IGFyZ251bTsK ICAgTGlzcF9PYmplY3QgbGFzdF90YWlsOwogICBMaXNwX09iamVjdCBwcmV2OwpAQCAtNjE1 LDggKzYxNSw4IEBACiAgICAgewogICAgICAgTGlzcF9PYmplY3QgdGhpc2xlbjsKICAgICAg IHB0cmRpZmZfdCB0aGlzbGVuaSA9IDA7Ci0gICAgICByZWdpc3RlciBwdHJkaWZmX3QgdGhp c2luZGV4ID0gMDsKLSAgICAgIHJlZ2lzdGVyIHB0cmRpZmZfdCB0aGlzaW5kZXhfYnl0ZSA9 IDA7CisgICAgICBwdHJkaWZmX3QgdGhpc2luZGV4ID0gMDsKKyAgICAgIHB0cmRpZmZfdCB0 aGlzaW5kZXhfYnl0ZSA9IDA7CiAKICAgICAgIHRoaXMgPSBhcmdzW2FyZ251bV07CiAgICAg ICBpZiAoIUNPTlNQICh0aGlzKSkKQEAgLTY1Niw3ICs2NTYsNyBAQAogCS8qIENvcHkgZWxl bWVudCBieSBlbGVtZW50LiAgKi8KIAl3aGlsZSAoMSkKIAkgIHsKLQkgICAgcmVnaXN0ZXIg TGlzcF9PYmplY3QgZWx0OworCSAgICBMaXNwX09iamVjdCBlbHQ7CiAKIAkgICAgLyogRmV0 Y2ggbmV4dCBlbGVtZW50IG9mIGB0aGlzJyBhcmcgaW50byBgZWx0Jywgb3IgYnJlYWsgaWYK IAkgICAgICAgYHRoaXMnIGlzIGV4aGF1c3RlZC4gKi8KQEAgLTExMjEsNyArMTEyMSw3IEBA CiBFbGVtZW50cyBvZiBBTElTVCB0aGF0IGFyZSBub3QgY29uc2VzIGFyZSBhbHNvIHNoYXJl ZC4gICovKQogICAoTGlzcF9PYmplY3QgYWxpc3QpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2Jq ZWN0IHRlbTsKKyAgTGlzcF9PYmplY3QgdGVtOwogCiAgIENIRUNLX0xJU1QgKGFsaXN0KTsK ICAgaWYgKE5JTFAgKGFsaXN0KSkKQEAgLTExMjksNyArMTEyOSw3IEBACiAgIGFsaXN0ID0g Y29uY2F0ICgxLCAmYWxpc3QsIExpc3BfQ29ucywgMCk7CiAgIGZvciAodGVtID0gYWxpc3Q7 IENPTlNQICh0ZW0pOyB0ZW0gPSBYQ0RSICh0ZW0pKQogICAgIHsKLSAgICAgIHJlZ2lzdGVy IExpc3BfT2JqZWN0IGNhcjsKKyAgICAgIExpc3BfT2JqZWN0IGNhcjsKICAgICAgIGNhciA9 IFhDQVIgKHRlbSk7CiAKICAgICAgIGlmIChDT05TUCAoY2FyKSkKQEAgLTExNDksNyArMTE0 OSw3IEBACiBUaGUgU1RSSU5HIGFyZ3VtZW50IG1heSBhbHNvIGJlIGEgdmVjdG9yLiAgSW4g dGhhdCBjYXNlLCB0aGUgcmV0dXJuCiB2YWx1ZSBpcyBhIG5ldyB2ZWN0b3IgdGhhdCBjb250 YWlucyB0aGUgZWxlbWVudHMgYmV0d2VlbiBpbmRleCBGUk9NCiBcKGluY2x1c2l2ZSkgYW5k IGluZGV4IFRPIChleGNsdXNpdmUpIG9mIHRoYXQgdmVjdG9yIGFyZ3VtZW50LiAgKi8pCi0g IChMaXNwX09iamVjdCBzdHJpbmcsIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZyb20sIExpc3Bf T2JqZWN0IHRvKQorICAoTGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBmcm9tLCBM aXNwX09iamVjdCB0bykKIHsKICAgTGlzcF9PYmplY3QgcmVzOwogICBwdHJkaWZmX3Qgc2l6 ZTsKQEAgLTEyMDcsNyArMTIwNyw3IEBACiBJZiBGUk9NIG9yIFRPIGlzIG5lZ2F0aXZlLCBp dCBjb3VudHMgZnJvbSB0aGUgZW5kLgogCiBXaXRoIG9uZSBhcmd1bWVudCwganVzdCBjb3B5 IFNUUklORyB3aXRob3V0IGl0cyBwcm9wZXJ0aWVzLiAgKi8pCi0gIChMaXNwX09iamVjdCBz dHJpbmcsIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZyb20sIExpc3BfT2JqZWN0IHRvKQorICAo TGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBmcm9tLCBMaXNwX09iamVjdCB0bykK IHsKICAgcHRyZGlmZl90IHNpemU7CiAgIEVNQUNTX0lOVCBmcm9tX2NoYXIsIHRvX2NoYXI7 CkBAIC0xMzA2LDcgKzEzMDYsNyBAQAogCiBERUZVTiAoImVsdCIsIEZlbHQsIFNlbHQsIDIs IDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gZWxlbWVudCBvZiBTRVFVRU5DRSBhdCBp bmRleCBOLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBzZXF1ZW5jZSwgTGlzcF9P YmplY3QgbikKKyAgKExpc3BfT2JqZWN0IHNlcXVlbmNlLCBMaXNwX09iamVjdCBuKQogewog ICBDSEVDS19OVU1CRVIgKG4pOwogICBpZiAoQ09OU1AgKHNlcXVlbmNlKSB8fCBOSUxQIChz ZXF1ZW5jZSkpCkBAIC0xMzIwLDEyICsxMzIwLDEyIEBACiBERUZVTiAoIm1lbWJlciIsIEZt ZW1iZXIsIFNtZW1iZXIsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gbm9uLW5p bCBpZiBFTFQgaXMgYW4gZWxlbWVudCBvZiBMSVNULiAgQ29tcGFyaXNvbiBkb25lIHdpdGgg YGVxdWFsJy4KIFRoZSB2YWx1ZSBpcyBhY3R1YWxseSB0aGUgdGFpbCBvZiBMSVNUIHdob3Nl IGNhciBpcyBFTFQuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGVsdCwgTGlzcF9P YmplY3QgbGlzdCkKKyAgKExpc3BfT2JqZWN0IGVsdCwgTGlzcF9PYmplY3QgbGlzdCkKIHsK LSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbDsKKyAgTGlzcF9PYmplY3QgdGFpbDsKICAg Zm9yICh0YWlsID0gbGlzdDsgQ09OU1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCiAg ICAgewotICAgICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICAgICAgTGlzcF9PYmpl Y3QgdGVtOwogICAgICAgQ0hFQ0tfTElTVF9DT05TICh0YWlsLCBsaXN0KTsKICAgICAgIHRl bSA9IFhDQVIgKHRhaWwpOwogICAgICAgaWYgKCEgTklMUCAoRmVxdWFsIChlbHQsIHRlbSkp KQpAQCAtMTMzOCw3ICsxMzM4LDcgQEAKIERFRlVOICgibWVtcSIsIEZtZW1xLCBTbWVtcSwg MiwgMiwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiBub24tbmlsIGlmIEVMVCBpcyBhbiBl bGVtZW50IG9mIExJU1QuICBDb21wYXJpc29uIGRvbmUgd2l0aCBgZXEnLgogVGhlIHZhbHVl IGlzIGFjdHVhbGx5IHRoZSB0YWlsIG9mIExJU1Qgd2hvc2UgY2FyIGlzIEVMVC4gICovKQot ICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgZWx0LCBMaXNwX09iamVjdCBsaXN0KQorICAoTGlz cF9PYmplY3QgZWx0LCBMaXNwX09iamVjdCBsaXN0KQogewogICB3aGlsZSAoMSkKICAgICB7 CkBAIC0xMzY0LDE2ICsxMzY0LDE2IEBACiBERUZVTiAoIm1lbXFsIiwgRm1lbXFsLCBTbWVt cWwsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gbm9uLW5pbCBpZiBFTFQgaXMg YW4gZWxlbWVudCBvZiBMSVNULiAgQ29tcGFyaXNvbiBkb25lIHdpdGggYGVxbCcuCiBUaGUg dmFsdWUgaXMgYWN0dWFsbHkgdGhlIHRhaWwgb2YgTElTVCB3aG9zZSBjYXIgaXMgRUxULiAg Ki8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBlbHQsIExpc3BfT2JqZWN0IGxpc3QpCisg IChMaXNwX09iamVjdCBlbHQsIExpc3BfT2JqZWN0IGxpc3QpCiB7Ci0gIHJlZ2lzdGVyIExp c3BfT2JqZWN0IHRhaWw7CisgIExpc3BfT2JqZWN0IHRhaWw7CiAKICAgaWYgKCFGTE9BVFAg KGVsdCkpCiAgICAgcmV0dXJuIEZtZW1xIChlbHQsIGxpc3QpOwogCiAgIGZvciAodGFpbCA9 IGxpc3Q7IENPTlNQICh0YWlsKTsgdGFpbCA9IFhDRFIgKHRhaWwpKQogICAgIHsKLSAgICAg IHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRlbTsKKyAgICAgIExpc3BfT2JqZWN0IHRlbTsKICAg ICAgIENIRUNLX0xJU1RfQ09OUyAodGFpbCwgbGlzdCk7CiAgICAgICB0ZW0gPSBYQ0FSICh0 YWlsKTsKICAgICAgIGlmIChGTE9BVFAgKHRlbSkgJiYgaW50ZXJuYWxfZXF1YWwgKGVsdCwg dGVtLCAwLCAwKSkKQEAgLTE0ODMsNyArMTQ4Myw3IEBACiBERUZVTiAoInJhc3NxIiwgRnJh c3NxLCBTcmFzc3EsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gbm9uLW5pbCBp ZiBLRVkgaXMgYGVxJyB0byB0aGUgY2RyIG9mIGFuIGVsZW1lbnQgb2YgTElTVC4KIFRoZSB2 YWx1ZSBpcyBhY3R1YWxseSB0aGUgZmlyc3QgZWxlbWVudCBvZiBMSVNUIHdob3NlIGNkciBp cyBLRVkuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGtleSwgTGlzcF9PYmplY3Qg bGlzdCkKKyAgKExpc3BfT2JqZWN0IGtleSwgTGlzcF9PYmplY3QgbGlzdCkKIHsKICAgd2hp bGUgKDEpCiAgICAgewpAQCAtMTU1MywxMCArMTU1MywxMCBAQAogSWYgdGhlIGZpcnN0IG1l bWJlciBvZiBMSVNUIGlzIEVMVCwgdGhlcmUgaXMgbm8gd2F5IHRvIHJlbW92ZSBpdCBieSBz aWRlIGVmZmVjdDsKIHRoZXJlZm9yZSwgd3JpdGUgYChzZXRxIGZvbyAoZGVscSBlbGVtZW50 IGZvbykpJwogdG8gYmUgc3VyZSBvZiBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgYGZvbycuICAq LykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGVsdCwgTGlzcF9PYmplY3QgbGlzdCkKKyAg KExpc3BfT2JqZWN0IGVsdCwgTGlzcF9PYmplY3QgbGlzdCkKIHsKLSAgcmVnaXN0ZXIgTGlz cF9PYmplY3QgdGFpbCwgcHJldjsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICBM aXNwX09iamVjdCB0YWlsLCBwcmV2OworICBMaXNwX09iamVjdCB0ZW07CiAKICAgdGFpbCA9 IGxpc3Q7CiAgIHByZXYgPSBRbmlsOwpAQCAtMTcwNCw3ICsxNzA0LDcgQEAKIFJldHVybiB0 aGUgcmV2ZXJzZWQgbGlzdC4gICovKQogICAoTGlzcF9PYmplY3QgbGlzdCkKIHsKLSAgcmVn aXN0ZXIgTGlzcF9PYmplY3QgcHJldiwgdGFpbCwgbmV4dDsKKyAgTGlzcF9PYmplY3QgcHJl diwgdGFpbCwgbmV4dDsKIAogICBpZiAoTklMUCAobGlzdCkpIHJldHVybiBsaXN0OwogICBw cmV2ID0gUW5pbDsKQEAgLTE3NDcsNyArMTc0Nyw3IEBACiAgIChMaXNwX09iamVjdCBsaXN0 LCBMaXNwX09iamVjdCBwcmVkaWNhdGUpCiB7CiAgIExpc3BfT2JqZWN0IGZyb250LCBiYWNr OwotICByZWdpc3RlciBMaXNwX09iamVjdCBsZW4sIHRlbTsKKyAgTGlzcF9PYmplY3QgbGVu LCB0ZW07CiAgIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKICAgRU1BQ1NfSU5UIGxl bmd0aDsKIApAQCAtMTc3Myw5ICsxNzczLDkgQEAKIG1lcmdlIChMaXNwX09iamVjdCBvcmdf bDEsIExpc3BfT2JqZWN0IG9yZ19sMiwgTGlzcF9PYmplY3QgcHJlZCkKIHsKICAgTGlzcF9P YmplY3QgdmFsdWU7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRhaWw7CisgIExpc3BfT2Jq ZWN0IHRhaWw7CiAgIExpc3BfT2JqZWN0IHRlbTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qg bDEsIGwyOworICBMaXNwX09iamVjdCBsMSwgbDI7CiAgIHN0cnVjdCBnY3BybyBnY3BybzEs IGdjcHJvMiwgZ2Nwcm8zLCBnY3BybzQ7CiAKICAgbDEgPSBvcmdfbDE7CkBAIC0xODgwLDkg KzE4ODAsOSBAQAogb3RoZXJ3aXNlIHRoZSBuZXcgUFJPUCBWQUwgcGFpciBpcyBhZGRlZC4g IFRoZSBuZXcgcGxpc3QgaXMgcmV0dXJuZWQ7CiB1c2UgYChzZXRxIHggKHBsaXN0LXB1dCB4 IHByb3AgdmFsKSknIHRvIGJlIHN1cmUgdG8gdXNlIHRoZSBuZXcgdmFsdWUuCiBUaGUgUExJ U1QgaXMgbW9kaWZpZWQgYnkgc2lkZSBlZmZlY3RzLiAgKi8pCi0gIChMaXNwX09iamVjdCBw bGlzdCwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvcCwgTGlzcF9PYmplY3QgdmFsKQorICAo TGlzcF9PYmplY3QgcGxpc3QsIExpc3BfT2JqZWN0IHByb3AsIExpc3BfT2JqZWN0IHZhbCkK IHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbCwgcHJldjsKKyAgTGlzcF9PYmplY3Qg dGFpbCwgcHJldjsKICAgTGlzcF9PYmplY3QgbmV3Y2VsbDsKICAgcHJldiA9IFFuaWw7CiAg IGZvciAodGFpbCA9IHBsaXN0OyBDT05TUCAodGFpbCkgJiYgQ09OU1AgKFhDRFIgKHRhaWwp KTsKQEAgLTE5NDksOSArMTk0OSw5IEBACiBvdGhlcndpc2UgdGhlIG5ldyBQUk9QIFZBTCBw YWlyIGlzIGFkZGVkLiAgVGhlIG5ldyBwbGlzdCBpcyByZXR1cm5lZDsKIHVzZSBgKHNldHEg eCAobGF4LXBsaXN0LXB1dCB4IHByb3AgdmFsKSknIHRvIGJlIHN1cmUgdG8gdXNlIHRoZSBu ZXcgdmFsdWUuCiBUaGUgUExJU1QgaXMgbW9kaWZpZWQgYnkgc2lkZSBlZmZlY3RzLiAgKi8p Ci0gIChMaXNwX09iamVjdCBwbGlzdCwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvcCwgTGlz cF9PYmplY3QgdmFsKQorICAoTGlzcF9PYmplY3QgcGxpc3QsIExpc3BfT2JqZWN0IHByb3As IExpc3BfT2JqZWN0IHZhbCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbCwgcHJl djsKKyAgTGlzcF9PYmplY3QgdGFpbCwgcHJldjsKICAgTGlzcF9PYmplY3QgbmV3Y2VsbDsK ICAgcHJldiA9IFFuaWw7CiAgIGZvciAodGFpbCA9IHBsaXN0OyBDT05TUCAodGFpbCkgJiYg Q09OU1AgKFhDRFIgKHRhaWwpKTsKQEAgLTE5OTMsNyArMTk5Myw3IEBACiBOdW1iZXJzIGFy ZSBjb21wYXJlZCBieSB2YWx1ZSwgYnV0IGludGVnZXJzIGNhbm5vdCBlcXVhbCBmbG9hdHMu CiAgKFVzZSBgPScgaWYgeW91IHdhbnQgaW50ZWdlcnMgYW5kIGZsb2F0cyB0byBiZSBhYmxl IHRvIGJlIGVxdWFsLikKIFN5bWJvbHMgbXVzdCBtYXRjaCBleGFjdGx5LiAgKi8pCi0gIChy ZWdpc3RlciBMaXNwX09iamVjdCBvMSwgTGlzcF9PYmplY3QgbzIpCisgIChMaXNwX09iamVj dCBvMSwgTGlzcF9PYmplY3QgbzIpCiB7CiAgIHJldHVybiBpbnRlcm5hbF9lcXVhbCAobzEs IG8yLCAwLCAwKSA/IFF0IDogUW5pbDsKIH0KQEAgLTIwMDIsNyArMjAwMiw3IEBACiAgICAg ICAgZG9jOiAvKiBSZXR1cm4gdCBpZiB0d28gTGlzcCBvYmplY3RzIGhhdmUgc2ltaWxhciBz dHJ1Y3R1cmUgYW5kIGNvbnRlbnRzLgogVGhpcyBpcyBsaWtlIGBlcXVhbCcgZXhjZXB0IHRo YXQgaXQgY29tcGFyZXMgdGhlIHRleHQgcHJvcGVydGllcwogb2Ygc3RyaW5ncy4gIChgZXF1 YWwnIGlnbm9yZXMgdGV4dCBwcm9wZXJ0aWVzLikgICovKQotICAocmVnaXN0ZXIgTGlzcF9P YmplY3QgbzEsIExpc3BfT2JqZWN0IG8yKQorICAoTGlzcF9PYmplY3QgbzEsIExpc3BfT2Jq ZWN0IG8yKQogewogICByZXR1cm4gaW50ZXJuYWxfZXF1YWwgKG8xLCBvMiwgMCwgMSkgPyBR dCA6IFFuaWw7CiB9CkBAIC0yMDEyLDcgKzIwMTIsNyBAQAogICAgUFJPUFMsIGlmIG5vbi1u aWwsIG1lYW5zIGNvbXBhcmUgc3RyaW5nIHRleHQgcHJvcGVydGllcyB0b28uICAqLwogCiBz dGF0aWMgaW50Ci1pbnRlcm5hbF9lcXVhbCAocmVnaXN0ZXIgTGlzcF9PYmplY3QgbzEsIHJl Z2lzdGVyIExpc3BfT2JqZWN0IG8yLCBpbnQgZGVwdGgsIGludCBwcm9wcykKK2ludGVybmFs X2VxdWFsIChMaXNwX09iamVjdCBvMSwgTGlzcF9PYmplY3QgbzIsIGludCBkZXB0aCwgaW50 IHByb3BzKQogewogICBpZiAoZGVwdGggPiAyMDApCiAgICAgZXJyb3IgKCJTdGFjayBvdmVy ZmxvdyBpbiBlcXVhbCIpOwpAQCAtMjA2OCw3ICsyMDY4LDcgQEAKIAogICAgIGNhc2UgTGlz cF9WZWN0b3JsaWtlOgogICAgICAgewotCXJlZ2lzdGVyIGludCBpOworCWludCBpOwogCXB0 cmRpZmZfdCBzaXplID0gQVNJWkUgKG8xKTsKIAkvKiBQc2V1ZG92ZWN0b3JzIGhhdmUgdGhl IHR5cGUgZW5jb2RlZCBpbiB0aGUgc2l6ZSBmaWVsZCwgc28gdGhpcyB0ZXN0CiAJICAgYWN0 dWFsbHkgY2hlY2tzIHRoYXQgdGhlIG9iamVjdHMgaGF2ZSB0aGUgc2FtZSB0eXBlIGFzIHdl bGwgYXMgdGhlCkBAIC0yMTM2LDExICsyMTM2LDExIEBACiBBUlJBWSBpcyBhIHZlY3Rvciwg c3RyaW5nLCBjaGFyLXRhYmxlLCBvciBib29sLXZlY3Rvci4gICovKQogICAoTGlzcF9PYmpl Y3QgYXJyYXksIExpc3BfT2JqZWN0IGl0ZW0pCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBz aXplLCBpZHg7CisgIHB0cmRpZmZfdCBzaXplLCBpZHg7CiAKICAgaWYgKFZFQ1RPUlAgKGFy cmF5KSkKICAgICB7Ci0gICAgICByZWdpc3RlciBMaXNwX09iamVjdCAqcCA9IFhWRUNUT1Ig KGFycmF5KS0+Y29udGVudHM7CisgICAgICBMaXNwX09iamVjdCAqcCA9IFhWRUNUT1IgKGFy cmF5KS0+Y29udGVudHM7CiAgICAgICBzaXplID0gQVNJWkUgKGFycmF5KTsKICAgICAgIGZv ciAoaWR4ID0gMDsgaWR4IDwgc2l6ZTsgaWR4KyspCiAJcFtpZHhdID0gaXRlbTsKQEAgLTIx NTUsNyArMjE1NSw3IEBACiAgICAgfQogICBlbHNlIGlmIChTVFJJTkdQIChhcnJheSkpCiAg ICAgewotICAgICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqcCA9IFNEQVRBIChhcnJheSk7 CisgICAgICB1bnNpZ25lZCBjaGFyICpwID0gU0RBVEEgKGFycmF5KTsKICAgICAgIGludCBj aGFydmFsOwogICAgICAgQ0hFQ0tfQ0hBUkFDVEVSIChpdGVtKTsKICAgICAgIGNoYXJ2YWwg PSBYRkFTVElOVCAoaXRlbSk7CkBAIC0yMTc4LDcgKzIxNzgsNyBAQAogICAgIH0KICAgZWxz ZSBpZiAoQk9PTF9WRUNUT1JfUCAoYXJyYXkpKQogICAgIHsKLSAgICAgIHJlZ2lzdGVyIHVu c2lnbmVkIGNoYXIgKnAgPSBYQk9PTF9WRUNUT1IgKGFycmF5KS0+ZGF0YTsKKyAgICAgIHVu c2lnbmVkIGNoYXIgKnAgPSBYQk9PTF9WRUNUT1IgKGFycmF5KS0+ZGF0YTsKICAgICAgIHNp emUgPQogCSgoWEJPT0xfVkVDVE9SIChhcnJheSktPnNpemUgKyBCT09MX1ZFQ1RPUl9CSVRT X1BFUl9DSEFSIC0gMSkKIAkgLyBCT09MX1ZFQ1RPUl9CSVRTX1BFUl9DSEFSKTsKQEAgLTIy MjgsNyArMjIyOCw3IEBACiAgIChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdz KQogewogICBwdHJkaWZmX3QgYXJnbnVtOwotICByZWdpc3RlciBMaXNwX09iamVjdCB0YWls LCB0ZW0sIHZhbDsKKyAgTGlzcF9PYmplY3QgdGFpbCwgdGVtLCB2YWw7CiAKICAgdmFsID0g dGFpbCA9IFFuaWw7CiAKQEAgLTIyNjgsOSArMjI2OCw5IEBACiBzdGF0aWMgdm9pZAogbWFw Y2FyMSAoRU1BQ1NfSU5UIGxlbmksIExpc3BfT2JqZWN0ICp2YWxzLCBMaXNwX09iamVjdCBm biwgTGlzcF9PYmplY3Qgc2VxKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB0YWlsOwor ICBMaXNwX09iamVjdCB0YWlsOwogICBMaXNwX09iamVjdCBkdW1teTsKLSAgcmVnaXN0ZXIg RU1BQ1NfSU5UIGk7CisgIEVNQUNTX0lOVCBpOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBn Y3BybzIsIGdjcHJvMzsKIAogICBpZiAodmFscykKQEAgLTIzNDksMTAgKzIzNDksMTAgQEAK ICAgKExpc3BfT2JqZWN0IGZ1bmN0aW9uLCBMaXNwX09iamVjdCBzZXF1ZW5jZSwgTGlzcF9P YmplY3Qgc2VwYXJhdG9yKQogewogICBMaXNwX09iamVjdCBsZW47Ci0gIHJlZ2lzdGVyIEVN QUNTX0lOVCBsZW5pOworICBFTUFDU19JTlQgbGVuaTsKICAgRU1BQ1NfSU5UIG5hcmdzOwog ICBwdHJkaWZmX3QgaTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgKmFyZ3M7CisgIExpc3Bf T2JqZWN0ICphcmdzOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOwogICBMaXNwX09iamVjdCBy ZXQ7CiAgIFVTRV9TQUZFX0FMTE9DQTsKQEAgLTIzODgsOSArMjM4OCw5IEBACiBTRVFVRU5D RSBtYXkgYmUgYSBsaXN0LCBhIHZlY3RvciwgYSBib29sLXZlY3Rvciwgb3IgYSBzdHJpbmcu ICAqLykKICAgKExpc3BfT2JqZWN0IGZ1bmN0aW9uLCBMaXNwX09iamVjdCBzZXF1ZW5jZSkK IHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgbGVuOwotICByZWdpc3RlciBFTUFDU19JTlQg bGVuaTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgKmFyZ3M7CisgIExpc3BfT2JqZWN0IGxl bjsKKyAgRU1BQ1NfSU5UIGxlbmk7CisgIExpc3BfT2JqZWN0ICphcmdzOwogICBMaXNwX09i amVjdCByZXQ7CiAgIFVTRV9TQUZFX0FMTE9DQTsKIApAQCAtMjQxNSw3ICsyNDE1LDcgQEAK IFNFUVVFTkNFIG1heSBiZSBhIGxpc3QsIGEgdmVjdG9yLCBhIGJvb2wtdmVjdG9yLCBvciBh IHN0cmluZy4gICovKQogICAoTGlzcF9PYmplY3QgZnVuY3Rpb24sIExpc3BfT2JqZWN0IHNl cXVlbmNlKQogewotICByZWdpc3RlciBFTUFDU19JTlQgbGVuaTsKKyAgRU1BQ1NfSU5UIGxl bmk7CiAKICAgbGVuaSA9IFhGQVNUSU5UIChGbGVuZ3RoIChzZXF1ZW5jZSkpOwogICBpZiAo Q0hBUl9UQUJMRV9QIChzZXF1ZW5jZSkpCkBAIC0yNDUwLDcgKzI0NTAsNyBAQAogaXMgbmls LCBhbmQgYHVzZS1kaWFsb2ctYm94JyBpcyBub24tbmlsLiAgKi8pCiAgIChMaXNwX09iamVj dCBwcm9tcHQpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFuczsKKyAgTGlzcF9PYmpl Y3QgYW5zOwogICBMaXNwX09iamVjdCBhcmdzWzJdOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8x OwogCkBAIC0yNTUyLDcgKzI1NTIsNyBAQAogU1VCRkVBVFVSRSBjYW4gYmUgdXNlZCB0byBj aGVjayBhIHNwZWNpZmljIHN1YmZlYXR1cmUgb2YgRkVBVFVSRS4gICovKQogICAoTGlzcF9P YmplY3QgZmVhdHVyZSwgTGlzcF9PYmplY3Qgc3ViZmVhdHVyZSkKIHsKLSAgcmVnaXN0ZXIg TGlzcF9PYmplY3QgdGVtOworICBMaXNwX09iamVjdCB0ZW07CiAgIENIRUNLX1NZTUJPTCAo ZmVhdHVyZSk7CiAgIHRlbSA9IEZtZW1xIChmZWF0dXJlLCBWZmVhdHVyZXMpOwogICBpZiAo IU5JTFAgKHRlbSkgJiYgIU5JTFAgKHN1YmZlYXR1cmUpKQpAQCAtMjU2Niw3ICsyNTY2LDcg QEAKIHBhcnRpY3VsYXIgc3ViZmVhdHVyZXMgc3VwcG9ydGVkIGluIHRoaXMgdmVyc2lvbiBv ZiBGRUFUVVJFLiAgKi8pCiAgIChMaXNwX09iamVjdCBmZWF0dXJlLCBMaXNwX09iamVjdCBz dWJmZWF0dXJlcykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICBMaXNwX09i amVjdCB0ZW07CiAgIENIRUNLX1NZTUJPTCAoZmVhdHVyZSk7CiAgIENIRUNLX0xJU1QgKHN1 YmZlYXR1cmVzKTsKICAgaWYgKCFOSUxQIChWYXV0b2xvYWRfcXVldWUpKQpAQCAtMjYxMyw3 ICsyNjEzLDcgQEAKIFRoZSBub3JtYWwgbWVzc2FnZXMgYXQgc3RhcnQgYW5kIGVuZCBvZiBs b2FkaW5nIEZJTEVOQU1FIGFyZSBzdXBwcmVzc2VkLiAgKi8pCiAgIChMaXNwX09iamVjdCBm ZWF0dXJlLCBMaXNwX09iamVjdCBmaWxlbmFtZSwgTGlzcF9PYmplY3Qgbm9lcnJvcikKIHsK LSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICBMaXNwX09iamVjdCB0ZW07CiAgIHN0 cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKICAgaW50IGZyb21fZmlsZSA9IGxvYWRfaW5f cHJvZ3Jlc3M7CiAKQEAgLTQ1ODEsOCArNDU4MSw4IEBACiAgIHB0cmRpZmZfdCBzaXplOwog ICBFTUFDU19JTlQgc3RhcnRfY2hhciA9IDAsIGVuZF9jaGFyID0gMDsKICAgcHRyZGlmZl90 IHN0YXJ0X2J5dGUsIGVuZF9ieXRlOwotICByZWdpc3RlciBFTUFDU19JTlQgYiwgZTsKLSAg cmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYnA7CisgIEVNQUNTX0lOVCBiLCBlOworICBzdHJ1 Y3QgYnVmZmVyICpicDsKICAgRU1BQ1NfSU5UIHRlbXA7CiAgIGludCBkaWdlc3Rfc2l6ZTsK ICAgdm9pZCAqKCpoYXNoX2Z1bmMpIChjb25zdCBjaGFyICosIHNpemVfdCwgdm9pZCAqKTsK Cj09PSBtb2RpZmllZCBmaWxlICdzcmMvZnJhbWUuYycKLS0tIHNyYy9mcmFtZS5jCTIwMTIt MDYtMDEgMDM6NDE6MDMgKzAwMDAKKysrIHNyYy9mcmFtZS5jCTIwMTItMDYtMDMgMDU6NTM6 MzggKzAwMDAKQEAgLTI2MCw5ICsyNjAsOSBAQAogbWFrZV9mcmFtZSAoaW50IG1pbmlfcCkK IHsKICAgTGlzcF9PYmplY3QgZnJhbWU7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBmcmFtZSAqZjsK LSAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qgcm9vdF93aW5kb3c7Ci0gIHJlZ2lzdGVyIExpc3Bf T2JqZWN0IG1pbmlfd2luZG93OworICBzdHJ1Y3QgZnJhbWUgKmY7CisgIExpc3BfT2JqZWN0 IHJvb3Rfd2luZG93OworICBMaXNwX09iamVjdCBtaW5pX3dpbmRvdzsKIAogICBmID0gYWxs b2NhdGVfZnJhbWUgKCk7CiAgIFhTRVRGUkFNRSAoZnJhbWUsIGYpOwpAQCAtNDEwLDkgKzQx MCwxMCBAQAogICAgZGVmYXVsdCAodGhlIGdsb2JhbCBtaW5pYnVmZmVyKS4gICovCiAKIHN0 cnVjdCBmcmFtZSAqCi1tYWtlX2ZyYW1lX3dpdGhvdXRfbWluaWJ1ZmZlciAocmVnaXN0ZXIg TGlzcF9PYmplY3QgbWluaV93aW5kb3csIEtCT0FSRCAqa2IsIExpc3BfT2JqZWN0IGRpc3Bs YXkpCittYWtlX2ZyYW1lX3dpdGhvdXRfbWluaWJ1ZmZlciAoTGlzcF9PYmplY3QgbWluaV93 aW5kb3csIEtCT0FSRCAqa2IsCisJCQkgICAgICAgTGlzcF9PYmplY3QgZGlzcGxheSkKIHsK LSAgcmVnaXN0ZXIgc3RydWN0IGZyYW1lICpmOworICBzdHJ1Y3QgZnJhbWUgKmY7CiAgIHN0 cnVjdCBnY3BybyBnY3BybzE7CiAKICAgaWYgKCFOSUxQIChtaW5pX3dpbmRvdykpCkBAIC00 NjMsOSArNDY0LDkgQEAKIHsKICAgLyogRmlyc3QgbWFrZSBhIGZyYW1lIGNvbnRhaW5pbmcg anVzdCBhIHJvb3Qgd2luZG93LCBubyBtaW5pYnVmZmVyLiAgKi8KIAotICByZWdpc3RlciBz dHJ1Y3QgZnJhbWUgKmYgPSBtYWtlX2ZyYW1lICgwKTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgbWluaV93aW5kb3c7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZyYW1lOworICBzdHJ1 Y3QgZnJhbWUgKmYgPSBtYWtlX2ZyYW1lICgwKTsKKyAgTGlzcF9PYmplY3QgbWluaV93aW5k b3c7CisgIExpc3BfT2JqZWN0IGZyYW1lOwogCiAgIFhTRVRGUkFNRSAoZnJhbWUsIGYpOwog CkBAIC01NDksNyArNTUwLDcgQEAKIHN0YXRpYyBzdHJ1Y3QgZnJhbWUgKgogbWFrZV90ZXJt aW5hbF9mcmFtZSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtaW5hbCkKIHsKLSAgcmVnaXN0ZXIg c3RydWN0IGZyYW1lICpmOworICBzdHJ1Y3QgZnJhbWUgKmY7CiAgIExpc3BfT2JqZWN0IGZy YW1lOwogICBjaGFyIG5hbWVbc2l6ZW9mICJGIiArIElOVF9TVFJMRU5fQk9VTkQgKHByaW50 bWF4X3QpXTsKIApAQCAtMTE1MiwxMCArMTE1Myw2IEBACiAgIGRlc2NyaWJlZCBmb3IgRmRl bGV0ZV9mcmFtZS4gICovCiBMaXNwX09iamVjdAogZGVsZXRlX2ZyYW1lIChMaXNwX09iamVj dCBmcmFtZSwgTGlzcF9PYmplY3QgZm9yY2UpCi0gICAgIC8qIElmIHdlIHVzZSBgcmVnaXN0 ZXInIGhlcmUsIGdjYy00LjAuMiBvbiBhbWQ2NCB1c2luZwotCS1EVVNFX0xJU1BfVU5JT05f VFlQRSBjb21wbGFpbnMgZnVydGhlciBkb3duIHRoYXQgd2UncmUgZ2V0dGluZyB0aGUKLQlh ZGRyZXNzIG9mIGBmb3JjZScuICBHbyBmaWd1cmUuICAqLwotCiB7CiAgIHN0cnVjdCBmcmFt ZSAqZjsKICAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOwpAQCAtMTk3 OSw5ICsxOTc2LDkgQEAKIHN0YXRpYwogI2VuZGlmCiBMaXNwX09iamVjdAotZ2V0X2ZyYW1l X3BhcmFtIChyZWdpc3RlciBzdHJ1Y3QgZnJhbWUgKmZyYW1lLCBMaXNwX09iamVjdCBwcm9w KQorZ2V0X2ZyYW1lX3BhcmFtIChzdHJ1Y3QgZnJhbWUgKmZyYW1lLCBMaXNwX09iamVjdCBw cm9wKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB0ZW07CisgIExpc3BfT2JqZWN0IHRl bTsKIAogICB0ZW0gPSBGYXNzcSAocHJvcCwgZnJhbWUtPnBhcmFtX2FsaXN0KTsKICAgaWYg KEVRICh0ZW0sIFFuaWwpKQpAQCAtMjAyNyw3ICsyMDI0LDcgQEAKIHZvaWQKIHN0b3JlX2lu X2FsaXN0IChMaXNwX09iamVjdCAqYWxpc3RwdHIsIExpc3BfT2JqZWN0IHByb3AsIExpc3Bf T2JqZWN0IHZhbCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICBMaXNwX09i amVjdCB0ZW07CiAKICAgdGVtID0gRmFzc3EgKHByb3AsICphbGlzdHB0cik7CiAgIGlmIChF USAodGVtLCBRbmlsKSkKQEAgLTIwOTQsNyArMjA5MSw3IEBACiB2b2lkCiBzdG9yZV9mcmFt ZV9wYXJhbSAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBwcm9wLCBMaXNwX09iamVj dCB2YWwpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IG9sZF9hbGlzdF9lbHQ7CisgIExp c3BfT2JqZWN0IG9sZF9hbGlzdF9lbHQ7CiAKICAgLyogVGhlIGJ1ZmZlci1saXN0IHBhcmFt ZXRlcnMgYXJlIHN0b3JlZCBpbiBhIHNwZWNpYWwgcGxhY2UgYW5kIG5vdAogICAgICBpbiB0 aGUgYWxpc3QuICBBbGwgYnVmZmVycyBtdXN0IGJlIGxpdmUuICAqLwpAQCAtMjM3Nyw3ICsy Mzc0LDcgQEAKICAgKExpc3BfT2JqZWN0IGZyYW1lLCBMaXNwX09iamVjdCBhbGlzdCkKIHsK ICAgRlJBTUVfUFRSIGY7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRhaWwsIHByb3AsIHZh bDsKKyAgTGlzcF9PYmplY3QgdGFpbCwgcHJvcCwgdmFsOwogCiAgIGlmIChFUSAoZnJhbWUs IFFuaWwpKQogICAgIGZyYW1lID0gc2VsZWN0ZWRfZnJhbWU7CkBAIC0yNTY3LDcgKzI1NjQs NyBAQAogYnV0IHRoYXQgdGhlIGlkZWEgb2YgdGhlIGFjdHVhbCBoZWlnaHQgb2YgdGhlIGZy YW1lIHNob3VsZCBub3QgYmUgY2hhbmdlZC4gICovKQogICAoTGlzcF9PYmplY3QgZnJhbWUs IExpc3BfT2JqZWN0IGxpbmVzLCBMaXNwX09iamVjdCBwcmV0ZW5kKQogewotICByZWdpc3Rl ciBzdHJ1Y3QgZnJhbWUgKmY7CisgIHN0cnVjdCBmcmFtZSAqZjsKIAogICBDSEVDS19UWVBF X1JBTkdFRF9JTlRFR0VSIChpbnQsIGxpbmVzKTsKICAgaWYgKE5JTFAgKGZyYW1lKSkKQEAg LTI1OTUsNyArMjU5Miw3IEBACiBidXQgdGhhdCB0aGUgaWRlYSBvZiB0aGUgYWN0dWFsIHdp ZHRoIG9mIHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGNoYW5nZWQuICAqLykKICAgKExpc3Bf T2JqZWN0IGZyYW1lLCBMaXNwX09iamVjdCBjb2xzLCBMaXNwX09iamVjdCBwcmV0ZW5kKQog ewotICByZWdpc3RlciBzdHJ1Y3QgZnJhbWUgKmY7CisgIHN0cnVjdCBmcmFtZSAqZjsKICAg Q0hFQ0tfVFlQRV9SQU5HRURfSU5URUdFUiAoaW50LCBjb2xzKTsKICAgaWYgKE5JTFAgKGZy YW1lKSkKICAgICBmcmFtZSA9IHNlbGVjdGVkX2ZyYW1lOwpAQCAtMjYyMCw3ICsyNjE3LDcg QEAKICAgICAgICBkb2M6IC8qIFNldHMgc2l6ZSBvZiBGUkFNRSB0byBDT0xTIGJ5IFJPV1Ms IG1lYXN1cmVkIGluIGNoYXJhY3RlcnMuICAqLykKICAgKExpc3BfT2JqZWN0IGZyYW1lLCBM aXNwX09iamVjdCBjb2xzLCBMaXNwX09iamVjdCByb3dzKQogewotICByZWdpc3RlciBzdHJ1 Y3QgZnJhbWUgKmY7CisgIHN0cnVjdCBmcmFtZSAqZjsKIAogICBDSEVDS19MSVZFX0ZSQU1F IChmcmFtZSk7CiAgIENIRUNLX1RZUEVfUkFOR0VEX0lOVEVHRVIgKGludCwgY29scyk7CkBA IC0yNjUyLDcgKzI2NDksNyBAQAogdGhlIHJpZ2h0bW9zdCBvciBib3R0b21tb3N0IHBvc3Np YmxlIHBvc2l0aW9uICh0aGF0IHN0YXlzIHdpdGhpbiB0aGUgc2NyZWVuKS4gICovKQogICAo TGlzcF9PYmplY3QgZnJhbWUsIExpc3BfT2JqZWN0IHhvZmZzZXQsIExpc3BfT2JqZWN0IHlv ZmZzZXQpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBmcmFtZSAqZjsKKyAgc3RydWN0IGZyYW1l ICpmOwogCiAgIENIRUNLX0xJVkVfRlJBTUUgKGZyYW1lKTsKICAgQ0hFQ0tfVFlQRV9SQU5H RURfSU5URUdFUiAoaW50LCB4b2Zmc2V0KTsKQEAgLTI4NTAsNyArMjg0Nyw3IEBACiAJICB8 fCBFUSAocHJvcCwgUWJhY2tncm91bmRfY29sb3IpCiAJICB8fCBFUSAocHJvcCwgUWZvbnQp KQogCXsKLQkgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHBhcmFtX2luZGV4LCBvbGRfdmFsdWU7 CisJICBMaXNwX09iamVjdCBwYXJhbV9pbmRleCwgb2xkX3ZhbHVlOwogCiAJICBvbGRfdmFs dWUgPSBnZXRfZnJhbWVfcGFyYW0gKGYsIHByb3ApOwogCSAgaWYgKE5JTFAgKEZlcXVhbCAo dmFsLCBvbGRfdmFsdWUpKSkKQEAgLTI5MDAsNyArMjg5Nyw3IEBACiAJY29udGludWU7CiAg ICAgICBlbHNlCiAJewotCSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgcGFyYW1faW5kZXgsIG9s ZF92YWx1ZTsKKwkgIExpc3BfT2JqZWN0IHBhcmFtX2luZGV4LCBvbGRfdmFsdWU7CiAKIAkg IG9sZF92YWx1ZSA9IGdldF9mcmFtZV9wYXJhbSAoZiwgcHJvcCk7CiAKQEAgLTM2NDksNyAr MzY0Niw3IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIHhyZGJfZ2V0X3Jlc291cmNlIChYcm1E YXRhYmFzZSByZGIsIExpc3BfT2JqZWN0IGF0dHJpYnV0ZSwgTGlzcF9PYmplY3QgY2xhc3Ms IExpc3BfT2JqZWN0IGNvbXBvbmVudCwgTGlzcF9PYmplY3Qgc3ViY2xhc3MpCiB7Ci0gIHJl Z2lzdGVyIGNoYXIgKnZhbHVlOworICBjaGFyICp2YWx1ZTsKICAgY2hhciAqbmFtZV9rZXk7 CiAgIGNoYXIgKmNsYXNzX2tleTsKIApAQCAtMzc4MSw3ICszNzc4LDcgQEAKIHhfZ2V0X2Fy ZyAoRGlzcGxheV9JbmZvICpkcHlpbmZvLCBMaXNwX09iamVjdCBhbGlzdCwgTGlzcF9PYmpl Y3QgcGFyYW0sCiAJICAgY29uc3QgY2hhciAqYXR0cmlidXRlLCBjb25zdCBjaGFyICpjbGFz cywgZW51bSByZXNvdXJjZV90eXBlcyB0eXBlKQogewotICByZWdpc3RlciBMaXNwX09iamVj dCB0ZW07CisgIExpc3BfT2JqZWN0IHRlbTsKIAogICB0ZW0gPSBGYXNzcSAocGFyYW0sIGFs aXN0KTsKIApAQCAtNDAwOCw3ICs0MDA1LDcgQEAKIGludAogeF9maWd1cmVfd2luZG93X3Np emUgKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3QgcGFybXMsIGludCB0b29sYmFyX3Ap CiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRlbTAsIHRlbTEsIHRlbTI7CisgIExpc3Bf T2JqZWN0IHRlbTAsIHRlbTEsIHRlbTI7CiAgIGxvbmcgd2luZG93X3Byb21wdGluZyA9IDA7 CiAgIERpc3BsYXlfSW5mbyAqZHB5aW5mbyA9IEZSQU1FX1hfRElTUExBWV9JTkZPIChmKTsK IAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9nbWFsbG9jLmMnCi0tLSBzcmMvZ21hbGxvYy5j CTIwMTItMDUtMjEgMTU6MzY6NTQgKzAwMDAKKysrIHNyYy9nbWFsbG9jLmMJMjAxMi0wNi0w MyAwNTo1MzozOCArMDAwMApAQCAtNzAyLDcgKzcwMiw3IEBACiB7CiAgIHZvaWQgKnJlc3Vs dDsKICAgc2l6ZV90IGJsb2NrLCBibG9ja3MsIGxhc3RibG9ja3MsIHN0YXJ0OwotICByZWdp c3RlciBzaXplX3QgaTsKKyAgc2l6ZV90IGk7CiAgIHN0cnVjdCBsaXN0ICpuZXh0OwogCiAg IC8qIEFOU0kgQyBhbGxvd3MgYG1hbGxvYyAoMCknIHRvIGVpdGhlciByZXR1cm4gTlVMTCwg b3IgdG8gcmV0dXJuIGEKQEAgLTcyNyw3ICs3MjcsNyBAQAogICAgIHsKICAgICAgIC8qIFNt YWxsIGFsbG9jYXRpb24gdG8gcmVjZWl2ZSBhIGZyYWdtZW50IG9mIGEgYmxvY2suCiAJIERl dGVybWluZSB0aGUgbG9nYXJpdGhtIHRvIGJhc2UgdHdvIG9mIHRoZSBmcmFnbWVudCBzaXpl LiAqLwotICAgICAgcmVnaXN0ZXIgc2l6ZV90IGxvZyA9IDE7CisgICAgICBzaXplX3QgbG9n ID0gMTsKICAgICAgIC0tc2l6ZTsKICAgICAgIHdoaWxlICgoc2l6ZSAvPSAyKSAhPSAwKQog CSsrbG9nOwpAQCAtOTkxLDE0ICs5OTEsMTQgQEAKIHsKICAgaW50IHR5cGU7CiAgIHNpemVf dCBibG9jaywgYmxvY2tzOwotICByZWdpc3RlciBzaXplX3QgaTsKKyAgc2l6ZV90IGk7CiAg IHN0cnVjdCBsaXN0ICpwcmV2LCAqbmV4dDsKICAgdm9pZCAqY3VyYnJrOwogICBjb25zdCBz aXplX3QgbGVzc2NvcmVfdGhyZXNob2xkCiAgICAgLyogVGhyZXNob2xkIG9mIGZyZWUgc3Bh Y2UgYXQgd2hpY2ggd2Ugd2lsbCByZXR1cm4gc29tZSB0byB0aGUgc3lzdGVtLiAgKi8KICAg ICA9IEZJTkFMX0ZSRUVfQkxPQ0tTICsgMiAqIF9fbWFsbG9jX2V4dHJhX2Jsb2NrczsKIAot ICByZWdpc3RlciBzdHJ1Y3QgYWxpZ25saXN0ICpsOworICBzdHJ1Y3QgYWxpZ25saXN0ICps OwogCiAgIGlmIChwdHIgPT0gTlVMTCkKICAgICByZXR1cm47CkBAIC0xMTQ5LDcgKzExNDks NyBAQAogCSAgLyogTm93IHNlZSBpZiB3ZSBjYW4gcmV0dXJuIHN0dWZmIHRvIHRoZSBzeXN0 ZW0uICAqLwogCSAgaWYgKGJsb2NrICsgYmxvY2tzID09IF9oZWFwbGltaXQgJiYgYmxvY2tz ID49IGxlc3Njb3JlX3RocmVzaG9sZCkKIAkgICAgewotCSAgICAgIHJlZ2lzdGVyIHNpemVf dCBieXRlcyA9IGJsb2NrcyAqIEJMT0NLU0laRTsKKwkgICAgICBzaXplX3QgYnl0ZXMgPSBi bG9ja3MgKiBCTE9DS1NJWkU7CiAJICAgICAgX2hlYXBsaW1pdCAtPSBibG9ja3M7CiAJICAg ICAgKCpfX21vcmVjb3JlKSAoLWJ5dGVzKTsKIAkgICAgICBfaGVhcGluZm9bX2hlYXBpbmZv W2Jsb2NrXS5mcmVlLnByZXZdLmZyZWUubmV4dApAQCAtMTQ5Myw5ICsxNDkzLDkgQEAKIC8q IEFsbG9jYXRlIGFuIGFycmF5IG9mIE5NRU1CIGVsZW1lbnRzIGVhY2ggU0laRSBieXRlcyBs b25nLgogICAgVGhlIGVudGlyZSBhcnJheSBpcyBpbml0aWFsaXplZCB0byB6ZXJvcy4gICov CiB2b2lkICoKLWNhbGxvYyAocmVnaXN0ZXIgc2l6ZV90IG5tZW1iLCByZWdpc3RlciBzaXpl X3Qgc2l6ZSkKK2NhbGxvYyAoc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSkKIHsKLSAgcmVn aXN0ZXIgdm9pZCAqcmVzdWx0ID0gbWFsbG9jIChubWVtYiAqIHNpemUpOworICB2b2lkICpy ZXN1bHQgPSBtYWxsb2MgKG5tZW1iICogc2l6ZSk7CiAKICAgaWYgKHJlc3VsdCAhPSBOVUxM KQogICAgICh2b2lkKSBtZW1zZXQgKHJlc3VsdCwgMCwgbm1lbWIgKiBzaXplKTsKCj09PSBt b2RpZmllZCBmaWxlICdzcmMvaW5kZW50LmMnCi0tLSBzcmMvaW5kZW50LmMJMjAxMi0wNC0y MiAwMDo1MzozMiArMDAwMAorKysgc3JjL2luZGVudC5jCTIwMTItMDYtMDMgMDU6NTM6Mzgg KzAwMDAKQEAgLTMyMSwxNCArMzIxLDE0IEBACiBwdHJkaWZmX3QKIGN1cnJlbnRfY29sdW1u ICh2b2lkKQogewotICByZWdpc3RlciBwdHJkaWZmX3QgY29sOwotICByZWdpc3RlciB1bnNp Z25lZCBjaGFyICpwdHIsICpzdG9wOwotICByZWdpc3RlciBpbnQgdGFiX3NlZW47CisgIHB0 cmRpZmZfdCBjb2w7CisgIHVuc2lnbmVkIGNoYXIgKnB0ciwgKnN0b3A7CisgIGludCB0YWJf c2VlbjsKICAgcHRyZGlmZl90IHBvc3RfdGFiOwotICByZWdpc3RlciBpbnQgYzsKKyAgaW50 IGM7CiAgIGludCB0YWJfd2lkdGggPSBTQU5FX1RBQl9XSURUSCAoY3VycmVudF9idWZmZXIp OwogICBpbnQgY3RsX2Fycm93ID0gIU5JTFAgKEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBjdGxf YXJyb3cpKTsKLSAgcmVnaXN0ZXIgc3RydWN0IExpc3BfQ2hhcl9UYWJsZSAqZHAgPSBidWZm ZXJfZGlzcGxheV90YWJsZSAoKTsKKyAgc3RydWN0IExpc3BfQ2hhcl9UYWJsZSAqZHAgPSBi dWZmZXJfZGlzcGxheV90YWJsZSAoKTsKIAogICBpZiAoUFQgPT0gbGFzdF9rbm93bl9jb2x1 bW5fcG9pbnQKICAgICAgICYmIE1PRElGRiA9PSBsYXN0X2tub3duX2NvbHVtbl9tb2RpZmll ZCkKQEAgLTUxNCwxNSArNTE0LDE1IEBACiBzY2FuX2Zvcl9jb2x1bW4gKHB0cmRpZmZfdCAq ZW5kcG9zLCBFTUFDU19JTlQgKmdvYWxjb2wsIHB0cmRpZmZfdCAqcHJldmNvbCkKIHsKICAg aW50IHRhYl93aWR0aCA9IFNBTkVfVEFCX1dJRFRIIChjdXJyZW50X2J1ZmZlcik7Ci0gIHJl Z2lzdGVyIGludCBjdGxfYXJyb3cgPSAhTklMUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIGN0 bF9hcnJvdykpOwotICByZWdpc3RlciBzdHJ1Y3QgTGlzcF9DaGFyX1RhYmxlICpkcCA9IGJ1 ZmZlcl9kaXNwbGF5X3RhYmxlICgpOworICBpbnQgY3RsX2Fycm93ID0gIU5JTFAgKEJWQVIg KGN1cnJlbnRfYnVmZmVyLCBjdGxfYXJyb3cpKTsKKyAgc3RydWN0IExpc3BfQ2hhcl9UYWJs ZSAqZHAgPSBidWZmZXJfZGlzcGxheV90YWJsZSAoKTsKICAgaW50IG11bHRpYnl0ZSA9ICFO SUxQIChCVkFSIChjdXJyZW50X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0ZXJz KSk7CiAgIHN0cnVjdCBjb21wb3NpdGlvbl9pdCBjbXBfaXQ7CiAgIExpc3BfT2JqZWN0IHdp bmRvdzsKICAgc3RydWN0IHdpbmRvdyAqdzsKIAogICAvKiBTdGFydCB0aGUgc2NhbiBhdCB0 aGUgYmVnaW5uaW5nIG9mIHRoaXMgbGluZSB3aXRoIGNvbHVtbiBudW1iZXIgMC4gICovCi0g IHJlZ2lzdGVyIHB0cmRpZmZfdCBjb2wgPSAwLCBwcmV2X2NvbCA9IDA7CisgIHB0cmRpZmZf dCBjb2wgPSAwLCBwcmV2X2NvbCA9IDA7CiAgIEVNQUNTX0lOVCBnb2FsID0gZ29hbGNvbCA/ ICpnb2FsY29sIDogTU9TVF9QT1NJVElWRV9GSVhOVU07CiAgIHB0cmRpZmZfdCBlbmQgPSBl bmRwb3MgPyAqZW5kcG9zIDogUFQ7CiAgIHB0cmRpZmZfdCBzY2FuLCBzY2FuX2J5dGU7CkBA IC03MjQsMTQgKzcyNCwxNCBAQAogc3RhdGljIGRvdWJsZQogc3RyaW5nX2Rpc3BsYXlfd2lk dGggKExpc3BfT2JqZWN0IHN0cmluZywgTGlzcF9PYmplY3QgYmVnLCBMaXNwX09iamVjdCBl bmQpCiB7Ci0gIHJlZ2lzdGVyIGludCBjb2w7Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIg KnB0ciwgKnN0b3A7Ci0gIHJlZ2lzdGVyIGludCB0YWJfc2VlbjsKKyAgaW50IGNvbDsKKyAg dW5zaWduZWQgY2hhciAqcHRyLCAqc3RvcDsKKyAgaW50IHRhYl9zZWVuOwogICBpbnQgcG9z dF90YWI7Ci0gIHJlZ2lzdGVyIGludCBjOworICBpbnQgYzsKICAgaW50IHRhYl93aWR0aCA9 IFNBTkVfVEFCX1dJRFRIIChjdXJyZW50X2J1ZmZlcik7CiAgIGludCBjdGxfYXJyb3cgPSAh TklMUCAoY3VycmVudF9idWZmZXItPmN0bF9hcnJvdyk7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBM aXNwX0NoYXJfVGFibGUgKmRwID0gYnVmZmVyX2Rpc3BsYXlfdGFibGUgKCk7CisgIHN0cnVj dCBMaXNwX0NoYXJfVGFibGUgKmRwID0gYnVmZmVyX2Rpc3BsYXlfdGFibGUgKCk7CiAgIGlu dCBiLCBlOwogCiAgIGlmIChOSUxQIChlbmQpKQpAQCAtODA0LDcgKzgwNCw3IEBACiAgIChM aXNwX09iamVjdCBjb2x1bW4sIExpc3BfT2JqZWN0IG1pbmltdW0pCiB7CiAgIEVNQUNTX0lO VCBtaW5jb2w7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBmcm9tY29sOworICBwdHJkaWZmX3Qg ZnJvbWNvbDsKICAgaW50IHRhYl93aWR0aCA9IFNBTkVfVEFCX1dJRFRIIChjdXJyZW50X2J1 ZmZlcik7CiAKICAgQ0hFQ0tfTlVNQkVSIChjb2x1bW4pOwpAQCAtODYzLDEwICs4NjMsMTAg QEAKIHN0YXRpYyBwdHJkaWZmX3QKIHBvc2l0aW9uX2luZGVudGF0aW9uIChwdHJkaWZmX3Qg cG9zX2J5dGUpCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBjb2x1bW4gPSAwOworICBwdHJk aWZmX3QgY29sdW1uID0gMDsKICAgaW50IHRhYl93aWR0aCA9IFNBTkVfVEFCX1dJRFRIIChj dXJyZW50X2J1ZmZlcik7Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKnA7Ci0gIHJlZ2lz dGVyIHVuc2lnbmVkIGNoYXIgKnN0b3A7CisgIHVuc2lnbmVkIGNoYXIgKnA7CisgIHVuc2ln bmVkIGNoYXIgKnN0b3A7CiAgIHVuc2lnbmVkIGNoYXIgKnN0YXJ0OwogICBwdHJkaWZmX3Qg bmV4dF9ib3VuZGFyeV9ieXRlID0gcG9zX2J5dGU7CiAgIHB0cmRpZmZfdCBjZWlsaW5nID0g bmV4dF9ib3VuZGFyeV9ieXRlOwpAQCAtMTEwOCwxNSArMTEwOCwxNSBAQAogc3RydWN0IHBv c2l0aW9uICoKIGNvbXB1dGVfbW90aW9uIChwdHJkaWZmX3QgZnJvbSwgRU1BQ1NfSU5UIGZy b212cG9zLCBFTUFDU19JTlQgZnJvbWhwb3MsIGludCBkaWRfbW90aW9uLCBwdHJkaWZmX3Qg dG8sIEVNQUNTX0lOVCB0b3Zwb3MsIEVNQUNTX0lOVCB0b2hwb3MsIEVNQUNTX0lOVCB3aWR0 aCwgcHRyZGlmZl90IGhzY3JvbGwsIGludCB0YWJfb2Zmc2V0LCBzdHJ1Y3Qgd2luZG93ICp3 aW4pCiB7Ci0gIHJlZ2lzdGVyIEVNQUNTX0lOVCBocG9zID0gZnJvbWhwb3M7Ci0gIHJlZ2lz dGVyIEVNQUNTX0lOVCB2cG9zID0gZnJvbXZwb3M7CisgIEVNQUNTX0lOVCBocG9zID0gZnJv bWhwb3M7CisgIEVNQUNTX0lOVCB2cG9zID0gZnJvbXZwb3M7CiAKLSAgcmVnaXN0ZXIgcHRy ZGlmZl90IHBvczsKKyAgcHRyZGlmZl90IHBvczsKICAgcHRyZGlmZl90IHBvc19ieXRlOwot ICByZWdpc3RlciBpbnQgYyA9IDA7CisgIGludCBjID0gMDsKICAgaW50IHRhYl93aWR0aCA9 IFNBTkVfVEFCX1dJRFRIIChjdXJyZW50X2J1ZmZlcik7Ci0gIHJlZ2lzdGVyIGludCBjdGxf YXJyb3cgPSAhTklMUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIGN0bF9hcnJvdykpOwotICBy ZWdpc3RlciBzdHJ1Y3QgTGlzcF9DaGFyX1RhYmxlICpkcCA9IHdpbmRvd19kaXNwbGF5X3Rh YmxlICh3aW4pOworICBpbnQgY3RsX2Fycm93ID0gIU5JTFAgKEJWQVIgKGN1cnJlbnRfYnVm ZmVyLCBjdGxfYXJyb3cpKTsKKyAgc3RydWN0IExpc3BfQ2hhcl9UYWJsZSAqZHAgPSB3aW5k b3dfZGlzcGxheV90YWJsZSAod2luKTsKICAgRU1BQ1NfSU5UIHNlbGVjdGl2ZQogICAgID0g KElOVEVHRVJQIChCVkFSIChjdXJyZW50X2J1ZmZlciwgc2VsZWN0aXZlX2Rpc3BsYXkpKQog ICAgICAgID8gWElOVCAoQlZBUiAoY3VycmVudF9idWZmZXIsIHNlbGVjdGl2ZV9kaXNwbGF5 KSkKQEAgLTE4MTUsMTQgKzE4MTUsMTQgQEAKIHN0YXRpYyBzdHJ1Y3QgcG9zaXRpb24gdmFs X3Ztb3Rpb247CiAKIHN0cnVjdCBwb3NpdGlvbiAqCi12bW90aW9uIChyZWdpc3RlciBwdHJk aWZmX3QgZnJvbSwgcmVnaXN0ZXIgRU1BQ1NfSU5UIHZ0YXJnZXQsIHN0cnVjdCB3aW5kb3cg KncpCit2bW90aW9uIChwdHJkaWZmX3QgZnJvbSwgRU1BQ1NfSU5UIHZ0YXJnZXQsIHN0cnVj dCB3aW5kb3cgKncpCiB7CiAgIHB0cmRpZmZfdCBoc2Nyb2xsID0gWElOVCAody0+aHNjcm9s bCk7CiAgIHN0cnVjdCBwb3NpdGlvbiBwb3M7CiAgIC8qIHZwb3MgaXMgY3VtdWxhdGl2ZSB2 ZXJ0aWNhbCBwb3NpdGlvbiwgY2hhbmdlZCBhcyBmcm9tIGlzIGNoYW5nZWQgKi8KLSAgcmVn aXN0ZXIgRU1BQ1NfSU5UIHZwb3MgPSAwOworICBFTUFDU19JTlQgdnBvcyA9IDA7CiAgIHB0 cmRpZmZfdCBwcmV2bGluZTsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGZpcnN0OworICBwdHJk aWZmX3QgZmlyc3Q7CiAgIHB0cmRpZmZfdCBmcm9tX2J5dGU7CiAgIHB0cmRpZmZfdCBsbWFy Z2luID0gaHNjcm9sbCA+IDAgPyAxIC0gaHNjcm9sbCA6IDA7CiAgIHB0cmRpZmZfdCBzZWxl Y3RpdmUKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvaW5zZGVsLmMnCi0tLSBzcmMvaW5zZGVs LmMJMjAxMi0wNS0yNSAxODoxOToyNCArMDAwMAorKysgc3JjL2luc2RlbC5jCTIwMTItMDYt MDMgMDU6NTM6MzggKzAwMDAKQEAgLTczLDcgKzczLDcgQEAKIHN0YXRpYyB2b2lkCiBjaGVj a19tYXJrZXJzICh2b2lkKQogewotICByZWdpc3RlciBzdHJ1Y3QgTGlzcF9NYXJrZXIgKnRh aWw7CisgIHN0cnVjdCBMaXNwX01hcmtlciAqdGFpbDsKICAgaW50IG11bHRpYnl0ZSA9ICEg TklMUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIGVuYWJsZV9tdWx0aWJ5dGVfY2hhcmFjdGVy cykpOwogCiAgIGZvciAodGFpbCA9IEJVRl9NQVJLRVJTIChjdXJyZW50X2J1ZmZlcik7IHRh aWw7IHRhaWwgPSB0YWlsLT5uZXh0KQpAQCAtMTE4LDggKzExOCw4IEBACiBzdGF0aWMgdm9p ZAogZ2FwX2xlZnQgKHB0cmRpZmZfdCBjaGFycG9zLCBwdHJkaWZmX3QgYnl0ZXBvcywgaW50 IG5ld2dhcCkKIHsKLSAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqdG8sICpmcm9tOwotICBy ZWdpc3RlciBwdHJkaWZmX3QgaTsKKyAgdW5zaWduZWQgY2hhciAqdG8sICpmcm9tOworICBw dHJkaWZmX3QgaTsKICAgcHRyZGlmZl90IG5ld19zMTsKIAogICBpZiAoIW5ld2dhcCkKQEAg LTE3Myw4ICsxNzMsOCBAQAogc3RhdGljIHZvaWQKIGdhcF9yaWdodCAocHRyZGlmZl90IGNo YXJwb3MsIHB0cmRpZmZfdCBieXRlcG9zKQogewotICByZWdpc3RlciB1bnNpZ25lZCBjaGFy ICp0bywgKmZyb207Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBpOworICB1bnNpZ25lZCBjaGFy ICp0bywgKmZyb207CisgIHB0cmRpZmZfdCBpOwogICBwdHJkaWZmX3QgbmV3X3MxOwogCiAg IEJVRl9DT01QVVRFX1VOQ0hBTkdFRCAoY3VycmVudF9idWZmZXIsIGNoYXJwb3MsIEdQVCk7 CkBAIC0yMjksOCArMjI5LDggQEAKIAkJCSAgIHB0cmRpZmZfdCB0bywgcHRyZGlmZl90IHRv X2J5dGUpCiB7CiAgIExpc3BfT2JqZWN0IG1hcmtlcjsKLSAgcmVnaXN0ZXIgc3RydWN0IExp c3BfTWFya2VyICptOwotICByZWdpc3RlciBwdHJkaWZmX3QgY2hhcnBvczsKKyAgc3RydWN0 IExpc3BfTWFya2VyICptOworICBwdHJkaWZmX3QgY2hhcnBvczsKIAogICBmb3IgKG0gPSBC VUZfTUFSS0VSUyAoY3VycmVudF9idWZmZXIpOyBtOyBtID0gbS0+bmV4dCkKICAgICB7CkBA IC0zNTgsNyArMzU4LDcgQEAKIAkJCSAgICBwdHJkaWZmX3Qgb2xkX2NoYXJzLCBwdHJkaWZm X3Qgb2xkX2J5dGVzLAogCQkJICAgIHB0cmRpZmZfdCBuZXdfY2hhcnMsIHB0cmRpZmZfdCBu ZXdfYnl0ZXMpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX01hcmtlciAqbTsKKyAgc3Ry dWN0IExpc3BfTWFya2VyICptOwogICBwdHJkaWZmX3QgcHJldl90b19ieXRlID0gZnJvbV9i eXRlICsgb2xkX2J5dGVzOwogICBwdHJkaWZmX3QgZGlmZl9jaGFycyA9IG5ld19jaGFycyAt IG9sZF9jaGFyczsKICAgcHRyZGlmZl90IGRpZmZfYnl0ZXMgPSBuZXdfYnl0ZXMgLSBvbGRf Ynl0ZXM7CkBAIC0xNzA0LDcgKzE3MDQsNyBAQAogZGVsX3JhbmdlXzIgKHB0cmRpZmZfdCBm cm9tLCBwdHJkaWZmX3QgZnJvbV9ieXRlLAogCSAgICAgcHRyZGlmZl90IHRvLCBwdHJkaWZm X3QgdG9fYnl0ZSwgaW50IHJldF9zdHJpbmcpCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBu Ynl0ZXNfZGVsLCBuY2hhcnNfZGVsOworICBwdHJkaWZmX3QgbmJ5dGVzX2RlbCwgbmNoYXJz X2RlbDsKICAgTGlzcF9PYmplY3QgZGVsZXRpb247CiAKICAgQ0hFQ0tfTUFSS0VSUyAoKTsK Cj09PSBtb2RpZmllZCBmaWxlICdzcmMvaW50ZXJ2YWxzLmMnCi0tLSBzcmMvaW50ZXJ2YWxz LmMJMjAxMi0wNS0yNSAxODoxOToyNCArMDAwMAorKysgc3JjL2ludGVydmFscy5jCTIwMTIt MDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTk1LDcgKzk1LDcgQEAKIC8qIE1ha2UgdGhlIGlu dGVydmFsIFRBUkdFVCBoYXZlIGV4YWN0bHkgdGhlIHByb3BlcnRpZXMgb2YgU09VUkNFICov CiAKIHZvaWQKLWNvcHlfcHJvcGVydGllcyAocmVnaXN0ZXIgSU5URVJWQUwgc291cmNlLCBy ZWdpc3RlciBJTlRFUlZBTCB0YXJnZXQpCitjb3B5X3Byb3BlcnRpZXMgKElOVEVSVkFMIHNv dXJjZSwgSU5URVJWQUwgdGFyZ2V0KQogewogICBpZiAoREVGQVVMVF9JTlRFUlZBTF9QIChz b3VyY2UpICYmIERFRkFVTFRfSU5URVJWQUxfUCAodGFyZ2V0KSkKICAgICByZXR1cm47CkBA IC0xMDksOSArMTA5LDkgQEAKICAgIGlzIGFkZGVkIHRvIFRBUkdFVCBpZiBUQVJHRVQgaGFz IG5vIHN1Y2ggcHJvcGVydHkgYXMgeWV0LiAgKi8KIAogc3RhdGljIHZvaWQKLW1lcmdlX3By b3BlcnRpZXMgKHJlZ2lzdGVyIElOVEVSVkFMIHNvdXJjZSwgcmVnaXN0ZXIgSU5URVJWQUwg dGFyZ2V0KQorbWVyZ2VfcHJvcGVydGllcyAoSU5URVJWQUwgc291cmNlLCBJTlRFUlZBTCB0 YXJnZXQpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IG8sIHN5bSwgdmFsOworICBMaXNw X09iamVjdCBvLCBzeW0sIHZhbDsKIAogICBpZiAoREVGQVVMVF9JTlRFUlZBTF9QIChzb3Vy Y2UpICYmIERFRkFVTFRfSU5URVJWQUxfUCAodGFyZ2V0KSkKICAgICByZXR1cm47CkBAIC0x NDksOCArMTQ5LDggQEAKIGludAogaW50ZXJ2YWxzX2VxdWFsIChJTlRFUlZBTCBpMCwgSU5U RVJWQUwgaTEpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGkwX2NkciwgaTBfc3ltOwot ICByZWdpc3RlciBMaXNwX09iamVjdCBpMV9jZHIsIGkxX3ZhbDsKKyAgTGlzcF9PYmplY3Qg aTBfY2RyLCBpMF9zeW07CisgIExpc3BfT2JqZWN0IGkxX2NkciwgaTFfdmFsOwogCiAgIGlm IChERUZBVUxUX0lOVEVSVkFMX1AgKGkwKSAmJiBERUZBVUxUX0lOVEVSVkFMX1AgKGkxKSkK ICAgICByZXR1cm4gMTsKQEAgLTI5MCw3ICsyOTAsNyBAQAogc3RhdGljIElOVEVSVkFMCiBy b290X2ludGVydmFsIChJTlRFUlZBTCBpbnRlcnZhbCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJW QUwgaSA9IGludGVydmFsOworICBJTlRFUlZBTCBpID0gaW50ZXJ2YWw7CiAKICAgd2hpbGUg KCEgUk9PVF9JTlRFUlZBTF9QIChpKSkKICAgICBpID0gSU5URVJWQUxfUEFSRU5UIChpKTsK QEAgLTM5OSw3ICszOTksNyBAQAogc3RhdGljIElOVEVSVkFMCiBiYWxhbmNlX2FuX2ludGVy dmFsIChJTlRFUlZBTCBpKQogewotICByZWdpc3RlciBwdHJkaWZmX3Qgb2xkX2RpZmYsIG5l d19kaWZmOworICBwdHJkaWZmX3Qgb2xkX2RpZmYsIG5ld19kaWZmOwogCiAgIHdoaWxlICgx KQogICAgIHsKQEAgLTQzNCw3ICs0MzQsNyBAQAogICAgTGlzcCBPYmplY3QuICAqLwogCiBz dGF0aWMgaW5saW5lIElOVEVSVkFMCi1iYWxhbmNlX3Bvc3NpYmxlX3Jvb3RfaW50ZXJ2YWwg KHJlZ2lzdGVyIElOVEVSVkFMIGludGVydmFsKQorYmFsYW5jZV9wb3NzaWJsZV9yb290X2lu dGVydmFsIChJTlRFUlZBTCBpbnRlcnZhbCkKIHsKICAgTGlzcF9PYmplY3QgcGFyZW50Owog ICBpbnQgaGF2ZV9wYXJlbnQgPSAwOwpAQCAtNDY0LDcgKzQ2NCw3IEBACiAgICAodGhlIGFt b3VudCBvZiB0ZXh0KS4gICovCiAKIHN0YXRpYyBJTlRFUlZBTAotYmFsYW5jZV9pbnRlcnZh bHNfaW50ZXJuYWwgKHJlZ2lzdGVyIElOVEVSVkFMIHRyZWUpCitiYWxhbmNlX2ludGVydmFs c19pbnRlcm5hbCAoSU5URVJWQUwgdHJlZSkKIHsKICAgLyogQmFsYW5jZSB3aXRoaW4gZWFj aCBzaWRlLiAgKi8KICAgaWYgKHRyZWUtPmxlZnQpCkBAIC02MTAsMTEgKzYxMCwxMSBAQAog ICAgd2lsbCB1cGRhdGUgdGhpcyBjYWNoZSBiYXNlZCBvbiB0aGUgcmVzdWx0IG9mIGZpbmRf aW50ZXJ2YWwuICAqLwogCiBJTlRFUlZBTAotZmluZF9pbnRlcnZhbCAocmVnaXN0ZXIgSU5U RVJWQUwgdHJlZSwgcmVnaXN0ZXIgcHRyZGlmZl90IHBvc2l0aW9uKQorZmluZF9pbnRlcnZh bCAoSU5URVJWQUwgdHJlZSwgcHRyZGlmZl90IHBvc2l0aW9uKQogewogICAvKiBUaGUgZGlz dGFuY2UgZnJvbSB0aGUgbGVmdCBlZGdlIG9mIHRoZSBzdWJ0cmVlIGF0IFRSRUUKICAgICAg ICAgICAgICAgICAgICAgdG8gUE9TSVRJT04uICAqLwotICByZWdpc3RlciBwdHJkaWZmX3Qg cmVsYXRpdmVfcG9zaXRpb247CisgIHB0cmRpZmZfdCByZWxhdGl2ZV9wb3NpdGlvbjsKIAog ICBpZiAoTlVMTF9JTlRFUlZBTF9QICh0cmVlKSkKICAgICByZXR1cm4gTlVMTF9JTlRFUlZB TDsKQEAgLTY2NCwxMCArNjY0LDEwIEBACiAgICBmaW5kX2ludGVydmFsKS4gICovCiAKIElO VEVSVkFMCi1uZXh0X2ludGVydmFsIChyZWdpc3RlciBJTlRFUlZBTCBpbnRlcnZhbCkKK25l eHRfaW50ZXJ2YWwgKElOVEVSVkFMIGludGVydmFsKQogewotICByZWdpc3RlciBJTlRFUlZB TCBpID0gaW50ZXJ2YWw7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBuZXh0X3Bvc2l0aW9uOwor ICBJTlRFUlZBTCBpID0gaW50ZXJ2YWw7CisgIHB0cmRpZmZfdCBuZXh0X3Bvc2l0aW9uOwog CiAgIGlmIChOVUxMX0lOVEVSVkFMX1AgKGkpKQogICAgIHJldHVybiBOVUxMX0lOVEVSVkFM OwpAQCAtNzAzLDkgKzcwMyw5IEBACiAgICBmaW5kX2ludGVydmFsKS4gICovCiAKIElOVEVS VkFMCi1wcmV2aW91c19pbnRlcnZhbCAocmVnaXN0ZXIgSU5URVJWQUwgaW50ZXJ2YWwpCitw cmV2aW91c19pbnRlcnZhbCAoSU5URVJWQUwgaW50ZXJ2YWwpCiB7Ci0gIHJlZ2lzdGVyIElO VEVSVkFMIGk7CisgIElOVEVSVkFMIGk7CiAKICAgaWYgKE5VTExfSU5URVJWQUxfUCAoaW50 ZXJ2YWwpKQogICAgIHJldHVybiBOVUxMX0lOVEVSVkFMOwpAQCAtNzQyLDcgKzc0Miw3IEBA CiAgICBUbyBzcGVlZCB1cCB0aGUgcHJvY2Vzcywgd2UgYXNzdW1lIHRoYXQgdGhlIC0+cG9z aXRpb24gb2YKICAgIEkgYW5kIGFsbCBpdHMgcGFyZW50cyBpcyBhbHJlYWR5IHVwdG9kYXRl LiAgKi8KIElOVEVSVkFMCi11cGRhdGVfaW50ZXJ2YWwgKHJlZ2lzdGVyIElOVEVSVkFMIGks IHB0cmRpZmZfdCBwb3MpCit1cGRhdGVfaW50ZXJ2YWwgKElOVEVSVkFMIGksIHB0cmRpZmZf dCBwb3MpCiB7CiAgIGlmIChOVUxMX0lOVEVSVkFMX1AgKGkpKQogICAgIHJldHVybiBOVUxM X0lOVEVSVkFMOwpAQCAtODAyLDggKzgwMiw4IEBACiBhZGp1c3RfaW50ZXJ2YWxzX2Zvcl9p bnNlcnRpb24gKElOVEVSVkFMIHRyZWUsIHB0cmRpZmZfdCBwb3NpdGlvbiwKIAkJCQlwdHJk aWZmX3QgbGVuZ3RoKQogewotICByZWdpc3RlciBwdHJkaWZmX3QgcmVsYXRpdmVfcG9zaXRp b247Ci0gIHJlZ2lzdGVyIElOVEVSVkFMIHRoaXM7CisgIHB0cmRpZmZfdCByZWxhdGl2ZV9w b3NpdGlvbjsKKyAgSU5URVJWQUwgdGhpczsKIAogICBpZiAoVE9UQUxfTEVOR1RIICh0cmVl KSA9PSAwKQkvKiBQYXJhbm9pYSAqLwogICAgIGFib3J0ICgpOwpAQCAtODYzLDggKzg2Myw4 IEBACiBhZGp1c3RfaW50ZXJ2YWxzX2Zvcl9pbnNlcnRpb24gKElOVEVSVkFMIHRyZWUsCiAJ CQkJcHRyZGlmZl90IHBvc2l0aW9uLCBwdHJkaWZmX3QgbGVuZ3RoKQogewotICByZWdpc3Rl ciBJTlRFUlZBTCBpOwotICByZWdpc3RlciBJTlRFUlZBTCB0ZW1wOworICBJTlRFUlZBTCBp OworICBJTlRFUlZBTCB0ZW1wOwogICBpbnQgZW9icCA9IDA7CiAgIExpc3BfT2JqZWN0IHBh cmVudDsKICAgcHRyZGlmZl90IG9mZnNldDsKQEAgLTk2Myw3ICs5NjMsNyBAQAogICAgICBi b3RoIG9mIHRoZW0uICBXZSBoYXZlIHRvIGRvIHRoaXMgdG9vLCBpZiB3ZSBhcmUgYXQgQkVH IG9yIFouICAqLwogICBpZiAocG9zaXRpb24gPT0gaS0+cG9zaXRpb24gfHwgZW9icCkKICAg ICB7Ci0gICAgICByZWdpc3RlciBJTlRFUlZBTCBwcmV2OworICAgICAgSU5URVJWQUwgcHJl djsKIAogICAgICAgaWYgKHBvc2l0aW9uID09IEJFRykKIAlwcmV2ID0gMDsKQEAgLTEwODks OSArMTA4OSw5IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIG1lcmdlX3Byb3BlcnRpZXNfc3Rp Y2t5IChMaXNwX09iamVjdCBwbGVmdCwgTGlzcF9PYmplY3QgcHJpZ2h0KQogewotICByZWdp c3RlciBMaXNwX09iamVjdCBwcm9wcywgZnJvbnQsIHJlYXI7CisgIExpc3BfT2JqZWN0IHBy b3BzLCBmcm9udCwgcmVhcjsKICAgTGlzcF9PYmplY3QgbGZyb250LCBscmVhciwgcmZyb250 LCBycmVhcjsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbDEsIHRhaWwyLCBzeW0sIGx2 YWwsIHJ2YWwsIGNhdDsKKyAgTGlzcF9PYmplY3QgdGFpbDEsIHRhaWwyLCBzeW0sIGx2YWws IHJ2YWwsIGNhdDsKICAgaW50IHVzZV9sZWZ0LCB1c2VfcmlnaHQ7CiAgIGludCBscHJlc2Vu dDsKIApAQCAtMTIyMywxMCArMTIyMywxMCBAQAogICAgc3RvcmluZyB0aGUgcmVzdWx0aW5n IHN1YnRyZWUgaW50byBpdHMgcGFyZW50LiAgKi8KIAogc3RhdGljIElOVEVSVkFMCi1kZWxl dGVfbm9kZSAocmVnaXN0ZXIgSU5URVJWQUwgaSkKK2RlbGV0ZV9ub2RlIChJTlRFUlZBTCBp KQogewotICByZWdpc3RlciBJTlRFUlZBTCBtaWdyYXRlLCB0aGlzOwotICByZWdpc3RlciBw dHJkaWZmX3QgbWlncmF0ZV9hbXQ7CisgIElOVEVSVkFMIG1pZ3JhdGUsIHRoaXM7CisgIHB0 cmRpZmZfdCBtaWdyYXRlX2FtdDsKIAogICBpZiAoTlVMTF9JTlRFUlZBTF9QIChpLT5sZWZ0 KSkKICAgICByZXR1cm4gaS0+cmlnaHQ7CkBAIC0xMjU2LDkgKzEyNTYsOSBAQAogICAgZm9y IHRoZSBsZW5ndGggb2YgSS4gICovCiAKIHN0YXRpYyB2b2lkCi1kZWxldGVfaW50ZXJ2YWwg KHJlZ2lzdGVyIElOVEVSVkFMIGkpCitkZWxldGVfaW50ZXJ2YWwgKElOVEVSVkFMIGkpCiB7 Ci0gIHJlZ2lzdGVyIElOVEVSVkFMIHBhcmVudDsKKyAgSU5URVJWQUwgcGFyZW50OwogICBw dHJkaWZmX3QgYW10ID0gTEVOR1RIIChpKTsKIAogICBpZiAoYW10ID4gMCkJCQkvKiBPbmx5 IHVzZWQgb24gemVyby1sZW5ndGggaW50ZXJ2YWxzIG5vdy4gICovCkBAIC0xMzEwLDEwICsx MzEwLDkgQEAKICAgIGRlbGV0aW5nIHRoZSBhcHByb3ByaWF0ZSBhbW91bnQgb2YgdGV4dC4g ICovCiAKIHN0YXRpYyBwdHJkaWZmX3QKLWludGVydmFsX2RlbGV0aW9uX2FkanVzdG1lbnQg KHJlZ2lzdGVyIElOVEVSVkFMIHRyZWUsIHJlZ2lzdGVyIHB0cmRpZmZfdCBmcm9tLAotCQkJ ICAgICAgcmVnaXN0ZXIgcHRyZGlmZl90IGFtb3VudCkKK2ludGVydmFsX2RlbGV0aW9uX2Fk anVzdG1lbnQgKElOVEVSVkFMIHRyZWUsIHB0cmRpZmZfdCBmcm9tLCBwdHJkaWZmX3QgYW1v dW50KQogewotICByZWdpc3RlciBwdHJkaWZmX3QgcmVsYXRpdmVfcG9zaXRpb24gPSBmcm9t OworICBwdHJkaWZmX3QgcmVsYXRpdmVfcG9zaXRpb24gPSBmcm9tOwogCiAgIGlmIChOVUxM X0lOVEVSVkFMX1AgKHRyZWUpKQogICAgIHJldHVybiAwOwpAQCAtMTM3NCw4ICsxMzczLDgg QEAKIGFkanVzdF9pbnRlcnZhbHNfZm9yX2RlbGV0aW9uIChzdHJ1Y3QgYnVmZmVyICpidWZm ZXIsCiAJCQkgICAgICAgcHRyZGlmZl90IHN0YXJ0LCBwdHJkaWZmX3QgbGVuZ3RoKQogewot ICByZWdpc3RlciBwdHJkaWZmX3QgbGVmdF90b19kZWxldGUgPSBsZW5ndGg7Ci0gIHJlZ2lz dGVyIElOVEVSVkFMIHRyZWUgPSBCVUZfSU5URVJWQUxTIChidWZmZXIpOworICBwdHJkaWZm X3QgbGVmdF90b19kZWxldGUgPSBsZW5ndGg7CisgIElOVEVSVkFMIHRyZWUgPSBCVUZfSU5U RVJWQUxTIChidWZmZXIpOwogICBMaXNwX09iamVjdCBwYXJlbnQ7CiAgIHB0cmRpZmZfdCBv ZmZzZXQ7CiAKQEAgLTE0NTEsMTAgKzE0NTAsMTAgQEAKICAgIGludGVydmFsLiAgKi8KIAog c3RhdGljIElOVEVSVkFMCi1tZXJnZV9pbnRlcnZhbF9yaWdodCAocmVnaXN0ZXIgSU5URVJW QUwgaSkKK21lcmdlX2ludGVydmFsX3JpZ2h0IChJTlRFUlZBTCBpKQogewotICByZWdpc3Rl ciBwdHJkaWZmX3QgYWJzb3JiID0gTEVOR1RIIChpKTsKLSAgcmVnaXN0ZXIgSU5URVJWQUwg c3VjY2Vzc29yOworICBwdHJkaWZmX3QgYWJzb3JiID0gTEVOR1RIIChpKTsKKyAgSU5URVJW QUwgc3VjY2Vzc29yOwogCiAgIC8qIFplcm8gb3V0IHRoaXMgaW50ZXJ2YWwuICAqLwogICBp LT50b3RhbF9sZW5ndGggLT0gYWJzb3JiOwpAQCAtMTUwNywxMCArMTUwNiwxMCBAQAogICAg VGhlIGNhbGxlciBtdXN0IHZlcmlmeSB0aGF0IHRoaXMgaXMgbm90IHRoZSBmaXJzdCAobGVm dG1vc3QpIGludGVydmFsLiAgKi8KIAogSU5URVJWQUwKLW1lcmdlX2ludGVydmFsX2xlZnQg KHJlZ2lzdGVyIElOVEVSVkFMIGkpCittZXJnZV9pbnRlcnZhbF9sZWZ0IChJTlRFUlZBTCBp KQogewotICByZWdpc3RlciBwdHJkaWZmX3QgYWJzb3JiID0gTEVOR1RIIChpKTsKLSAgcmVn aXN0ZXIgSU5URVJWQUwgcHJlZGVjZXNzb3I7CisgIHB0cmRpZmZfdCBhYnNvcmIgPSBMRU5H VEggKGkpOworICBJTlRFUlZBTCBwcmVkZWNlc3NvcjsKIAogICAvKiBaZXJvIG91dCB0aGlz IGludGVydmFsLiAgKi8KICAgaS0+dG90YWxfbGVuZ3RoIC09IGFic29yYjsKQEAgLTE1NjMs NyArMTU2Miw3IEBACiBzdGF0aWMgSU5URVJWQUwKIHJlcHJvZHVjZV90cmVlIChJTlRFUlZB TCBzb3VyY2UsIElOVEVSVkFMIHBhcmVudCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJWQUwgdCA9 IG1ha2VfaW50ZXJ2YWwgKCk7CisgIElOVEVSVkFMIHQgPSBtYWtlX2ludGVydmFsICgpOwog CiAgIG1lbWNweSAodCwgc291cmNlLCBJTlRFUlZBTF9TSVpFKTsKICAgY29weV9wcm9wZXJ0 aWVzIChzb3VyY2UsIHQpOwpAQCAtMTU3OSw3ICsxNTc4LDcgQEAKIHN0YXRpYyBJTlRFUlZB TAogcmVwcm9kdWNlX3RyZWVfb2JqIChJTlRFUlZBTCBzb3VyY2UsIExpc3BfT2JqZWN0IHBh cmVudCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJWQUwgdCA9IG1ha2VfaW50ZXJ2YWwgKCk7Cisg IElOVEVSVkFMIHQgPSBtYWtlX2ludGVydmFsICgpOwogCiAgIG1lbWNweSAodCwgc291cmNl LCBJTlRFUlZBTF9TSVpFKTsKICAgY29weV9wcm9wZXJ0aWVzIChzb3VyY2UsIHQpOwpAQCAt MTY3OSw4ICsxNjc4LDggQEAKIAkJCSAgICAgcHRyZGlmZl90IGxlbmd0aCwgc3RydWN0IGJ1 ZmZlciAqYnVmZmVyLAogCQkJICAgICBpbnQgaW5oZXJpdCkKIHsKLSAgcmVnaXN0ZXIgSU5U RVJWQUwgdW5kZXIsIG92ZXIsIHRoaXM7Ci0gIHJlZ2lzdGVyIElOVEVSVkFMIHRyZWU7Cisg IElOVEVSVkFMIHVuZGVyLCBvdmVyLCB0aGlzOworICBJTlRFUlZBTCB0cmVlOwogICBwdHJk aWZmX3Qgb3Zlcl91c2VkOwogCiAgIHRyZWUgPSBCVUZfSU5URVJWQUxTIChidWZmZXIpOwpA QCAtMTgxNywxOSArMTgxNiwxOSBAQAogICAgYW5kIGZvciBQUk9QIGFwcGVhcmluZyBvbiB0 aGUgZGVmYXVsdC10ZXh0LXByb3BlcnRpZXMgbGlzdC4gICovCiAKIExpc3BfT2JqZWN0Ci10 ZXh0Z2V0IChMaXNwX09iamVjdCBwbGlzdCwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvcCkK K3RleHRnZXQgKExpc3BfT2JqZWN0IHBsaXN0LCBMaXNwX09iamVjdCBwcm9wKQogewogICBy ZXR1cm4gbG9va3VwX2NoYXJfcHJvcGVydHkgKHBsaXN0LCBwcm9wLCAxKTsKIH0KIAogTGlz cF9PYmplY3QKLWxvb2t1cF9jaGFyX3Byb3BlcnR5IChMaXNwX09iamVjdCBwbGlzdCwgcmVn aXN0ZXIgTGlzcF9PYmplY3QgcHJvcCwgaW50IHRleHRwcm9wKQorbG9va3VwX2NoYXJfcHJv cGVydHkgKExpc3BfT2JqZWN0IHBsaXN0LCBMaXNwX09iamVjdCBwcm9wLCBpbnQgdGV4dHBy b3ApCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRhaWwsIGZhbGxiYWNrID0gUW5pbDsK KyAgTGlzcF9PYmplY3QgdGFpbCwgZmFsbGJhY2sgPSBRbmlsOwogCiAgIGZvciAodGFpbCA9 IHBsaXN0OyBDT05TUCAodGFpbCk7IHRhaWwgPSBGY2RyIChYQ0RSICh0YWlsKSkpCiAgICAg ewotICAgICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICAgICAgTGlzcF9PYmplY3Qg dGVtOwogICAgICAgdGVtID0gWENBUiAodGFpbCk7CiAgICAgICBpZiAoRVEgKHByb3AsIHRl bSkpCiAJcmV0dXJuIEZjYXIgKFhDRFIgKHRhaWwpKTsKQEAgLTE5NTAsNyArMTk0OSw3IEBA CiB2b2lkCiBzZXRfcG9pbnRfYm90aCAocHRyZGlmZl90IGNoYXJwb3MsIHB0cmRpZmZfdCBi eXRlcG9zKQogewotICByZWdpc3RlciBJTlRFUlZBTCB0bywgZnJvbSwgdG9wcmV2LCBmcm9t cHJldjsKKyAgSU5URVJWQUwgdG8sIGZyb20sIHRvcHJldiwgZnJvbXByZXY7CiAgIHB0cmRp ZmZfdCBidWZmZXJfcG9pbnQ7CiAgIHB0cmRpZmZfdCBvbGRfcG9zaXRpb24gPSBQVDsKICAg LyogVGhpcyBlbnN1cmVzIHRoYXQgd2UgbW92ZSBmb3J3YXJkIHBhc3QgaW50YW5naWJsZSB0 ZXh0IHdoZW4gdGhlCkBAIC0yMjc5LDggKzIyNzgsNyBAQAogICAgUE9TSVRJT04gbXVzdCBi ZSBpbiB0aGUgYWNjZXNzaWJsZSBwYXJ0IG9mIEJVRkZFUi4gICovCiAKIExpc3BfT2JqZWN0 Ci1nZXRfbG9jYWxfbWFwIChyZWdpc3RlciBwdHJkaWZmX3QgcG9zaXRpb24sIHJlZ2lzdGVy IHN0cnVjdCBidWZmZXIgKmJ1ZmZlciwKLQkgICAgICAgTGlzcF9PYmplY3QgdHlwZSkKK2dl dF9sb2NhbF9tYXAgKHB0cmRpZmZfdCBwb3NpdGlvbiwgc3RydWN0IGJ1ZmZlciAqYnVmZmVy LCBMaXNwX09iamVjdCB0eXBlKQogewogICBMaXNwX09iamVjdCBwcm9wLCBsaXNweV9wb3Np dGlvbiwgbGlzcHlfYnVmZmVyOwogICBwdHJkaWZmX3Qgb2xkX2JlZ3YsIG9sZF96diwgb2xk X2JlZ3ZfYnl0ZSwgb2xkX3p2X2J5dGU7CkBAIC0yMzMyLDggKzIzMzAsOCBAQAogSU5URVJW QUwKIGNvcHlfaW50ZXJ2YWxzIChJTlRFUlZBTCB0cmVlLCBwdHJkaWZmX3Qgc3RhcnQsIHB0 cmRpZmZfdCBsZW5ndGgpCiB7Ci0gIHJlZ2lzdGVyIElOVEVSVkFMIGksIG5ldywgdDsKLSAg cmVnaXN0ZXIgcHRyZGlmZl90IGdvdCwgcHJldmxlbjsKKyAgSU5URVJWQUwgaSwgbmV3LCB0 OworICBwdHJkaWZmX3QgZ290LCBwcmV2bGVuOwogCiAgIGlmIChOVUxMX0lOVEVSVkFMX1Ag KHRyZWUpIHx8IGxlbmd0aCA8PSAwKQogICAgIHJldHVybiBOVUxMX0lOVEVSVkFMOwoKPT09 IG1vZGlmaWVkIGZpbGUgJ3NyYy9rZXlib2FyZC5jJwotLS0gc3JjL2tleWJvYXJkLmMJMjAx Mi0wNi0wMiAxOToyMTozNCArMDAwMAorKysgc3JjL2tleWJvYXJkLmMJMjAxMi0wNi0wMyAw NTo1NToyMyArMDAwMApAQCAtMTE0OSw3ICsxMTQ5LDcgQEAKIExpc3BfT2JqZWN0CiBjb21t YW5kX2xvb3BfMiAoTGlzcF9PYmplY3QgaWdub3JlKQogewotICByZWdpc3RlciBMaXNwX09i amVjdCB2YWw7CisgIExpc3BfT2JqZWN0IHZhbDsKIAogICBkbwogICAgIHZhbCA9IGludGVy bmFsX2NvbmRpdGlvbl9jYXNlIChjb21tYW5kX2xvb3BfMSwgUWVycm9yLCBjbWRfZXJyb3Ip OwpAQCAtMzUwMCw3ICszNTAwLDcgQEAKICNlbmRpZgkvKiBTdG9yZSBhbiBldmVudCBvYnRh aW5lZCBhdCBpbnRlcnJ1cHQgbGV2ZWwgaW50byBrYmRfYnVmZmVyLCBmaWZvICovCiAKIHZv aWQKLWtiZF9idWZmZXJfc3RvcmVfZXZlbnQgKHJlZ2lzdGVyIHN0cnVjdCBpbnB1dF9ldmVu dCAqZXZlbnQpCitrYmRfYnVmZmVyX3N0b3JlX2V2ZW50IChzdHJ1Y3QgaW5wdXRfZXZlbnQg KmV2ZW50KQogewogICBrYmRfYnVmZmVyX3N0b3JlX2V2ZW50X2hvbGQgKGV2ZW50LCAwKTsK IH0KQEAgLTM1MTgsNyArMzUxOCw3IEBACiAgKi8KIAogdm9pZAota2JkX2J1ZmZlcl9zdG9y ZV9ldmVudF9ob2xkIChyZWdpc3RlciBzdHJ1Y3QgaW5wdXRfZXZlbnQgKmV2ZW50LAora2Jk X2J1ZmZlcl9zdG9yZV9ldmVudF9ob2xkIChzdHJ1Y3QgaW5wdXRfZXZlbnQgKmV2ZW50LAog CQkJICAgICBzdHJ1Y3QgaW5wdXRfZXZlbnQgKmhvbGRfcXVpdCkKIHsKICAgaWYgKGV2ZW50 LT5raW5kID09IE5PX0VWRU5UKQpAQCAtMzUyOSw3ICszNTI5LDcgQEAKIAogICBpZiAoZXZl bnQtPmtpbmQgPT0gQVNDSUlfS0VZU1RST0tFX0VWRU5UKQogICAgIHsKLSAgICAgIHJlZ2lz dGVyIGludCBjID0gZXZlbnQtPmNvZGUgJiAwMzc3OworICAgICAgaW50IGMgPSBldmVudC0+ Y29kZSAmIDAzNzc7CiAKICAgICAgIGlmIChldmVudC0+bW9kaWZpZXJzICYgY3RybF9tb2Rp ZmllcikKIAljID0gbWFrZV9jdHJsX2NoYXIgKGMpOwpAQCAtMzY1Myw3ICszNjUzLDcgQEAK IC8qIFB1dCBhbiBpbnB1dCBldmVudCBiYWNrIGluIHRoZSBoZWFkIG9mIHRoZSBldmVudCBx dWV1ZS4gICovCiAKIHZvaWQKLWtiZF9idWZmZXJfdW5nZXRfZXZlbnQgKHJlZ2lzdGVyIHN0 cnVjdCBpbnB1dF9ldmVudCAqZXZlbnQpCitrYmRfYnVmZmVyX3VuZ2V0X2V2ZW50IChzdHJ1 Y3QgaW5wdXRfZXZlbnQgKmV2ZW50KQogewogICBpZiAoa2JkX2ZldGNoX3B0ciA9PSBrYmRf YnVmZmVyKQogICAgIGtiZF9mZXRjaF9wdHIgPSBrYmRfYnVmZmVyICsgS0JEX0JVRkZFUl9T SVpFOwpAQCAtODU1MCw3ICs4NTUwLDcgQEAKIAkJCSAgICAgICBwdHJkaWZmX3Qgbm1hcHMs IExpc3BfT2JqZWN0ICptYXBzKQogewogICBwdHJkaWZmX3QgbWFwbm87Ci0gIHJlZ2lzdGVy IExpc3BfT2JqZWN0IG5hbWU7CisgIExpc3BfT2JqZWN0IG5hbWU7CiAgIHB0cmRpZmZfdCBu bGVuZ3RoOwogICAvKiBGSVhNRTogVXNlIHRoZSBtaW5pYnVmZmVyJ3MgZnJhbWUgd2lkdGgu ICAqLwogICBwdHJkaWZmX3Qgd2lkdGggPSBGUkFNRV9DT0xTIChTRUxFQ1RFRF9GUkFNRSAo KSkgLSA0OwpAQCAtMTAxNjEsNyArMTAxNjEsNyBAQAogICAoTGlzcF9PYmplY3QgcHJvbXB0 LCBMaXNwX09iamVjdCBjb250aW51ZV9lY2hvLCBMaXNwX09iamVjdCBkb250X2Rvd25jYXNl X2xhc3QsIExpc3BfT2JqZWN0IGNhbl9yZXR1cm5fc3dpdGNoX2ZyYW1lLCBMaXNwX09iamVj dCBjbWRfbG9vcCkKIHsKICAgTGlzcF9PYmplY3Qga2V5YnVmWzMwXTsKLSAgcmVnaXN0ZXIg aW50IGk7CisgIGludCBpOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOwogICBwdHJkaWZmX3Qg Y291bnQgPSBTUEVDUERMX0lOREVYICgpOwogCkBAIC0xMDIxOCw3ICsxMDIxOCw3IEBACiAg IChMaXNwX09iamVjdCBwcm9tcHQsIExpc3BfT2JqZWN0IGNvbnRpbnVlX2VjaG8sIExpc3Bf T2JqZWN0IGRvbnRfZG93bmNhc2VfbGFzdCwgTGlzcF9PYmplY3QgY2FuX3JldHVybl9zd2l0 Y2hfZnJhbWUsIExpc3BfT2JqZWN0IGNtZF9sb29wKQogewogICBMaXNwX09iamVjdCBrZXli dWZbMzBdOwotICByZWdpc3RlciBpbnQgaTsKKyAgaW50IGk7CiAgIHN0cnVjdCBnY3BybyBn Y3BybzE7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAKQEAgLTEw Mjc3LDggKzEwMjc3LDggQEAKIGEgc3BlY2lhbCBldmVudCwgc28gaWdub3JlIHRoZSBwcmVm aXggYXJndW1lbnQgYW5kIGRvbid0IGNsZWFyIGl0LiAgKi8pCiAgIChMaXNwX09iamVjdCBj bWQsIExpc3BfT2JqZWN0IHJlY29yZF9mbGFnLCBMaXNwX09iamVjdCBrZXlzLCBMaXNwX09i amVjdCBzcGVjaWFsKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCBmaW5hbDsKLSAgcmVn aXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICBMaXNwX09iamVjdCBmaW5hbDsKKyAgTGlzcF9P YmplY3QgdGVtOwogICBMaXNwX09iamVjdCBwcmVmaXhhcmc7CiAKICAgZGVidWdfb25fbmV4 dF9jYWxsID0gMDsKQEAgLTEwNzAwLDExICsxMDcwMCwxMSBAQAogc3R1ZmZfYnVmZmVyZWRf aW5wdXQgKExpc3BfT2JqZWN0IHN0dWZmc3RyaW5nKQogewogI2lmZGVmIFNJR1RTVFAgIC8q IHN0dWZmX2NoYXIgaXMgZGVmaW5lZCBpZiBTSUdUU1RQLiAgKi8KLSAgcmVnaXN0ZXIgdW5z aWduZWQgY2hhciAqcDsKKyAgdW5zaWduZWQgY2hhciAqcDsKIAogICBpZiAoU1RSSU5HUCAo c3R1ZmZzdHJpbmcpKQogICAgIHsKLSAgICAgIHJlZ2lzdGVyIHB0cmRpZmZfdCBjb3VudDsK KyAgICAgIHB0cmRpZmZfdCBjb3VudDsKIAogICAgICAgcCA9IFNEQVRBIChzdHVmZnN0cmlu Zyk7CiAgICAgICBjb3VudCA9IFNCWVRFUyAoc3R1ZmZzdHJpbmcpOwoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy9rZXltYXAuYycKLS0tIHNyYy9rZXltYXAuYwkyMDEyLTA1LTMxIDA2OjA2 OjQyICswMDAwCisrKyBzcmMva2V5bWFwLmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApA QCAtNzkyLDcgKzc5Miw3IEBACiB9CiAKIHN0YXRpYyBMaXNwX09iamVjdAotc3RvcmVfaW5f a2V5bWFwIChMaXNwX09iamVjdCBrZXltYXAsIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGlkeCwg TGlzcF9PYmplY3QgZGVmKQorc3RvcmVfaW5fa2V5bWFwIChMaXNwX09iamVjdCBrZXltYXAs IExpc3BfT2JqZWN0IGlkeCwgTGlzcF9PYmplY3QgZGVmKQogewogICAvKiBGbHVzaCBhbnkg cmV2ZXJzZS1tYXAgY2FjaGUuICAqLwogICB3aGVyZV9pc19jYWNoZSA9IFFuaWw7CkBAIC0x MDQ2LDcgKzEwNDYsNyBAQAogaXMgbm90IGNvcGllZC4gICovKQogICAoTGlzcF9PYmplY3Qg a2V5bWFwKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCBjb3B5LCB0YWlsOworICBMaXNw X09iamVjdCBjb3B5LCB0YWlsOwogICBrZXltYXAgPSBnZXRfa2V5bWFwIChrZXltYXAsIDEs IDApOwogICBjb3B5ID0gdGFpbCA9IEZjb25zIChRa2V5bWFwLCBRbmlsKTsKICAga2V5bWFw ID0gWENEUiAoa2V5bWFwKTsJCS8qIFNraXAgdGhlIGBrZXltYXAnIHN5bWJvbC4gICovCkBA IC0xMTE3LDkgKzExMTcsOSBAQAogYmluZGluZyBLRVkgdG8gREVGIGlzIGFkZGVkIGF0IHRo ZSBmcm9udCBvZiBLRVlNQVAuICAqLykKICAgKExpc3BfT2JqZWN0IGtleW1hcCwgTGlzcF9P YmplY3Qga2V5LCBMaXNwX09iamVjdCBkZWYpCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBp ZHg7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGM7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0 IGNtZDsKKyAgcHRyZGlmZl90IGlkeDsKKyAgTGlzcF9PYmplY3QgYzsKKyAgTGlzcF9PYmpl Y3QgY21kOwogICBpbnQgbWV0aXplZCA9IDA7CiAgIGludCBtZXRhX2JpdDsKICAgcHRyZGlm Zl90IGxlbmd0aDsKQEAgLTEyNzQsOSArMTI3NCw5IEBACiByZWNvZ25pemUgdGhlIGRlZmF1 bHQgYmluZGluZ3MsIGp1c3QgYXMgYHJlYWQta2V5LXNlcXVlbmNlJyBkb2VzLiAgKi8pCiAg IChMaXNwX09iamVjdCBrZXltYXAsIExpc3BfT2JqZWN0IGtleSwgTGlzcF9PYmplY3QgYWNj ZXB0X2RlZmF1bHQpCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBpZHg7Ci0gIHJlZ2lzdGVy IExpc3BfT2JqZWN0IGNtZDsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgYzsKKyAgcHRyZGlm Zl90IGlkeDsKKyAgTGlzcF9PYmplY3QgY21kOworICBMaXNwX09iamVjdCBjOwogICBwdHJk aWZmX3QgbGVuZ3RoOwogICBpbnQgdF9vayA9ICFOSUxQIChhY2NlcHRfZGVmYXVsdCk7CiAg IHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKQEAgLTE3NTEsNyArMTc1MSw3IEBACiBi aW5kaW5nczsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBgbG9va3VwLWtleScgZm9yIG1vcmUg ZGV0YWlscyBhYm91dCB0aGlzLiAgKi8pCiAgIChMaXNwX09iamVjdCBrZXlzLCBMaXNwX09i amVjdCBhY2NlcHRfZGVmYXVsdCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgbWFwOwor ICBMaXNwX09iamVjdCBtYXA7CiAgIG1hcCA9IEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBrZXlt YXApOwogICBpZiAoTklMUCAobWFwKSkKICAgICByZXR1cm4gUW5pbDsKQEAgLTIwMjcsNyAr MjAyNyw3IEBACiAgIGZvciAodGFpbCA9IG1hcHM7IENPTlNQICh0YWlsKTsgdGFpbCA9IFhD RFIgKHRhaWwpKQogICAgIHsKICAgICAgIHN0cnVjdCBhY2Nlc3NpYmxlX2tleW1hcHNfZGF0 YSBkYXRhOwotICAgICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGhpc21hcCA9IEZjZHIgKFhD QVIgKHRhaWwpKTsKKyAgICAgIExpc3BfT2JqZWN0IHRoaXNtYXAgPSBGY2RyIChYQ0FSICh0 YWlsKSk7CiAgICAgICBMaXNwX09iamVjdCBsYXN0OwogCiAgICAgICBkYXRhLnRoaXNzZXEg PSBGY2FyIChYQ0FSICh0YWlsKSk7CkBAIC0yMzMwLDcgKzIzMzAsNyBAQAogfQogCiBzdGF0 aWMgY2hhciAqCi1wdXNoX3RleHRfY2hhcl9kZXNjcmlwdGlvbiAocmVnaXN0ZXIgdW5zaWdu ZWQgaW50IGMsIHJlZ2lzdGVyIGNoYXIgKnApCitwdXNoX3RleHRfY2hhcl9kZXNjcmlwdGlv biAodW5zaWduZWQgaW50IGMsIGNoYXIgKnApCiB7CiAgIGlmIChjID49IDAyMDApCiAgICAg ewpAQCAtMjUxOCw3ICsyNTE4LDcgQEAKICAgZm9yICg7IENPTlNQIChtYXBzKTsgbWFwcyA9 IFhDRFIgKG1hcHMpKQogICAgIHsKICAgICAgIC8qIEtleSBzZXF1ZW5jZSB0byByZWFjaCBt YXAsIGFuZCB0aGUgbWFwIHRoYXQgaXQgcmVhY2hlcyAqLwotICAgICAgcmVnaXN0ZXIgTGlz cF9PYmplY3QgdGhpcywgbWFwLCB0ZW07CisgICAgICBMaXNwX09iamVjdCB0aGlzLCBtYXAs IHRlbTsKIAogICAgICAgLyogSW4gb3JkZXIgdG8gZm9sZCBbTUVUQS1QUkVGSVgtQ0hBUiBD SEFSXSBzZXF1ZW5jZXMgaW50bwogCSBbTS1DSEFSXSBzZXF1ZW5jZXMsIGNoZWNrIGlmIGxh c3QgY2hhcmFjdGVyIG9mIHRoZSBzZXF1ZW5jZQpAQCAtMjgyMyw3ICsyODIzLDcgQEAKIHsK ICAgTGlzcF9PYmplY3Qgb3V0YnVmLCBzaGFkb3c7CiAgIGludCBub21lbnUgPSBOSUxQICht ZW51cyk7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN0YXJ0MTsKKyAgTGlzcF9PYmplY3Qg c3RhcnQxOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOwogCiAgIGNvbnN0IGNoYXIgKmFsdGVy bmF0ZV9oZWFkaW5nCkBAIC0zMDU0LDcgKzMwNTQsNyBAQAogCiAgIGZvciAoOyBDT05TUCAo bWFwcyk7IG1hcHMgPSBYQ0RSIChtYXBzKSkKICAgICB7Ci0gICAgICByZWdpc3RlciBMaXNw X09iamVjdCBlbHQsIGVsdF9wcmVmaXgsIHRhaWw7CisgICAgICBMaXNwX09iamVjdCBlbHQs IGVsdF9wcmVmaXgsIHRhaWw7CiAKICAgICAgIGVsdCA9IFhDQVIgKG1hcHMpOwogICAgICAg ZWx0X3ByZWZpeCA9IEZjYXIgKGVsdCk7CkBAIC0zMTE5LDcgKzMxMTksNyBAQAogc3RhdGlj IHZvaWQKIGRlc2NyaWJlX2NvbW1hbmQgKExpc3BfT2JqZWN0IGRlZmluaXRpb24sIExpc3Bf T2JqZWN0IGFyZ3MpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRlbTE7CisgIExpc3Bf T2JqZWN0IHRlbTE7CiAgIHB0cmRpZmZfdCBjb2x1bW4gPSBjdXJyZW50X2NvbHVtbiAoKTsK ICAgaW50IGRlc2NyaXB0aW9uX2NvbHVtbjsKIApAQCAtMzE1NSw3ICszMTU1LDcgQEAKIHN0 YXRpYyB2b2lkCiBkZXNjcmliZV90cmFuc2xhdGlvbiAoTGlzcF9PYmplY3QgZGVmaW5pdGlv biwgTGlzcF9PYmplY3QgYXJncykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtMTsK KyAgTGlzcF9PYmplY3QgdGVtMTsKIAogICBGaW5kZW50X3RvIChtYWtlX251bWJlciAoMTYp LCBtYWtlX251bWJlciAoMSkpOwogCkBAIC0zNjQ2LDcgKzM2NDYsNyBAQAogc3RhdGljIHZv aWQKIGFwcm9wb3NfYWNjdW0gKExpc3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9PYmplY3Qgc3Ry aW5nKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB0ZW07CisgIExpc3BfT2JqZWN0IHRl bTsKIAogICB0ZW0gPSBGc3RyaW5nX21hdGNoIChzdHJpbmcsIEZzeW1ib2xfbmFtZSAoc3lt Ym9sKSwgUW5pbCk7CiAgIGlmICghTklMUCAodGVtKSAmJiAhTklMUCAoYXByb3Bvc19wcmVk aWNhdGUpKQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9scmVhZC5jJwotLS0gc3JjL2xyZWFk LmMJMjAxMi0wNS0zMCAwMzo1OTo0MiArMDAwMAorKysgc3JjL2xyZWFkLmMJMjAxMi0wNi0w MyAwNTo1MzozOCArMDAwMApAQCAtMTkxLDcgKzE5MSw3IEBACiByZWFkY2hhciAoTGlzcF9P YmplY3QgcmVhZGNoYXJmdW4sIGludCAqbXVsdGlieXRlKQogewogICBMaXNwX09iamVjdCB0 ZW07Ci0gIHJlZ2lzdGVyIGludCBjOworICBpbnQgYzsKICAgaW50ICgqcmVhZGJ5dGUpIChp bnQsIExpc3BfT2JqZWN0KTsKICAgdW5zaWduZWQgY2hhciBidWZbTUFYX01VTFRJQllURV9M RU5HVEhdOwogICBpbnQgaSwgbGVuOwpAQCAtMjA0LDcgKzIwNCw3IEBACiAKICAgaWYgKEJV RkZFUlAgKHJlYWRjaGFyZnVuKSkKICAgICB7Ci0gICAgICByZWdpc3RlciBzdHJ1Y3QgYnVm ZmVyICppbmJ1ZmZlciA9IFhCVUZGRVIgKHJlYWRjaGFyZnVuKTsKKyAgICAgIHN0cnVjdCBi dWZmZXIgKmluYnVmZmVyID0gWEJVRkZFUiAocmVhZGNoYXJmdW4pOwogCiAgICAgICBwdHJk aWZmX3QgcHRfYnl0ZSA9IEJVRl9QVF9CWVRFIChpbmJ1ZmZlcik7CiAKQEAgLTIzMyw3ICsy MzMsNyBAQAogICAgIH0KICAgaWYgKE1BUktFUlAgKHJlYWRjaGFyZnVuKSkKICAgICB7Ci0g ICAgICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICppbmJ1ZmZlciA9IFhNQVJLRVIgKHJlYWRj aGFyZnVuKS0+YnVmZmVyOworICAgICAgc3RydWN0IGJ1ZmZlciAqaW5idWZmZXIgPSBYTUFS S0VSIChyZWFkY2hhcmZ1biktPmJ1ZmZlcjsKIAogICAgICAgcHRyZGlmZl90IGJ5dGVwb3Mg PSBtYXJrZXJfYnl0ZV9wb3NpdGlvbiAocmVhZGNoYXJmdW4pOwogCkBAIC03NjQsNyArNzY0 LDcgQEAKICAgICAgICBkb2M6IC8qIERvbid0IHVzZSB0aGlzIHlvdXJzZWxmLiAgKi8pCiAg ICh2b2lkKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWw7CisgIExpc3BfT2JqZWN0 IHZhbDsKICAgQkxPQ0tfSU5QVVQ7CiAgIFhTRVRJTlQgKHZhbCwgZ2V0YyAoaW5zdHJlYW0p KTsKICAgVU5CTE9DS19JTlBVVDsKQEAgLTEwMjAsOCArMTAyMCw4IEBACiBSZXR1cm4gdCBp ZiB0aGUgZmlsZSBleGlzdHMgYW5kIGxvYWRzIHN1Y2Nlc3NmdWxseS4gICovKQogICAoTGlz cF9PYmplY3QgZmlsZSwgTGlzcF9PYmplY3Qgbm9lcnJvciwgTGlzcF9PYmplY3Qgbm9tZXNz YWdlLCBMaXNwX09iamVjdCBub3N1ZmZpeCwgTGlzcF9PYmplY3QgbXVzdF9zdWZmaXgpCiB7 Ci0gIHJlZ2lzdGVyIEZJTEUgKnN0cmVhbTsKLSAgcmVnaXN0ZXIgaW50IGZkID0gLTE7Cisg IEZJTEUgKnN0cmVhbTsKKyAgaW50IGZkID0gLTE7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQ RUNQRExfSU5ERVggKCk7CiAgIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nwcm8z OwogICBMaXNwX09iamVjdCBmb3VuZCwgZWZvdW5kLCBoaXN0X2ZpbGVfbmFtZTsKQEAgLTEz OTEsNyArMTM5MSw3IEBACiBzdGF0aWMgaW50CiBjb21wbGV0ZV9maWxlbmFtZV9wIChMaXNw X09iamVjdCBwYXRobmFtZSkKIHsKLSAgcmVnaXN0ZXIgY29uc3QgdW5zaWduZWQgY2hhciAq cyA9IFNEQVRBIChwYXRobmFtZSk7CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMgPSBTREFU QSAocGF0aG5hbWUpOwogICByZXR1cm4gKElTX0RJUkVDVE9SWV9TRVAgKHNbMF0pCiAJICB8 fCAoU0NIQVJTIChwYXRobmFtZSkgPiAyCiAJICAgICAgJiYgSVNfREVWSUNFX1NFUCAoc1sx XSkgJiYgSVNfRElSRUNUT1JZX1NFUCAoc1syXSkpKTsKQEAgLTE0NDEsMTAgKzE0NDEsMTAg QEAKIGludAogb3BlbnAgKExpc3BfT2JqZWN0IHBhdGgsIExpc3BfT2JqZWN0IHN0ciwgTGlz cF9PYmplY3Qgc3VmZml4ZXMsIExpc3BfT2JqZWN0ICpzdG9yZXB0ciwgTGlzcF9PYmplY3Qg cHJlZGljYXRlKQogewotICByZWdpc3RlciBpbnQgZmQ7CisgIGludCBmZDsKICAgcHRyZGlm Zl90IGZuX3NpemUgPSAxMDA7CiAgIGNoYXIgYnVmWzEwMF07Ci0gIHJlZ2lzdGVyIGNoYXIg KmZuID0gYnVmOworICBjaGFyICpmbiA9IGJ1ZjsKICAgaW50IGFic29sdXRlID0gMDsKICAg cHRyZGlmZl90IHdhbnRfbGVuZ3RoOwogICBMaXNwX09iamVjdCBmaWxlbmFtZTsKQEAgLTE1 OTcsOSArMTU5Nyw5IEBACiBzdGF0aWMgdm9pZAogYnVpbGRfbG9hZF9oaXN0b3J5IChMaXNw X09iamVjdCBmaWxlbmFtZSwgaW50IGVudGlyZSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgdGFpbCwgcHJldiwgbmV3ZWx0OwotICByZWdpc3RlciBMaXNwX09iamVjdCB0ZW0sIHRl bTI7Ci0gIHJlZ2lzdGVyIGludCBmb3VuZGl0ID0gMDsKKyAgTGlzcF9PYmplY3QgdGFpbCwg cHJldiwgbmV3ZWx0OworICBMaXNwX09iamVjdCB0ZW0sIHRlbTI7CisgIGludCBmb3VuZGl0 ID0gMDsKIAogICB0YWlsID0gVmxvYWRfaGlzdG9yeTsKICAgcHJldiA9IFFuaWw7CkBAIC0x Njg4LDggKzE2ODgsOCBAQAogCSAgICAgIExpc3BfT2JqZWN0IHVuaWJ5dGUsIExpc3BfT2Jq ZWN0IHJlYWRmdW4sCiAJICAgICAgTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2JqZWN0IGVu ZCkKIHsKLSAgcmVnaXN0ZXIgaW50IGM7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsK KyAgaW50IGM7CisgIExpc3BfT2JqZWN0IHZhbDsKICAgcHRyZGlmZl90IGNvdW50ID0gU1BF Q1BETF9JTkRFWCAoKTsKICAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzMs IGdjcHJvNDsKICAgc3RydWN0IGJ1ZmZlciAqYiA9IDA7CkBAIC0yMDQ1LDcgKzIwNDUsNyBA QAogc3RhdGljIExpc3BfT2JqZWN0CiByZWFkMCAoTGlzcF9PYmplY3QgcmVhZGNoYXJmdW4p CiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKKyAgTGlzcF9PYmplY3QgdmFsOwog ICBpbnQgYzsKIAogICB2YWwgPSByZWFkMSAocmVhZGNoYXJmdW4sICZjLCAwKTsKQEAgLTIw NjUsNyArMjA2NSw3IEBACiBzdGF0aWMgaW50CiByZWFkX2VzY2FwZSAoTGlzcF9PYmplY3Qg cmVhZGNoYXJmdW4sIGludCBzdHJpbmdwKQogewotICByZWdpc3RlciBpbnQgYyA9IFJFQURD SEFSOworICBpbnQgYyA9IFJFQURDSEFSOwogICAvKiBcdSBhbGxvd3MgdXAgdG8gZm91ciBo ZXggZGlnaXRzLCBcVSB1cCB0byBlaWdodC4gIERlZmF1bHQgdG8gdGhlCiAgICAgIGJlaGF2 aW9yIGZvciBcdSwgYW5kIGNoYW5nZSB0aGlzIHZhbHVlIGluIHRoZSBjYXNlIHRoYXQgXFUg aXMgc2Vlbi4gICovCiAgIGludCB1bmljb2RlX2hleF9jb3VudCA9IDQ7CkBAIC0yMTc5LDgg KzIxNzksOCBAQAogICAgIGNhc2UgJzcnOgogICAgICAgLyogQW4gb2N0YWwgZXNjYXBlLCBh cyBpbiBBTlNJIEMuICAqLwogICAgICAgewotCXJlZ2lzdGVyIGludCBpID0gYyAtICcwJzsK LQlyZWdpc3RlciBpbnQgY291bnQgPSAwOworCWludCBpID0gYyAtICcwJzsKKwlpbnQgY291 bnQgPSAwOwogCXdoaWxlICgrK2NvdW50IDwgMykKIAkgIHsKIAkgICAgaWYgKChjID0gUkVB RENIQVIpID49ICcwJyAmJiBjIDw9ICc3JykKQEAgLTIzNjksOSArMjM2OSw5IEBACiAgICBG SVJTVF9JTl9MSVNUIGlzIG5vbnplcm8gaWYgdGhpcyBpcyB0aGUgZmlyc3QgZWxlbWVudCBv ZiBhIGxpc3QuICAqLwogCiBzdGF0aWMgTGlzcF9PYmplY3QKLXJlYWQxIChyZWdpc3RlciBM aXNwX09iamVjdCByZWFkY2hhcmZ1biwgaW50ICpwY2gsIGludCBmaXJzdF9pbl9saXN0KQor cmVhZDEgKExpc3BfT2JqZWN0IHJlYWRjaGFyZnVuLCBpbnQgKnBjaCwgaW50IGZpcnN0X2lu X2xpc3QpCiB7Ci0gIHJlZ2lzdGVyIGludCBjOworICBpbnQgYzsKICAgdW5zaWduZWQgdW5p bnRlcm5lZF9zeW1ib2wgPSAwOwogICBpbnQgbXVsdGlieXRlOwogCkBAIC0yODg2LDcgKzI4 ODYsNyBAQAogICAgICAgewogCWNoYXIgKnAgPSByZWFkX2J1ZmZlcjsKIAljaGFyICplbmQg PSByZWFkX2J1ZmZlciArIHJlYWRfYnVmZmVyX3NpemU7Ci0JcmVnaXN0ZXIgaW50IGNoOwor CWludCBjaDsKIAkvKiBOb256ZXJvIGlmIHdlIHNhdyBhbiBlc2NhcGUgc2VxdWVuY2Ugc3Bl Y2lmeWluZwogCSAgIGEgbXVsdGlieXRlIGNoYXJhY3Rlci4gICovCiAJaW50IGZvcmNlX211 bHRpYnl0ZSA9IDA7CkBAIC0zMzk5LDkgKzMzOTksOSBAQAogcmVhZF92ZWN0b3IgKExpc3Bf T2JqZWN0IHJlYWRjaGFyZnVuLCBpbnQgYnl0ZWNvZGVmbGFnKQogewogICBwdHJkaWZmX3Qg aSwgc2l6ZTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgKnB0cjsKLSAgcmVnaXN0ZXIgTGlz cF9PYmplY3QgdGVtLCBpdGVtLCB2ZWN0b3I7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX0Nv bnMgKm90ZW07CisgIExpc3BfT2JqZWN0ICpwdHI7CisgIExpc3BfT2JqZWN0IHRlbSwgaXRl bSwgdmVjdG9yOworICBzdHJ1Y3QgTGlzcF9Db25zICpvdGVtOwogICBMaXNwX09iamVjdCBs ZW47CiAKICAgdGVtID0gcmVhZF9saXN0ICgxLCByZWFkY2hhcmZ1bik7CkBAIC0zNDc2LDEw ICszNDc2LDEwIEBACiAvKiBGTEFHID0gMSBtZWFucyBjaGVjayBmb3IgXSB0byB0ZXJtaW5h dGUgcmF0aGVyIHRoYW4gKSBhbmQgLiAgKi8KIAogc3RhdGljIExpc3BfT2JqZWN0Ci1yZWFk X2xpc3QgKGludCBmbGFnLCByZWdpc3RlciBMaXNwX09iamVjdCByZWFkY2hhcmZ1bikKK3Jl YWRfbGlzdCAoaW50IGZsYWcsIExpc3BfT2JqZWN0IHJlYWRjaGFyZnVuKQogewogICBMaXNw X09iamVjdCB2YWwsIHRhaWw7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGVsdCwgdGVtOwor ICBMaXNwX09iamVjdCBlbHQsIHRlbTsKICAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8y OwogICAvKiAwIGlzIHRoZSBub3JtYWwgY2FzZS4KICAgICAgMSBtZWFucyB0aGlzIGxpc3Qg aXMgYSBkb2MgcmVmZXJlbmNlOyByZXBsYWNlIGl0IHdpdGggdGhlIG51bWJlciAwLgpAQCAt MzcxOCw3ICszNzE4LDcgQEAKIGl0IGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiBgb2JhcnJh eScuICAqLykKICAgKExpc3BfT2JqZWN0IHN0cmluZywgTGlzcF9PYmplY3Qgb2JhcnJheSkK IHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtLCBzeW0sICpwdHI7CisgIExpc3BfT2Jq ZWN0IHRlbSwgc3ltLCAqcHRyOwogCiAgIGlmIChOSUxQIChvYmFycmF5KSkgb2JhcnJheSA9 IFZvYmFycmF5OwogICBvYmFycmF5ID0gY2hlY2tfb2JhcnJheSAob2JhcnJheSk7CkBAIC0z NzY1LDcgKzM3NjUsNyBAQAogaXQgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIGBvYmFycmF5 Jy4gICovKQogICAoTGlzcF9PYmplY3QgbmFtZSwgTGlzcF9PYmplY3Qgb2JhcnJheSkKIHsK LSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtLCBzdHJpbmc7CisgIExpc3BfT2JqZWN0IHRl bSwgc3RyaW5nOwogCiAgIGlmIChOSUxQIChvYmFycmF5KSkgb2JhcnJheSA9IFZvYmFycmF5 OwogICBvYmFycmF5ID0gY2hlY2tfb2JhcnJheSAob2JhcnJheSk7CkBAIC0zNzkzLDcgKzM3 OTMsNyBAQAogT0JBUlJBWSBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxl IGBvYmFycmF5Jy4gICovKQogICAoTGlzcF9PYmplY3QgbmFtZSwgTGlzcF9PYmplY3Qgb2Jh cnJheSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3RyaW5nLCB0ZW07CisgIExpc3Bf T2JqZWN0IHN0cmluZywgdGVtOwogICBzaXplX3QgaGFzaDsKIAogICBpZiAoTklMUCAob2Jh cnJheSkpIG9iYXJyYXkgPSBWb2JhcnJheTsKQEAgLTM4NjEsMTEgKzM4NjEsMTIgQEAKICAg IEFsc28gc3RvcmUgdGhlIGJ1Y2tldCBudW1iZXIgaW4gb2Jsb29rdXBfbGFzdF9idWNrZXRf bnVtYmVyLiAgKi8KIAogTGlzcF9PYmplY3QKLW9ibG9va3VwIChMaXNwX09iamVjdCBvYmFy cmF5LCByZWdpc3RlciBjb25zdCBjaGFyICpwdHIsIHB0cmRpZmZfdCBzaXplLCBwdHJkaWZm X3Qgc2l6ZV9ieXRlKQorb2Jsb29rdXAgKExpc3BfT2JqZWN0IG9iYXJyYXksIGNvbnN0IGNo YXIgKnB0ciwKKwkgIHB0cmRpZmZfdCBzaXplLCBwdHJkaWZmX3Qgc2l6ZV9ieXRlKQogewog ICBzaXplX3QgaGFzaDsKICAgc2l6ZV90IG9ic2l6ZTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgdGFpbDsKKyAgTGlzcF9PYmplY3QgdGFpbDsKICAgTGlzcF9PYmplY3QgYnVja2V0LCB0 ZW07CiAKICAgaWYgKCFWRUNUT1JQIChvYmFycmF5KQpAQCAtMzkwMSw3ICszOTAyLDcgQEAK IG1hcF9vYmFycmF5IChMaXNwX09iamVjdCBvYmFycmF5LCB2b2lkICgqZm4pIChMaXNwX09i amVjdCwgTGlzcF9PYmplY3QpLCBMaXNwX09iamVjdCBhcmcpCiB7CiAgIHB0cmRpZmZfdCBp OwotICByZWdpc3RlciBMaXNwX09iamVjdCB0YWlsOworICBMaXNwX09iamVjdCB0YWlsOwog ICBDSEVDS19WRUNUT1IgKG9iYXJyYXkpOwogICBmb3IgKGkgPSBBU0laRSAob2JhcnJheSkg LSAxOyBpID49IDA7IGktLSkKICAgICB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL21hcmtl ci5jJwotLS0gc3JjL21hcmtlci5jCTIwMTItMDItMTAgMTg6NTg6NDggKzAwMDAKKysrIHNy Yy9tYXJrZXIuYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC00MjQsOSArNDI0LDkg QEAKIERFRlVOICgibWFya2VyLWJ1ZmZlciIsIEZtYXJrZXJfYnVmZmVyLCBTbWFya2VyX2J1 ZmZlciwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgYnVmZmVyIHRoYXQg TUFSS0VSIHBvaW50cyBpbnRvLCBvciBuaWwgaWYgbm9uZS4KIFJldHVybnMgbmlsIGlmIE1B UktFUiBwb2ludHMgaW50byBhIGRlYWQgYnVmZmVyLiAgKi8pCi0gIChyZWdpc3RlciBMaXNw X09iamVjdCBtYXJrZXIpCisgIChMaXNwX09iamVjdCBtYXJrZXIpCiB7Ci0gIHJlZ2lzdGVy IExpc3BfT2JqZWN0IGJ1ZjsKKyAgTGlzcF9PYmplY3QgYnVmOwogICBDSEVDS19NQVJLRVIg KG1hcmtlcik7CiAgIGlmIChYTUFSS0VSIChtYXJrZXIpLT5idWZmZXIpCiAgICAgewpAQCAt NDYxLDEwICs0NjEsMTAgQEAKIFJldHVybnMgTUFSS0VSLiAgKi8pCiAgIChMaXNwX09iamVj dCBtYXJrZXIsIExpc3BfT2JqZWN0IHBvc2l0aW9uLCBMaXNwX09iamVjdCBidWZmZXIpCiB7 Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBjaGFybm87Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBi eXRlcG9zOwotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpiOwotICByZWdpc3RlciBzdHJ1 Y3QgTGlzcF9NYXJrZXIgKm07CisgIHB0cmRpZmZfdCBjaGFybm87CisgIHB0cmRpZmZfdCBi eXRlcG9zOworICBzdHJ1Y3QgYnVmZmVyICpiOworICBzdHJ1Y3QgTGlzcF9NYXJrZXIgKm07 CiAKICAgQ0hFQ0tfTUFSS0VSIChtYXJrZXIpOwogICBtID0gWE1BUktFUiAobWFya2VyKTsK QEAgLTUzMCwxMCArNTMwLDEwIEBACiBMaXNwX09iamVjdAogc2V0X21hcmtlcl9yZXN0cmlj dGVkIChMaXNwX09iamVjdCBtYXJrZXIsIExpc3BfT2JqZWN0IHBvcywgTGlzcF9PYmplY3Qg YnVmZmVyKQogewotICByZWdpc3RlciBwdHJkaWZmX3QgY2hhcm5vOwotICByZWdpc3RlciBw dHJkaWZmX3QgYnl0ZXBvczsKLSAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYjsKLSAgcmVn aXN0ZXIgc3RydWN0IExpc3BfTWFya2VyICptOworICBwdHJkaWZmX3QgY2hhcm5vOworICBw dHJkaWZmX3QgYnl0ZXBvczsKKyAgc3RydWN0IGJ1ZmZlciAqYjsKKyAgc3RydWN0IExpc3Bf TWFya2VyICptOwogCiAgIENIRUNLX01BUktFUiAobWFya2VyKTsKICAgbSA9IFhNQVJLRVIg KG1hcmtlcik7CkBAIC01OTksOCArNTk5LDggQEAKIExpc3BfT2JqZWN0CiBzZXRfbWFya2Vy X2JvdGggKExpc3BfT2JqZWN0IG1hcmtlciwgTGlzcF9PYmplY3QgYnVmZmVyLCBwdHJkaWZm X3QgY2hhcnBvcywgcHRyZGlmZl90IGJ5dGVwb3MpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBi dWZmZXIgKmI7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX01hcmtlciAqbTsKKyAgc3RydWN0 IGJ1ZmZlciAqYjsKKyAgc3RydWN0IExpc3BfTWFya2VyICptOwogCiAgIENIRUNLX01BUktF UiAobWFya2VyKTsKICAgbSA9IFhNQVJLRVIgKG1hcmtlcik7CkBAIC02NDcsOCArNjQ3LDgg QEAKIExpc3BfT2JqZWN0CiBzZXRfbWFya2VyX3Jlc3RyaWN0ZWRfYm90aCAoTGlzcF9PYmpl Y3QgbWFya2VyLCBMaXNwX09iamVjdCBidWZmZXIsIHB0cmRpZmZfdCBjaGFycG9zLCBwdHJk aWZmX3QgYnl0ZXBvcykKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYjsKLSAgcmVn aXN0ZXIgc3RydWN0IExpc3BfTWFya2VyICptOworICBzdHJ1Y3QgYnVmZmVyICpiOworICBz dHJ1Y3QgTGlzcF9NYXJrZXIgKm07CiAKICAgQ0hFQ0tfTUFSS0VSIChtYXJrZXIpOwogICBt ID0gWE1BUktFUiAobWFya2VyKTsKQEAgLTcwNiwxMCArNzA2LDEwIEBACiAgICBpbmNsdWRp bmcgdGhvc2UgaW4gY2hhaW4gZmllbGRzIG9mIG1hcmtlcnMuICAqLwogCiB2b2lkCi11bmNo YWluX21hcmtlciAocmVnaXN0ZXIgc3RydWN0IExpc3BfTWFya2VyICptYXJrZXIpCit1bmNo YWluX21hcmtlciAoc3RydWN0IExpc3BfTWFya2VyICptYXJrZXIpCiB7Ci0gIHJlZ2lzdGVy IHN0cnVjdCBMaXNwX01hcmtlciAqdGFpbCwgKnByZXYsICpuZXh0OwotICByZWdpc3RlciBz dHJ1Y3QgYnVmZmVyICpiOworICBzdHJ1Y3QgTGlzcF9NYXJrZXIgKnRhaWwsICpwcmV2LCAq bmV4dDsKKyAgc3RydWN0IGJ1ZmZlciAqYjsKIAogICBiID0gbWFya2VyLT5idWZmZXI7CiAg IGlmIChiID09IDApCkBAIC03NTgsOCArNzU4LDggQEAKIHB0cmRpZmZfdAogbWFya2VyX3Bv c2l0aW9uIChMaXNwX09iamVjdCBtYXJrZXIpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNw X01hcmtlciAqbSA9IFhNQVJLRVIgKG1hcmtlcik7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBidWZm ZXIgKmJ1ZiA9IG0tPmJ1ZmZlcjsKKyAgc3RydWN0IExpc3BfTWFya2VyICptID0gWE1BUktF UiAobWFya2VyKTsKKyAgc3RydWN0IGJ1ZmZlciAqYnVmID0gbS0+YnVmZmVyOwogCiAgIGlm ICghYnVmKQogICAgIGVycm9yICgiTWFya2VyIGRvZXMgbm90IHBvaW50IGFueXdoZXJlIik7 CkBAIC03NzIsOSArNzcyLDkgQEAKIHB0cmRpZmZfdAogbWFya2VyX2J5dGVfcG9zaXRpb24g KExpc3BfT2JqZWN0IG1hcmtlcikKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IExpc3BfTWFya2Vy ICptID0gWE1BUktFUiAobWFya2VyKTsKLSAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYnVm ID0gbS0+YnVmZmVyOwotICByZWdpc3RlciBwdHJkaWZmX3QgaSA9IG0tPmJ5dGVwb3M7Cisg IHN0cnVjdCBMaXNwX01hcmtlciAqbSA9IFhNQVJLRVIgKG1hcmtlcik7CisgIHN0cnVjdCBi dWZmZXIgKmJ1ZiA9IG0tPmJ1ZmZlcjsKKyAgcHRyZGlmZl90IGkgPSBtLT5ieXRlcG9zOwog CiAgIGlmICghYnVmKQogICAgIGVycm9yICgiTWFya2VyIGRvZXMgbm90IHBvaW50IGFueXdo ZXJlIik7CkBAIC03OTIsOSArNzkyLDkgQEAKIElmIE1BUktFUiBpcyBub3Qgc3BlY2lmaWVk LCB0aGUgbmV3IG1hcmtlciBkb2VzIG5vdCBwb2ludCBhbnl3aGVyZS4KIFRoZSBvcHRpb25h bCBhcmd1bWVudCBUWVBFIHNwZWNpZmllcyB0aGUgaW5zZXJ0aW9uIHR5cGUgb2YgdGhlIG5l dyBtYXJrZXI7CiBzZWUgYG1hcmtlci1pbnNlcnRpb24tdHlwZScuICAqLykKLSAgKHJlZ2lz dGVyIExpc3BfT2JqZWN0IG1hcmtlciwgTGlzcF9PYmplY3QgdHlwZSkKKyAgKExpc3BfT2Jq ZWN0IG1hcmtlciwgTGlzcF9PYmplY3QgdHlwZSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgbmV3OworICBMaXNwX09iamVjdCBuZXc7CiAKICAgaWYgKCFOSUxQIChtYXJrZXIpKQog ICBDSEVDS19UWVBFIChJTlRFR0VSUCAobWFya2VyKSB8fCBNQVJLRVJQIChtYXJrZXIpLCBR aW50ZWdlcl9vcl9tYXJrZXJfcCwgbWFya2VyKTsKQEAgLTgxMCw3ICs4MTAsNyBAQAogICAg ICAgIFNtYXJrZXJfaW5zZXJ0aW9uX3R5cGUsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBS ZXR1cm4gaW5zZXJ0aW9uIHR5cGUgb2YgTUFSS0VSOiB0IGlmIGl0IHN0YXlzIGFmdGVyIGlu c2VydGVkIHRleHQuCiBUaGUgdmFsdWUgbmlsIG1lYW5zIHRoZSBtYXJrZXIgc3RheXMgYmVm b3JlIHRleHQgaW5zZXJ0ZWQgdGhlcmUuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0 IG1hcmtlcikKKyAgKExpc3BfT2JqZWN0IG1hcmtlcikKIHsKICAgQ0hFQ0tfTUFSS0VSICht YXJrZXIpOwogICByZXR1cm4gWE1BUktFUiAobWFya2VyKS0+aW5zZXJ0aW9uX3R5cGUgPyBR dCA6IFFuaWw7CkBAIC04MzQsOCArODM0LDggQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0 IGlmIHRoZXJlIGFyZSBtYXJrZXJzIHBvaW50aW5nIGF0IFBPU0lUSU9OIGluIHRoZSBjdXJy ZW50IGJ1ZmZlci4gICovKQogICAoTGlzcF9PYmplY3QgcG9zaXRpb24pCiB7Ci0gIHJlZ2lz dGVyIHN0cnVjdCBMaXNwX01hcmtlciAqdGFpbDsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGNo YXJubzsKKyAgc3RydWN0IExpc3BfTWFya2VyICp0YWlsOworICBwdHJkaWZmX3QgY2hhcm5v OwogCiAgIGNoYXJubyA9IGNsaXBfdG9fYm91bmRzIChCRUcsIFhJTlQgKHBvc2l0aW9uKSwg Wik7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvbWluaWJ1Zi5jJwotLS0gc3JjL21pbmli dWYuYwkyMDEyLTA2LTAyIDE3OjAzOjQ5ICswMDAwCisrKyBzcmMvbWluaWJ1Zi5jCTIwMTIt MDYtMDMgMDU6NTU6MjMgKzAwMDAKQEAgLTE5MDIsMTYgKzE5MDIsMTYgQEAKIAogVW5saWtl IGBhc3NvYycsIEtFWSBjYW4gYWxzbyBtYXRjaCBhbiBlbnRyeSBpbiBMSVNUIGNvbnNpc3Rp bmcgb2YgYQogc2luZ2xlIHN0cmluZywgcmF0aGVyIHRoYW4gYSBjb25zIGNlbGwgd2hvc2Ug Y2FyIGlzIGEgc3RyaW5nLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBrZXksIExp c3BfT2JqZWN0IGxpc3QsIExpc3BfT2JqZWN0IGNhc2VfZm9sZCkKKyAgKExpc3BfT2JqZWN0 IGtleSwgTGlzcF9PYmplY3QgbGlzdCwgTGlzcF9PYmplY3QgY2FzZV9mb2xkKQogewotICBy ZWdpc3RlciBMaXNwX09iamVjdCB0YWlsOworICBMaXNwX09iamVjdCB0YWlsOwogCiAgIGlm IChTWU1CT0xQIChrZXkpKQogICAgIGtleSA9IEZzeW1ib2xfbmFtZSAoa2V5KTsKIAogICBm b3IgKHRhaWwgPSBsaXN0OyBDT05TUCAodGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkKICAg ICB7Ci0gICAgICByZWdpc3RlciBMaXNwX09iamVjdCBlbHQsIHRlbSwgdGhpc2NhcjsKKyAg ICAgIExpc3BfT2JqZWN0IGVsdCwgdGVtLCB0aGlzY2FyOwogICAgICAgZWx0ID0gWENBUiAo dGFpbCk7CiAgICAgICB0aGlzY2FyID0gQ09OU1AgKGVsdCkgPyBYQ0FSIChlbHQpIDogZWx0 OwogICAgICAgaWYgKFNZTUJPTFAgKHRoaXNjYXIpKQoKPT09IG1vZGlmaWVkIGZpbGUgJ3Ny Yy9wcmludC5jJwotLS0gc3JjL3ByaW50LmMJMjAxMi0wNS0yNiAxNTo1MjoyNyArMDAwMAor Kysgc3JjL3ByaW50LmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtNDg4LDggKzQ4 OCw4IEBACiB0ZW1wX291dHB1dF9idWZmZXJfc2V0dXAgKGNvbnN0IGNoYXIgKmJ1Zm5hbWUp CiB7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7Ci0gIHJlZ2lzdGVy IHN0cnVjdCBidWZmZXIgKm9sZCA9IGN1cnJlbnRfYnVmZmVyOwotICByZWdpc3RlciBMaXNw X09iamVjdCBidWY7CisgIHN0cnVjdCBidWZmZXIgKm9sZCA9IGN1cnJlbnRfYnVmZmVyOwor ICBMaXNwX09iamVjdCBidWY7CiAKICAgcmVjb3JkX3Vud2luZF9wcm90ZWN0IChzZXRfYnVm ZmVyX2lmX2xpdmUsIEZjdXJyZW50X2J1ZmZlciAoKSk7CiAKQEAgLTUxNywxMCArNTE3LDEx IEBACiAgIHNwZWNiaW5kIChRc3RhbmRhcmRfb3V0cHV0LCBidWYpOwogfQogDAotc3RhdGlj IHZvaWQgcHJpbnQgKExpc3BfT2JqZWN0IG9iaiwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJp bnRjaGFyZnVuLCBpbnQgZXNjYXBlZmxhZyk7CitzdGF0aWMgdm9pZCBwcmludCAoTGlzcF9P YmplY3Qgb2JqLCBMaXNwX09iamVjdCBwcmludGNoYXJmdW4sIGludCBlc2NhcGVmbGFnKTsK IHN0YXRpYyB2b2lkIHByaW50X3ByZXByb2Nlc3MgKExpc3BfT2JqZWN0IG9iaik7CiBzdGF0 aWMgdm9pZCBwcmludF9wcmVwcm9jZXNzX3N0cmluZyAoSU5URVJWQUwgaW50ZXJ2YWwsIExp c3BfT2JqZWN0IGFyZyk7Ci1zdGF0aWMgdm9pZCBwcmludF9vYmplY3QgKExpc3BfT2JqZWN0 IG9iaiwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJpbnRjaGFyZnVuLCBpbnQgZXNjYXBlZmxh Zyk7CitzdGF0aWMgdm9pZCBwcmludF9vYmplY3QgKExpc3BfT2JqZWN0IG9iaiwgTGlzcF9P YmplY3QgcHJpbnRjaGFyZnVuLAorCQkJICBpbnQgZXNjYXBlZmxhZyk7CiAKIERFRlVOICgi dGVycHJpIiwgRnRlcnByaSwgU3RlcnByaSwgMCwgMSwgMCwKICAgICAgICBkb2M6IC8qIE91 dHB1dCBhIG5ld2xpbmUgdG8gc3RyZWFtIFBSSU5UQ0hBUkZVTi4KQEAgLTkxMiw3ICs5MTMs NyBAQAogICAgIGZvciAoOyBDT05TUCAodGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSwgc2Vw ID0gIiwgIikKICAgICAgIHsKIAlMaXNwX09iamVjdCBvYmo7Ci0JCisKIAlpZiAoc2VwKQog CSAgd3JpdGVfc3RyaW5nXzEgKHNlcCwgMiwgc3RyZWFtKTsKIAlvYmogPSBYQ0FSICh0YWls KTsKQEAgLTEwNjEsNyArMTA2Miw3IEBACiAKIAwKIHN0YXRpYyB2b2lkCi1wcmludCAoTGlz cF9PYmplY3Qgb2JqLCByZWdpc3RlciBMaXNwX09iamVjdCBwcmludGNoYXJmdW4sIGludCBl c2NhcGVmbGFnKQorcHJpbnQgKExpc3BfT2JqZWN0IG9iaiwgTGlzcF9PYmplY3QgcHJpbnRj aGFyZnVuLCBpbnQgZXNjYXBlZmxhZykKIHsKICAgbmV3X2JhY2txdW90ZV9vdXRwdXQgPSAw OwogCkBAIC0xMzExLDcgKzEzMTIsNyBAQAogfQogCiBzdGF0aWMgdm9pZAotcHJpbnRfb2Jq ZWN0IChMaXNwX09iamVjdCBvYmosIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByaW50Y2hhcmZ1 biwgaW50IGVzY2FwZWZsYWcpCitwcmludF9vYmplY3QgKExpc3BfT2JqZWN0IG9iaiwgTGlz cF9PYmplY3QgcHJpbnRjaGFyZnVuLCBpbnQgZXNjYXBlZmxhZykKIHsKICAgY2hhciBidWZb bWF4IChzaXplb2YgImZyb20uLnRvLi5pbiAiICsgMiAqIElOVF9TVFJMRU5fQk9VTkQgKEVN QUNTX0lOVCksCiAJCW1heCAoc2l6ZW9mICIgLiAjIiArIElOVF9TVFJMRU5fQk9VTkQgKHBy aW50bWF4X3QpLApAQCAtMTM4Niw3ICsxMzg3LDcgQEAKIAlwcmludF9zdHJpbmcgKG9iaiwg cHJpbnRjaGFyZnVuKTsKICAgICAgIGVsc2UKIAl7Ci0JICByZWdpc3RlciBwdHJkaWZmX3Qg aV9ieXRlOworCSAgcHRyZGlmZl90IGlfYnl0ZTsKIAkgIHN0cnVjdCBnY3BybyBnY3BybzE7 CiAJICB1bnNpZ25lZCBjaGFyICpzdHI7CiAJICBwdHJkaWZmX3Qgc2l6ZV9ieXRlOwpAQCAt MTUwMywxMCArMTUwNCwxMCBAQAogCiAgICAgY2FzZSBMaXNwX1N5bWJvbDoKICAgICAgIHsK LQlyZWdpc3RlciBpbnQgY29uZnVzaW5nOwotCXJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKnAg PSBTREFUQSAoU1lNQk9MX05BTUUgKG9iaikpOwotCXJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIg KmVuZCA9IHAgKyBTQllURVMgKFNZTUJPTF9OQU1FIChvYmopKTsKLQlyZWdpc3RlciBpbnQg YzsKKwlpbnQgY29uZnVzaW5nOworCXVuc2lnbmVkIGNoYXIgKnAgPSBTREFUQSAoU1lNQk9M X05BTUUgKG9iaikpOworCXVuc2lnbmVkIGNoYXIgKmVuZCA9IHAgKyBTQllURVMgKFNZTUJP TF9OQU1FIChvYmopKTsKKwlpbnQgYzsKIAlwdHJkaWZmX3QgaSwgaV9ieXRlOwogCXB0cmRp ZmZfdCBzaXplX2J5dGU7CiAJTGlzcF9PYmplY3QgbmFtZTsKQEAgLTE2OTcsNyArMTY5OCw3 IEBACiAgICAgICBlbHNlIGlmIChCT09MX1ZFQ1RPUl9QIChvYmopKQogCXsKIAkgIHB0cmRp ZmZfdCBpOwotCSAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciBjOworCSAgdW5zaWduZWQgY2hh ciBjOwogCSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKIAkgIHB0cmRpZmZfdCBzaXplX2luX2No YXJzCiAJICAgID0gKChYQk9PTF9WRUNUT1IgKG9iaiktPnNpemUgKyBCT09MX1ZFQ1RPUl9C SVRTX1BFUl9DSEFSIC0gMSkKQEAgLTE5NDgsOCArMTk0OSw4IEBACiAKIAkgIFBSSU5UQ0hB UiAoJ1snKTsKIAkgIHsKLQkgICAgcmVnaXN0ZXIgaW50IGk7Ci0JICAgIHJlZ2lzdGVyIExp c3BfT2JqZWN0IHRlbTsKKwkgICAgaW50IGk7CisJICAgIExpc3BfT2JqZWN0IHRlbTsKIAkg ICAgcHRyZGlmZl90IHJlYWxfc2l6ZSA9IHNpemU7CiAKIAkgICAgLyogRG9uJ3QgcHJpbnQg bW9yZSBlbGVtZW50cyB0aGFuIHRoZSBzcGVjaWZpZWQgbWF4aW11bS4gICovCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3JjL3Byb2Nlc3MuYycKLS0tIHNyYy9wcm9jZXNzLmMJMjAxMi0wNC0y MiAwNDo0ODoxMyArMDAwMAorKysgc3JjL3Byb2Nlc3MuYwkyMDEyLTA2LTAzIDA1OjUzOjM4 ICswMDAwCkBAIC0yNjcsNyArMjY3LDcgQEAKICNkZWZpbmUgUE9MTF9GT1JfSU5QVVQKICNl bmRpZgogCi1zdGF0aWMgTGlzcF9PYmplY3QgZ2V0X3Byb2Nlc3MgKHJlZ2lzdGVyIExpc3Bf T2JqZWN0IG5hbWUpOworc3RhdGljIExpc3BfT2JqZWN0IGdldF9wcm9jZXNzIChMaXNwX09i amVjdCBuYW1lKTsKIHN0YXRpYyB2b2lkIGV4ZWNfc2VudGluZWwgKExpc3BfT2JqZWN0IHBy b2MsIExpc3BfT2JqZWN0IHJlYXNvbik7CiAKIC8qIE1hc2sgb2YgYml0cyBpbmRpY2F0aW5n IHRoZSBkZXNjcmlwdG9ycyB0aGF0IHdlIHdhaXQgZm9yIGlucHV0IG9uLiAgKi8KQEAgLTU1 Miw3ICs1NTIsNyBAQAogI2lmZGVmIFBUWV9JVEVSQVRJT04KICAgUFRZX0lURVJBVElPTgog I2Vsc2UKLSAgcmVnaXN0ZXIgaW50IGMsIGk7CisgIGludCBjLCBpOwogICBmb3IgKGMgPSBG SVJTVF9QVFlfTEVUVEVSOyBjIDw9ICd6JzsgYysrKQogICAgIGZvciAoaSA9IDA7IGkgPCAx NjsgaSsrKQogI2VuZGlmCkBAIC02MjEsOCArNjIxLDggQEAKIHN0YXRpYyBMaXNwX09iamVj dAogbWFrZV9wcm9jZXNzIChMaXNwX09iamVjdCBuYW1lKQogewotICByZWdpc3RlciBMaXNw X09iamVjdCB2YWwsIHRlbSwgbmFtZTE7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX1Byb2Nl c3MgKnA7CisgIExpc3BfT2JqZWN0IHZhbCwgdGVtLCBuYW1lMTsKKyAgc3RydWN0IExpc3Bf UHJvY2VzcyAqcDsKICAgY2hhciBzdWZmaXhbc2l6ZW9mICI8PiIgKyBJTlRfU1RSTEVOX0JP VU5EIChwcmludG1heF90KV07CiAgIHByaW50bWF4X3QgaTsKIApAQCAtNjc1LDkgKzY3NSw5 IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1yZW1vdmVfcHJvY2VzcyAocmVnaXN0ZXIgTGlzcF9P YmplY3QgcHJvYykKK3JlbW92ZV9wcm9jZXNzIChMaXNwX09iamVjdCBwcm9jKQogewotICBy ZWdpc3RlciBMaXNwX09iamVjdCBwYWlyOworICBMaXNwX09iamVjdCBwYWlyOwogCiAgIHBh aXIgPSBGcmFzc3EgKHByb2MsIFZwcm9jZXNzX2FsaXN0KTsKICAgVnByb2Nlc3NfYWxpc3Qg PSBGZGVscSAocGFpciwgVnByb2Nlc3NfYWxpc3QpOwpAQCAtNjk1LDcgKzY5NSw3IEBACiAK IERFRlVOICgiZ2V0LXByb2Nlc3MiLCBGZ2V0X3Byb2Nlc3MsIFNnZXRfcHJvY2VzcywgMSwg MSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgcHJvY2VzcyBuYW1lZCBOQU1FLCBv ciBuaWwgaWYgdGhlcmUgaXMgbm9uZS4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qg bmFtZSkKKyAgKExpc3BfT2JqZWN0IG5hbWUpCiB7CiAgIGlmIChQUk9DRVNTUCAobmFtZSkp CiAgICAgcmV0dXJuIG5hbWU7CkBAIC03MDksOSArNzA5LDkgQEAKICAgIGN1cnJlbnQgYnVm ZmVyLiAgKi8KIAogc3RhdGljIExpc3BfT2JqZWN0Ci1nZXRfcHJvY2VzcyAocmVnaXN0ZXIg TGlzcF9PYmplY3QgbmFtZSkKK2dldF9wcm9jZXNzIChMaXNwX09iamVjdCBuYW1lKQogewot ICByZWdpc3RlciBMaXNwX09iamVjdCBwcm9jLCBvYmo7CisgIExpc3BfT2JqZWN0IHByb2Ms IG9iajsKICAgaWYgKFNUUklOR1AgKG5hbWUpKQogICAgIHsKICAgICAgIG9iaiA9IEZnZXRf cHJvY2VzcyAobmFtZSk7CkBAIC03NTUsOSArNzU1LDkgQEAKICAgICAgICBkb2M6IC8qIERl bGV0ZSBQUk9DRVNTOiBraWxsIGl0IGFuZCBmb3JnZXQgYWJvdXQgaXQgaW1tZWRpYXRlbHku CiBQUk9DRVNTIG1heSBiZSBhIHByb2Nlc3MsIGEgYnVmZmVyLCB0aGUgbmFtZSBvZiBhIHBy b2Nlc3Mgb3IgYnVmZmVyLCBvcgogbmlsLCBpbmRpY2F0aW5nIHRoZSBjdXJyZW50IGJ1ZmZl cidzIHByb2Nlc3MuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByb2Nlc3MpCisg IChMaXNwX09iamVjdCBwcm9jZXNzKQogewotICByZWdpc3RlciBzdHJ1Y3QgTGlzcF9Qcm9j ZXNzICpwOworICBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpwOwogCiAgIHByb2Nlc3MgPSBnZXRf cHJvY2VzcyAocHJvY2Vzcyk7CiAgIHAgPSBYUFJPQ0VTUyAocHJvY2Vzcyk7CkBAIC04MjAs MTAgKzgyMCwxMCBAQAogbmlsIC0tIGlmIGFyZyBpcyBhIHByb2Nlc3MgbmFtZSBhbmQgbm8g c3VjaCBwcm9jZXNzIGV4aXN0cy4KIFBST0NFU1MgbWF5IGJlIGEgcHJvY2VzcywgYSBidWZm ZXIsIHRoZSBuYW1lIG9mIGEgcHJvY2Vzcywgb3IKIG5pbCwgaW5kaWNhdGluZyB0aGUgY3Vy cmVudCBidWZmZXIncyBwcm9jZXNzLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBw cm9jZXNzKQorICAoTGlzcF9PYmplY3QgcHJvY2VzcykKIHsKLSAgcmVnaXN0ZXIgc3RydWN0 IExpc3BfUHJvY2VzcyAqcDsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3RhdHVzOworICBz dHJ1Y3QgTGlzcF9Qcm9jZXNzICpwOworICBMaXNwX09iamVjdCBzdGF0dXM7CiAKICAgaWYg KFNUUklOR1AgKHByb2Nlc3MpKQogICAgIHByb2Nlc3MgPSBGZ2V0X3Byb2Nlc3MgKHByb2Nl c3MpOwpAQCAtODU1LDcgKzg1NSw3IEBACiAgICAgICAgMSwgMSwgMCwKICAgICAgICBkb2M6 IC8qIFJldHVybiB0aGUgZXhpdCBzdGF0dXMgb2YgUFJPQ0VTUyBvciB0aGUgc2lnbmFsIG51 bWJlciB0aGF0IGtpbGxlZCBpdC4KIElmIFBST0NFU1MgaGFzIG5vdCB5ZXQgZXhpdGVkIG9y IGRpZWQsIHJldHVybiAwLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBwcm9jZXNz KQorICAoTGlzcF9PYmplY3QgcHJvY2VzcykKIHsKICAgQ0hFQ0tfUFJPQ0VTUyAocHJvY2Vz cyk7CiAgIGlmIChYUFJPQ0VTUyAocHJvY2VzcyktPnJhd19zdGF0dXNfbmV3KQpAQCAtODY5 LDcgKzg2OSw3IEBACiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHByb2Nlc3MgaWQgb2Yg UFJPQ0VTUy4KIFRoaXMgaXMgdGhlIHBpZCBvZiB0aGUgZXh0ZXJuYWwgcHJvY2VzcyB3aGlj aCBQUk9DRVNTIHVzZXMgb3IgdGFsa3MgdG8uCiBGb3IgYSBuZXR3b3JrIGNvbm5lY3Rpb24s IHRoaXMgdmFsdWUgaXMgbmlsLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBwcm9j ZXNzKQorICAoTGlzcF9PYmplY3QgcHJvY2VzcykKIHsKICAgcGlkX3QgcGlkOwogCkBAIC04 ODIsNyArODgyLDcgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgbmFtZSBvZiBQUk9D RVNTLCBhcyBhIHN0cmluZy4KIFRoaXMgaXMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gaW52 b2tlZCBpbiBQUk9DRVNTLAogcG9zc2libHkgbW9kaWZpZWQgdG8gbWFrZSBpdCB1bmlxdWUg YW1vbmcgcHJvY2VzcyBuYW1lcy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJv Y2VzcykKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MpCiB7CiAgIENIRUNLX1BST0NFU1MgKHBy b2Nlc3MpOwogICByZXR1cm4gWFBST0NFU1MgKHByb2Nlc3MpLT5uYW1lOwpAQCAtODk0LDcg Kzg5NCw3IEBACiBhbmQgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZ3MgYmVpbmcgdGhlIGFyZ3Vt ZW50cyBnaXZlbiB0byBpdC4KIEZvciBhIG5ldHdvcmsgb3Igc2VyaWFsIHByb2Nlc3MsIHRo aXMgaXMgbmlsIChwcm9jZXNzIGlzIHJ1bm5pbmcpIG9yIHQKIFwocHJvY2VzcyBpcyBzdG9w cGVkKS4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvY2VzcykKKyAgKExpc3Bf T2JqZWN0IHByb2Nlc3MpCiB7CiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwogICByZXR1 cm4gWFBST0NFU1MgKHByb2Nlc3MpLT5jb21tYW5kOwpAQCAtOTA0LDcgKzkwNCw3IEBACiAg ICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHRlcm1pbmFsIFBST0NFU1Mg dXNlcywgb3IgbmlsIGlmIG5vbmUuCiBUaGlzIGlzIHRoZSB0ZXJtaW5hbCB0aGF0IHRoZSBw cm9jZXNzIGl0c2VsZiByZWFkcyBhbmQgd3JpdGVzIG9uLAogbm90IHRoZSBuYW1lIG9mIHRo ZSBwdHkgdGhhdCBFbWFjcyB1c2VzIHRvIHRhbGsgd2l0aCB0aGF0IHRlcm1pbmFsLiAgKi8p Ci0gIChyZWdpc3RlciBMaXNwX09iamVjdCBwcm9jZXNzKQorICAoTGlzcF9PYmplY3QgcHJv Y2VzcykKIHsKICAgQ0hFQ0tfUFJPQ0VTUyAocHJvY2Vzcyk7CiAgIHJldHVybiBYUFJPQ0VT UyAocHJvY2VzcyktPnR0eV9uYW1lOwpAQCAtOTE0LDcgKzkxNCw3IEBACiAgICAgICAgMiwg MiwgMCwKICAgICAgICBkb2M6IC8qIFNldCBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIFBST0NF U1MgdG8gQlVGRkVSIChhIGJ1ZmZlciwgb3IgbmlsKS4KIFJldHVybiBCVUZGRVIuICAqLykK LSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IGJ1ZmZlcikK KyAgKExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IGJ1ZmZlcikKIHsKICAgc3Ry dWN0IExpc3BfUHJvY2VzcyAqcDsKIApAQCAtOTMzLDcgKzkzMyw3IEBACiAgICAgICAgMSwg MSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgYnVmZmVyIFBST0NFU1MgaXMgYXNz b2NpYXRlZCB3aXRoLgogT3V0cHV0IGZyb20gUFJPQ0VTUyBpcyBpbnNlcnRlZCBpbiB0aGlz IGJ1ZmZlciB1bmxlc3MgUFJPQ0VTUyBoYXMgYSBmaWx0ZXIuICAqLykKLSAgKHJlZ2lzdGVy IExpc3BfT2JqZWN0IHByb2Nlc3MpCisgIChMaXNwX09iamVjdCBwcm9jZXNzKQogewogICBD SEVDS19QUk9DRVNTIChwcm9jZXNzKTsKICAgcmV0dXJuIFhQUk9DRVNTIChwcm9jZXNzKS0+ YnVmZmVyOwpAQCAtOTQyLDcgKzk0Miw3IEBACiBERUZVTiAoInByb2Nlc3MtbWFyayIsIEZw cm9jZXNzX21hcmssIFNwcm9jZXNzX21hcmssCiAgICAgICAgMSwgMSwgMCwKICAgICAgICBk b2M6IC8qIFJldHVybiB0aGUgbWFya2VyIGZvciB0aGUgZW5kIG9mIHRoZSBsYXN0IG91dHB1 dCBmcm9tIFBST0NFU1MuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByb2Nlc3Mp CisgIChMaXNwX09iamVjdCBwcm9jZXNzKQogewogICBDSEVDS19QUk9DRVNTIChwcm9jZXNz KTsKICAgcmV0dXJuIFhQUk9DRVNTIChwcm9jZXNzKS0+bWFyazsKQEAgLTk2NCw3ICs5NjQs NyBAQAogLSBpZiBgZGVmYXVsdC1lbmFibGUtbXVsdGlieXRlLWNoYXJhY3RlcnMnIGlzIG5p bCwgaXQgaXMgYSB1bmlieXRlCiAgIHN0cmluZyAodGhlIHJlc3VsdCBvZiBjb252ZXJ0aW5n IHRoZSBkZWNvZGVkIGlucHV0IG11bHRpYnl0ZQogICBzdHJpbmcgdG8gdW5pYnl0ZSB3aXRo IGBzdHJpbmctbWFrZS11bmlieXRlJykuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0 IHByb2Nlc3MsIExpc3BfT2JqZWN0IGZpbHRlcikKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3Ms IExpc3BfT2JqZWN0IGZpbHRlcikKIHsKICAgc3RydWN0IExpc3BfUHJvY2VzcyAqcDsKIApA QCAtMTAwNiw3ICsxMDA2LDcgQEAKICAgICAgICAxLCAxLCAwLAogICAgICAgIGRvYzogLyog UmV0dXJucyB0aGUgZmlsdGVyIGZ1bmN0aW9uIG9mIFBST0NFU1M7IG5pbCBpZiBub25lLgog U2VlIGBzZXQtcHJvY2Vzcy1maWx0ZXInIGZvciBtb3JlIGluZm8gb24gZmlsdGVyIGZ1bmN0 aW9ucy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvY2VzcykKKyAgKExpc3Bf T2JqZWN0IHByb2Nlc3MpCiB7CiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwogICByZXR1 cm4gWFBST0NFU1MgKHByb2Nlc3MpLT5maWx0ZXI7CkBAIC0xMDE3LDcgKzEwMTcsNyBAQAog ICAgICAgIGRvYzogLyogR2l2ZSBQUk9DRVNTIHRoZSBzZW50aW5lbCBTRU5USU5FTDsgbmls IGZvciBub25lLgogVGhlIHNlbnRpbmVsIGlzIGNhbGxlZCBhcyBhIGZ1bmN0aW9uIHdoZW4g dGhlIHByb2Nlc3MgY2hhbmdlcyBzdGF0ZS4KIEl0IGdldHMgdHdvIGFyZ3VtZW50czogdGhl IHByb2Nlc3MsIGFuZCBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBjaGFuZ2UuICAqLykKLSAg KHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IHNlbnRpbmVsKQor ICAoTGlzcF9PYmplY3QgcHJvY2VzcywgTGlzcF9PYmplY3Qgc2VudGluZWwpCiB7CiAgIHN0 cnVjdCBMaXNwX1Byb2Nlc3MgKnA7CiAKQEAgLTEwMzQsNyArMTAzNCw3IEBACiAgICAgICAg MSwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgc2VudGluZWwgb2YgUFJPQ0VT UzsgbmlsIGlmIG5vbmUuCiBTZWUgYHNldC1wcm9jZXNzLXNlbnRpbmVsJyBmb3IgbW9yZSBp bmZvIG9uIHNlbnRpbmVscy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvY2Vz cykKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MpCiB7CiAgIENIRUNLX1BST0NFU1MgKHByb2Nl c3MpOwogICByZXR1cm4gWFBST0NFU1MgKHByb2Nlc3MpLT5zZW50aW5lbDsKQEAgLTEwNDMs NyArMTA0Myw3IEBACiBERUZVTiAoInNldC1wcm9jZXNzLXdpbmRvdy1zaXplIiwgRnNldF9w cm9jZXNzX3dpbmRvd19zaXplLAogICAgICAgIFNzZXRfcHJvY2Vzc193aW5kb3dfc2l6ZSwg MywgMywgMCwKICAgICAgICBkb2M6IC8qIFRlbGwgUFJPQ0VTUyB0aGF0IGl0IGhhcyBsb2dp Y2FsIHdpbmRvdyBzaXplIEhFSUdIVCBhbmQgV0lEVEguICAqLykKLSAgKHJlZ2lzdGVyIExp c3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IGhlaWdodCwgTGlzcF9PYmplY3Qgd2lk dGgpCisgIChMaXNwX09iamVjdCBwcm9jZXNzLCBMaXNwX09iamVjdCBoZWlnaHQsIExpc3Bf T2JqZWN0IHdpZHRoKQogewogICBDSEVDS19QUk9DRVNTIChwcm9jZXNzKTsKICAgQ0hFQ0tf UkFOR0VEX0lOVEVHRVIgKDAsIGhlaWdodCwgSU5UX01BWCk7CkBAIC0xMDc2LDcgKzEwNzYs NyBAQAogZm9yIHRoZSBwcm9jZXNzIHdoaWNoIHdpbGwgcnVuLgogCiBUaGlzIGZ1bmN0aW9u IHJldHVybnMgRkxBRy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvY2Vzcywg TGlzcF9PYmplY3QgZmxhZykKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0 IGZsYWcpCiB7CiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwogICBYUFJPQ0VTUyAocHJv Y2VzcyktPmluaGVyaXRfY29kaW5nX3N5c3RlbV9mbGFnID0gIU5JTFAgKGZsYWcpOwpAQCAt MTA5MCw3ICsxMDkwLDcgQEAKIElmIHRoZSBzZWNvbmQgYXJndW1lbnQgRkxBRyBpcyBub24t bmlsLCBFbWFjcyB3aWxsIHF1ZXJ5IHRoZSB1c2VyIGJlZm9yZQogZXhpdGluZyBvciBraWxs aW5nIGEgYnVmZmVyIGlmIFBST0NFU1MgaXMgcnVubmluZy4gIFRoaXMgZnVuY3Rpb24KIHJl dHVybnMgRkxBRy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvY2VzcywgTGlz cF9PYmplY3QgZmxhZykKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IGZs YWcpCiB7CiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwogICBYUFJPQ0VTUyAocHJvY2Vz cyktPmtpbGxfd2l0aG91dF9xdWVyeSA9IE5JTFAgKGZsYWcpOwpAQCAtMTEwMSw3ICsxMTAx LDcgQEAKICAgICAgICBGcHJvY2Vzc19xdWVyeV9vbl9leGl0X2ZsYWcsIFNwcm9jZXNzX3F1 ZXJ5X29uX2V4aXRfZmxhZywKICAgICAgICAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0 dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mIHF1ZXJ5LW9uLWV4aXQgZmxhZyBmb3IgUFJPQ0VT Uy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvY2VzcykKKyAgKExpc3BfT2Jq ZWN0IHByb2Nlc3MpCiB7CiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwogICByZXR1cm4g KFhQUk9DRVNTIChwcm9jZXNzKS0+a2lsbF93aXRob3V0X3F1ZXJ5ID8gUW5pbCA6IFF0KTsK QEAgLTExMjEsNyArMTEyMSw3IEBACiBjb25uZWN0aW9uIGlzIHJldHVybmVkLCBlbHNlIHRo ZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIGtleXdvcmQgS0VZIGlzCiByZXR1cm5lZC4gIFNl ZSBgbWFrZS1uZXR3b3JrLXByb2Nlc3MnIG9yIGBtYWtlLXNlcmlhbC1wcm9jZXNzJyBmb3Ig YQogbGlzdCBvZiBrZXl3b3Jkcy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJv Y2VzcywgTGlzcF9PYmplY3Qga2V5KQorICAoTGlzcF9PYmplY3QgcHJvY2VzcywgTGlzcF9P YmplY3Qga2V5KQogewogICBMaXNwX09iamVjdCBjb250YWN0OwogCkBAIC0xMTQ5LDcgKzEx NDksNyBAQAogREVGVU4gKCJwcm9jZXNzLXBsaXN0IiwgRnByb2Nlc3NfcGxpc3QsIFNwcm9j ZXNzX3BsaXN0LAogICAgICAgIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhl IHBsaXN0IG9mIFBST0NFU1MuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByb2Nl c3MpCisgIChMaXNwX09iamVjdCBwcm9jZXNzKQogewogICBDSEVDS19QUk9DRVNTIChwcm9j ZXNzKTsKICAgcmV0dXJuIFhQUk9DRVNTIChwcm9jZXNzKS0+cGxpc3Q7CkBAIC0xMTU4LDcg KzExNTgsNyBAQAogREVGVU4gKCJzZXQtcHJvY2Vzcy1wbGlzdCIsIEZzZXRfcHJvY2Vzc19w bGlzdCwgU3NldF9wcm9jZXNzX3BsaXN0LAogICAgICAgIDIsIDIsIDAsCiAgICAgICAgZG9j OiAvKiBSZXBsYWNlIHRoZSBwbGlzdCBvZiBQUk9DRVNTIHdpdGggUExJU1QuICBSZXR1cm5z IFBMSVNULiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBwcm9jZXNzLCBMaXNwX09i amVjdCBwbGlzdCkKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IHBsaXN0 KQogewogICBDSEVDS19QUk9DRVNTIChwcm9jZXNzKTsKICAgQ0hFQ0tfTElTVCAocGxpc3Qp OwpAQCAtMTIwOSw3ICsxMjA5LDcgQEAKIAogICBpZiAoVkVDVE9SUCAoYWRkcmVzcykpICAv KiBBRl9JTkVUIG9yIEFGX0lORVQ2ICovCiAgICAgewotICAgICAgcmVnaXN0ZXIgc3RydWN0 IExpc3BfVmVjdG9yICpwID0gWFZFQ1RPUiAoYWRkcmVzcyk7CisgICAgICBzdHJ1Y3QgTGlz cF9WZWN0b3IgKnAgPSBYVkVDVE9SIChhZGRyZXNzKTsKICAgICAgIHB0cmRpZmZfdCBzaXpl ID0gcC0+aGVhZGVyLnNpemU7CiAgICAgICBMaXNwX09iamVjdCBhcmdzWzEwXTsKICAgICAg IGludCBuYXJncywgaTsKQEAgLTEyOTcsNyArMTI5Nyw3IEBACiAgIChwdHJkaWZmX3QgbmFy Z3MsIExpc3BfT2JqZWN0ICphcmdzKQogewogICBMaXNwX09iamVjdCBidWZmZXIsIG5hbWUs IHByb2dyYW0sIHByb2MsIGN1cnJlbnRfZGlyLCB0ZW07Ci0gIHJlZ2lzdGVyIHVuc2lnbmVk IGNoYXIgKipuZXdfYXJndjsKKyAgdW5zaWduZWQgY2hhciAqKm5ld19hcmd2OwogICBwdHJk aWZmX3QgaTsKICAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKIApAQCAt MjAxOCw3ICsyMDE4LDcgQEAKICAgTGlzcF9PYmplY3QgYWRkcmVzczsKICAgaW50IGk7CiAg IHVuc2lnbmVkIGNoYXIgKmNwOwotICByZWdpc3RlciBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnA7 CisgIHN0cnVjdCBMaXNwX1ZlY3RvciAqcDsKIAogICAvKiBXb3JrYXJvdW5kIGZvciBhIGJ1 ZyBpbiBnZXRzb2NrbmFtZSBvbiBCU0Q6IE5hbWVzIGJvdW5kIHRvCiAgICAgIHNvY2tldHMg aW4gdGhlIFVOSVggZG9tYWluIGFyZSBpbmFjY2Vzc2libGU7IGdldHNvY2tuYW1lIHJldHVy bnMKQEAgLTIwODQsNyArMjA4NCw3IEBACiBzdGF0aWMgaW50CiBnZXRfbGlzcF90b19zb2Nr YWRkcl9zaXplIChMaXNwX09iamVjdCBhZGRyZXNzLCBpbnQgKmZhbWlseXApCiB7Ci0gIHJl Z2lzdGVyIHN0cnVjdCBMaXNwX1ZlY3RvciAqcDsKKyAgc3RydWN0IExpc3BfVmVjdG9yICpw OwogCiAgIGlmIChWRUNUT1JQIChhZGRyZXNzKSkKICAgICB7CkBAIC0yMTMwLDkgKzIxMzAs OSBAQAogc3RhdGljIHZvaWQKIGNvbnZfbGlzcF90b19zb2NrYWRkciAoaW50IGZhbWlseSwg TGlzcF9PYmplY3QgYWRkcmVzcywgc3RydWN0IHNvY2thZGRyICpzYSwgaW50IGxlbikKIHsK LSAgcmVnaXN0ZXIgc3RydWN0IExpc3BfVmVjdG9yICpwOwotICByZWdpc3RlciB1bnNpZ25l ZCBjaGFyICpjcCA9IE5VTEw7Ci0gIHJlZ2lzdGVyIGludCBpOworICBzdHJ1Y3QgTGlzcF9W ZWN0b3IgKnA7CisgIHVuc2lnbmVkIGNoYXIgKmNwID0gTlVMTDsKKyAgaW50IGk7CiAgIEVN QUNTX0lOVCBob3N0cG9ydDsKIAogICBtZW1zZXQgKHNhLCAwLCBsZW4pOwpAQCAtMzc4OCw3 ICszNzg4LDcgQEAKICAgaWYgKGlvY3RsIChzLCBTSU9DR0lGSFdBRERSLCAmcnEpID09IDAp CiAgICAgewogICAgICAgTGlzcF9PYmplY3QgaHdhZGRyID0gRm1ha2VfdmVjdG9yIChtYWtl X251bWJlciAoNiksIFFuaWwpOwotICAgICAgcmVnaXN0ZXIgc3RydWN0IExpc3BfVmVjdG9y ICpwID0gWFZFQ1RPUiAoaHdhZGRyKTsKKyAgICAgIHN0cnVjdCBMaXNwX1ZlY3RvciAqcCA9 IFhWRUNUT1IgKGh3YWRkcik7CiAgICAgICBpbnQgbjsKIAogICAgICAgYW55ID0gMTsKQEAg LTM4MDAsNyArMzgwMCw3IEBACiAgIGlmIChnZXRpZmFkZHJzICgmaWZhcCkgIT0gLTEpCiAg ICAgewogICAgICAgTGlzcF9PYmplY3QgaHdhZGRyID0gRm1ha2VfdmVjdG9yIChtYWtlX251 bWJlciAoNiksIFFuaWwpOwotICAgICAgcmVnaXN0ZXIgc3RydWN0IExpc3BfVmVjdG9yICpw ID0gWFZFQ1RPUiAoaHdhZGRyKTsKKyAgICAgIHN0cnVjdCBMaXNwX1ZlY3RvciAqcCA9IFhW RUNUT1IgKGh3YWRkcik7CiAgICAgICBzdHJ1Y3QgaWZhZGRycyAqaXQ7CiAKICAgICAgIGZv ciAoaXQgPSBpZmFwOyBpdCAhPSBOVUxMOyBpdCA9IGl0LT5pZmFfbmV4dCkKQEAgLTM4NzYs OCArMzg3Niw4IEBACiBzdGF0aWMgdm9pZAogZGVhY3RpdmF0ZV9wcm9jZXNzIChMaXNwX09i amVjdCBwcm9jKQogewotICByZWdpc3RlciBpbnQgaW5jaGFubmVsLCBvdXRjaGFubmVsOwot ICByZWdpc3RlciBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpwID0gWFBST0NFU1MgKHByb2MpOwor ICBpbnQgaW5jaGFubmVsLCBvdXRjaGFubmVsOworICBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpw ID0gWFBST0NFU1MgKHByb2MpOwogCiAjaWZkZWYgSEFWRV9HTlVUTFMKICAgLyogRGVsZXRl IEdudVRMUyBzdHJ1Y3R1cmVzIGluIFBST0MsIGlmIGFueS4gICovCkBAIC0zOTU4LDcgKzM5 NTgsOCBAQAogZnJvbSBQUk9DRVNTLCBzdXNwZW5kaW5nIHJlYWRpbmcgb3V0cHV0IGZyb20g b3RoZXIgcHJvY2Vzc2VzLgogSWYgSlVTVC1USElTLU9ORSBpcyBhbiBpbnRlZ2VyLCBkb24n dCBydW4gYW55IHRpbWVycyBlaXRoZXIuCiBSZXR1cm4gbm9uLW5pbCBpZiB3ZSByZWNlaXZl ZCBhbnkgb3V0cHV0IGJlZm9yZSB0aGUgdGltZW91dCBleHBpcmVkLiAgKi8pCi0gIChyZWdp c3RlciBMaXNwX09iamVjdCBwcm9jZXNzLCBMaXNwX09iamVjdCBzZWNvbmRzLCBMaXNwX09i amVjdCBtaWxsaXNlYywgTGlzcF9PYmplY3QganVzdF90aGlzX29uZSkKKyAgKExpc3BfT2Jq ZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IHNlY29uZHMsIExpc3BfT2JqZWN0IG1pbGxpc2Vj LAorICAgTGlzcF9PYmplY3QganVzdF90aGlzX29uZSkKIHsKICAgaW50IHNlY3MgPSAtMSwg dXNlY3MgPSAwOwogCkBAIC00Mjg5LDcgKzQyOTAsNyBAQAogCQkJICAgICBMaXNwX09iamVj dCB3YWl0X2Zvcl9jZWxsLAogCQkJICAgICBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICp3YWl0X3By b2MsIGludCBqdXN0X3dhaXRfcHJvYykKIHsKLSAgcmVnaXN0ZXIgaW50IGNoYW5uZWwsIG5m ZHM7CisgIGludCBjaGFubmVsLCBuZmRzOwogICBTRUxFQ1RfVFlQRSBBdmFpbGFibGU7CiAg IFNFTEVDVF9UWVBFIFdyaXRlb2s7CiAgIGludCBjaGVja193cml0ZTsKQEAgLTUwMzQsMTMg KzUwMzUsMTMgQEAKICAgIGZvciBkZWNvZGluZy4gICovCiAKIHN0YXRpYyBpbnQKLXJlYWRf cHJvY2Vzc19vdXRwdXQgKExpc3BfT2JqZWN0IHByb2MsIHJlZ2lzdGVyIGludCBjaGFubmVs KQorcmVhZF9wcm9jZXNzX291dHB1dCAoTGlzcF9PYmplY3QgcHJvYywgaW50IGNoYW5uZWwp CiB7Ci0gIHJlZ2lzdGVyIHNzaXplX3QgbmJ5dGVzOworICBzc2l6ZV90IG5ieXRlczsKICAg Y2hhciAqY2hhcnM7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IG91dHN0cmVhbTsKLSAgcmVn aXN0ZXIgc3RydWN0IExpc3BfUHJvY2VzcyAqcCA9IFhQUk9DRVNTIChwcm9jKTsKLSAgcmVn aXN0ZXIgcHRyZGlmZl90IG9wb2ludDsKKyAgTGlzcF9PYmplY3Qgb3V0c3RyZWFtOworICBz dHJ1Y3QgTGlzcF9Qcm9jZXNzICpwID0gWFBST0NFU1MgKHByb2MpOworICBwdHJkaWZmX3Qg b3BvaW50OwogICBzdHJ1Y3QgY29kaW5nX3N5c3RlbSAqY29kaW5nID0gcHJvY19kZWNvZGVf Y29kaW5nX3N5c3RlbVtjaGFubmVsXTsKICAgaW50IGNhcnJ5b3ZlciA9IHAtPmRlY29kaW5n X2NhcnJ5b3ZlcjsKICAgaW50IHJlYWRtYXggPSA0MDk2OwpAQCAtNTc2MSw3ICs1NzYyLDcg QEAKIAkJICAgICBpbnQgbm9tc2cpCiB7CiAgIExpc3BfT2JqZWN0IHByb2M7Ci0gIHJlZ2lz dGVyIHN0cnVjdCBMaXNwX1Byb2Nlc3MgKnA7CisgIHN0cnVjdCBMaXNwX1Byb2Nlc3MgKnA7 CiAgIHBpZF90IGdpZDsKICAgaW50IG5vX3BncnAgPSAwOwogCkBAIC02NDI4LDcgKzY0Mjks NyBAQAogZXhlY19zZW50aW5lbCAoTGlzcF9PYmplY3QgcHJvYywgTGlzcF9PYmplY3QgcmVh c29uKQogewogICBMaXNwX09iamVjdCBzZW50aW5lbCwgb2RlYWN0aXZhdGU7Ci0gIHJlZ2lz dGVyIHN0cnVjdCBMaXNwX1Byb2Nlc3MgKnAgPSBYUFJPQ0VTUyAocHJvYyk7CisgIHN0cnVj dCBMaXNwX1Byb2Nlc3MgKnAgPSBYUFJPQ0VTUyAocHJvYyk7CiAgIHB0cmRpZmZfdCBjb3Vu dCA9IFNQRUNQRExfSU5ERVggKCk7CiAgIGludCBvdXRlcl9ydW5uaW5nX2FzeW5jaF9jb2Rl ID0gcnVubmluZ19hc3luY2hfY29kZTsKICAgaW50IHdhaXRpbmcgPSB3YWl0aW5nX2Zvcl91 c2VyX2lucHV0X3A7CkBAIC02NTE1LDcgKzY1MTYsNyBAQAogc3RhdGljIHZvaWQKIHN0YXR1 c19ub3RpZnkgKHN0cnVjdCBMaXNwX1Byb2Nlc3MgKmRlbGV0aW5nX3Byb2Nlc3MpCiB7Ci0g IHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByb2MsIGJ1ZmZlcjsKKyAgTGlzcF9PYmplY3QgcHJv YywgYnVmZmVyOwogICBMaXNwX09iamVjdCB0YWlsLCBtc2c7CiAgIHN0cnVjdCBnY3BybyBn Y3BybzEsIGdjcHJvMjsKIApAQCAtNjUzNCw3ICs2NTM1LDcgQEAKICAgZm9yICh0YWlsID0g VnByb2Nlc3NfYWxpc3Q7IENPTlNQICh0YWlsKTsgdGFpbCA9IFhDRFIgKHRhaWwpKQogICAg IHsKICAgICAgIExpc3BfT2JqZWN0IHN5bWJvbDsKLSAgICAgIHJlZ2lzdGVyIHN0cnVjdCBM aXNwX1Byb2Nlc3MgKnA7CisgICAgICBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpwOwogCiAgICAg ICBwcm9jID0gRmNkciAoWENBUiAodGFpbCkpOwogICAgICAgcCA9IFhQUk9DRVNTIChwcm9j KTsKQEAgLTY2NDAsOSArNjY0MSw5IEBACiAgICAgICAgZG9jOiAvKiBTZXQgY29kaW5nIHN5 c3RlbXMgb2YgUFJPQ0VTUyB0byBERUNPRElORyBhbmQgRU5DT0RJTkcuCiBERUNPRElORyB3 aWxsIGJlIHVzZWQgdG8gZGVjb2RlIHN1YnByb2Nlc3Mgb3V0cHV0IGFuZCBFTkNPRElORyB0 bwogZW5jb2RlIHN1YnByb2Nlc3MgaW5wdXQuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2Jq ZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IGRlY29kaW5nLCBMaXNwX09iamVjdCBlbmNvZGlu ZykKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IGRlY29kaW5nLCBMaXNw X09iamVjdCBlbmNvZGluZykKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IExpc3BfUHJvY2VzcyAq cDsKKyAgc3RydWN0IExpc3BfUHJvY2VzcyAqcDsKIAogICBDSEVDS19QUk9DRVNTIChwcm9j ZXNzKTsKICAgcCA9IFhQUk9DRVNTIChwcm9jZXNzKTsKQEAgLTY2NjMsNyArNjY2NCw3IEBA CiBERUZVTiAoInByb2Nlc3MtY29kaW5nLXN5c3RlbSIsCiAgICAgICAgRnByb2Nlc3NfY29k aW5nX3N5c3RlbSwgU3Byb2Nlc3NfY29kaW5nX3N5c3RlbSwgMSwgMSwgMCwKICAgICAgICBk b2M6IC8qIFJldHVybiBhIGNvbnMgb2YgY29kaW5nIHN5c3RlbXMgZm9yIGRlY29kaW5nIGFu ZCBlbmNvZGluZyBvZiBQUk9DRVNTLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBw cm9jZXNzKQorICAoTGlzcF9PYmplY3QgcHJvY2VzcykKIHsKICAgQ0hFQ0tfUFJPQ0VTUyAo cHJvY2Vzcyk7CiAgIHJldHVybiBGY29ucyAoWFBST0NFU1MgKHByb2Nlc3MpLT5kZWNvZGVf Y29kaW5nX3N5c3RlbSwKQEAgLTY2NzksNyArNjY4MCw3IEBACiBzdXBwcmVzc2VkLiAgKi8p CiAgIChMaXNwX09iamVjdCBwcm9jZXNzLCBMaXNwX09iamVjdCBmbGFnKQogewotICByZWdp c3RlciBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpwOworICBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpw OwogCiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwogICBwID0gWFBST0NFU1MgKHByb2Nl c3MpOwpAQCAtNjY5NSw3ICs2Njk2LDcgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0IGlm IGEgbXVsdGlieXRlIHN0cmluZyBpcyBnaXZlbiB0byBQUk9DRVNTJ3MgZmlsdGVyLiovKQog ICAoTGlzcF9PYmplY3QgcHJvY2VzcykKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IExpc3BfUHJv Y2VzcyAqcDsKKyAgc3RydWN0IExpc3BfUHJvY2VzcyAqcDsKICAgc3RydWN0IGNvZGluZ19z eXN0ZW0gKmNvZGluZzsKIAogICBDSEVDS19QUk9DRVNTIChwcm9jZXNzKTsKQEAgLTY3Nzgs NyArNjc3OSw3IEBACiAJCQkgICAgIExpc3BfT2JqZWN0IHdhaXRfZm9yX2NlbGwsCiAJCQkg ICAgIHN0cnVjdCBMaXNwX1Byb2Nlc3MgKndhaXRfcHJvYywgaW50IGp1c3Rfd2FpdF9wcm9j KQogewotICByZWdpc3RlciBpbnQgbmZkczsKKyAgaW50IG5mZHM7CiAgIEVNQUNTX1RJTUUg ZW5kX3RpbWUsIHRpbWVvdXQ7CiAgIFNFTEVDVF9UWVBFIHdhaXRjaGFubmVsczsKICAgaW50 IHhlcnJubzsKQEAgLTcwNjQsMTAgKzcwNjUsMTAgQEAKIERFRlVOICgiZ2V0LWJ1ZmZlci1w cm9jZXNzIiwgRmdldF9idWZmZXJfcHJvY2VzcywgU2dldF9idWZmZXJfcHJvY2VzcywgMSwg MSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgKG9yIGEpIHByb2Nlc3MgYXNzb2Np YXRlZCB3aXRoIEJVRkZFUi4KIEJVRkZFUiBtYXkgYmUgYSBidWZmZXIgb3IgdGhlIG5hbWUg b2Ygb25lLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBidWZmZXIpCisgIChMaXNw X09iamVjdCBidWZmZXIpCiB7CiAjaWZkZWYgc3VicHJvY2Vzc2VzCi0gIHJlZ2lzdGVyIExp c3BfT2JqZWN0IGJ1ZiwgdGFpbCwgcHJvYzsKKyAgTGlzcF9PYmplY3QgYnVmLCB0YWlsLCBw cm9jOwogCiAgIGlmIChOSUxQIChidWZmZXIpKSByZXR1cm4gUW5pbDsKICAgYnVmID0gRmdl dF9idWZmZXIgKGJ1ZmZlcik7CkBAIC03MDkwLDcgKzcwOTEsNyBAQAogSWYgdGhpcyBmbGFn IGlzIHQsIGBidWZmZXItZmlsZS1jb2Rpbmctc3lzdGVtJyBvZiB0aGUgYnVmZmVyCiBhc3Nv Y2lhdGVkIHdpdGggUFJPQ0VTUyB3aWxsIGluaGVyaXQgdGhlIGNvZGluZyBzeXN0ZW0gdXNl ZCB0byBkZWNvZGUKIHRoZSBwcm9jZXNzIG91dHB1dC4gICovKQotICAocmVnaXN0ZXIgTGlz cF9PYmplY3QgcHJvY2VzcykKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MpCiB7CiAjaWZkZWYg c3VicHJvY2Vzc2VzCiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwpAQCAtNzI0MCw3ICs3 MjQxLDcgQEAKIGluaXRfcHJvY2VzcyAodm9pZCkKIHsKICNpZmRlZiBzdWJwcm9jZXNzZXMK LSAgcmVnaXN0ZXIgaW50IGk7CisgIGludCBpOwogCiAgIGluaGliaXRfc2VudGluZWxzID0g MDsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9yYWxsb2MuYycKLS0tIHNyYy9yYWxsb2Mu YwkyMDEyLTA1LTMxIDA2OjA2OjQyICswMDAwCisrKyBzcmMvcmFsbG9jLmMJMjAxMi0wNi0w MyAwNTo1MzozOCArMDAwMApAQCAtMzA3LDcgKzMwNyw3IEBACiBzdGF0aWMgdm9pZAogcmVs aW5xdWlzaCAodm9pZCkKIHsKLSAgcmVnaXN0ZXIgaGVhcF9wdHIgaDsKKyAgaGVhcF9wdHIg aDsKICAgbG9uZyBleGNlc3MgPSAwOwogCiAgIC8qIEFkZCB0aGUgYW1vdW50IG9mIHNwYWNl IGJleW9uZCBicmVha192YWx1ZQpAQCAtMzY4LDcgKzM2OCw3IEBACiBzdGF0aWMgYmxvY19w dHIKIGZpbmRfYmxvYyAoUE9JTlRFUiAqcHRyKQogewotICByZWdpc3RlciBibG9jX3B0ciBw ID0gZmlyc3RfYmxvYzsKKyAgYmxvY19wdHIgcCA9IGZpcnN0X2Jsb2M7CiAKICAgd2hpbGUg KHAgIT0gTklMX0JMT0MpCiAgICAgewpAQCAtMzkzLDggKzM5Myw4IEBACiBzdGF0aWMgYmxv Y19wdHIKIGdldF9ibG9jIChTSVpFIHNpemUpCiB7Ci0gIHJlZ2lzdGVyIGJsb2NfcHRyIG5l d19ibG9jOwotICByZWdpc3RlciBoZWFwX3B0ciBoZWFwOworICBibG9jX3B0ciBuZXdfYmxv YzsKKyAgaGVhcF9wdHIgaGVhcDsKIAogICBpZiAoISAobmV3X2Jsb2MgPSAoYmxvY19wdHIp IG1hbGxvYyAoQkxPQ19QVFJfU0laRSkpCiAgICAgICB8fCAhIChuZXdfYmxvYy0+ZGF0YSA9 IG9idGFpbiAoYnJlYWtfdmFsdWUsIHNpemUpKSkKQEAgLTQ0OCw3ICs0NDgsNyBAQAogc3Rh dGljIGludAogcmVsb2NhdGVfYmxvY3MgKGJsb2NfcHRyIGJsb2MsIGhlYXBfcHRyIGhlYXAs IFBPSU5URVIgYWRkcmVzcykKIHsKLSAgcmVnaXN0ZXIgYmxvY19wdHIgYiA9IGJsb2M7Cisg IGJsb2NfcHRyIGIgPSBibG9jOwogCiAgIC8qIE5vIG5lZWQgdG8gZXZlciBjYWxsIHRoaXMg aWYgYXJlbmEgaXMgZnJvemVuLCBidWcgc29tZXdoZXJlISAgKi8KICAgaWYgKHJfYWxsb2Nf ZnJlZXplX2xldmVsKQpAQCAtNDcwLDggKzQ3MCw4IEBACiAJIGdldCBlbm91Z2ggbmV3IHNw YWNlIHRvIGhvbGQgQkxPQyBhbmQgYWxsIGZvbGxvd2luZyBibG9jcy4gICovCiAgICAgICBp ZiAoaGVhcCA9PSBOSUxfSEVBUCkKIAl7Ci0JICByZWdpc3RlciBibG9jX3B0ciB0YiA9IGI7 Ci0JICByZWdpc3RlciBTSVpFIHMgPSAwOworCSAgYmxvY19wdHIgdGIgPSBiOworCSAgU0la RSBzID0gMDsKIAogCSAgLyogQWRkIHVwIHRoZSBzaXplIG9mIGFsbCB0aGUgZm9sbG93aW5n IGJsb2NzLiAgKi8KIAkgIHdoaWxlICh0YiAhPSBOSUxfQkxPQykKQEAgLTUwNyw3ICs1MDcs NyBAQAogc3RhdGljIHZvaWQKIHVwZGF0ZV9oZWFwX2Jsb2NfY29ycmVzcG9uZGVuY2UgKGJs b2NfcHRyIGJsb2MsIGhlYXBfcHRyIGhlYXApCiB7Ci0gIHJlZ2lzdGVyIGJsb2NfcHRyIGI7 CisgIGJsb2NfcHRyIGI7CiAKICAgLyogSW5pdGlhbGl6ZSBIRUFQJ3Mgc3RhdHVzIHRvIHJl ZmxlY3QgYmxvY3MgYmVmb3JlIEJMT0MuICAqLwogICBpZiAoYmxvYyAhPSBOSUxfQkxPQyAm JiBibG9jLT5wcmV2ICE9IE5JTF9CTE9DICYmIGJsb2MtPnByZXYtPmhlYXAgPT0gaGVhcCkK QEAgLTU2OSw3ICs1NjksNyBAQAogc3RhdGljIGludAogcmVzaXplX2Jsb2MgKGJsb2NfcHRy IGJsb2MsIFNJWkUgc2l6ZSkKIHsKLSAgcmVnaXN0ZXIgYmxvY19wdHIgYjsKKyAgYmxvY19w dHIgYjsKICAgaGVhcF9wdHIgaGVhcDsKICAgUE9JTlRFUiBhZGRyZXNzOwogICBTSVpFIG9s ZF9zaXplOwpAQCAtNzM1LDcgKzczNSw3IEBACiBzdGF0aWMgUE9JTlRFUgogcl9hbGxvY19z YnJrIChsb25nIGludCBzaXplKQogewotICByZWdpc3RlciBibG9jX3B0ciBiOworICBibG9j X3B0ciBiOwogICBQT0lOVEVSIGFkZHJlc3M7CiAKICAgaWYgKCEgcl9hbGxvY19pbml0aWFs aXplZCkKQEAgLTg4OCw3ICs4ODgsNyBAQAogUE9JTlRFUgogcl9hbGxvYyAoUE9JTlRFUiAq cHRyLCBTSVpFIHNpemUpCiB7Ci0gIHJlZ2lzdGVyIGJsb2NfcHRyIG5ld19ibG9jOworICBi bG9jX3B0ciBuZXdfYmxvYzsKIAogICBpZiAoISByX2FsbG9jX2luaXRpYWxpemVkKQogICAg IHJfYWxsb2NfaW5pdCAoKTsKQEAgLTkwOSw5ICs5MDksOSBAQAogICAgU3RvcmUgMCBpbiAq UFRSIHRvIHNob3cgdGhlcmUncyBubyBibG9jayBhbGxvY2F0ZWQuICAqLwogCiB2b2lkCi1y X2FsbG9jX2ZyZWUgKHJlZ2lzdGVyIFBPSU5URVIgKnB0cikKK3JfYWxsb2NfZnJlZSAoUE9J TlRFUiAqcHRyKQogewotICByZWdpc3RlciBibG9jX3B0ciBkZWFkX2Jsb2M7CisgIGJsb2Nf cHRyIGRlYWRfYmxvYzsKIAogICBpZiAoISByX2FsbG9jX2luaXRpYWxpemVkKQogICAgIHJf YWxsb2NfaW5pdCAoKTsKQEAgLTk0NSw3ICs5NDUsNyBAQAogUE9JTlRFUgogcl9yZV9hbGxv YyAoUE9JTlRFUiAqcHRyLCBTSVpFIHNpemUpCiB7Ci0gIHJlZ2lzdGVyIGJsb2NfcHRyIGJs b2M7CisgIGJsb2NfcHRyIGJsb2M7CiAKICAgaWYgKCEgcl9hbGxvY19pbml0aWFsaXplZCkK ICAgICByX2FsbG9jX2luaXQgKCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3Njcm9sbC5j JwotLS0gc3JjL3Njcm9sbC5jCTIwMTItMDItMTAgMTg6NTg6NDggKzAwMDAKKysrIHNyYy9z Y3JvbGwuYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC05MywxMCArOTMsMTAgQEAK IAkJICAgICBpbnQgKmRyYXdfY29zdCwgaW50ICpvbGRfaGFzaCwgaW50ICpuZXdfaGFzaCwK IAkJICAgICBpbnQgZnJlZV9hdF9lbmQpCiB7Ci0gIHJlZ2lzdGVyIGludCBpLCBqOworICBp bnQgaSwgajsKICAgaW50IGZyYW1lX2xpbmVzID0gRlJBTUVfTElORVMgKGZyYW1lKTsKLSAg cmVnaXN0ZXIgc3RydWN0IG1hdHJpeF9lbHQgKnAsICpwMTsKLSAgcmVnaXN0ZXIgaW50IGNv c3QsIGNvc3QxOworICBzdHJ1Y3QgbWF0cml4X2VsdCAqcCwgKnAxOworICBpbnQgY29zdCwg Y29zdDE7CiAKICAgaW50IGxpbmVzX21vdmVkID0gd2luZG93X3NpemUKICAgICArIChGUkFN RV9TQ1JPTExfUkVHSU9OX09LIChmcmFtZSkgPyAwIDogbGluZXNfYmVsb3cpOwpAQCAtNDMx LDEwICs0MzEsMTAgQEAKIAkJCSAgICBpbnQgKm9sZF9oYXNoLCBpbnQgKm5ld19oYXNoLAog CQkJICAgIGludCBmcmVlX2F0X2VuZCkKIHsKLSAgcmVnaXN0ZXIgaW50IGksIGo7CisgIGlu dCBpLCBqOwogICBpbnQgZnJhbWVfbGluZXMgPSBGUkFNRV9MSU5FUyAoZnJhbWUpOwotICBy ZWdpc3RlciBzdHJ1Y3QgbWF0cml4X2VsdCAqcCwgKnAxOwotICByZWdpc3RlciBpbnQgY29z dCwgY29zdDEsIGRlbHRhOworICBzdHJ1Y3QgbWF0cml4X2VsdCAqcCwgKnAxOworICBpbnQg Y29zdCwgY29zdDEsIGRlbHRhOwogCiAgIC8qIGZpcnN0X2luc2VydF9jb3N0Wy1JXSBpcyB0 aGUgY29zdCBvZiBkb2luZyB0aGUgZmlyc3QgaW5zZXJ0LWxpbmUKICAgICAgYXQgYSBwb3Np dGlvbiBJIGxpbmVzIGFib3ZlIHRoZSBib3R0b20gbGluZSBpbiB0aGUgc2Nyb2xsIHdpbmRv dy4gKi8KQEAgLTgzOCw4ICs4MzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50ICpjb3N0KQogewogICBzdHJ1Y3QgeyBpbnQgaGFzaDsgaW50IGNvdW50OyB9IGxpbmVz WzAxMDAwXTsKLSAgcmVnaXN0ZXIgaW50IGksIGg7Ci0gIHJlZ2lzdGVyIGludCBtYXRjaGNv dW50ID0gMDsKKyAgaW50IGksIGg7CisgIGludCBtYXRjaGNvdW50ID0gMDsKICAgaW50IGF2 Z19sZW5ndGggPSAwOwogICBpbnQgdGhyZXNob2xkOwogCkBAIC04ODcsMTIgKzg4NywxMiBA QAogCiBzdGF0aWMgdm9pZAogbGluZV9pbnNfZGVsIChGUkFNRV9QVFIgZnJhbWUsIGludCBv djEsIGludCBwZjEsIGludCBvdm4sIGludCBwZm4sCi0gICAgICAgICAgICAgIHJlZ2lzdGVy IGludCAqb3YsIHJlZ2lzdGVyIGludCAqbWYpCisgICAgICAgICAgICAgIGludCAqb3YsIGlu dCAqbWYpCiB7Ci0gIHJlZ2lzdGVyIGludCBpOwotICByZWdpc3RlciBpbnQgZnJhbWVfbGlu ZXMgPSBGUkFNRV9MSU5FUyAoZnJhbWUpOwotICByZWdpc3RlciBpbnQgaW5zZXJ0X292ZXJo ZWFkID0gb3YxICogMTA7Ci0gIHJlZ2lzdGVyIGludCBuZXh0X2luc2VydF9jb3N0ID0gb3Zu ICogMTA7CisgIGludCBpOworICBpbnQgZnJhbWVfbGluZXMgPSBGUkFNRV9MSU5FUyAoZnJh bWUpOworICBpbnQgaW5zZXJ0X292ZXJoZWFkID0gb3YxICogMTA7CisgIGludCBuZXh0X2lu c2VydF9jb3N0ID0gb3ZuICogMTA7CiAKICAgZm9yIChpID0gZnJhbWVfbGluZXMtMTsgaSA+ PSAwOyBpLS0pCiAgICAgewoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9zZWFyY2guYycKLS0t IHNyYy9zZWFyY2guYwkyMDEyLTA1LTMxIDA2OjA2OjQyICswMDAwCisrKyBzcmMvc2VhcmNo LmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMjczLDcgKzI3Myw3IEBACiAgIExp c3BfT2JqZWN0IHZhbDsKICAgdW5zaWduZWQgY2hhciAqcDEsICpwMjsKICAgcHRyZGlmZl90 IHMxLCBzMjsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGk7CisgIHB0cmRpZmZfdCBpOwogICBz dHJ1Y3QgcmVfcGF0dGVybl9idWZmZXIgKmJ1ZnA7CiAKICAgaWYgKHJ1bm5pbmdfYXN5bmNo X2NvZGUpCkBAIC02NDIsNyArNjQyLDcgQEAKICAgIGV4Y2VwdCB3aGVuIGluc2lkZSByZWRp c3BsYXkuICAqLwogCiBwdHJkaWZmX3QKLXNjYW5fYnVmZmVyIChyZWdpc3RlciBpbnQgdGFy Z2V0LCBwdHJkaWZmX3Qgc3RhcnQsIHB0cmRpZmZfdCBlbmQsCitzY2FuX2J1ZmZlciAoaW50 IHRhcmdldCwgcHRyZGlmZl90IHN0YXJ0LCBwdHJkaWZmX3QgZW5kLAogCSAgICAgcHRyZGlm Zl90IGNvdW50LCBwdHJkaWZmX3QgKnNob3J0YWdlLCBpbnQgYWxsb3dfcXVpdCkKIHsKICAg c3RydWN0IHJlZ2lvbl9jYWNoZSAqbmV3bGluZV9jYWNoZTsKQEAgLTcwOCwxMCArNzA4LDgg QEAKIAogICAgICAgICB7CiAgICAgICAgICAgLyogVGhlIHRlcm1pbmF0aW9uIGFkZHJlc3Mg b2YgdGhlIGR1bWIgbG9vcC4gICovCi0gICAgICAgICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hh ciAqY2VpbGluZ19hZGRyCi0JICAgID0gQllURV9QT1NfQUREUiAoY2VpbGluZ19ieXRlKSAr IDE7Ci0gICAgICAgICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqY3Vyc29yCi0JICAgID0g QllURV9QT1NfQUREUiAoc3RhcnRfYnl0ZSk7CisgICAgICAgICAgdW5zaWduZWQgY2hhciAq Y2VpbGluZ19hZGRyID0gQllURV9QT1NfQUREUiAoY2VpbGluZ19ieXRlKSArIDE7CisgICAg ICAgICAgdW5zaWduZWQgY2hhciAqY3Vyc29yID0gQllURV9QT1NfQUREUiAoc3RhcnRfYnl0 ZSk7CiAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYmFzZSA9IGN1cnNvcjsKIAogICAgICAg ICAgIHdoaWxlIChjdXJzb3IgPCBjZWlsaW5nX2FkZHIpCkBAIC03NzcsOCArNzc1LDggQEAK IAogICAgICAgICB7CiAgICAgICAgICAgLyogVGhlIHRlcm1pbmF0aW9uIGFkZHJlc3Mgb2Yg dGhlIGR1bWIgbG9vcC4gICovCi0gICAgICAgICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAq Y2VpbGluZ19hZGRyID0gQllURV9QT1NfQUREUiAoY2VpbGluZ19ieXRlKTsKLSAgICAgICAg ICByZWdpc3RlciB1bnNpZ25lZCBjaGFyICpjdXJzb3IgPSBCWVRFX1BPU19BRERSIChzdGFy dF9ieXRlIC0gMSk7CisgICAgICAgICAgdW5zaWduZWQgY2hhciAqY2VpbGluZ19hZGRyID0g QllURV9QT1NfQUREUiAoY2VpbGluZ19ieXRlKTsKKyAgICAgICAgICB1bnNpZ25lZCBjaGFy ICpjdXJzb3IgPSBCWVRFX1BPU19BRERSIChzdGFydF9ieXRlIC0gMSk7CiAgICAgICAgICAg dW5zaWduZWQgY2hhciAqYmFzZSA9IGN1cnNvcjsKIAogICAgICAgICAgIHdoaWxlIChjdXJz b3IgPj0gY2VpbGluZ19hZGRyKQpAQCAtODM3LDE1ICs4MzUsMTUgQEAKIEVNQUNTX0lOVAog c2Nhbl9uZXdsaW5lIChwdHJkaWZmX3Qgc3RhcnQsIHB0cmRpZmZfdCBzdGFydF9ieXRlLAog CSAgICAgIHB0cmRpZmZfdCBsaW1pdCwgcHRyZGlmZl90IGxpbWl0X2J5dGUsCi0JICAgICAg cmVnaXN0ZXIgRU1BQ1NfSU5UIGNvdW50LCBpbnQgYWxsb3dfcXVpdCkKKwkgICAgICBFTUFD U19JTlQgY291bnQsIGludCBhbGxvd19xdWl0KQogewogICBpbnQgZGlyZWN0aW9uID0gKChj b3VudCA+IDApID8gMSA6IC0xKTsKIAotICByZWdpc3RlciB1bnNpZ25lZCBjaGFyICpjdXJz b3I7CisgIHVuc2lnbmVkIGNoYXIgKmN1cnNvcjsKICAgdW5zaWduZWQgY2hhciAqYmFzZTsK IAogICBwdHJkaWZmX3QgY2VpbGluZzsKLSAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqY2Vp bGluZ19hZGRyOworICB1bnNpZ25lZCBjaGFyICpjZWlsaW5nX2FkZHI7CiAKICAgaW50IG9s ZF9pbW1lZGlhdGVfcXVpdCA9IGltbWVkaWF0ZV9xdWl0OwogCkBAIC05NTgsNyArOTU2LDcg QEAKIHNlYXJjaF9jb21tYW5kIChMaXNwX09iamVjdCBzdHJpbmcsIExpc3BfT2JqZWN0IGJv dW5kLCBMaXNwX09iamVjdCBub2Vycm9yLAogCQlMaXNwX09iamVjdCBjb3VudCwgaW50IGRp cmVjdGlvbiwgaW50IFJFLCBpbnQgcG9zaXgpCiB7Ci0gIHJlZ2lzdGVyIEVNQUNTX0lOVCBu cDsKKyAgRU1BQ1NfSU5UIG5wOwogICBFTUFDU19JTlQgbGltOwogICBwdHJkaWZmX3QgbGlt X2J5dGU7CiAgIEVNQUNTX0lOVCBuID0gZGlyZWN0aW9uOwpAQCAtMTEwNiw3ICsxMTA0LDcg QEAKIHsKICAgcHRyZGlmZl90IGxlbiA9IFNDSEFSUyAoc3RyaW5nKTsKICAgcHRyZGlmZl90 IGxlbl9ieXRlID0gU0JZVEVTIChzdHJpbmcpOwotICByZWdpc3RlciBwdHJkaWZmX3QgaTsK KyAgcHRyZGlmZl90IGk7CiAKICAgaWYgKHJ1bm5pbmdfYXN5bmNoX2NvZGUpCiAgICAgc2F2 ZV9zZWFyY2hfcmVncyAoKTsKQEAgLTE2NTksMTMgKzE2NTcsMTMgQEAKICAgICAgICAgICAg ICBpbnQgY2hhcl9iYXNlKQogewogICBpbnQgZGlyZWN0aW9uID0gKChuID4gMCkgPyAxIDog LTEpOwotICByZWdpc3RlciBwdHJkaWZmX3QgZGlybGVuOworICBwdHJkaWZmX3QgZGlybGVu OwogICBwdHJkaWZmX3QgbGltaXQ7CiAgIGludCBzdHJpZGVfZm9yX3RlYXNlcyA9IDA7CiAg IGludCBCTV90YWJbMDQwMF07Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKmN1cnNvciwg KnBfbGltaXQ7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBpOwotICByZWdpc3RlciBpbnQgajsK KyAgdW5zaWduZWQgY2hhciAqY3Vyc29yLCAqcF9saW1pdDsKKyAgcHRyZGlmZl90IGk7Cisg IGludCBqOwogICB1bnNpZ25lZCBjaGFyICpwYXQsICpwYXRfZW5kOwogICBpbnQgbXVsdGli eXRlID0gISBOSUxQIChCVkFSIChjdXJyZW50X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9j aGFyYWN0ZXJzKSk7CiAKQEAgLTIyNDgsMTIgKzIyNDYsMTIgQEAKICAgKExpc3BfT2JqZWN0 IG5ld3RleHQsIExpc3BfT2JqZWN0IGZpeGVkY2FzZSwgTGlzcF9PYmplY3QgbGl0ZXJhbCwg TGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBzdWJleHApCiB7CiAgIGVudW0geyBu b2NoYW5nZSwgYWxsX2NhcHMsIGNhcF9pbml0aWFsIH0gY2FzZV9hY3Rpb247Ci0gIHJlZ2lz dGVyIHB0cmRpZmZfdCBwb3MsIHBvc19ieXRlOworICBwdHJkaWZmX3QgcG9zLCBwb3NfYnl0 ZTsKICAgaW50IHNvbWVfbXVsdGlsZXR0ZXJfd29yZDsKICAgaW50IHNvbWVfbG93ZXJjYXNl OwogICBpbnQgc29tZV91cHBlcmNhc2U7CiAgIGludCBzb21lX25vbnVwcGVyY2FzZV9pbml0 aWFsOwotICByZWdpc3RlciBpbnQgYywgcHJldmM7CisgIGludCBjLCBwcmV2YzsKICAgcHRy ZGlmZl90IHN1YjsKICAgcHRyZGlmZl90IG9wb2ludCwgbmV3cG9pbnQ7CiAKQEAgLTI4MjIs MTAgKzI4MjAsMTAgQEAKIExJU1Qgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGNhbGxp bmcgYG1hdGNoLWRhdGEnIHByZXZpb3VzbHkuCiAKIElmIG9wdGlvbmFsIGFyZyBSRVNFQVQg aXMgbm9uLW5pbCwgbWFrZSBtYXJrZXJzIG9uIExJU1QgcG9pbnQgbm93aGVyZS4gICovKQot ICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgbGlzdCwgTGlzcF9PYmplY3QgcmVzZWF0KQorICAo TGlzcF9PYmplY3QgbGlzdCwgTGlzcF9PYmplY3QgcmVzZWF0KQogewogICBwdHJkaWZmX3Qg aTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgbWFya2VyOworICBMaXNwX09iamVjdCBtYXJr ZXI7CiAKICAgaWYgKHJ1bm5pbmdfYXN5bmNoX2NvZGUpCiAgICAgc2F2ZV9zZWFyY2hfcmVn cyAoKTsKQEAgLTMwMDIsOCArMzAwMCw4IEBACiAgICAgICAgZG9jOiAvKiBSZXR1cm4gYSBy ZWdleHAgc3RyaW5nIHdoaWNoIG1hdGNoZXMgZXhhY3RseSBTVFJJTkcgYW5kIG5vdGhpbmcg ZWxzZS4gICovKQogICAoTGlzcF9PYmplY3Qgc3RyaW5nKQogewotICByZWdpc3RlciBjaGFy ICppbiwgKm91dCwgKmVuZDsKLSAgcmVnaXN0ZXIgY2hhciAqdGVtcDsKKyAgY2hhciAqaW4s ICpvdXQsICplbmQ7CisgIGNoYXIgKnRlbXA7CiAgIGludCBiYWNrc2xhc2hlc19hZGRlZCA9 IDA7CiAKICAgQ0hFQ0tfU1RSSU5HIChzdHJpbmcpOwpAQCAtMzAzNSw3ICszMDMzLDcgQEAK IHZvaWQKIHN5bXNfb2Zfc2VhcmNoICh2b2lkKQogewotICByZWdpc3RlciBpbnQgaTsKKyAg aW50IGk7CiAKICAgZm9yIChpID0gMDsgaSA8IFJFR0VYUF9DQUNIRV9TSVpFOyArK2kpCiAg ICAgewoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9zeW50YXguYycKLS0tIHNyYy9zeW50YXgu YwkyMDEyLTA0LTA5IDIyOjU0OjU5ICswMDAwCisrKyBzcmMvc3ludGF4LmMJMjAxMi0wNi0w MyAwNTo1MzozOCArMDAwMApAQCAtMzQxLDkgKzM0MSw5IEBACiBzdGF0aWMgaW50CiBjaGFy X3F1b3RlZCAocHRyZGlmZl90IGNoYXJwb3MsIHB0cmRpZmZfdCBieXRlcG9zKQogewotICBy ZWdpc3RlciBlbnVtIHN5bnRheGNvZGUgY29kZTsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGJl ZyA9IEJFR1Y7Ci0gIHJlZ2lzdGVyIGludCBxdW90ZWQgPSAwOworICBlbnVtIHN5bnRheGNv ZGUgY29kZTsKKyAgcHRyZGlmZl90IGJlZyA9IEJFR1Y7CisgIGludCBxdW90ZWQgPSAwOwog ICBwdHJkaWZmX3Qgb3JpZyA9IGNoYXJwb3M7CiAKICAgd2hpbGUgKGNoYXJwb3MgPiBiZWcp CkBAIC01MzAsNyArNTMwLDcgQEAKICAgICAgb3IgMCBpZiB3ZSBkaWRuJ3QgY29tZSBhY3Jv c3MgaXQgeWV0LiAgKi8KICAgcHRyZGlmZl90IGRlZnVuX3N0YXJ0ID0gMDsKICAgcHRyZGlm Zl90IGRlZnVuX3N0YXJ0X2J5dGUgPSAwOwotICByZWdpc3RlciBlbnVtIHN5bnRheGNvZGUg Y29kZTsKKyAgZW51bSBzeW50YXhjb2RlIGNvZGU7CiAgIGludCBuZXN0aW5nID0gMTsJCS8q IGN1cnJlbnQgY29tbWVudCBuZXN0aW5nICovCiAgIGludCBjOwogICBpbnQgc3ludGF4ID0g MDsKQEAgLTkyMyw4ICs5MjMsOCBAQAogdGV4dCBwcm9wZXJ0eS4gICovKQogICAoTGlzcF9P YmplY3Qgc3RyaW5nKQogewotICByZWdpc3RlciBjb25zdCB1bnNpZ25lZCBjaGFyICpwOwot ICByZWdpc3RlciBlbnVtIHN5bnRheGNvZGUgY29kZTsKKyAgY29uc3QgdW5zaWduZWQgY2hh ciAqcDsKKyAgZW51bSBzeW50YXhjb2RlIGNvZGU7CiAgIGludCB2YWw7CiAgIExpc3BfT2Jq ZWN0IG1hdGNoOwogCkBAIC0xMDcyLDcgKzEwNzIsNyBAQAogICAgICAgIGRvYzogLyogSW5z ZXJ0IGEgZGVzY3JpcHRpb24gb2YgdGhlIGludGVybmFsIHN5bnRheCBkZXNjcmlwdGlvbiBT WU5UQVggYXQgcG9pbnQuICAqLykKICAgKExpc3BfT2JqZWN0IHN5bnRheCkKIHsKLSAgcmVn aXN0ZXIgZW51bSBzeW50YXhjb2RlIGNvZGU7CisgIGVudW0gc3ludGF4Y29kZSBjb2RlOwog ICBpbnQgc3ludGF4X2NvZGU7CiAgIGNoYXIgZGVzYywgc3RhcnQxLCBzdGFydDIsIGVuZDEs IGVuZDIsIHByZWZpeCwKICAgICBjb21zdHlsZWIsIGNvbXN0eWxlYywgY29tbmVzdGVkOwpA QCAtMTIyNSwxMiArMTIyNSwxMiBAQAogICAgQ09VTlQgbmVnYXRpdmUgbWVhbnMgc2NhbiBi YWNrd2FyZCBhbmQgc3RvcCBhdCB3b3JkIGJlZ2lubmluZy4gICovCiAKIHB0cmRpZmZfdAot c2Nhbl93b3JkcyAocmVnaXN0ZXIgcHRyZGlmZl90IGZyb20sIHJlZ2lzdGVyIEVNQUNTX0lO VCBjb3VudCkKK3NjYW5fd29yZHMgKHB0cmRpZmZfdCBmcm9tLCBFTUFDU19JTlQgY291bnQp CiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBiZWcgPSBCRUdWOwotICByZWdpc3RlciBwdHJk aWZmX3QgZW5kID0gWlY7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBmcm9tX2J5dGUgPSBDSEFS X1RPX0JZVEUgKGZyb20pOwotICByZWdpc3RlciBlbnVtIHN5bnRheGNvZGUgY29kZTsKKyAg cHRyZGlmZl90IGJlZyA9IEJFR1Y7CisgIHB0cmRpZmZfdCBlbmQgPSBaVjsKKyAgcHRyZGlm Zl90IGZyb21fYnl0ZSA9IENIQVJfVE9fQllURSAoZnJvbSk7CisgIGVudW0gc3ludGF4Y29k ZSBjb2RlOwogICBpbnQgY2gwLCBjaDE7CiAgIExpc3BfT2JqZWN0IGZ1bmMsIHBvczsKIApA QCAtMTQyNywxMyArMTQyNywxMyBAQAogc3RhdGljIExpc3BfT2JqZWN0CiBza2lwX2NoYXJz IChpbnQgZm9yd2FyZHAsIExpc3BfT2JqZWN0IHN0cmluZywgTGlzcF9PYmplY3QgbGltLCBp bnQgaGFuZGxlX2lzb19jbGFzc2VzKQogewotICByZWdpc3RlciB1bnNpZ25lZCBpbnQgYzsK KyAgdW5zaWduZWQgaW50IGM7CiAgIHVuc2lnbmVkIGNoYXIgZmFzdG1hcFswNDAwXTsKICAg LyogU3RvcmUgdGhlIHJhbmdlcyBvZiBub24tQVNDSUkgY2hhcmFjdGVycy4gICovCiAgIGlu dCAqY2hhcl9yYW5nZXMgSUZfTElOVCAoPSBOVUxMKTsKICAgaW50IG5fY2hhcl9yYW5nZXMg PSAwOwogICBpbnQgbmVnYXRlID0gMDsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGksIGlfYnl0 ZTsKKyAgcHRyZGlmZl90IGksIGlfYnl0ZTsKICAgLyogU2V0IHRvIDEgaWYgdGhlIGN1cnJl bnQgYnVmZmVyIGlzIG11bHRpYnl0ZSBhbmQgdGhlIHJlZ2lvbgogICAgICBjb250YWlucyBu b24tQVNDSUkgY2hhcnMuICAqLwogICBpbnQgbXVsdGlieXRlOwpAQCAtMTkyMywxMCArMTky MywxMCBAQAogc3RhdGljIExpc3BfT2JqZWN0CiBza2lwX3N5bnRheGVzIChpbnQgZm9yd2Fy ZHAsIExpc3BfT2JqZWN0IHN0cmluZywgTGlzcF9PYmplY3QgbGltKQogewotICByZWdpc3Rl ciB1bnNpZ25lZCBpbnQgYzsKKyAgdW5zaWduZWQgaW50IGM7CiAgIHVuc2lnbmVkIGNoYXIg ZmFzdG1hcFswNDAwXTsKICAgaW50IG5lZ2F0ZSA9IDA7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZf dCBpLCBpX2J5dGU7CisgIHB0cmRpZmZfdCBpLCBpX2J5dGU7CiAgIGludCBtdWx0aWJ5dGU7 CiAgIHB0cmRpZmZfdCBzaXplX2J5dGU7CiAgIHVuc2lnbmVkIGNoYXIgKnN0cjsKQEAgLTIx NDEsOSArMjE0MSw5IEBACiAJICAgICAgcHRyZGlmZl90ICpjaGFycG9zX3B0ciwgcHRyZGlm Zl90ICpieXRlcG9zX3B0ciwKIAkgICAgICBFTUFDU19JTlQgKmluY29tbWVudF9wdHIpCiB7 Ci0gIHJlZ2lzdGVyIGludCBjLCBjMTsKLSAgcmVnaXN0ZXIgZW51bSBzeW50YXhjb2RlIGNv ZGU7Ci0gIHJlZ2lzdGVyIGludCBzeW50YXgsIG90aGVyX3N5bnRheDsKKyAgaW50IGMsIGMx OworICBlbnVtIHN5bnRheGNvZGUgY29kZTsKKyAgaW50IHN5bnRheCwgb3RoZXJfc3ludGF4 OwogCiAgIGlmIChuZXN0aW5nIDw9IDApIG5lc3RpbmcgPSAtMTsKIApAQCAtMjI0MSwxMSAr MjI0MSwxMSBAQAogYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJldHVybiBu aWwuICAqLykKICAgKExpc3BfT2JqZWN0IGNvdW50KQogewotICByZWdpc3RlciBwdHJkaWZm X3QgZnJvbTsKKyAgcHRyZGlmZl90IGZyb207CiAgIHB0cmRpZmZfdCBmcm9tX2J5dGU7Ci0g IHJlZ2lzdGVyIHB0cmRpZmZfdCBzdG9wOwotICByZWdpc3RlciBpbnQgYywgYzE7Ci0gIHJl Z2lzdGVyIGVudW0gc3ludGF4Y29kZSBjb2RlOworICBwdHJkaWZmX3Qgc3RvcDsKKyAgaW50 IGMsIGMxOworICBlbnVtIHN5bnRheGNvZGUgY29kZTsKICAgaW50IGNvbXN0eWxlID0gMDsJ ICAgIC8qIHN0eWxlIG9mIGNvbW1lbnQgZW5jb3VudGVyZWQgKi8KICAgaW50IGNvbW5lc3Rl ZCA9IDA7CSAgICAvKiB3aGV0aGVyIHRoZSBjb21tZW50IGlzIG5lc3RhYmxlIG9yIG5vdCAq LwogICBpbnQgZm91bmQ7CkBAIC0yNDU1LDE1ICsyNDU1LDE1IEBACiAgICA/IFNZTlRBWCAo YykgOiBTc3ltYm9sKQogCiBzdGF0aWMgTGlzcF9PYmplY3QKLXNjYW5fbGlzdHMgKHJlZ2lz dGVyIEVNQUNTX0lOVCBmcm9tLCBFTUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwg aW50IHNleHBmbGFnKQorc2Nhbl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBj b3VudCwgRU1BQ1NfSU5UIGRlcHRoLCBpbnQgc2V4cGZsYWcpCiB7CiAgIExpc3BfT2JqZWN0 IHZhbDsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IHN0b3AgPSBjb3VudCA+IDAgPyBaViA6IEJF R1Y7Ci0gIHJlZ2lzdGVyIGludCBjLCBjMTsKKyAgcHRyZGlmZl90IHN0b3AgPSBjb3VudCA+ IDAgPyBaViA6IEJFR1Y7CisgIGludCBjLCBjMTsKICAgaW50IHN0cmluZ3Rlcm07CiAgIGlu dCBxdW90ZWQ7CiAgIGludCBtYXRoZXhpdCA9IDA7Ci0gIHJlZ2lzdGVyIGVudW0gc3ludGF4 Y29kZSBjb2RlLCB0ZW1wX2NvZGU7CisgIGVudW0gc3ludGF4Y29kZSBjb2RlLCB0ZW1wX2Nv ZGU7CiAgIEVNQUNTX0lOVCBtaW5fZGVwdGggPSBkZXB0aDsgICAgLyogRXJyIG91dCBpZiBk ZXB0aCBnZXRzIGxlc3MgdGhhbiB0aGlzLiAgKi8KICAgaW50IGNvbXN0eWxlID0gMDsJICAg IC8qIHN0eWxlIG9mIGNvbW1lbnQgZW5jb3VudGVyZWQgKi8KICAgaW50IGNvbW5lc3RlZCA9 IDA7CSAgICAvKiB3aGV0aGVyIHRoZSBjb21tZW50IGlzIG5lc3RhYmxlIG9yIG5vdCAqLwpA QCAtMjk0OCwxNiArMjk0OCwxNiBAQAogewogICBzdHJ1Y3QgbGlzcF9wYXJzZV9zdGF0ZSBz dGF0ZTsKIAotICByZWdpc3RlciBlbnVtIHN5bnRheGNvZGUgY29kZTsKKyAgZW51bSBzeW50 YXhjb2RlIGNvZGU7CiAgIGludCBjMTsKICAgaW50IGNvbW5lc3RlZDsKICAgc3RydWN0IGxl dmVsIHsgcHRyZGlmZl90IGxhc3QsIHByZXY7IH07CiAgIHN0cnVjdCBsZXZlbCBsZXZlbHN0 YXJ0WzEwMF07Ci0gIHJlZ2lzdGVyIHN0cnVjdCBsZXZlbCAqY3VybGV2ZWwgPSBsZXZlbHN0 YXJ0OworICBzdHJ1Y3QgbGV2ZWwgKmN1cmxldmVsID0gbGV2ZWxzdGFydDsKICAgc3RydWN0 IGxldmVsICplbmRsZXZlbCA9IGxldmVsc3RhcnQgKyAxMDA7Ci0gIHJlZ2lzdGVyIEVNQUNT X0lOVCBkZXB0aDsgLyogUGFyZW4gZGVwdGggb2YgY3VycmVudCBzY2FubmluZyBsb2NhdGlv bi4KLQkJCSAgIGxldmVsIC0gbGV2ZWxzdGFydCBlcXVhbHMgdGhpcyBleGNlcHQKLQkJCSAg IHdoZW4gdGhlIGRlcHRoIGJlY29tZXMgbmVnYXRpdmUuICAqLworICBFTUFDU19JTlQgZGVw dGg7IC8qIFBhcmVuIGRlcHRoIG9mIGN1cnJlbnQgc2Nhbm5pbmcgbG9jYXRpb24uCisJCSAg ICAgIGxldmVsIC0gbGV2ZWxzdGFydCBlcXVhbHMgdGhpcyBleGNlcHQKKwkJICAgICAgd2hl biB0aGUgZGVwdGggYmVjb21lcyBuZWdhdGl2ZS4gICovCiAgIEVNQUNTX0lOVCBtaW5kZXB0 aDsJCS8qIExvd2VzdCBERVBUSCB2YWx1ZSBzZWVuLiAgKi8KICAgaW50IHN0YXJ0X3F1b3Rl ZCA9IDA7CQkvKiBOb256ZXJvIG1lYW5zIHN0YXJ0aW5nIGFmdGVyIGEgY2hhciBxdW90ZSAq LwogICBMaXNwX09iamVjdCB0ZW07CkBAIC0zMzcyLDcgKzMzNzIsNyBAQAogdm9pZAogaW5p dF9zeW50YXhfb25jZSAodm9pZCkKIHsKLSAgcmVnaXN0ZXIgaW50IGksIGM7CisgIGludCBp LCBjOwogICBMaXNwX09iamVjdCB0ZW1wOwogCiAgIC8qIFRoaXMgaGFzIHRvIGJlIGRvbmUg aGVyZSwgYmVmb3JlIHdlIGNhbGwgRm1ha2VfY2hhcl90YWJsZS4gICovCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3JjL3N5c2RlcC5jJwotLS0gc3JjL3N5c2RlcC5jCTIwMTItMDYtMDIgMjE6 MDE6MDcgKzAwMDAKKysrIHNyYy9zeXNkZXAuYwkyMDEyLTA2LTAzIDA1OjU1OjIzICswMDAw CkBAIC0xODY5LDcgKzE4NjksNyBAQAogaW50CiBlbWFjc19vcGVuIChjb25zdCBjaGFyICpw YXRoLCBpbnQgb2ZsYWcsIGludCBtb2RlKQogewotICByZWdpc3RlciBpbnQgcnRudmFsOwor ICBpbnQgcnRudmFsOwogCiAgIHdoaWxlICgocnRudmFsID0gb3BlbiAocGF0aCwgb2ZsYWcs IG1vZGUpKSA9PSAtMQogCSAmJiAoZXJybm8gPT0gRUlOVFIpKQpAQCAtMTg4MSw3ICsxODgx LDcgQEAKIGVtYWNzX2Nsb3NlIChpbnQgZmQpCiB7CiAgIGludCBkaWRfcmV0cnkgPSAwOwot ICByZWdpc3RlciBpbnQgcnRudmFsOworICBpbnQgcnRudmFsOwogCiAgIHdoaWxlICgocnRu dmFsID0gY2xvc2UgKGZkKSkgPT0gLTEKIAkgJiYgKGVycm5vID09IEVJTlRSKSkKQEAgLTE5 MTMsNyArMTkxMyw3IEBACiBwdHJkaWZmX3QKIGVtYWNzX3JlYWQgKGludCBmaWxkZXMsIGNo YXIgKmJ1ZiwgcHRyZGlmZl90IG5ieXRlKQogewotICByZWdpc3RlciBzc2l6ZV90IHJ0bnZh bDsKKyAgc3NpemVfdCBydG52YWw7CiAKICAgLyogVGhlcmUgaXMgbm8gbmVlZCB0byBjaGVj ayBhZ2FpbnN0IE1BWF9SV19DT1VOVCwgc2luY2Ugbm8gY2FsbGVyIGV2ZXIKICAgICAgcGFz c2VzIGEgc2l6ZSB0aGF0IGxhcmdlIHRvIGVtYWNzX3JlYWQuICAqLwpAQCAtMjUxMyw3ICsy NTEzLDcgQEAKIHsKICAgTGlzcF9PYmplY3QgcHJvY2RpciwgbWF0Y2gsIHByb2NsaXN0LCBu ZXh0OwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzI7Ci0gIHJlZ2lzdGVyIExpc3Bf T2JqZWN0IHRhaWw7CisgIExpc3BfT2JqZWN0IHRhaWw7CiAKICAgR0NQUk8yIChwcm9jZGly LCBtYXRjaCk7CiAgIC8qIEZvciBldmVyeSBwcm9jZXNzIG9uIHRoZSBzeXN0ZW0sIHRoZXJl J3MgYSBkaXJlY3RvcnkgaW4gdGhlCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3Rlcm0uYycK LS0tIHNyYy90ZXJtLmMJMjAxMi0wNS0yNSAxODoxOToyNCArMDAwMAorKysgc3JjL3Rlcm0u YwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC00MDksNyArNDA5LDcgQEAKIHN0YXRp YyB2b2lkCiB0dHlfY2xlYXJfdG9fZW5kIChzdHJ1Y3QgZnJhbWUgKmYpCiB7Ci0gIHJlZ2lz dGVyIGludCBpOworICBpbnQgaTsKICAgc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSA9 IEZSQU1FX1RUWSAoZik7CiAKICAgaWYgKHR0eS0+VFNfY2xyX3RvX2JvdHRvbSkKQEAgLTQ1 NCw3ICs0NTQsNyBAQAogc3RhdGljIHZvaWQKIHR0eV9jbGVhcl9lbmRfb2ZfbGluZSAoc3Ry dWN0IGZyYW1lICpmLCBpbnQgZmlyc3RfdW51c2VkX2hwb3MpCiB7Ci0gIHJlZ2lzdGVyIGlu dCBpOworICBpbnQgaTsKICAgc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSA9IEZSQU1F X1RUWSAoZik7CiAKICAgLyogRGV0ZWN0IHRoZSBjYXNlIHdoZXJlIHdlIGFyZSBjYWxsZWQg ZnJvbSByZXNldF9zeXNfbW9kZXMKQEAgLTUwNyw3ICs1MDcsNyBAQAogICB1bnNpZ25lZCBj aGFyICpidWY7CiAgIHB0cmRpZmZfdCBuY2hhcnMsIG5ieXRlcywgcmVxdWlyZWQ7CiAgIHB0 cmRpZmZfdCB0bGVuID0gR0xZUEhfVEFCTEVfTEVOR1RIOwotICByZWdpc3RlciBMaXNwX09i amVjdCAqdGJhc2UgPSBHTFlQSF9UQUJMRV9CQVNFOworICBMaXNwX09iamVjdCAqdGJhc2Ug PSBHTFlQSF9UQUJMRV9CQVNFOwogICBMaXNwX09iamVjdCBjaGFyc2V0X2xpc3Q7CiAKICAg LyogQWxsb2NhdGUgc3VmZmljaWVudCBzaXplIG9mIGJ1ZmZlciB0byBzdG9yZSBhbGwgY2hh cmFjdGVycyBpbgpAQCAtNzc3LDggKzc3Nyw4IEBACiAjaWZkZWYgSEFWRV9HUE0JCQkvKiBP bmx5IHVzZWQgYnkgR1BNIGNvZGUuICAqLwogCiBzdGF0aWMgdm9pZAotdHR5X3dyaXRlX2ds eXBoc193aXRoX2ZhY2UgKHJlZ2lzdGVyIHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3Ry dWN0IGdseXBoICpzdHJpbmcsCi0JCQkgICAgcmVnaXN0ZXIgaW50IGxlbiwgcmVnaXN0ZXIg aW50IGZhY2VfaWQpCit0dHlfd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1l ICpmLCBzdHJ1Y3QgZ2x5cGggKnN0cmluZywKKwkJCSAgICBpbnQgbGVuLCBpbnQgZmFjZV9p ZCkKIHsKICAgdW5zaWduZWQgY2hhciAqY29udmVyc2lvbl9idWZmZXI7CiAgIHN0cnVjdCBj b2Rpbmdfc3lzdGVtICpjb2Rpbmc7CkBAIC05MjksNyArOTI5LDcgQEAKIHR0eV9kZWxldGVf Z2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBuKQogewogICBjaGFyICpidWY7Ci0gIHJl Z2lzdGVyIGludCBpOworICBpbnQgaTsKIAogICBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAq dHR5ID0gRlJBTUVfVFRZIChmKTsKIApAQCAtOTY3LDggKzk2Nyw4IEBACiAgIGNvbnN0IGNo YXIgKnNpbmdsZSA9IG4gPiAwID8gdHR5LT5UU19pbnNfbGluZSA6IHR0eS0+VFNfZGVsX2xp bmU7CiAgIGNvbnN0IGNoYXIgKnNjcm9sbCA9IG4gPiAwID8gdHR5LT5UU19yZXZfc2Nyb2xs IDogdHR5LT5UU19md2Rfc2Nyb2xsOwogCi0gIHJlZ2lzdGVyIGludCBpID0gbiA+IDAgPyBu IDogLW47Ci0gIHJlZ2lzdGVyIGNoYXIgKmJ1ZjsKKyAgaW50IGkgPSBuID4gMCA/IG4gOiAt bjsKKyAgY2hhciAqYnVmOwogCiAgIC8qIElmIHRoZSBsaW5lcyBiZWxvdyB0aGUgaW5zZXJ0 aW9uIGFyZSBiZWluZyBwdXNoZWQKICAgICAgaW50byB0aGUgZW5kIG9mIHRoZSB3aW5kb3cs IHRoaXMgaXMgdGhlIHNhbWUgYXMgY2xlYXJpbmc7CkBAIC0xMDc3LDggKzEwNzcsOCBAQAog ICBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5ID0gRlJBTUVfVFRZIChmKTsKICAgaW50 IGluc19zdGFydHVwX2Nvc3QsIGRlbF9zdGFydHVwX2Nvc3Q7CiAgIGludCBpbnNfY29zdF9w ZXJfY2hhciwgZGVsX2Nvc3RfcGVyX2NoYXI7Ci0gIHJlZ2lzdGVyIGludCBpOwotICByZWdp c3RlciBpbnQgKnA7CisgIGludCBpOworICBpbnQgKnA7CiAKICAgaWYgKHR0eS0+VFNfaW5z X211bHRpX2NoYXJzKQogICAgIHsKQEAgLTExNDAsOSArMTE0MCw5IEBACiAgIGlmIChGUkFN RV9URVJNQ0FQX1AgKGZyYW1lKSkKICAgICB7CiAgICAgICBzdHJ1Y3QgdHR5X2Rpc3BsYXlf aW5mbyAqdHR5ID0gRlJBTUVfVFRZIChmcmFtZSk7Ci0gICAgICByZWdpc3RlciBjb25zdCBj aGFyICpmID0gKHR0eS0+VFNfc2V0X3Njcm9sbF9yZWdpb24KLQkJCQk/IHR0eS0+VFNfc2V0 X3Njcm9sbF9yZWdpb24KLQkJCQk6IHR0eS0+VFNfc2V0X3Njcm9sbF9yZWdpb25fMSk7Cisg ICAgICBjb25zdCBjaGFyICpmID0gKHR0eS0+VFNfc2V0X3Njcm9sbF9yZWdpb24KKwkJICAg ICAgID8gdHR5LT5UU19zZXRfc2Nyb2xsX3JlZ2lvbgorCQkgICAgICAgOiB0dHktPlRTX3Nl dF9zY3JvbGxfcmVnaW9uXzEpOwogCiAgICAgICBGUkFNRV9TQ1JPTExfUkVHSU9OX0NPU1Qg KGZyYW1lKSA9IHN0cmluZ19jb3N0IChmKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy90 ZXJtY2FwLmMnCi0tLSBzcmMvdGVybWNhcC5jCTIwMTItMDUtMjEgMTU6MzY6NTQgKzAwMDAK KysrIHNyYy90ZXJtY2FwLmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtNjUsNyAr NjUsNyBAQAogICAgMCBpZiBub3QgZm91bmQuICAqLwogCiBzdGF0aWMgY2hhciAqCi1maW5k X2NhcGFiaWxpdHkgKHJlZ2lzdGVyIGNoYXIgKmJwLCByZWdpc3RlciBjb25zdCBjaGFyICpj YXApCitmaW5kX2NhcGFiaWxpdHkgKGNoYXIgKmJwLCBjb25zdCBjaGFyICpjYXApCiB7CiAg IGZvciAoOyAqYnA7IGJwKyspCiAgICAgaWYgKGJwWzBdID09ICc6JwpAQCAtNzgsNyArNzgs NyBAQAogaW50CiB0Z2V0bnVtIChjb25zdCBjaGFyICpjYXApCiB7Ci0gIHJlZ2lzdGVyIGNo YXIgKnB0ciA9IGZpbmRfY2FwYWJpbGl0eSAodGVybV9lbnRyeSwgY2FwKTsKKyAgY2hhciAq cHRyID0gZmluZF9jYXBhYmlsaXR5ICh0ZXJtX2VudHJ5LCBjYXApOwogICBpZiAoIXB0ciB8 fCBwdHJbLTFdICE9ICcjJykKICAgICByZXR1cm4gLTE7CiAgIHJldHVybiBhdG9pIChwdHIp OwpAQCAtODcsNyArODcsNyBAQAogaW50CiB0Z2V0ZmxhZyAoY29uc3QgY2hhciAqY2FwKQog ewotICByZWdpc3RlciBjaGFyICpwdHIgPSBmaW5kX2NhcGFiaWxpdHkgKHRlcm1fZW50cnks IGNhcCk7CisgIGNoYXIgKnB0ciA9IGZpbmRfY2FwYWJpbGl0eSAodGVybV9lbnRyeSwgY2Fw KTsKICAgcmV0dXJuIHB0ciAmJiBwdHJbLTFdID09ICc6JzsKIH0KIApAQCAtOTksNyArOTks NyBAQAogY2hhciAqCiB0Z2V0c3RyIChjb25zdCBjaGFyICpjYXAsIGNoYXIgKiphcmVhKQog ewotICByZWdpc3RlciBjaGFyICpwdHIgPSBmaW5kX2NhcGFiaWxpdHkgKHRlcm1fZW50cnks IGNhcCk7CisgIGNoYXIgKnB0ciA9IGZpbmRfY2FwYWJpbGl0eSAodGVybV9lbnRyeSwgY2Fw KTsKICAgaWYgKCFwdHIgfHwgKHB0clstMV0gIT0gJz0nICYmIHB0clstMV0gIT0gJ34nKSkK ICAgICByZXR1cm4gTlVMTDsKICAgcmV0dXJuIHRnZXRzdDEgKHB0ciwgYXJlYSk7CkBAIC0x MzcsMTEgKzEzNywxMSBAQAogc3RhdGljIGNoYXIgKgogdGdldHN0MSAoY2hhciAqcHRyLCBj aGFyICoqYXJlYSkKIHsKLSAgcmVnaXN0ZXIgY2hhciAqcCwgKnI7Ci0gIHJlZ2lzdGVyIGlu dCBjOwotICByZWdpc3RlciBpbnQgc2l6ZTsKKyAgY2hhciAqcCwgKnI7CisgIGludCBjOwor ICBpbnQgc2l6ZTsKICAgY2hhciAqcmV0OwotICByZWdpc3RlciBpbnQgYzE7CisgIGludCBj MTsKIAogICBpZiAoIXB0cikKICAgICByZXR1cm4gTlVMTDsKQEAgLTIxNiw3ICsyMTYsNyBA QAogICAgICBhYmJyZXZpYXRpb24gZXhwYW5zaW9uIG1ha2VzIHRoYXQgZWZmb3J0IGEgbGl0 dGxlIG1vcmUgaGFpcnkgdGhhbgogICAgICBpdHMgd29ydGg7IHRoaXMgaXMgY2xlYW5lci4g ICovCiAgIHsKLSAgICByZWdpc3RlciBpbnQgbGFzdF9wX3BhcmFtID0gMDsKKyAgICBpbnQg bGFzdF9wX3BhcmFtID0gMDsKICAgICBpbnQgcmVtb3ZlX3BfcGFyYW1zID0gMTsKICAgICBz dHJ1Y3QgeyBjaGFyICpiZWc7IGludCBsZW47IH0gY3V0WzExXTsKIApAQCAtMjQxLDcgKzI0 MSw3IEBACiAgICAgICB9CiAgICAgaWYgKHJlbW92ZV9wX3BhcmFtcyAmJiBsYXN0X3BfcGFy YW0pCiAgICAgICB7Ci0JcmVnaXN0ZXIgaW50IGk7CisJaW50IGk7CiAJY2hhciAqd3A7CiAK IAljdXRbbGFzdF9wX3BhcmFtXS5sZW4gPSByIC0gY3V0W2xhc3RfcF9wYXJhbV0uYmVnOwpA QCAtMjYzLDEwICsyNjMsMTAgQEAKIGNoYXIgUEM7CiAKIHZvaWQKLXRwdXRzIChyZWdpc3Rl ciBjb25zdCBjaGFyICpzdHIsIGludCBubGluZXMsIGludCAoKm91dGZ1bikgKGludCkpCit0 cHV0cyAoY29uc3QgY2hhciAqc3RyLCBpbnQgbmxpbmVzLCBpbnQgKCpvdXRmdW4pIChpbnQp KQogewotICByZWdpc3RlciBpbnQgcGFkY291bnQgPSAwOwotICByZWdpc3RlciBpbnQgc3Bl ZWQ7CisgIGludCBwYWRjb3VudCA9IDA7CisgIGludCBzcGVlZDsKIAogICBzcGVlZCA9IGJh dWRfcmF0ZTsKICAgLyogRm9yIHF1aXRlIGhpZ2ggc3BlZWRzLCBjb252ZXJ0IHRvIHRoZSBz bWFsbGVyCkBAIC0zMjcsOSArMzI3LDEwIEBACiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb25z IG9mIHN0YXRpYyBmdW5jdGlvbnMuICAqLwogCi1zdGF0aWMgaW50IHNjYW5fZmlsZSAoY2hh ciAqc3RyLCBpbnQgZmQsIHJlZ2lzdGVyIHN0cnVjdCB0ZXJtY2FwX2J1ZmZlciAqYnVmcCk7 Ci1zdGF0aWMgY2hhciAqZ29iYmxlX2xpbmUgKGludCBmZCwgcmVnaXN0ZXIgc3RydWN0IHRl cm1jYXBfYnVmZmVyICpidWZwLCBjaGFyICphcHBlbmRfZW5kKTsKLXN0YXRpYyBpbnQgY29t cGFyZV9jb250aW4gKHJlZ2lzdGVyIGNoYXIgKnN0cjEsIHJlZ2lzdGVyIGNoYXIgKnN0cjIp Oworc3RhdGljIGludCBzY2FuX2ZpbGUgKGNoYXIgKnN0ciwgaW50IGZkLCBzdHJ1Y3QgdGVy bWNhcF9idWZmZXIgKmJ1ZnApOworc3RhdGljIGNoYXIgKmdvYmJsZV9saW5lIChpbnQgZmQs IHN0cnVjdCB0ZXJtY2FwX2J1ZmZlciAqYnVmcCwKKwkJCSAgY2hhciAqYXBwZW5kX2VuZCk7 CitzdGF0aWMgaW50IGNvbXBhcmVfY29udGluIChjaGFyICpzdHIxLCBjaGFyICpzdHIyKTsK IHN0YXRpYyBpbnQgbmFtZV9tYXRjaCAoY2hhciAqbGluZSwgY2hhciAqbmFtZSk7CiAKICNp ZmRlZiBNU0RPUyAvKiBNVywgTWF5IDE5OTMgKi8KQEAgLTM1NiwxNCArMzU3LDE0IEBACiBp bnQKIHRnZXRlbnQgKGNoYXIgKmJwLCBjb25zdCBjaGFyICpuYW1lKQogewotICByZWdpc3Rl ciBjaGFyICp0ZXJtY2FwX25hbWU7Ci0gIHJlZ2lzdGVyIGludCBmZDsKKyAgY2hhciAqdGVy bWNhcF9uYW1lOworICBpbnQgZmQ7CiAgIHN0cnVjdCB0ZXJtY2FwX2J1ZmZlciBidWY7Ci0g IHJlZ2lzdGVyIGNoYXIgKmJwMTsKKyAgY2hhciAqYnAxOwogICBjaGFyICp0Y19zZWFyY2hf cG9pbnQ7CiAgIGNoYXIgKnRlcm07CiAgIHB0cmRpZmZfdCBtYWxsb2Nfc2l6ZSA9IDA7Ci0g IHJlZ2lzdGVyIGludCBjOworICBpbnQgYzsKICAgY2hhciAqdGNlbnYgPSBOVUxMOwkJLyog VEVSTUNBUCB2YWx1ZSwgaWYgaXQgY29udGFpbnMgOnRjPS4gICovCiAgIGNoYXIgKmluZGly ZWN0ID0gTlVMTDsJLyogVGVybWluYWwgdHlwZSBpbiA6dGM9IGluIFRFUk1DQVAgdmFsdWUu ICAqLwogICBpbnQgZmlsZXA7CkBAIC01MTgsOSArNTE5LDkgQEAKICAgIG9yIDAgaWYgbm8g ZW50cnkgaXMgZm91bmQgaW4gdGhlIGZpbGUuICAqLwogCiBzdGF0aWMgaW50Ci1zY2FuX2Zp bGUgKGNoYXIgKnN0ciwgaW50IGZkLCByZWdpc3RlciBzdHJ1Y3QgdGVybWNhcF9idWZmZXIg KmJ1ZnApCitzY2FuX2ZpbGUgKGNoYXIgKnN0ciwgaW50IGZkLCBzdHJ1Y3QgdGVybWNhcF9i dWZmZXIgKmJ1ZnApCiB7Ci0gIHJlZ2lzdGVyIGNoYXIgKmVuZDsKKyAgY2hhciAqZW5kOwog CiAgIGJ1ZnAtPnB0ciA9IGJ1ZnAtPmJlZzsKICAgYnVmcC0+ZnVsbCA9IDA7CkBAIC01NTcs NyArNTU4LDcgQEAKIHN0YXRpYyBpbnQKIG5hbWVfbWF0Y2ggKGNoYXIgKmxpbmUsIGNoYXIg Km5hbWUpCiB7Ci0gIHJlZ2lzdGVyIGNoYXIgKnRlbTsKKyAgY2hhciAqdGVtOwogCiAgIGlm ICghY29tcGFyZV9jb250aW4gKGxpbmUsIG5hbWUpKQogICAgIHJldHVybiAxOwpAQCAtNTcw LDkgKzU3MSw5IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBhcmVfY29udGluIChyZWdpc3Rl ciBjaGFyICpzdHIxLCByZWdpc3RlciBjaGFyICpzdHIyKQorY29tcGFyZV9jb250aW4gKGNo YXIgKnN0cjEsIGNoYXIgKnN0cjIpCiB7Ci0gIHJlZ2lzdGVyIGludCBjMSwgYzI7CisgIGlu dCBjMSwgYzI7CiAgIHdoaWxlICgxKQogICAgIHsKICAgICAgIGMxID0gKnN0cjErKzsKQEAg LTYxMCwxMSArNjExLDExIEBACiAgICB0aGluZyBhcyBvbmUgbGluZS4gIFRoZSBjYWxsZXIg ZGVjaWRlcyB3aGVuIGEgbGluZSBpcyBjb250aW51ZWQuICAqLwogCiBzdGF0aWMgY2hhciAq Ci1nb2JibGVfbGluZSAoaW50IGZkLCByZWdpc3RlciBzdHJ1Y3QgdGVybWNhcF9idWZmZXIg KmJ1ZnAsIGNoYXIgKmFwcGVuZF9lbmQpCitnb2JibGVfbGluZSAoaW50IGZkLCBzdHJ1Y3Qg dGVybWNhcF9idWZmZXIgKmJ1ZnAsIGNoYXIgKmFwcGVuZF9lbmQpCiB7Ci0gIHJlZ2lzdGVy IGNoYXIgKmVuZDsKLSAgcmVnaXN0ZXIgaW50IG5yZWFkOwotICByZWdpc3RlciBjaGFyICpi dWYgPSBidWZwLT5iZWc7CisgIGNoYXIgKmVuZDsKKyAgaW50IG5yZWFkOworICBjaGFyICpi dWYgPSBidWZwLT5iZWc7CiAKICAgaWYgKCFhcHBlbmRfZW5kKQogICAgIGFwcGVuZF9lbmQg PSBidWZwLT5wdHI7CkBAIC02NjMsNyArNjY0LDcgQEAKIHRwcmludCAoY2hhciAqY2FwKQog ewogICBjaGFyICp4ID0gdGdldHN0ciAoY2FwLCAwKTsKLSAgcmVnaXN0ZXIgY2hhciAqeTsK KyAgY2hhciAqeTsKIAogICBwcmludGYgKCIlczogIiwgY2FwKTsKICAgaWYgKHgpCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3JjL3RleHRwcm9wLmMnCi0tLSBzcmMvdGV4dHByb3AuYwkyMDEy LTA1LTI1IDE4OjE5OjI0ICswMDAwCisrKyBzcmMvdGV4dHByb3AuYwkyMDEyLTA2LTAzIDA1 OjUzOjM4ICswMDAwCkBAIC0xMTksNyArMTE5LDcgQEAKIElOVEVSVkFMCiB2YWxpZGF0ZV9p bnRlcnZhbF9yYW5nZSAoTGlzcF9PYmplY3Qgb2JqZWN0LCBMaXNwX09iamVjdCAqYmVnaW4s IExpc3BfT2JqZWN0ICplbmQsIGludCBmb3JjZSkKIHsKLSAgcmVnaXN0ZXIgSU5URVJWQUwg aTsKKyAgSU5URVJWQUwgaTsKICAgcHRyZGlmZl90IHNlYXJjaHBvczsKIAogICBDSEVDS19T VFJJTkdfT1JfQlVGRkVSIChvYmplY3QpOwpAQCAtMTQxLDcgKzE0MSw3IEBACiAKICAgaWYg KEJVRkZFUlAgKG9iamVjdCkpCiAgICAgewotICAgICAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZl ciAqYiA9IFhCVUZGRVIgKG9iamVjdCk7CisgICAgICBzdHJ1Y3QgYnVmZmVyICpiID0gWEJV RkZFUiAob2JqZWN0KTsKIAogICAgICAgaWYgKCEoQlVGX0JFR1YgKGIpIDw9IFhJTlQgKCpi ZWdpbikgJiYgWElOVCAoKmJlZ2luKSA8PSBYSU5UICgqZW5kKQogCSAgICAmJiBYSU5UICgq ZW5kKSA8PSBCVUZfWlYgKGIpKSkKQEAgLTE5MCw4ICsxOTAsOCBAQAogCiAgIGlmIChDT05T UCAobGlzdCkpCiAgICAgewotICAgICAgcmVnaXN0ZXIgaW50IGk7Ci0gICAgICByZWdpc3Rl ciBMaXNwX09iamVjdCB0YWlsOworICAgICAgaW50IGk7CisgICAgICBMaXNwX09iamVjdCB0 YWlsOwogICAgICAgZm9yIChpID0gMCwgdGFpbCA9IGxpc3Q7IENPTlNQICh0YWlsKTsgaSsr KQogCXsKIAkgIHRhaWwgPSBYQ0RSICh0YWlsKTsKQEAgLTIxMSw4ICsyMTEsOCBAQAogc3Rh dGljIGludAogaW50ZXJ2YWxfaGFzX2FsbF9wcm9wZXJ0aWVzIChMaXNwX09iamVjdCBwbGlz dCwgSU5URVJWQUwgaSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbDEsIHRhaWwy LCBzeW0xOwotICByZWdpc3RlciBpbnQgZm91bmQ7CisgIExpc3BfT2JqZWN0IHRhaWwxLCB0 YWlsMiwgc3ltMTsKKyAgaW50IGZvdW5kOwogCiAgIC8qIEdvIHRocm91Z2ggZWFjaCBlbGVt ZW50IG9mIFBMSVNULiAgKi8KICAgZm9yICh0YWlsMSA9IHBsaXN0OyBDT05TUCAodGFpbDEp OyB0YWlsMSA9IEZjZHIgKFhDRFIgKHRhaWwxKSkpCkBAIC0yNDcsNyArMjQ3LDcgQEAKIHN0 YXRpYyBpbmxpbmUgaW50CiBpbnRlcnZhbF9oYXNfc29tZV9wcm9wZXJ0aWVzIChMaXNwX09i amVjdCBwbGlzdCwgSU5URVJWQUwgaSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFp bDEsIHRhaWwyLCBzeW07CisgIExpc3BfT2JqZWN0IHRhaWwxLCB0YWlsMiwgc3ltOwogCiAg IC8qIEdvIHRocm91Z2ggZWFjaCBlbGVtZW50IG9mIFBMSVNULiAgKi8KICAgZm9yICh0YWls MSA9IHBsaXN0OyBDT05TUCAodGFpbDEpOyB0YWlsMSA9IEZjZHIgKFhDRFIgKHRhaWwxKSkp CkBAIC0yNjksNyArMjY5LDcgQEAKIHN0YXRpYyBpbmxpbmUgaW50CiBpbnRlcnZhbF9oYXNf c29tZV9wcm9wZXJ0aWVzX2xpc3QgKExpc3BfT2JqZWN0IGxpc3QsIElOVEVSVkFMIGkpCiB7 Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRhaWwxLCB0YWlsMiwgc3ltOworICBMaXNwX09i amVjdCB0YWlsMSwgdGFpbDIsIHN5bTsKIAogICAvKiBHbyB0aHJvdWdoIGVhY2ggZWxlbWVu dCBvZiBMSVNULiAgKi8KICAgZm9yICh0YWlsMSA9IGxpc3Q7IENPTlNQICh0YWlsMSk7IHRh aWwxID0gWENEUiAodGFpbDEpKQpAQCAtMzU3LDggKzM1Nyw4IEBACiBhZGRfcHJvcGVydGll cyAoTGlzcF9PYmplY3QgcGxpc3QsIElOVEVSVkFMIGksIExpc3BfT2JqZWN0IG9iamVjdCkK IHsKICAgTGlzcF9PYmplY3QgdGFpbDEsIHRhaWwyLCBzeW0xLCB2YWwxOwotICByZWdpc3Rl ciBpbnQgY2hhbmdlZCA9IDA7Ci0gIHJlZ2lzdGVyIGludCBmb3VuZDsKKyAgaW50IGNoYW5n ZWQgPSAwOworICBpbnQgZm91bmQ7CiAgIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwg Z2Nwcm8zOwogCiAgIHRhaWwxID0gcGxpc3Q7CkBAIC0zODIsNyArMzgyLDcgQEAKIAkgIHsK IAkgICAgLyogTm8gbmVlZCB0byBnY3BybywgYmVjYXVzZSB0YWlsMiBwcm90ZWN0cyB0aGlz CiAJICAgICAgIGFuZCBpdCBtdXN0IGJlIGEgY29ucyBjZWxsICh3ZSBnZXQgYW4gZXJyb3Ig b3RoZXJ3aXNlKS4gICovCi0JICAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRoaXNfY2RyOwor CSAgICBMaXNwX09iamVjdCB0aGlzX2NkcjsKIAogCSAgICB0aGlzX2NkciA9IFhDRFIgKHRh aWwyKTsKIAkgICAgLyogRm91bmQgdGhlIHByb3BlcnR5LiAgTm93IGNoZWNrIGl0cyB2YWx1 ZS4gICovCkBAIC00MzIsOCArNDMyLDggQEAKIHN0YXRpYyBpbnQKIHJlbW92ZV9wcm9wZXJ0 aWVzIChMaXNwX09iamVjdCBwbGlzdCwgTGlzcF9PYmplY3QgbGlzdCwgSU5URVJWQUwgaSwg TGlzcF9PYmplY3Qgb2JqZWN0KQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB0YWlsMSwg dGFpbDIsIHN5bSwgY3VycmVudF9wbGlzdDsKLSAgcmVnaXN0ZXIgaW50IGNoYW5nZWQgPSAw OworICBMaXNwX09iamVjdCB0YWlsMSwgdGFpbDIsIHN5bSwgY3VycmVudF9wbGlzdDsKKyAg aW50IGNoYW5nZWQgPSAwOwogCiAgIC8qIE5vbnplcm8gbWVhbnMgdGFpbDEgaXMgYSBwbGlz dCwgb3RoZXJ3aXNlIGl0IGlzIGEgbGlzdC4gICovCiAgIGludCB1c2VfcGxpc3Q7CkBAIC00 NjYsNyArNDY2LDcgQEAKICAgICAgIHRhaWwyID0gY3VycmVudF9wbGlzdDsKICAgICAgIHdo aWxlICghIE5JTFAgKHRhaWwyKSkKIAl7Ci0JICByZWdpc3RlciBMaXNwX09iamVjdCB0aGlz OworCSAgTGlzcF9PYmplY3QgdGhpczsKIAkgIHRoaXMgPSBYQ0RSIChYQ0RSICh0YWlsMikp OwogCSAgaWYgKENPTlNQICh0aGlzKSAmJiBFUSAoc3ltLCBYQ0FSICh0aGlzKSkpCiAJICAg IHsKQEAgLTUxMiw3ICs1MTIsNyBAQAogSU5URVJWQUwKIGludGVydmFsX29mIChwdHJkaWZm X3QgcG9zaXRpb24sIExpc3BfT2JqZWN0IG9iamVjdCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJW QUwgaTsKKyAgSU5URVJWQUwgaTsKICAgcHRyZGlmZl90IGJlZywgZW5kOwogCiAgIGlmIChO SUxQIChvYmplY3QpKQpAQCAtNTI0LDcgKzUyNCw3IEBACiAKICAgaWYgKEJVRkZFUlAgKG9i amVjdCkpCiAgICAgewotICAgICAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYiA9IFhCVUZG RVIgKG9iamVjdCk7CisgICAgICBzdHJ1Y3QgYnVmZmVyICpiID0gWEJVRkZFUiAob2JqZWN0 KTsKIAogICAgICAgYmVnID0gQlVGX0JFR1YgKGIpOwogICAgICAgZW5kID0gQlVGX1pWIChi KTsKQEAgLTU1NCw3ICs1NTQsNyBAQAogSWYgUE9TSVRJT04gaXMgYXQgdGhlIGVuZCBvZiBP QkpFQ1QsIHRoZSB2YWx1ZSBpcyBuaWwuICAqLykKICAgKExpc3BfT2JqZWN0IHBvc2l0aW9u LCBMaXNwX09iamVjdCBvYmplY3QpCiB7Ci0gIHJlZ2lzdGVyIElOVEVSVkFMIGk7CisgIElO VEVSVkFMIGk7CiAKICAgaWYgKE5JTFAgKG9iamVjdCkpCiAgICAgWFNFVEJVRkZFUiAob2Jq ZWN0LCBjdXJyZW50X2J1ZmZlcik7CkBAIC01OTMsNyArNTkzLDggQEAKICAgIHdpbmRvdy1z cGVjaWZpYyBvdmVybGF5cyBhcmUgY29uc2lkZXJlZCBvbmx5IGlmIHRoZXkgYXJlIGFzc29j aWF0ZWQKICAgIHdpdGggT0JKRUNULiAqLwogTGlzcF9PYmplY3QKLWdldF9jaGFyX3Byb3Bl cnR5X2FuZF9vdmVybGF5IChMaXNwX09iamVjdCBwb3NpdGlvbiwgcmVnaXN0ZXIgTGlzcF9P YmplY3QgcHJvcCwgTGlzcF9PYmplY3Qgb2JqZWN0LCBMaXNwX09iamVjdCAqb3ZlcmxheSkK K2dldF9jaGFyX3Byb3BlcnR5X2FuZF9vdmVybGF5IChMaXNwX09iamVjdCBwb3NpdGlvbiwg TGlzcF9PYmplY3QgcHJvcCwKKwkJCSAgICAgICBMaXNwX09iamVjdCBvYmplY3QsIExpc3Bf T2JqZWN0ICpvdmVybGF5KQogewogICBzdHJ1Y3Qgd2luZG93ICp3ID0gMDsKIApAQCAtOTI2 LDcgKzkyNyw3IEBACiBwYXN0IHBvc2l0aW9uIExJTUlUOyByZXR1cm4gTElNSVQgaWYgbm90 aGluZyBpcyBmb3VuZCBiZWZvcmUgTElNSVQuICAqLykKICAgKExpc3BfT2JqZWN0IHBvc2l0 aW9uLCBMaXNwX09iamVjdCBvYmplY3QsIExpc3BfT2JqZWN0IGxpbWl0KQogewotICByZWdp c3RlciBJTlRFUlZBTCBpLCBuZXh0OworICBJTlRFUlZBTCBpLCBuZXh0OwogCiAgIGlmIChO SUxQIChvYmplY3QpKQogICAgIFhTRVRCVUZGRVIgKG9iamVjdCwgY3VycmVudF9idWZmZXIp OwpAQCAtOTkxLDggKzk5Miw4IEBACiBwYXN0IHBvc2l0aW9uIExJTUlUOyByZXR1cm4gTElN SVQgaWYgbm90aGluZyBpcyBmb3VuZCBiZWZvcmUgTElNSVQuICAqLykKICAgKExpc3BfT2Jq ZWN0IHBvc2l0aW9uLCBMaXNwX09iamVjdCBwcm9wLCBMaXNwX09iamVjdCBvYmplY3QsIExp c3BfT2JqZWN0IGxpbWl0KQogewotICByZWdpc3RlciBJTlRFUlZBTCBpLCBuZXh0OwotICBy ZWdpc3RlciBMaXNwX09iamVjdCBoZXJlX3ZhbDsKKyAgSU5URVJWQUwgaSwgbmV4dDsKKyAg TGlzcF9PYmplY3QgaGVyZV92YWw7CiAKICAgaWYgKE5JTFAgKG9iamVjdCkpCiAgICAgWFNF VEJVRkZFUiAob2JqZWN0LCBjdXJyZW50X2J1ZmZlcik7CkBAIC0xMDM4LDcgKzEwMzksNyBA QAogYmFjayBwYXN0IHBvc2l0aW9uIExJTUlUOyByZXR1cm4gTElNSVQgaWYgbm90aGluZyBp cyBmb3VuZCB1bnRpbCBMSU1JVC4gICovKQogICAoTGlzcF9PYmplY3QgcG9zaXRpb24sIExp c3BfT2JqZWN0IG9iamVjdCwgTGlzcF9PYmplY3QgbGltaXQpCiB7Ci0gIHJlZ2lzdGVyIElO VEVSVkFMIGksIHByZXZpb3VzOworICBJTlRFUlZBTCBpLCBwcmV2aW91czsKIAogICBpZiAo TklMUCAob2JqZWN0KSkKICAgICBYU0VUQlVGRkVSIChvYmplY3QsIGN1cnJlbnRfYnVmZmVy KTsKQEAgLTEwODYsOCArMTA4Nyw4IEBACiBiYWNrIHBhc3QgcG9zaXRpb24gTElNSVQ7IHJl dHVybiBMSU1JVCBpZiBub3RoaW5nIGlzIGZvdW5kIHVudGlsIExJTUlULiAgKi8pCiAgIChM aXNwX09iamVjdCBwb3NpdGlvbiwgTGlzcF9PYmplY3QgcHJvcCwgTGlzcF9PYmplY3Qgb2Jq ZWN0LCBMaXNwX09iamVjdCBsaW1pdCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJWQUwgaSwgcHJl dmlvdXM7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGhlcmVfdmFsOworICBJTlRFUlZBTCBp LCBwcmV2aW91czsKKyAgTGlzcF9PYmplY3QgaGVyZV92YWw7CiAKICAgaWYgKE5JTFAgKG9i amVjdCkpCiAgICAgWFNFVEJVRkZFUiAob2JqZWN0LCBjdXJyZW50X2J1ZmZlcik7CkBAIC0x MTM1LDkgKzExMzYsOSBAQAogUmV0dXJuIHQgaWYgYW55IHByb3BlcnR5IHZhbHVlIGFjdHVh bGx5IGNoYW5nZWQsIG5pbCBvdGhlcndpc2UuICAqLykKICAgKExpc3BfT2JqZWN0IHN0YXJ0 LCBMaXNwX09iamVjdCBlbmQsIExpc3BfT2JqZWN0IHByb3BlcnRpZXMsIExpc3BfT2JqZWN0 IG9iamVjdCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJWQUwgaSwgdW5jaGFuZ2VkOwotICByZWdp c3RlciBwdHJkaWZmX3QgcywgbGVuOwotICByZWdpc3RlciBpbnQgbW9kaWZpZWQgPSAwOwor ICBJTlRFUlZBTCBpLCB1bmNoYW5nZWQ7CisgIHB0cmRpZmZfdCBzLCBsZW47CisgIGludCBt b2RpZmllZCA9IDA7CiAgIHN0cnVjdCBnY3BybyBnY3BybzE7CiAKICAgcHJvcGVydGllcyA9 IHZhbGlkYXRlX3BsaXN0IChwcm9wZXJ0aWVzKTsKQEAgLTEyNzYsNyArMTI3Nyw3IEBACiBM aXNwX09iamVjdAogc2V0X3RleHRfcHJvcGVydGllcyAoTGlzcF9PYmplY3Qgc3RhcnQsIExp c3BfT2JqZWN0IGVuZCwgTGlzcF9PYmplY3QgcHJvcGVydGllcywgTGlzcF9PYmplY3Qgb2Jq ZWN0LCBMaXNwX09iamVjdCBjb2hlcmVudF9jaGFuZ2VfcCkKIHsKLSAgcmVnaXN0ZXIgSU5U RVJWQUwgaTsKKyAgSU5URVJWQUwgaTsKICAgTGlzcF9PYmplY3Qgb3N0YXJ0LCBvZW5kOwog CiAgIG9zdGFydCA9IHN0YXJ0OwpAQCAtMTM0MCw4ICsxMzQxLDggQEAKIHZvaWQKIHNldF90 ZXh0X3Byb3BlcnRpZXNfMSAoTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2JqZWN0IGVuZCwg TGlzcF9PYmplY3QgcHJvcGVydGllcywgTGlzcF9PYmplY3QgYnVmZmVyLCBJTlRFUlZBTCBp KQogewotICByZWdpc3RlciBJTlRFUlZBTCBwcmV2X2NoYW5nZWQgPSBOVUxMX0lOVEVSVkFM OwotICByZWdpc3RlciBwdHJkaWZmX3QgcywgbGVuOworICBJTlRFUlZBTCBwcmV2X2NoYW5n ZWQgPSBOVUxMX0lOVEVSVkFMOworICBwdHJkaWZmX3QgcywgbGVuOwogICBJTlRFUlZBTCB1 bmNoYW5nZWQ7CiAKICAgaWYgKFhJTlQgKHN0YXJ0KSA8IFhJTlQgKGVuZCkpCkBAIC0xNDMz LDkgKzE0MzQsOSBAQAogVXNlIGBzZXQtdGV4dC1wcm9wZXJ0aWVzJyBpZiB5b3Ugd2FudCB0 byByZW1vdmUgYWxsIHRleHQgcHJvcGVydGllcy4gICovKQogICAoTGlzcF9PYmplY3Qgc3Rh cnQsIExpc3BfT2JqZWN0IGVuZCwgTGlzcF9PYmplY3QgcHJvcGVydGllcywgTGlzcF9PYmpl Y3Qgb2JqZWN0KQogewotICByZWdpc3RlciBJTlRFUlZBTCBpLCB1bmNoYW5nZWQ7Ci0gIHJl Z2lzdGVyIHB0cmRpZmZfdCBzLCBsZW47Ci0gIHJlZ2lzdGVyIGludCBtb2RpZmllZCA9IDA7 CisgIElOVEVSVkFMIGksIHVuY2hhbmdlZDsKKyAgcHRyZGlmZl90IHMsIGxlbjsKKyAgaW50 IG1vZGlmaWVkID0gMDsKIAogICBpZiAoTklMUCAob2JqZWN0KSkKICAgICBYU0VUQlVGRkVS IChvYmplY3QsIGN1cnJlbnRfYnVmZmVyKTsKQEAgLTE1MTksOSArMTUyMCw5IEBACiBSZXR1 cm4gdCBpZiBhbnkgcHJvcGVydHkgd2FzIGFjdHVhbGx5IHJlbW92ZWQsIG5pbCBvdGhlcndp c2UuICAqLykKICAgKExpc3BfT2JqZWN0IHN0YXJ0LCBMaXNwX09iamVjdCBlbmQsIExpc3Bf T2JqZWN0IGxpc3Rfb2ZfcHJvcGVydGllcywgTGlzcF9PYmplY3Qgb2JqZWN0KQogewotICBy ZWdpc3RlciBJTlRFUlZBTCBpLCB1bmNoYW5nZWQ7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBz LCBsZW47Ci0gIHJlZ2lzdGVyIGludCBtb2RpZmllZCA9IDA7CisgIElOVEVSVkFMIGksIHVu Y2hhbmdlZDsKKyAgcHRyZGlmZl90IHMsIGxlbjsKKyAgaW50IG1vZGlmaWVkID0gMDsKICAg TGlzcF9PYmplY3QgcHJvcGVydGllczsKICAgcHJvcGVydGllcyA9IGxpc3Rfb2ZfcHJvcGVy dGllczsKIApAQCAtMTYyOSw4ICsxNjMwLDggQEAKIG1hcmtlcnMpLiAgSWYgT0JKRUNUIGlz IGEgc3RyaW5nLCBTVEFSVCBhbmQgRU5EIGFyZSAwLWJhc2VkIGluZGljZXMgaW50byBpdC4g ICovKQogICAoTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2JqZWN0IGVuZCwgTGlzcF9PYmpl Y3QgcHJvcGVydHksIExpc3BfT2JqZWN0IHZhbHVlLCBMaXNwX09iamVjdCBvYmplY3QpCiB7 Ci0gIHJlZ2lzdGVyIElOVEVSVkFMIGk7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBlLCBwb3M7 CisgIElOVEVSVkFMIGk7CisgIHB0cmRpZmZfdCBlLCBwb3M7CiAKICAgaWYgKE5JTFAgKG9i amVjdCkpCiAgICAgWFNFVEJVRkZFUiAob2JqZWN0LCBjdXJyZW50X2J1ZmZlcik7CkBAIC0x NjY1LDggKzE2NjYsOCBAQAogbWFya2VycykuICBJZiBPQkpFQ1QgaXMgYSBzdHJpbmcsIFNU QVJUIGFuZCBFTkQgYXJlIDAtYmFzZWQgaW5kaWNlcyBpbnRvIGl0LiAgKi8pCiAgIChMaXNw X09iamVjdCBzdGFydCwgTGlzcF9PYmplY3QgZW5kLCBMaXNwX09iamVjdCBwcm9wZXJ0eSwg TGlzcF9PYmplY3QgdmFsdWUsIExpc3BfT2JqZWN0IG9iamVjdCkKIHsKLSAgcmVnaXN0ZXIg SU5URVJWQUwgaTsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IHMsIGU7CisgIElOVEVSVkFMIGk7 CisgIHB0cmRpZmZfdCBzLCBlOwogCiAgIGlmIChOSUxQIChvYmplY3QpKQogICAgIFhTRVRC VUZGRVIgKG9iamVjdCwgY3VycmVudF9idWZmZXIpOwpAQCAtMjAxNSwxMCArMjAxNiwxMCBA QAogdmVyaWZ5X2ludGVydmFsX21vZGlmaWNhdGlvbiAoc3RydWN0IGJ1ZmZlciAqYnVmLAog CQkJICAgICAgcHRyZGlmZl90IHN0YXJ0LCBwdHJkaWZmX3QgZW5kKQogewotICByZWdpc3Rl ciBJTlRFUlZBTCBpbnRlcnZhbHMgPSBCVUZfSU5URVJWQUxTIChidWYpOwotICByZWdpc3Rl ciBJTlRFUlZBTCBpOworICBJTlRFUlZBTCBpbnRlcnZhbHMgPSBCVUZfSU5URVJWQUxTIChi dWYpOworICBJTlRFUlZBTCBpOwogICBMaXNwX09iamVjdCBob29rczsKLSAgcmVnaXN0ZXIg TGlzcF9PYmplY3QgcHJldl9tb2RfaG9va3M7CisgIExpc3BfT2JqZWN0IHByZXZfbW9kX2hv b2tzOwogICBMaXNwX09iamVjdCBtb2RfaG9va3M7CiAgIHN0cnVjdCBnY3BybyBnY3BybzE7 CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvdHBhcmFtLmMnCi0tLSBzcmMvdHBhcmFtLmMJ MjAxMi0wNS0yMSAxNTozNjo1NCArMDAwMAorKysgc3JjL3RwYXJhbS5jCTIwMTItMDYtMDMg MDU6NTM6MzggKzAwMDAKQEAgLTY5LDE2ICs2OSwxNiBAQAogCiBzdGF0aWMgY2hhciAqCiB0 cGFyYW0xIChjb25zdCBjaGFyICpzdHJpbmcsIGNoYXIgKm91dHN0cmluZywgaW50IGxlbiwK LQkgY2hhciAqdXAsIGNoYXIgKmxlZnQsIHJlZ2lzdGVyIGludCAqYXJncCkKKwkgY2hhciAq dXAsIGNoYXIgKmxlZnQsIGludCAqYXJncCkKIHsKLSAgcmVnaXN0ZXIgaW50IGM7Ci0gIHJl Z2lzdGVyIGNvbnN0IGNoYXIgKnAgPSBzdHJpbmc7Ci0gIHJlZ2lzdGVyIGNoYXIgKm9wID0g b3V0c3RyaW5nOworICBpbnQgYzsKKyAgY29uc3QgY2hhciAqcCA9IHN0cmluZzsKKyAgY2hh ciAqb3AgPSBvdXRzdHJpbmc7CiAgIGNoYXIgKm91dGVuZDsKICAgY2hhciAqbmV3ID0gMDsK ICAgcHRyZGlmZl90IG91dGxlbiA9IDA7CiAKLSAgcmVnaXN0ZXIgaW50IHRlbTsKKyAgaW50 IHRlbTsKICAgaW50ICpvbGRfYXJncCA9IGFyZ3A7ICAgICAgICAgICAgICAgICAvKiBjYW4g bW92ZSAqLwogICBpbnQgKmZpeGVkX2FyZ3AgPSBhcmdwOyAgICAgICAgICAgICAgIC8qIG5l dmVyIG1vdmVzICovCiAgIGludCBleHBsaWNpdF9wYXJhbV9wID0gMDsgICAgICAgICAgICAg Lyogc2V0IGJ5ICVwICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3VuZG8uYycKLS0tIHNy Yy91bmRvLmMJMjAxMi0wNS0yNSAxODoxOToyNCArMDAwMAorKysgc3JjL3VuZG8uYwkyMDEy LTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC00NTIsNyArNDUyLDcgQEAKICAgc3RydWN0IGdj cHJvIGdjcHJvMSwgZ2Nwcm8yOwogICBMaXNwX09iamVjdCBuZXh0OwogICBwdHJkaWZmX3Qg Y291bnQgPSBTUEVDUERMX0lOREVYICgpOwotICByZWdpc3RlciBFTUFDU19JTlQgYXJnOwor ICBFTUFDU19JTlQgYXJnOwogICBMaXNwX09iamVjdCBvbGRsaXN0OwogICBpbnQgZGlkX2Fw cGx5ID0gMDsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy91bmV4Y29mZi5jJwotLS0gc3Jj L3VuZXhjb2ZmLmMJMjAxMi0wMS0xOSAwNzoyMToyNSArMDAwMAorKysgc3JjL3VuZXhjb2Zm LmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMTYxLDcgKzE2MSw3IEBACiAgIGF1 dG8gc3RydWN0IHNjbmhkciBmX2RoZHI7CQkvKiBEYXRhIHNlY3Rpb24gaGVhZGVyICovCiAg IGF1dG8gc3RydWN0IHNjbmhkciBmX2JoZHI7CQkvKiBCc3Mgc2VjdGlvbiBoZWFkZXIgKi8K ICAgYXV0byBzdHJ1Y3Qgc2NuaGRyIHNjbnRlbXA7CQkvKiBUZW1wb3Jhcnkgc2VjdGlvbiBo ZWFkZXIgKi8KLSAgcmVnaXN0ZXIgaW50IHNjbnM7CisgIGludCBzY25zOwogICB1bnNpZ25l ZCBpbnQgYnNzX3N0YXJ0OwogICB1bnNpZ25lZCBpbnQgZGF0YV9zdGFydDsKIApAQCAtMzEz LDcgKzMxMyw3IEBACiB2b2lkCiB3cml0ZV9zZWdtZW50IChpbnQgbmV3LCBjb25zdCBjaGFy ICpwdHIsIGNvbnN0IGNoYXIgKmVuZCkKIHsKLSAgcmVnaXN0ZXIgaW50IGksIG53cml0ZSwg cmV0OworICBpbnQgaSwgbndyaXRlLCByZXQ7CiAgIC8qIFRoaXMgaXMgdGhlIG5vcm1hbCBh bW91bnQgdG8gd3JpdGUgYXQgb25jZS4KICAgICAgSXQgaXMgdGhlIHNpemUgb2YgYmxvY2sg dGhhdCBORlMgdXNlcy4gICovCiAgIGludCB3cml0ZXNpemUgPSAxIDw8IDEzOwpAQCAtMzU4 LDggKzM1OCw4IEBACiBzdGF0aWMgaW50CiBjb3B5X3RleHRfYW5kX2RhdGEgKGludCBuZXcs IGludCBhX291dCkKIHsKLSAgcmVnaXN0ZXIgY2hhciAqZW5kOwotICByZWdpc3RlciBjaGFy ICpwdHI7CisgIGNoYXIgKmVuZDsKKyAgY2hhciAqcHRyOwogCiAjaWZkZWYgTVNET1MKICAg LyogRHVtcCB0aGUgb3JpZ2luYWwgdGFibGUgb2YgZXhjZXB0aW9uIGhhbmRsZXJzLCBub3Qg dGhlIG9uZQpAQCAtNDc5LDggKzQ3OSw4IEBACiBpbnQKIGFkanVzdF9sbm5vcHRycyAoaW50 IHdyaXRlZGVzYywgaW50IHJlYWRkZXNjLCBjb25zdCBjaGFyICpuZXdfbmFtZSkKIHsKLSAg cmVnaXN0ZXIgaW50IG5zeW1zOwotICByZWdpc3RlciBpbnQgbmV3OworICBpbnQgbnN5bXM7 CisgIGludCBuZXc7CiAgIHN0cnVjdCBzeW1lbnQgc3ltZW50cnk7CiAgIHVuaW9uIGF1eGVu dCBhdXhlbnRyeTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy92bS1saW1pdC5jJwotLS0g c3JjL3ZtLWxpbWl0LmMJMjAxMi0wNS0yMSAxNTozNjo1NCArMDAwMAorKysgc3JjL3ZtLWxp bWl0LmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMTcwLDcgKzE3MCw3IEBACiAj ZW5kaWYKICAgZXh0ZXJuIFBPSU5URVIgKCpfX21vcmVjb3JlKSAobG9uZyk7CiAKLSAgcmVn aXN0ZXIgUE9JTlRFUiBjcDsKKyAgUE9JTlRFUiBjcDsKICAgdW5zaWduZWQgbG9uZyBmaXZl X3BlcmNlbnQ7CiAgIHVuc2lnbmVkIGxvbmcgZGF0YV9zaXplOwogICBlbnVtIHdhcm5sZXZl bCBuZXdfd2FybmxldmVsOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy93aW5kb3cuYycKLS0t IHNyYy93aW5kb3cuYwkyMDEyLTA2LTAxIDAzOjQxOjAzICswMDAwCisrKyBzcmMvd2luZG93 LmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMTMxLDcgKzEzMSw3IEBACiBzdGF0 aWMgRU1BQ1NfSU5UIHdpbmRvd19zY3JvbGxfcHJlc2VydmVfdnBvczsKIAwKIHN0YXRpYyBz dHJ1Y3Qgd2luZG93ICoKLWRlY29kZV93aW5kb3cgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHdp bmRvdykKK2RlY29kZV93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdykKIHsKICAgaWYgKE5J TFAgKHdpbmRvdykpCiAgICAgcmV0dXJuIFhXSU5ET1cgKHNlbGVjdGVkX3dpbmRvdyk7CkBA IC0xNDEsNyArMTQxLDcgQEAKIH0KIAogc3RhdGljIHN0cnVjdCB3aW5kb3cgKgotZGVjb2Rl X2FueV93aW5kb3cgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHdpbmRvdykKK2RlY29kZV9hbnlf d2luZG93IChMaXNwX09iamVjdCB3aW5kb3cpCiB7CiAgIGlmIChOSUxQICh3aW5kb3cpKQog ICAgIHJldHVybiBYV0lORE9XIChzZWxlY3RlZF93aW5kb3cpOwpAQCAtMzE5LDggKzMxOSw4 IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIHNlbGVjdF93aW5kb3cgKExpc3BfT2JqZWN0IHdp bmRvdywgTGlzcF9PYmplY3Qgbm9yZWNvcmQsIGludCBpbmhpYml0X3BvaW50X3N3YXApCiB7 Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKnc7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5k b3cgKm93OworICBzdHJ1Y3Qgd2luZG93ICp3OworICBzdHJ1Y3Qgd2luZG93ICpvdzsKICAg c3RydWN0IGZyYW1lICpzZjsKIAogICBDSEVDS19MSVZFX1dJTkRPVyAod2luZG93KTsKQEAg LTM3OCw3ICszNzgsNyBAQAogICAgICByZWRpc3BsYXlfd2luZG93IGhhcyBhbHRlcmVkIHBv aW50IGFmdGVyIHNjcm9sbGluZywKICAgICAgYmVjYXVzZSBpdCBtYWtlcyB0aGUgY2hhbmdl IG9ubHkgaW4gdGhlIHdpbmRvdy4gICovCiAgIHsKLSAgICByZWdpc3RlciBwdHJkaWZmX3Qg bmV3X3BvaW50ID0gbWFya2VyX3Bvc2l0aW9uICh3LT5wb2ludG0pOworICAgIHB0cmRpZmZf dCBuZXdfcG9pbnQgPSBtYXJrZXJfcG9zaXRpb24gKHctPnBvaW50bSk7CiAgICAgaWYgKG5l d19wb2ludCA8IEJFR1YpCiAgICAgICBTRVRfUFQgKEJFR1YpOwogICAgIGVsc2UgaWYgKG5l d19wb2ludCA+IFpWKQpAQCAtNDAyLDcgKzQwMiw3IEBACiAKIE5vdGUgdGhhdCB0aGUgbWFp biBlZGl0b3IgY29tbWFuZCBsb29wIHNldHMgdGhlIGN1cnJlbnQgYnVmZmVyIHRvIHRoZQog YnVmZmVyIG9mIHRoZSBzZWxlY3RlZCB3aW5kb3cgYmVmb3JlIGVhY2ggY29tbWFuZC4gICov KQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09iamVjdCBub3JlY29y ZCkKKyAgKExpc3BfT2JqZWN0IHdpbmRvdywgTGlzcF9PYmplY3Qgbm9yZWNvcmQpCiB7CiAg IHJldHVybiBzZWxlY3Rfd2luZG93ICh3aW5kb3csIG5vcmVjb3JkLCAwKTsKIH0KQEAgLTQ4 Myw3ICs0ODMsNyBAQAogZm9yIGZ1dHVyZSB1c2UuICAqLykKICAgKExpc3BfT2JqZWN0IHdp bmRvdywgTGlzcF9PYmplY3QgbGltaXQpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cg KncgPSBkZWNvZGVfYW55X3dpbmRvdyAod2luZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9 IGRlY29kZV9hbnlfd2luZG93ICh3aW5kb3cpOwogCiAgIHctPmNvbWJpbmF0aW9uX2xpbWl0 ID0gbGltaXQ7CiAKQEAgLTcxMSw5ICs3MTEsOSBAQAogYmV5b25kIFZBTFVFLCB0aGUgZnVu Y3Rpb25zIGluIGByZWRpc3BsYXktZW5kLXRyaWdnZXItZnVuY3Rpb25zJyBhcmUgY2FsbGVk CiB3aXRoIHR3byBhcmd1bWVudHM6IFdJTkRPVywgYW5kIHRoZSBlbmQgdHJpZ2dlciB2YWx1 ZS4KIEFmdGVyd2FyZHMgdGhlIGVuZC10cmlnZ2VyIHZhbHVlIGlzIHJlc2V0IHRvIG5pbC4g ICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09iamVjdCB2YWx1 ZSkKKyAgKExpc3BfT2JqZWN0IHdpbmRvdywgTGlzcF9PYmplY3QgdmFsdWUpCiB7Ci0gIHJl Z2lzdGVyIHN0cnVjdCB3aW5kb3cgKnc7CisgIHN0cnVjdCB3aW5kb3cgKnc7CiAKICAgdyA9 IGRlY29kZV93aW5kb3cgKHdpbmRvdyk7CiAgIHctPnJlZGlzcGxheV9lbmRfdHJpZ2dlciA9 IHZhbHVlOwpAQCAtNzMzLDcgKzczMyw3IEBACiBqdXN0IHRoZSB0ZXh0IGFyZWEsIHVzZSBg d2luZG93LWluc2lkZS1lZGdlcycuICAqLykKICAgKExpc3BfT2JqZWN0IHdpbmRvdykKIHsK LSAgcmVnaXN0ZXIgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9hbnlfd2luZG93ICh3aW5k b3cpOworICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX2FueV93aW5kb3cgKHdpbmRvdyk7 CiAKICAgcmV0dXJuIEZjb25zIChtYWtlX251bWJlciAoV0lORE9XX0xFRlRfRURHRV9DT0wg KHcpKSwKIAkgRmNvbnMgKG1ha2VfbnVtYmVyIChXSU5ET1dfVE9QX0VER0VfTElORSAodykp LApAQCAtNzU0LDcgKzc1NCw3IEBACiBvZiBqdXN0IHRoZSB0ZXh0IGFyZWEsIHVzZSBgd2lu ZG93LWluc2lkZS1waXhlbC1lZGdlcycuICAqLykKICAgKExpc3BfT2JqZWN0IHdpbmRvdykK IHsKLSAgcmVnaXN0ZXIgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9hbnlfd2luZG93ICh3 aW5kb3cpOworICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX2FueV93aW5kb3cgKHdpbmRv dyk7CiAKICAgcmV0dXJuIEZjb25zIChtYWtlX251bWJlciAoV0lORE9XX0xFRlRfRURHRV9Y ICh3KSksCiAJIEZjb25zIChtYWtlX251bWJlciAoV0lORE9XX1RPUF9FREdFX1kgKHcpKSwK QEAgLTc5OCw3ICs3OTgsNyBAQAogb2YganVzdCB0aGUgdGV4dCBhcmVhLCB1c2UgYHdpbmRv dy1pbnNpZGUtYWJzb2x1dGUtcGl4ZWwtZWRnZXMnLiAgKi8pCiAgIChMaXNwX09iamVjdCB3 aW5kb3cpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKncgPSBkZWNvZGVfYW55X3dp bmRvdyAod2luZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9hbnlfd2luZG93 ICh3aW5kb3cpOwogICBpbnQgYWRkX3gsIGFkZF95OwogICBjYWxjX2Fic29sdXRlX29mZnNl dCAodywgJmFkZF94LCAmYWRkX3kpOwogCkBAIC04MjEsNyArODIxLDcgQEAKIGJhciwgZGlz cGxheSBtYXJnaW5zLCBmcmluZ2VzLCBoZWFkZXIgbGluZSwgYW5kL29yIG1vZGUgbGluZS4g ICovKQogICAoTGlzcF9PYmplY3Qgd2luZG93KQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2lu ZG93ICp3ID0gZGVjb2RlX3dpbmRvdyAod2luZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9 IGRlY29kZV93aW5kb3cgKHdpbmRvdyk7CiAKICAgcmV0dXJuIGxpc3Q0IChtYWtlX251bWJl ciAoV0lORE9XX0JPWF9MRUZUX0VER0VfQ09MICh3KQogCQkJICAgICArIFdJTkRPV19MRUZU X01BUkdJTl9DT0xTICh3KQpAQCAtODQ2LDcgKzg0Niw3IEBACiBkaXNwbGF5IG1hcmdpbnMs IGZyaW5nZXMsIGhlYWRlciBsaW5lLCBhbmQvb3IgbW9kZSBsaW5lLiAgKi8pCiAgIChMaXNw X09iamVjdCB3aW5kb3cpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKncgPSBkZWNv ZGVfd2luZG93ICh3aW5kb3cpOworICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX3dpbmRv dyAod2luZG93KTsKIAogICByZXR1cm4gbGlzdDQgKG1ha2VfbnVtYmVyIChXSU5ET1dfQk9Y X0xFRlRfRURHRV9YICh3KQogCQkJICAgICArIFdJTkRPV19MRUZUX01BUkdJTl9XSURUSCAo dykKQEAgLTg3Myw3ICs4NzMsNyBAQAogZGlzcGxheSBtYXJnaW5zLCBmcmluZ2VzLCBoZWFk ZXIgbGluZSwgYW5kL29yIG1vZGUgbGluZS4gICovKQogICAoTGlzcF9PYmplY3Qgd2luZG93 KQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX3dpbmRvdyAod2lu ZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV93aW5kb3cgKHdpbmRvdyk7CiAg IGludCBhZGRfeCwgYWRkX3k7CiAgIGNhbGNfYWJzb2x1dGVfb2Zmc2V0ICh3LCAmYWRkX3gs ICZhZGRfeSk7CiAKQEAgLTkwNSw3ICs5MDUsNyBAQAogICAgWCBhbmQgWSBhcmUgZnJhbWUg cmVsYXRpdmUgcGl4ZWwgY29vcmRpbmF0ZXMuICAqLwogCiBzdGF0aWMgZW51bSB3aW5kb3df cGFydAotY29vcmRpbmF0ZXNfaW5fd2luZG93IChyZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3 LCBpbnQgeCwgaW50IHkpCitjb29yZGluYXRlc19pbl93aW5kb3cgKHN0cnVjdCB3aW5kb3cg KncsIGludCB4LCBpbnQgeSkKIHsKICAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChXSU5E T1dfRlJBTUUgKHcpKTsKICAgZW51bSB3aW5kb3dfcGFydCBwYXJ0OwpAQCAtMTA2Nyw3ICsx MDY3LDcgQEAKICAgYHZlcnRpY2FsLWxpbmUnIGlzIHJldHVybmVkLgogSWYgdGhleSBhcmUg aW4gdGhlIHdpbmRvd3MncyBsZWZ0IG9yIHJpZ2h0IG1hcmdpbmFsIGFyZWFzLCBgbGVmdC1t YXJnaW4nXG5cCiAgIG9yIGByaWdodC1tYXJnaW4nIGlzIHJldHVybmVkLiAgKi8pCi0gIChy ZWdpc3RlciBMaXNwX09iamVjdCBjb29yZGluYXRlcywgTGlzcF9PYmplY3Qgd2luZG93KQor ICAoTGlzcF9PYmplY3QgY29vcmRpbmF0ZXMsIExpc3BfT2JqZWN0IHdpbmRvdykKIHsKICAg c3RydWN0IHdpbmRvdyAqdzsKICAgc3RydWN0IGZyYW1lICpmOwpAQCAtMTI1Myw3ICsxMjUz LDcgQEAKIEJ1dCB0aGF0IGlzIGhhcmQgdG8gZGVmaW5lLiAgKi8pCiAgIChMaXNwX09iamVj dCB3aW5kb3cpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKncgPSBkZWNvZGVfd2lu ZG93ICh3aW5kb3cpOworICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX3dpbmRvdyAod2lu ZG93KTsKIAogICBpZiAodyA9PSBYV0lORE9XIChzZWxlY3RlZF93aW5kb3cpCiAgICAgICAm JiBjdXJyZW50X2J1ZmZlciA9PSBYQlVGRkVSICh3LT5idWZmZXIpKQpAQCAtMTM2NCw3ICsx MzY0LDcgQEAKIFJldHVybiBQT1MuICAqLykKICAgKExpc3BfT2JqZWN0IHdpbmRvdywgTGlz cF9PYmplY3QgcG9zKQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2Rl X3dpbmRvdyAod2luZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV93aW5kb3cg KHdpbmRvdyk7CiAKICAgQ0hFQ0tfTlVNQkVSX0NPRVJDRV9NQVJLRVIgKHBvcyk7CiAgIGlm ICh3ID09IFhXSU5ET1cgKHNlbGVjdGVkX3dpbmRvdykKQEAgLTEzODgsNyArMTM4OCw3IEBA CiBvdmVycmlkaW5nIG1vdGlvbiBvZiBwb2ludCBpbiBvcmRlciB0byBkaXNwbGF5IGF0IHRo aXMgZXhhY3Qgc3RhcnQuICAqLykKICAgKExpc3BfT2JqZWN0IHdpbmRvdywgTGlzcF9PYmpl Y3QgcG9zLCBMaXNwX09iamVjdCBub2ZvcmNlKQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2lu ZG93ICp3ID0gZGVjb2RlX3dpbmRvdyAod2luZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9 IGRlY29kZV93aW5kb3cgKHdpbmRvdyk7CiAKICAgQ0hFQ0tfTlVNQkVSX0NPRVJDRV9NQVJL RVIgKHBvcyk7CiAgIHNldF9tYXJrZXJfcmVzdHJpY3RlZCAody0+c3RhcnQsIHBvcywgdy0+ YnVmZmVyKTsKQEAgLTE0MjQsOSArMTQyNCw5IEBACiBkaXNwbGF5IHJvdywgYW5kIFZQT1Mg aXMgdGhlIHJvdyBudW1iZXIgKDAtYmFzZWQpIGNvbnRhaW5pbmcgUE9TLiAgKi8pCiAgIChM aXNwX09iamVjdCBwb3MsIExpc3BfT2JqZWN0IHdpbmRvdywgTGlzcF9PYmplY3QgcGFydGlh bGx5KQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3OwotICByZWdpc3RlciBFTUFD U19JTlQgcG9zaW50OwotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpidWY7CisgIHN0cnVj dCB3aW5kb3cgKnc7CisgIEVNQUNTX0lOVCBwb3NpbnQ7CisgIHN0cnVjdCBidWZmZXIgKmJ1 ZjsKICAgc3RydWN0IHRleHRfcG9zIHRvcDsKICAgTGlzcF9PYmplY3QgaW5fd2luZG93ID0g UW5pbDsKICAgaW50IHJ0b3AsIHJib3QsIHJvd2gsIHZwb3MsIGZ1bGx5X3AgPSAxOwpAQCAt MTQ5Miw4ICsxNDkyLDggQEAKIGBwb3MtdmlzaWJsZS1pbi13aW5kb3ctcCcgdG8gb2J0YWlu IHRoZSBpbmZvcm1hdGlvbi4gICovKQogICAoTGlzcF9PYmplY3QgbGluZSwgTGlzcF9PYmpl Y3Qgd2luZG93KQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3OwotICByZWdpc3Rl ciBzdHJ1Y3QgYnVmZmVyICpiOworICBzdHJ1Y3Qgd2luZG93ICp3OworICBzdHJ1Y3QgYnVm ZmVyICpiOwogICBzdHJ1Y3QgZ2x5cGhfcm93ICpyb3csICplbmRfcm93OwogICBpbnQgbWF4 X3ksIGNyb3AsIGk7CiAgIEVNQUNTX0lOVCBuOwpAQCAtMTYyNCw3ICsxNjI0LDcgQEAKIHdp bmRvdywgaXQgYWxzbyBtYWtlcyBzdXJlIHRoYXQgdGhlIHdpbmRvdyBpcyBubyBtb3JlIGRl ZGljYXRlZC4gICovKQogICAoTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09iamVjdCBmbGFn KQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX3dpbmRvdyAod2lu ZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV93aW5kb3cgKHdpbmRvdyk7CiAK ICAgdy0+ZGVkaWNhdGVkID0gZmxhZzsKICAgcmV0dXJuIHctPmRlZGljYXRlZDsKQEAgLTE3 MDMsNyArMTcwMyw3IEBACiBXSU5ET1cgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIHdpbmRv dy4gIFJldHVybiBWQUxVRS4gICovKQogICAoTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09i amVjdCBwYXJhbWV0ZXIsIExpc3BfT2JqZWN0IHZhbHVlKQogewotICByZWdpc3RlciBzdHJ1 Y3Qgd2luZG93ICp3ID0gZGVjb2RlX2FueV93aW5kb3cgKHdpbmRvdyk7CisgIHN0cnVjdCB3 aW5kb3cgKncgPSBkZWNvZGVfYW55X3dpbmRvdyAod2luZG93KTsKICAgTGlzcF9PYmplY3Qg b2xkX2FsaXN0X2VsdDsKIAogICBvbGRfYWxpc3RfZWx0ID0gRmFzc3EgKHBhcmFtZXRlciwg dy0+d2luZG93X3BhcmFtZXRlcnMpOwpAQCAtMTc1MCw5ICsxNzUwLDkgQEAKIAogREVGVU4g KCJzZXQtd2luZG93LWRpc3BsYXktdGFibGUiLCBGc2V0X3dpbmRvd19kaXNwbGF5X3RhYmxl LCBTc2V0X3dpbmRvd19kaXNwbGF5X3RhYmxlLCAyLCAyLCAwLAogICAgICAgIGRvYzogLyog U2V0IFdJTkRPVydzIGRpc3BsYXktdGFibGUgdG8gVEFCTEUuICAqLykKLSAgKHJlZ2lzdGVy IExpc3BfT2JqZWN0IHdpbmRvdywgTGlzcF9PYmplY3QgdGFibGUpCisgIChMaXNwX09iamVj dCB3aW5kb3csIExpc3BfT2JqZWN0IHRhYmxlKQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2lu ZG93ICp3OworICBzdHJ1Y3Qgd2luZG93ICp3OwogCiAgIHcgPSBkZWNvZGVfd2luZG93ICh3 aW5kb3cpOwogICB3LT5kaXNwbGF5X3RhYmxlID0gdGFibGU7CkBAIC0xNzYyLDcgKzE3NjIs NyBAQAogLyogUmVjb3JkIGluZm8gb24gYnVmZmVyIHdpbmRvdyBXIGlzIGRpc3BsYXlpbmcK ICAgIHdoZW4gaXQgaXMgYWJvdXQgdG8gY2Vhc2UgdG8gZGlzcGxheSB0aGF0IGJ1ZmZlci4g ICovCiBzdGF0aWMgdm9pZAotdW5zaG93X2J1ZmZlciAocmVnaXN0ZXIgc3RydWN0IHdpbmRv dyAqdykKK3Vuc2hvd19idWZmZXIgKHN0cnVjdCB3aW5kb3cgKncpCiB7CiAgIExpc3BfT2Jq ZWN0IGJ1ZjsKICAgc3RydWN0IGJ1ZmZlciAqYjsKQEAgLTE4MTQsOCArMTgxNCw4IEBACiBz dGF0aWMgdm9pZAogcmVwbGFjZV93aW5kb3cgKExpc3BfT2JqZWN0IG9sZCwgTGlzcF9PYmpl Y3QgbmV3LCBpbnQgc2V0ZmxhZykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOwot ICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICpvID0gWFdJTkRPVyAob2xkKSwgKm4gPSBYV0lO RE9XIChuZXcpOworICBMaXNwX09iamVjdCB0ZW07CisgIHN0cnVjdCB3aW5kb3cgKm8gPSBY V0lORE9XIChvbGQpLCAqbiA9IFhXSU5ET1cgKG5ldyk7CiAKICAgLyogSWYgT0xEIGlzIGl0 cyBmcmFtZSdzIHJvb3Qgd2luZG93LCB0aGVuIE5FVyBpcyB0aGUgbmV3CiAgICAgIHJvb3Qg d2luZG93IGZvciB0aGF0IGZyYW1lLiAgKi8KQEAgLTMwNzgsMTAgKzMwNzgsMTAgQEAKIAog VGhpcyBmdW5jdGlvbiBydW5zIGB3aW5kb3ctc2Nyb2xsLWZ1bmN0aW9ucycgYmVmb3JlIHJ1 bm5pbmcKIGB3aW5kb3ctY29uZmlndXJhdGlvbi1jaGFuZ2UtaG9vaycuICAqLykKLSAgKHJl Z2lzdGVyIExpc3BfT2JqZWN0IHdpbmRvdywgTGlzcF9PYmplY3QgYnVmZmVyX29yX25hbWUs IExpc3BfT2JqZWN0IGtlZXBfbWFyZ2lucykKKyAgKExpc3BfT2JqZWN0IHdpbmRvdywgTGlz cF9PYmplY3QgYnVmZmVyX29yX25hbWUsIExpc3BfT2JqZWN0IGtlZXBfbWFyZ2lucykKIHsK LSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtLCBidWZmZXI7Ci0gIHJlZ2lzdGVyIHN0cnVj dCB3aW5kb3cgKncgPSBkZWNvZGVfd2luZG93ICh3aW5kb3cpOworICBMaXNwX09iamVjdCB0 ZW0sIGJ1ZmZlcjsKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV93aW5kb3cgKHdpbmRv dyk7CiAKICAgWFNFVFdJTkRPVyAod2luZG93LCB3KTsKICAgYnVmZmVyID0gRmdldF9idWZm ZXIgKGJ1ZmZlcl9vcl9uYW1lKTsKQEAgLTMxNjgsMTEgKzMxNjgsMTEgQEAKIAogCiB2b2lk Ci10ZW1wX291dHB1dF9idWZmZXJfc2hvdyAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYnVmKQor dGVtcF9vdXRwdXRfYnVmZmVyX3Nob3cgKExpc3BfT2JqZWN0IGJ1ZikKIHsKLSAgcmVnaXN0 ZXIgc3RydWN0IGJ1ZmZlciAqb2xkID0gY3VycmVudF9idWZmZXI7Ci0gIHJlZ2lzdGVyIExp c3BfT2JqZWN0IHdpbmRvdzsKLSAgcmVnaXN0ZXIgc3RydWN0IHdpbmRvdyAqdzsKKyAgc3Ry dWN0IGJ1ZmZlciAqb2xkID0gY3VycmVudF9idWZmZXI7CisgIExpc3BfT2JqZWN0IHdpbmRv dzsKKyAgc3RydWN0IHdpbmRvdyAqdzsKIAogICBCVkFSIChYQlVGRkVSIChidWYpLCBkaXJl Y3RvcnkpID0gQlZBUiAoY3VycmVudF9idWZmZXIsIGRpcmVjdG9yeSk7CiAKQEAgLTMyMzcs NyArMzIzNyw3IEBACiBtYWtlX3BhcmVudF93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdywg aW50IGhvcmZsYWcpCiB7CiAgIExpc3BfT2JqZWN0IHBhcmVudDsKLSAgcmVnaXN0ZXIgc3Ry dWN0IHdpbmRvdyAqbywgKnA7CisgIHN0cnVjdCB3aW5kb3cgKm8sICpwOwogICBpbnQgaTsK IAogICBvID0gWFdJTkRPVyAod2luZG93KTsKQEAgLTMyNzAsNyArMzI3MCw3IEBACiBtYWtl X3dpbmRvdyAodm9pZCkKIHsKICAgTGlzcF9PYmplY3Qgd2luZG93OwotICByZWdpc3RlciBz dHJ1Y3Qgd2luZG93ICp3OworICBzdHJ1Y3Qgd2luZG93ICp3OwogCiAgIHcgPSBhbGxvY2F0 ZV93aW5kb3cgKCk7CiAgIC8qIEluaXRpYWxpemUgYWxsIExpc3AgZGF0YS4gICovCkBAIC0z Njc3LDggKzM2NzcsOCBAQAogICAgICBwcm92aWRlZCBPTEQgaXMgYSBsZWFmIHdpbmRvdywg b3IgdG8gdGhlIGZyYW1lJ3Mgc2VsZWN0ZWQgd2luZG93LgogICAgICBORVcgKCpuKSBpcyB0 aGUgbmV3IHdpbmRvdyBjcmVhdGVkIHdpdGggc29tZSBwYXJhbWV0ZXJzIHRha2VuIGZyb20K ICAgICAgUkVGRVJFTkNFICgqcikuICAqLwotICByZWdpc3RlciBMaXNwX09iamVjdCBuZXcs IGZyYW1lLCByZWZlcmVuY2U7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKm8sICpwLCAq biwgKnI7CisgIExpc3BfT2JqZWN0IG5ldywgZnJhbWUsIHJlZmVyZW5jZTsKKyAgc3RydWN0 IHdpbmRvdyAqbywgKnAsICpuLCAqcjsKICAgc3RydWN0IGZyYW1lICpmOwogICBpbnQgaG9y ZmxhZwogICAgIC8qIEhPUkZMQUcgaXMgMSB3aGVuIHdlIHNwbGl0IHNpZGUtYnktc2lkZSwg MCBvdGhlcndpc2UuICAqLwpAQCAtMzg0Miw5ICszODQyLDkgQEAKICAgICAgICBkb2M6IC8q IFJlbW92ZSBXSU5ET1cgZnJvbSBpdHMgZnJhbWUuCiBXSU5ET1cgZGVmYXVsdHMgdG8gdGhl IHNlbGVjdGVkIHdpbmRvdy4gIFJldHVybiBuaWwuCiBTaWduYWwgYW4gZXJyb3Igd2hlbiBX SU5ET1cgaXMgdGhlIG9ubHkgd2luZG93IG9uIGl0cyBmcmFtZS4gICovKQotICAgICAocmVn aXN0ZXIgTGlzcF9PYmplY3Qgd2luZG93KQorICAgICAoTGlzcF9PYmplY3Qgd2luZG93KQog ewotICByZWdpc3RlciBMaXNwX09iamVjdCBwYXJlbnQsIHNpYmxpbmcsIGZyYW1lLCByb290 OworICBMaXNwX09iamVjdCBwYXJlbnQsIHNpYmxpbmcsIGZyYW1lLCByb290OwogICBzdHJ1 Y3Qgd2luZG93ICp3LCAqcCwgKnMsICpyOwogICBzdHJ1Y3QgZnJhbWUgKmY7CiAgIGludCBo b3JmbGFnOwpAQCAtNDU3NywxNiArNDU3NywxNiBAQAogc3RhdGljIHZvaWQKIHdpbmRvd19z Y3JvbGxfbGluZV9iYXNlZCAoTGlzcF9PYmplY3Qgd2luZG93LCBpbnQgbiwgaW50IHdob2xl LCBpbnQgbm9lcnJvcikKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5E T1cgKHdpbmRvdyk7CisgIHN0cnVjdCB3aW5kb3cgKncgPSBYV0lORE9XICh3aW5kb3cpOwog ICAvKiBGdmVydGljYWxfbW90aW9uIGVudGVycyByZWRpc3BsYXksIHdoaWNoIGNhbiB0cmln Z2VyCiAgICAgIGZvbnRpZmljYXRpb24sIHdoaWNoIGluIHR1cm4gY2FuIG1vZGlmeSBidWZm ZXIgdGV4dCAoZS5nLiwgaWYgdGhlCiAgICAgIGZvbnRpZmljYXRpb24gZnVuY3Rpb25zIHJl cGxhY2UgZXNjYXBlIHNlcXVlbmNlcyB3aXRoIGZhY2VzLCBhcwogICAgICBpbiBgZ3JlcC1t b2RlLWZvbnQtbG9jay1rZXl3b3JkcycpLiAgU28gd2UgdXNlIGEgbWFya2VyIHRvIHJlY29y ZAogICAgICB0aGUgb2xkIHBvaW50IHBvc2l0aW9uLCB0byBwcmV2ZW50IGNyYXNoZXMgaW4g U0VUX1BUX0JPVEguICAqLwogICBMaXNwX09iamVjdCBvcG9pbnRfbWFya2VyID0gRnBvaW50 X21hcmtlciAoKTsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IHBvcywgcG9zX2J5dGU7Ci0gIHJl Z2lzdGVyIGludCBodCA9IHdpbmRvd19pbnRlcm5hbF9oZWlnaHQgKHcpOwotICByZWdpc3Rl ciBMaXNwX09iamVjdCB0ZW07CisgIHB0cmRpZmZfdCBwb3MsIHBvc19ieXRlOworICBpbnQg aHQgPSB3aW5kb3dfaW50ZXJuYWxfaGVpZ2h0ICh3KTsKKyAgTGlzcF9PYmplY3QgdGVtOwog ICBpbnQgbG9zZTsKICAgTGlzcF9PYmplY3QgYm9scDsKICAgcHRyZGlmZl90IHN0YXJ0cG9z OwpAQCAtNDg5Miw3ICs0ODkyLDcgQEAKIGxvd2VyIGJvdW5kIGZvciBhdXRvbWF0aWMgc2Ny b2xsaW5nLCBpLmUuIGF1dG9tYXRpYyBzY3JvbGxpbmcKIHdpbGwgbm90IHNjcm9sbCBhIHdp bmRvdyB0byBhIGNvbHVtbiBsZXNzIHRoYW4gdGhlIHZhbHVlIHJldHVybmVkCiBieSB0aGlz IGZ1bmN0aW9uLiAgVGhpcyBoYXBwZW5zIGluIGFuIGludGVyYWN0aXZlIGNhbGwuICAqLykK LSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZywgTGlzcF9PYmplY3Qgc2V0X21pbmltdW0p CisgIChMaXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0IHNldF9taW5pbXVtKQogewogICBM aXNwX09iamVjdCByZXN1bHQ7CiAgIEVNQUNTX0lOVCBoc2Nyb2xsOwpAQCAtNDkyMSw3ICs0 OTIxLDcgQEAKIGxvd2VyIGJvdW5kIGZvciBhdXRvbWF0aWMgc2Nyb2xsaW5nLCBpLmUuIGF1 dG9tYXRpYyBzY3JvbGxpbmcKIHdpbGwgbm90IHNjcm9sbCBhIHdpbmRvdyB0byBhIGNvbHVt biBsZXNzIHRoYW4gdGhlIHZhbHVlIHJldHVybmVkCiBieSB0aGlzIGZ1bmN0aW9uLiAgVGhp cyBoYXBwZW5zIGluIGFuIGludGVyYWN0aXZlIGNhbGwuICAqLykKLSAgKHJlZ2lzdGVyIExp c3BfT2JqZWN0IGFyZywgTGlzcF9PYmplY3Qgc2V0X21pbmltdW0pCisgIChMaXNwX09iamVj dCBhcmcsIExpc3BfT2JqZWN0IHNldF9taW5pbXVtKQogewogICBMaXNwX09iamVjdCByZXN1 bHQ7CiAgIEVNQUNTX0lOVCBoc2Nyb2xsOwpAQCAtNTAyOSw3ICs1MDI5LDcgQEAKIAogSnVz dCBDLXUgYXMgcHJlZml4IG1lYW5zIHB1dCBwb2ludCBpbiB0aGUgY2VudGVyIG9mIHRoZSB3 aW5kb3cKIGFuZCByZWRpc3BsYXkgbm9ybWFsbHktLWRvbid0IGVyYXNlIGFuZCByZWRyYXcg dGhlIGZyYW1lLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNw X09iamVjdCBhcmcpCiB7CiAgIHN0cnVjdCB3aW5kb3cgKncgPSBYV0lORE9XIChzZWxlY3Rl ZF93aW5kb3cpOwogICBzdHJ1Y3QgYnVmZmVyICpidWYgPSBYQlVGRkVSICh3LT5idWZmZXIp OwpAQCAtNTM1Niw3ICs1MzU2LDcgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgZnJh bWUgdGhhdCBDT05GSUcsIGEgd2luZG93LWNvbmZpZ3VyYXRpb24gb2JqZWN0LCBpcyBhYm91 dC4gICovKQogICAoTGlzcF9PYmplY3QgY29uZmlnKQogewotICByZWdpc3RlciBzdHJ1Y3Qg c2F2ZV93aW5kb3dfZGF0YSAqZGF0YTsKKyAgc3RydWN0IHNhdmVfd2luZG93X2RhdGEgKmRh dGE7CiAgIHN0cnVjdCBMaXNwX1ZlY3RvciAqc2F2ZWRfd2luZG93czsKIAogICBDSEVDS19X SU5ET1dfQ09ORklHVVJBVElPTiAoY29uZmlnKTsKQEAgLTUzNzYsNyArNTM3Niw3IEBACiB0 aGUgcmV0dXJuIHZhbHVlIGlzIG5pbC4gIE90aGVyd2lzZSB0aGUgdmFsdWUgaXMgdC4gICov KQogICAoTGlzcF9PYmplY3QgY29uZmlndXJhdGlvbikKIHsKLSAgcmVnaXN0ZXIgc3RydWN0 IHNhdmVfd2luZG93X2RhdGEgKmRhdGE7CisgIHN0cnVjdCBzYXZlX3dpbmRvd19kYXRhICpk YXRhOwogICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnNhdmVkX3dpbmRvd3M7CiAgIExpc3BfT2Jq ZWN0IG5ld19jdXJyZW50X2J1ZmZlcjsKICAgTGlzcF9PYmplY3QgZnJhbWU7CkBAIC01NDM4 LDkgKzU0MzgsOSBAQAogICAgIHsKICAgICAgIExpc3BfT2JqZWN0IHdpbmRvdzsKICAgICAg IExpc3BfT2JqZWN0IGRlYWRfd2luZG93cyA9IFFuaWw7Ci0gICAgICByZWdpc3RlciBMaXNw X09iamVjdCB0ZW0sIHBhciwgcGVyczsKLSAgICAgIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cg Knc7Ci0gICAgICByZWdpc3RlciBzdHJ1Y3Qgc2F2ZWRfd2luZG93ICpwOworICAgICAgTGlz cF9PYmplY3QgdGVtLCBwYXIsIHBlcnM7CisgICAgICBzdHJ1Y3Qgd2luZG93ICp3OworICAg ICAgc3RydWN0IHNhdmVkX3dpbmRvdyAqcDsKICAgICAgIHN0cnVjdCB3aW5kb3cgKnJvb3Rf d2luZG93OwogICAgICAgc3RydWN0IHdpbmRvdyAqKmxlYWZfd2luZG93czsKICAgICAgIGlu dCBuX2xlYWZfd2luZG93czsKQEAgLTU3NTAsNyArNTc1MCw3IEBACiB2b2lkCiBkZWxldGVf YWxsX2NoaWxkX3dpbmRvd3MgKExpc3BfT2JqZWN0IHdpbmRvdykKIHsKLSAgcmVnaXN0ZXIg c3RydWN0IHdpbmRvdyAqdzsKKyAgc3RydWN0IHdpbmRvdyAqdzsKIAogICB3ID0gWFdJTkRP VyAod2luZG93KTsKIApAQCAtNTc4Miw5ICs1NzgyLDkgQEAKIH0KIAwKIHN0YXRpYyBpbnQK LWNvdW50X3dpbmRvd3MgKHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKndpbmRvdykKK2NvdW50 X3dpbmRvd3MgKHN0cnVjdCB3aW5kb3cgKndpbmRvdykKIHsKLSAgcmVnaXN0ZXIgaW50IGNv dW50ID0gMTsKKyAgaW50IGNvdW50ID0gMTsKICAgaWYgKCFOSUxQICh3aW5kb3ctPm5leHQp KQogICAgIGNvdW50ICs9IGNvdW50X3dpbmRvd3MgKFhXSU5ET1cgKHdpbmRvdy0+bmV4dCkp OwogICBpZiAoIU5JTFAgKHdpbmRvdy0+dmNoaWxkKSkKQEAgLTU4NTgsOSArNTg1OCw5IEBA CiBzdGF0aWMgaW50CiBzYXZlX3dpbmRvd19zYXZlIChMaXNwX09iamVjdCB3aW5kb3csIHN0 cnVjdCBMaXNwX1ZlY3RvciAqdmVjdG9yLCBpbnQgaSkKIHsKLSAgcmVnaXN0ZXIgc3RydWN0 IHNhdmVkX3dpbmRvdyAqcDsKLSAgcmVnaXN0ZXIgc3RydWN0IHdpbmRvdyAqdzsKLSAgcmVn aXN0ZXIgTGlzcF9PYmplY3QgdGVtLCBwZXJzLCBwYXI7CisgIHN0cnVjdCBzYXZlZF93aW5k b3cgKnA7CisgIHN0cnVjdCB3aW5kb3cgKnc7CisgIExpc3BfT2JqZWN0IHRlbSwgcGVycywg cGFyOwogCiAgIGZvciAoOyFOSUxQICh3aW5kb3cpOyB3aW5kb3cgPSB3LT5uZXh0KQogICAg IHsKQEAgLTYwMDAsMTAgKzYwMDAsMTAgQEAKIHNhdmVkIGJ5IHRoaXMgZnVuY3Rpb24uICAq LykKICAgKExpc3BfT2JqZWN0IGZyYW1lKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB0 ZW07Ci0gIHJlZ2lzdGVyIGludCBuX3dpbmRvd3M7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBzYXZl X3dpbmRvd19kYXRhICpkYXRhOwotICByZWdpc3RlciBpbnQgaTsKKyAgTGlzcF9PYmplY3Qg dGVtOworICBpbnQgbl93aW5kb3dzOworICBzdHJ1Y3Qgc2F2ZV93aW5kb3dfZGF0YSAqZGF0 YTsKKyAgaW50IGk7CiAgIEZSQU1FX1BUUiBmOwogCiAgIGlmIChOSUxQIChmcmFtZSkpCkBA IC02NDA3LDcgKzY0MDcsNyBAQAogaW50CiBjb21wYXJlX3dpbmRvd19jb25maWd1cmF0aW9u cyAoTGlzcF9PYmplY3QgY29uZmlndXJhdGlvbjEsIExpc3BfT2JqZWN0IGNvbmZpZ3VyYXRp b24yLCBpbnQgaWdub3JlX3Bvc2l0aW9ucykKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IHNhdmVf d2luZG93X2RhdGEgKmQxLCAqZDI7CisgIHN0cnVjdCBzYXZlX3dpbmRvd19kYXRhICpkMSwg KmQyOwogICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnN3czEsICpzd3MyOwogICBwdHJkaWZmX3Qg aTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy94ZGlzcC5jJwotLS0gc3JjL3hkaXNwLmMJ MjAxMi0wNi0wMSAwMzo0MTowMyArMDAwMAorKysgc3JjL3hkaXNwLmMJMjAxMi0wNi0wMyAw NTo1MzozOCArMDAwMApAQCAtMTc1Niw3ICsxNzU2LDcgQEAKICAgIG5vdCBmb3JjZSB0aGUg dmFsdWUgaW50byByYW5nZS4gICovCiAKIHZvaWQKLXBpeGVsX3RvX2dseXBoX2Nvb3JkcyAo RlJBTUVfUFRSIGYsIHJlZ2lzdGVyIGludCBwaXhfeCwgcmVnaXN0ZXIgaW50IHBpeF95LAor cGl4ZWxfdG9fZ2x5cGhfY29vcmRzIChGUkFNRV9QVFIgZiwgaW50IHBpeF94LCBpbnQgcGl4 X3ksCiAJCSAgICAgICBpbnQgKngsIGludCAqeSwgTmF0aXZlUmVjdGFuZ2xlICpib3VuZHMs IGludCBub2NsaXApCiB7CiAKQEAgLTMyMzUsNyArMzIzNSw3IEBACiBzdGF0aWMgdm9pZAog Y29tcHV0ZV9zdG9wX3BvcyAoc3RydWN0IGl0ICppdCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJW QUwgaXYsIG5leHRfaXY7CisgIElOVEVSVkFMIGl2LCBuZXh0X2l2OwogICBMaXNwX09iamVj dCBvYmplY3QsIGxpbWl0LCBwb3NpdGlvbjsKICAgcHRyZGlmZl90IGNoYXJwb3MsIGJ5dGVw b3M7CiAKQEAgLTExMTM1LDcgKzExMTM1LDcgQEAKIHVwZGF0ZV9tZW51X2JhciAoc3RydWN0 IGZyYW1lICpmLCBpbnQgc2F2ZV9tYXRjaF9kYXRhLCBpbnQgaG9va3NfcnVuKQogewogICBM aXNwX09iamVjdCB3aW5kb3c7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKnc7CisgIHN0 cnVjdCB3aW5kb3cgKnc7CiAKICAgLyogSWYgY2FsbGVkIHJlY3Vyc2l2ZWx5IGR1cmluZyBh IG1lbnUgdXBkYXRlLCBkbyBub3RoaW5nLiAgVGhpcyBjYW4KICAgICAgaGFwcGVuIHdoZW4s IGZvciBpbnN0YW5jZSwgYW4gYWN0aXZhdGUtbWVudWJhci1ob29rIGNhdXNlcyBhCkBAIC0y MDE0NSw4ICsyMDE0NSw4IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIG1vdmVfZWx0X3RvX2Zy b250IChMaXNwX09iamVjdCBlbHQsIExpc3BfT2JqZWN0IGxpc3QpCiB7Ci0gIHJlZ2lzdGVy IExpc3BfT2JqZWN0IHRhaWwsIHByZXY7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRlbTsK KyAgTGlzcF9PYmplY3QgdGFpbCwgcHJldjsKKyAgTGlzcF9PYmplY3QgdGVtOwogCiAgIHRh aWwgPSBsaXN0OwogICBwcmV2ID0gUW5pbDsKQEAgLTIwNDYzLDcgKzIwNDYzLDcgQEAKIAkg U3BlY2lhbCBjYXNlOiBpZiB2YWx1ZSBvZiBzeW1ib2wgaXMgYSBzdHJpbmcsIG91dHB1dCB0 aGUgc3RyaW5nCiAJIGxpdGVyYWxseS4gICovCiAgICAgICB7Ci0JcmVnaXN0ZXIgTGlzcF9P YmplY3QgdGVtOworCUxpc3BfT2JqZWN0IHRlbTsKIAogCS8qIElmIHRoZSB2YXJpYWJsZSBp cyBub3QgbWFya2VkIGFzIHJpc2t5IHRvIHNldAogCSAgIHRoZW4gaXRzIGNvbnRlbnRzIGFy ZSByaXNreSB0byB1c2UuICAqLwpAQCAtMjA0OTEsNyArMjA0OTEsNyBAQAogCiAgICAgY2Fz ZSBMaXNwX0NvbnM6CiAgICAgICB7Ci0JcmVnaXN0ZXIgTGlzcF9PYmplY3QgY2FyLCB0ZW07 CisJTGlzcF9PYmplY3QgY2FyLCB0ZW07CiAKIAkvKiBBIGNvbnMgY2VsbDogZml2ZSBkaXN0 aW5jdCBjYXNlcy4KIAkgICBJZiBmaXJzdCBlbGVtZW50IGlzIDpldmFsIG9yIDpwcm9wZXJ0 aXplLCBkbyBzb21ldGhpbmcgc3BlY2lhbC4KQEAgLTIwNTYzLDcgKzIwNTYzLDcgQEAKIAkg IH0KIAllbHNlIGlmIChJTlRFR0VSUCAoY2FyKSkKIAkgIHsKLQkgICAgcmVnaXN0ZXIgaW50 IGxpbSA9IFhJTlQgKGNhcik7CisJICAgIGludCBsaW0gPSBYSU5UIChjYXIpOwogCSAgICBl bHQgPSBYQ0RSIChlbHQpOwogCSAgICBpZiAobGltIDwgMCkKIAkgICAgICB7CkBAIC0yMDg1 Myw5ICsyMDg1Myw5IEBACiAgICB0aGUgcG9zaXRpdmUgaW50ZWdlciBEIHRvIEJVRiB1c2lu ZyBhIG1pbmltYWwgZmllbGQgd2lkdGggV0lEVEguICAqLwogCiBzdGF0aWMgdm9pZAotcGlu dDJzdHIgKHJlZ2lzdGVyIGNoYXIgKmJ1ZiwgcmVnaXN0ZXIgaW50IHdpZHRoLCByZWdpc3Rl ciBwdHJkaWZmX3QgZCkKK3BpbnQyc3RyIChjaGFyICpidWYsIGludCB3aWR0aCwgcHRyZGlm Zl90IGQpCiB7Ci0gIHJlZ2lzdGVyIGNoYXIgKnAgPSBidWY7CisgIGNoYXIgKnAgPSBidWY7 CiAKICAgaWYgKGQgPD0gMCkKICAgICAqcCsrID0gJzAnOwpAQCAtMjA5OTcsNyArMjA5OTcs NyBAQAogc3RhdGljIHVuc2lnbmVkIGNoYXIgaW52YWxpZF9lb2xfdHlwZVtdID0gIigqaW52 YWxpZCopIjsKIAogc3RhdGljIGNoYXIgKgotZGVjb2RlX21vZGVfc3BlY19jb2RpbmcgKExp c3BfT2JqZWN0IGNvZGluZ19zeXN0ZW0sIHJlZ2lzdGVyIGNoYXIgKmJ1ZiwgaW50IGVvbF9m bGFnKQorZGVjb2RlX21vZGVfc3BlY19jb2RpbmcgKExpc3BfT2JqZWN0IGNvZGluZ19zeXN0 ZW0sIGNoYXIgKmJ1ZiwgaW50IGVvbF9mbGFnKQogewogICBMaXNwX09iamVjdCB2YWw7CiAg IGludCBtdWx0aWJ5dGUgPSAhTklMUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIGVuYWJsZV9t dWx0aWJ5dGVfY2hhcmFjdGVycykpOwpAQCAtMjEwODIsOCArMjEwODIsNyBAQAogc3RhdGlj IGNoYXIgbG90c19vZl9kYXNoZXNbXSA9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSI7CiAKIHN0YXRpYyBjb25zdCBjaGFyICoKLWRlY29kZV9tb2RlX3NwZWMgKHN0cnVj dCB3aW5kb3cgKncsIHJlZ2lzdGVyIGludCBjLCBpbnQgZmllbGRfd2lkdGgsCi0JCSAgTGlz cF9PYmplY3QgKnN0cmluZykKK2RlY29kZV9tb2RlX3NwZWMgKHN0cnVjdCB3aW5kb3cgKncs IGludCBjLCBpbnQgZmllbGRfd2lkdGgsIExpc3BfT2JqZWN0ICpzdHJpbmcpCiB7CiAgIExp c3BfT2JqZWN0IG9iajsKICAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChXSU5ET1dfRlJB TUUgKHcpKTsKQEAgLTIxMTQ5LDcgKzIxMTQ4LDcgQEAKIAogICAgIGNhc2UgJy0nOgogICAg ICAgewotCXJlZ2lzdGVyIGludCBpOworCWludCBpOwogCiAJLyogTGV0IGxvdHNfb2ZfZGFz aGVzIGJlIGEgc3RyaW5nIG9mIGluZmluaXRlIGxlbmd0aC4gICovCiAJaWYgKG1vZGVfbGlu ZV90YXJnZXQgPT0gTU9ERV9MSU5FX05PUFJPUCB8fApAQCAtMjE1MDIsMTEgKzIxNTAxLDEx IEBACiAJCSAgICAgcHRyZGlmZl90IGxpbWl0X2J5dGUsIHB0cmRpZmZfdCBjb3VudCwKIAkJ ICAgICBwdHJkaWZmX3QgKmJ5dGVfcG9zX3B0cikKIHsKLSAgcmVnaXN0ZXIgdW5zaWduZWQg Y2hhciAqY3Vyc29yOworICB1bnNpZ25lZCBjaGFyICpjdXJzb3I7CiAgIHVuc2lnbmVkIGNo YXIgKmJhc2U7CiAKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGNlaWxpbmc7Ci0gIHJlZ2lzdGVy IHVuc2lnbmVkIGNoYXIgKmNlaWxpbmdfYWRkcjsKKyAgcHRyZGlmZl90IGNlaWxpbmc7Cisg IHVuc2lnbmVkIGNoYXIgKmNlaWxpbmdfYWRkcjsKICAgcHRyZGlmZl90IG9yaWdfY291bnQg PSBjb3VudDsKIAogICAvKiBJZiB3ZSBhcmUgbm90IGluIHNlbGVjdGl2ZSBkaXNwbGF5IG1v ZGUsCkBAIC0yMTg1MywxMyArMjE4NTIsMTMgQEAKICAgIGFuZCAxIGlmIGl0J3MgaW52aXNp YmxlIGFuZCB3aXRob3V0IGFuIGVsbGlwc2lzLiAgKi8KIAogaW50Ci1pbnZpc2libGVfcCAo cmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvcHZhbCwgTGlzcF9PYmplY3QgbGlzdCkKK2ludmlz aWJsZV9wIChMaXNwX09iamVjdCBwcm9wdmFsLCBMaXNwX09iamVjdCBsaXN0KQogewotICBy ZWdpc3RlciBMaXNwX09iamVjdCB0YWlsLCBwcm9wdGFpbDsKKyAgTGlzcF9PYmplY3QgdGFp bCwgcHJvcHRhaWw7CiAKICAgZm9yICh0YWlsID0gbGlzdDsgQ09OU1AgKHRhaWwpOyB0YWls ID0gWENEUiAodGFpbCkpCiAgICAgewotICAgICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVt OworICAgICAgTGlzcF9PYmplY3QgdGVtOwogICAgICAgdGVtID0gWENBUiAodGFpbCk7CiAg ICAgICBpZiAoRVEgKHByb3B2YWwsIHRlbSkpCiAJcmV0dXJuIDE7CkBAIC0yMTg3NSw3ICsy MTg3NCw3IEBACiAJICBwcm9wZWx0ID0gWENBUiAocHJvcHRhaWwpOwogCSAgZm9yICh0YWls ID0gbGlzdDsgQ09OU1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCiAJICAgIHsKLQkg ICAgICByZWdpc3RlciBMaXNwX09iamVjdCB0ZW07CisJICAgICAgTGlzcF9PYmplY3QgdGVt OwogCSAgICAgIHRlbSA9IFhDQVIgKHRhaWwpOwogCSAgICAgIGlmIChFUSAocHJvcGVsdCwg dGVtKSkKIAkJcmV0dXJuIDE7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3hmbnMuYycKLS0t IHNyYy94Zm5zLmMJMjAxMi0wNi0wMSAyMDo0OTowMyArMDAwMAorKysgc3JjL3hmbnMuYwky MDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC0zODczLDI1ICszODczLDI1IEBACiB9CiAM CiBpbnQKLXhfcGl4ZWxfd2lkdGggKHJlZ2lzdGVyIHN0cnVjdCBmcmFtZSAqZikKK3hfcGl4 ZWxfd2lkdGggKHN0cnVjdCBmcmFtZSAqZikKIHsKICAgcmV0dXJuIEZSQU1FX1BJWEVMX1dJ RFRIIChmKTsKIH0KIAogaW50Ci14X3BpeGVsX2hlaWdodCAocmVnaXN0ZXIgc3RydWN0IGZy YW1lICpmKQoreF9waXhlbF9oZWlnaHQgKHN0cnVjdCBmcmFtZSAqZikKIHsKICAgcmV0dXJu IEZSQU1FX1BJWEVMX0hFSUdIVCAoZik7CiB9CiAKIGludAoteF9jaGFyX3dpZHRoIChyZWdp c3RlciBzdHJ1Y3QgZnJhbWUgKmYpCit4X2NoYXJfd2lkdGggKHN0cnVjdCBmcmFtZSAqZikK IHsKICAgcmV0dXJuIEZSQU1FX0NPTFVNTl9XSURUSCAoZik7CiB9CiAKIGludAoteF9jaGFy X2hlaWdodCAocmVnaXN0ZXIgc3RydWN0IGZyYW1lICpmKQoreF9jaGFyX2hlaWdodCAoc3Ry dWN0IGZyYW1lICpmKQogewogICByZXR1cm4gRlJBTUVfTElORV9IRUlHSFQgKGYpOwogfQpA QCAtMzkyOSw3ICszOTI5LDcgQEAKIAogaW50CiBYU2NyZWVuTnVtYmVyT2ZTY3JlZW4gKHNj cikKLSAgICByZWdpc3RlciBTY3JlZW4gKnNjcjsKKyAgICBTY3JlZW4gKnNjcjsKIHsKICAg RGlzcGxheSAqZHB5ID0gc2NyLT5kaXNwbGF5OwogICBpbnQgaTsKCj09PSBtb2RpZmllZCBm aWxlICdzcmMveHRlcm0uYycKLS0tIHNyYy94dGVybS5jCTIwMTItMDUtMzEgMDY6NTE6NDMg KzAwMDAKKysrIHNyYy94dGVybS5jCTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTI5 NDEsNyArMjk0MSw3IEBACiAgICBmb3IgWCBmcmFtZXMuICAqLwogCiBzdGF0aWMgdm9pZAot eF9kZWxldGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIGludCBuKQoreF9k ZWxldGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBuKQogewogICBhYm9ydCAoKTsK IH0KQEAgLTgyNjksNyArODI2OSw3IEBACiAgICB3aGljaCBtZWFucywgZG8gYWRqdXN0IGZv ciBib3JkZXJzIGJ1dCBkb24ndCBjaGFuZ2UgdGhlIGdyYXZpdHkuICAqLwogCiB2b2lkCi14 X3NldF9vZmZzZXQgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgaW50IHhvZmYsIHJlZ2lz dGVyIGludCB5b2ZmLCBpbnQgY2hhbmdlX2dyYXZpdHkpCit4X3NldF9vZmZzZXQgKHN0cnVj dCBmcmFtZSAqZiwgaW50IHhvZmYsIGludCB5b2ZmLCBpbnQgY2hhbmdlX2dyYXZpdHkpCiB7 CiAgIGludCBtb2RpZmllZF90b3AsIG1vZGlmaWVkX2xlZnQ7CiAKPT09IG1vZGlmaWVkIGZp bGUgJ2xpYi1zcmMvQ2hhbmdlTG9nJwotLS0gbGliLXNyYy9DaGFuZ2VMb2cJMjAxMi0wNS0z MSAwNjowODowNiArMDAwMAorKysgbGliLXNyYy9DaGFuZ2VMb2cJMjAxMi0wNi0wMyAwNTo1 NToyMyArMDAwMApAQCAtMSwzICsxLDggQEAKKzIwMTItMDYtMDMgIFBhdWwgRWdnZXJ0ICA8 ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJRG9uJ3QgdXNlICdyZWdpc3Rlcic7IHRoZXNlIGRh eXMgaXQncyBub3QgbmVlZGVkLgorCSogZXRhZ3MuYywgaGV4bC5jLCBtYWtlLWRvY2ZpbGUu YywgbW92ZW1haWwuYywgcG9wLmM6IE9taXQgJ3JlZ2lzdGVyJy4KKwogMjAxMi0wNS0zMSAg RWxpIFphcmV0c2tpaSAgPGVsaXpAZ251Lm9yZz4KIAogCSogbWFrZWZpbGUudzMyLWluICgk KEJMRCkvZW1hY3NjbGllbnR3LmV4ZSk6IFVzZSAkKE1XSU5ET1dTKQoKPT09IG1vZGlmaWVk IGZpbGUgJ2xpYi1zcmMvZXRhZ3MuYycKLS0tIGxpYi1zcmMvZXRhZ3MuYwkyMDEyLTA1LTIx IDE1OjM2OjU0ICswMDAwCisrKyBsaWItc3JjL2V0YWdzLmMJMjAxMi0wNi0wMyAwNTo1Mzoz OCArMDAwMApAQCAtMTcwNiw4ICsxNzA2LDggQEAKIHN0YXRpYyB2b2lkCiBpbml0ICh2b2lk KQogewotICByZWdpc3RlciBjb25zdCBjaGFyICpzcDsKLSAgcmVnaXN0ZXIgaW50IGk7Cisg IGNvbnN0IGNoYXIgKnNwOworICBpbnQgaTsKIAogICBmb3IgKGkgPSAwOyBpIDwgQ0hBUlM7 IGkrKykKICAgICBpc3doaXRlIChpKSA9IG5vdGlubmFtZSAoaSkgPSBiZWd0b2tlbiAoaSkg PSBpbnRva2VuIChpKSA9IGVuZHRva2VuIChpKSA9IEZBTFNFOwpAQCAtMTkwMSw3ICsxOTAx LDcgQEAKICAgICAgICBzdWNoIHRoYXQgZXRhZ3MuZWwgY2FuIGd1ZXNzIGEgbmFtZSBmcm9t IGl0LiAqLwogICAgIHsKICAgICAgIGludCBpOwotICAgICAgcmVnaXN0ZXIgY29uc3QgY2hh ciAqY3AgPSBuYW1lOworICAgICAgY29uc3QgY2hhciAqY3AgPSBuYW1lOwogCiAgICAgICBm b3IgKGkgPSAwOyBpIDwgbmFtZWxlbjsgaSsrKQogCWlmIChub3Rpbm5hbWUgKCpjcCsrKSkK QEAgLTE5MzUsNyArMTkzNSw3IEBACiAgICAgICAgICAgICAgCQkJLyogbGluZSBudW1iZXIg Ki8KICAgICAgICAgICAgICAgCQkJLyogY2hhcmFjdGVyIG51bWJlciAqLwogewotICByZWdp c3RlciBub2RlICpucDsKKyAgbm9kZSAqbnA7CiAKICAgYXNzZXJ0IChuYW1lID09IE5VTEwg fHwgbmFtZVswXSAhPSAnXDAnKTsKICAgaWYgKENUQUdTICYmIG5hbWUgPT0gTlVMTCkKQEAg LTE5NDYsNyArMTk0Niw3IEBACiAgIC8qIElmIGN0YWdzIG1vZGUsIGNoYW5nZSBuYW1lICJt YWluIiB0byBNPHRoaXNmaWxlbmFtZT4uICovCiAgIGlmIChDVEFHUyAmJiAhY3hyZWZfc3R5 bGUgJiYgc3RyZXEgKG5hbWUsICJtYWluIikpCiAgICAgewotICAgICAgcmVnaXN0ZXIgY2hh ciAqZnAgPSBldGFnc19zdHJyY2hyIChjdXJmZHAtPnRhZ2dlZGZuYW1lLCAnLycpOworICAg ICAgY2hhciAqZnAgPSBldGFnc19zdHJyY2hyIChjdXJmZHAtPnRhZ2dlZGZuYW1lLCAnLycp OwogICAgICAgbnAtPm5hbWUgPSBjb25jYXQgKCJNIiwgZnAgPT0gTlVMTCA/IGN1cmZkcC0+ dGFnZ2VkZm5hbWUgOiBmcCArIDEsICIiKTsKICAgICAgIGZwID0gZXRhZ3Nfc3RycmNociAo bnAtPm5hbWUsICcuJyk7CiAgICAgICBpZiAoZnAgIT0gTlVMTCAmJiBmcFsxXSAhPSAnXDAn ICYmIGZwWzJdID09ICdcMCcpCkBAIC0xOTg3LDExICsxOTg3LDExIEBACiAgKglyZWN1cnNl IG9uIGxlZnQgY2hpbGRyZW4sIGl0ZXJhdGUgb24gcmlnaHQgY2hpbGRyZW4uCiAgKi8KIHN0 YXRpYyB2b2lkCi1mcmVlX3RyZWUgKHJlZ2lzdGVyIG5vZGUgKm5wKQorZnJlZV90cmVlIChu b2RlICpucCkKIHsKICAgd2hpbGUgKG5wKQogICAgIHsKLSAgICAgIHJlZ2lzdGVyIG5vZGUg Km5vZGVfcmlnaHQgPSBucC0+cmlnaHQ7CisgICAgICBub2RlICpub2RlX3JpZ2h0ID0gbnAt PnJpZ2h0OwogICAgICAgZnJlZV90cmVlIChucC0+bGVmdCk7CiAgICAgICBmcmVlIChucC0+ bmFtZSk7CiAgICAgICBmcmVlIChucC0+cmVnZXgpOwpAQCAtMjAwNSw3ICsyMDA1LDcgQEAK ICAqCWRlbGV0ZSBhIGZpbGUgZGVzY3JpcHRpb24KICAqLwogc3RhdGljIHZvaWQKLWZyZWVf ZmRlc2MgKHJlZ2lzdGVyIGZkZXNjICpmZHApCitmcmVlX2ZkZXNjIChmZGVzYyAqZmRwKQog ewogICBmcmVlIChmZHAtPmluZm5hbWUpOwogICBmcmVlIChmZHAtPmluZmFic25hbWUpOwpA QCAtMjAyNyw4ICsyMDI3LDggQEAKIHN0YXRpYyB2b2lkCiBhZGRfbm9kZSAobm9kZSAqbnAs IG5vZGUgKipjdXJfbm9kZV9wKQogewotICByZWdpc3RlciBpbnQgZGlmOwotICByZWdpc3Rl ciBub2RlICpjdXJfbm9kZSA9ICpjdXJfbm9kZV9wOworICBpbnQgZGlmOworICBub2RlICpj dXJfbm9kZSA9ICpjdXJfbm9kZV9wOwogCiAgIGlmIChjdXJfbm9kZSA9PSBOVUxMKQogICAg IHsKQEAgLTIxNTcsOSArMjE1Nyw5IEBACiAgKiBidXQgaXMgc3RpbGwgc3VwcGxpZWQgZm9y IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCiAgKi8KIHN0YXRpYyBpbnQKLXRvdGFsX3NpemVf b2ZfZW50cmllcyAocmVnaXN0ZXIgbm9kZSAqbnApCit0b3RhbF9zaXplX29mX2VudHJpZXMg KG5vZGUgKm5wKQogewotICByZWdpc3RlciBpbnQgdG90YWwgPSAwOworICBpbnQgdG90YWwg PSAwOwogCiAgIGZvciAoOyBucCAhPSBOVUxMOyBucCA9IG5wLT5yaWdodCkKICAgICBpZiAo bnAtPnZhbGlkKQpAQCAtMjE3Nyw5ICsyMTc3LDkgQEAKIH0KIAogc3RhdGljIHZvaWQKLXB1 dF9lbnRyaWVzIChyZWdpc3RlciBub2RlICpucCkKK3B1dF9lbnRyaWVzIChub2RlICpucCkK IHsKLSAgcmVnaXN0ZXIgY2hhciAqc3A7CisgIGNoYXIgKnNwOwogICBzdGF0aWMgZmRlc2Mg KmZkcCA9IE5VTEw7CiAKICAgaWYgKG5wID09IE5VTEwpCkBAIC0yMzQ5LDcgKzIzNDksNyBA QAogLyogbWF4aW11bSBrZXkgcmFuZ2UgPSAzMywgZHVwbGljYXRlcyA9IDAgKi8KIAogc3Rh dGljIGlubGluZSB1bnNpZ25lZCBpbnQKLWhhc2ggKHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnN0 ciwgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGxlbikKK2hhc2ggKGNvbnN0IGNoYXIgKnN0ciwg dW5zaWduZWQgaW50IGxlbikKIHsKICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgYXNzb192YWx1 ZXNbXSA9CiAgICAgewpAQCAtMjM4MCw3ICsyMzgwLDcgQEAKICAgICAgIDM1LCAzNSwgMzUs IDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LAogICAgICAgMzUsIDM1LCAzNSwgMzUsIDM1 LCAzNQogICAgIH07Ci0gIHJlZ2lzdGVyIGludCBodmFsID0gbGVuOworICBpbnQgaHZhbCA9 IGxlbjsKIAogICBzd2l0Y2ggKGh2YWwpCiAgICAgewpAQCAtMjM5NSw3ICsyMzk1LDcgQEAK IH0KIAogc3RhdGljIHN0cnVjdCBDX3N0YWJfZW50cnkgKgotaW5fd29yZF9zZXQgKHJlZ2lz dGVyIGNvbnN0IGNoYXIgKnN0ciwgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGxlbikKK2luX3dv cmRfc2V0IChjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCBsZW4pCiB7CiAgIGVudW0K ICAgICB7CkBAIC0yNDQ2LDExICsyNDQ2LDExIEBACiAKICAgaWYgKGxlbiA8PSBNQVhfV09S RF9MRU5HVEggJiYgbGVuID49IE1JTl9XT1JEX0xFTkdUSCkKICAgICB7Ci0gICAgICByZWdp c3RlciBpbnQga2V5ID0gaGFzaCAoc3RyLCBsZW4pOworICAgICAgaW50IGtleSA9IGhhc2gg KHN0ciwgbGVuKTsKIAogICAgICAgaWYgKGtleSA8PSBNQVhfSEFTSF9WQUxVRSAmJiBrZXkg Pj0gMCkKICAgICAgICAgewotICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnMgPSB3 b3JkbGlzdFtrZXldLm5hbWU7CisgICAgICAgICAgY29uc3QgY2hhciAqcyA9IHdvcmRsaXN0 W2tleV0ubmFtZTsKIAogICAgICAgICAgIGlmICgqc3RyID09ICpzICYmICFzdHJuY21wIChz dHIgKyAxLCBzICsgMSwgbGVuIC0gMSkgJiYgc1tsZW5dID09ICdcMCcpCiAgICAgICAgICAg ICByZXR1cm4gJndvcmRsaXN0W2tleV07CkBAIC0yNDYzLDcgKzI0NjMsNyBAQAogc3RhdGlj IGVudW0gc3ltX3R5cGUKIENfc3ltdHlwZSAoY2hhciAqc3RyLCBpbnQgbGVuLCBpbnQgY19l eHQpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBDX3N0YWJfZW50cnkgKnNlID0gaW5fd29yZF9z ZXQgKHN0ciwgbGVuKTsKKyAgc3RydWN0IENfc3RhYl9lbnRyeSAqc2UgPSBpbl93b3JkX3Nl dCAoc3RyLCBsZW4pOwogCiAgIGlmIChzZSA9PSBOVUxMIHx8IChzZS0+Y19leHQgJiYgIShj X2V4dCAmIHNlLT5jX2V4dCkpKQogICAgIHJldHVybiBzdF9ub25lOwpAQCAtMjY5Myw3ICsy NjkzLDggQEAKICAqLwogCiBzdGF0aWMgYm9vbAotY29uc2lkZXJfdG9rZW4gKHJlZ2lzdGVy IGNoYXIgKnN0ciwgcmVnaXN0ZXIgaW50IGxlbiwgcmVnaXN0ZXIgaW50IGMsIGludCAqY19l eHRwLCBpbnQgYnJhY2VsZXYsIGludCBwYXJsZXYsIGludCAqaXNfZnVuY19vcl92YXIpCitj b25zaWRlcl90b2tlbiAoY2hhciAqc3RyLCBpbnQgbGVuLCBpbnQgYywgaW50ICpjX2V4dHAs IGludCBicmFjZWxldiwKKwkJaW50IHBhcmxldiwgaW50ICppc19mdW5jX29yX3ZhcikKICAg ICAgICAgICAgICAgICAgICAgICAgIAkvKiBJTjogdG9rZW4gcG9pbnRlciAqLwogICAgICAg ICAgICAgICAgICAgICAgIAkJLyogSU46IHRva2VuIGxlbmd0aCAqLwogICAgICAgICAgICAg ICAgICAgICAJCS8qIElOOiBmaXJzdCBjaGFyIGFmdGVyIHRoZSB0b2tlbiAqLwpAQCAtMzA2 NCwxMSArMzA2NSwxMSBAQAogICAgICAgICAgICAgICAgCQkJLyogZXh0ZW5zaW9uIG9mIEMg Ki8KICAgICAgICAgICAgICAgIAkJCS8qIGlucHV0IGZpbGUgKi8KIHsKLSAgcmVnaXN0ZXIg Y2hhciBjOwkJLyogbGF0ZXN0IGNoYXIgcmVhZDsgJ1wwJyBmb3IgZW5kIG9mIGxpbmUgKi8K LSAgcmVnaXN0ZXIgY2hhciAqbHA7CQkvKiBwb2ludGVyIG9uZSBiZXlvbmQgdGhlIGNoYXJh Y3RlciBgYycgKi8KKyAgY2hhciBjOwkJCS8qIGxhdGVzdCBjaGFyIHJlYWQ7ICdcMCcgZm9y IGVuZCBvZiBsaW5lICovCisgIGNoYXIgKmxwOwkJCS8qIHBvaW50ZXIgb25lIGJleW9uZCB0 aGUgY2hhcmFjdGVyIGBjJyAqLwogICBpbnQgY3VybmR4LCBuZXduZHg7CQkvKiBpbmRpY2Vz IGZvciBjdXJyZW50IGFuZCBuZXcgbGIgKi8KLSAgcmVnaXN0ZXIgaW50IHRva29mZjsJCS8q IG9mZnNldCBpbiBsaW5lIG9mIHN0YXJ0IG9mIGN1cnJlbnQgdG9rZW4gKi8KLSAgcmVnaXN0 ZXIgaW50IHRva2xlbjsJCS8qIGxlbmd0aCBvZiBjdXJyZW50IHRva2VuICovCisgIGludCB0 b2tvZmY7CQkJLyogb2Zmc2V0IGluIGxpbmUgb2Ygc3RhcnQgb2YgY3VycmVudCB0b2tlbiAq LworICBpbnQgdG9rbGVuOwkJCS8qIGxlbmd0aCBvZiBjdXJyZW50IHRva2VuICovCiAgIGNv bnN0IGNoYXIgKnF1YWxpZmllcjsgICAgICAgIC8qIHN0cmluZyB1c2VkIHRvIHF1YWxpZnkg bmFtZXMgKi8KICAgaW50IHFsZW47CQkJLyogbGVuZ3RoIG9mIHF1YWxpZmllciAqLwogICBp bnQgYnJhY2VsZXY7CQkJLyogY3VycmVudCBicmFjZSBsZXZlbCAqLwpAQCAtNDAwMCw3ICs0 MDAxLDcgQEAKIHN0YXRpYyB2b2lkCiBGX2dldGl0IChGSUxFICppbmYpCiB7Ci0gIHJlZ2lz dGVyIGNoYXIgKmNwOworICBjaGFyICpjcDsKIAogICBkYnAgPSBza2lwX3NwYWNlcyAoZGJw KTsKICAgaWYgKCpkYnAgPT0gJ1wwJykKQEAgLTQxMTUsNyArNDExNiw3IEBACiBzdGF0aWMg dm9pZAogQWRhX2dldGl0IChGSUxFICppbmYsIGNvbnN0IGNoYXIgKm5hbWVfcXVhbGlmaWVy KQogewotICByZWdpc3RlciBjaGFyICpjcDsKKyAgY2hhciAqY3A7CiAgIGNoYXIgKm5hbWU7 CiAgIGNoYXIgYzsKIApAQCAtNDI5MSw3ICs0MjkyLDcgQEAKIHN0YXRpYyB2b2lkCiBBc21f bGFiZWxzIChGSUxFICppbmYpCiB7Ci0gIHJlZ2lzdGVyIGNoYXIgKmNwOworICBjaGFyICpj cDsKIAogICBMT09QX09OX0lOUFVUX0xJTkVTIChpbmYsIGxiLCBjcCkKICAgICB7CkBAIC00 MzI0LDcgKzQzMjUsNyBAQAogUGVybF9mdW5jdGlvbnMgKEZJTEUgKmluZikKIHsKICAgY2hh ciAqcGFja2FnZSA9IHNhdmVzdHIgKCJtYWluIik7IC8qIGN1cnJlbnQgcGFja2FnZSBuYW1l ICovCi0gIHJlZ2lzdGVyIGNoYXIgKmNwOworICBjaGFyICpjcDsKIAogICBMT09QX09OX0lO UFVUX0xJTkVTIChpbmYsIGxiLCBjcCkKICAgICB7CkBAIC00NDA1LDcgKzQ0MDYsNyBAQAog c3RhdGljIHZvaWQKIFB5dGhvbl9mdW5jdGlvbnMgKEZJTEUgKmluZikKIHsKLSAgcmVnaXN0 ZXIgY2hhciAqY3A7CisgIGNoYXIgKmNwOwogCiAgIExPT1BfT05fSU5QVVRfTElORVMgKGlu ZiwgbGIsIGNwKQogICAgIHsKQEAgLTQ0MzUsNyArNDQzNiw3IEBACiBzdGF0aWMgdm9pZAog UEhQX2Z1bmN0aW9ucyAoRklMRSAqaW5mKQogewotICByZWdpc3RlciBjaGFyICpjcCwgKm5h bWU7CisgIGNoYXIgKmNwLCAqbmFtZTsKICAgYm9vbCBzZWFyY2hfaWRlbnRpZmllciA9IEZB TFNFOwogCiAgIExPT1BfT05fSU5QVVRfTElORVMgKGluZiwgbGIsIGNwKQpAQCAtNDUxNCw3 ICs0NTE1LDcgQEAKIHN0YXRpYyB2b2lkCiBDb2JvbF9wYXJhZ3JhcGhzIChGSUxFICppbmYp CiB7Ci0gIHJlZ2lzdGVyIGNoYXIgKmJwLCAqZXA7CisgIGNoYXIgKmJwLCAqZXA7CiAKICAg TE9PUF9PTl9JTlBVVF9MSU5FUyAoaW5mLCBsYiwgYnApCiAgICAgewpAQCAtNDU0Miw3ICs0 NTQzLDcgQEAKIHN0YXRpYyB2b2lkCiBNYWtlZmlsZV90YXJnZXRzIChGSUxFICppbmYpCiB7 Ci0gIHJlZ2lzdGVyIGNoYXIgKmJwOworICBjaGFyICpicDsKIAogICBMT09QX09OX0lOUFVU X0xJTkVTIChpbmYsIGxiLCBicCkKICAgICB7CkBAIC00ODE3LDcgKzQ4MTgsNyBAQAogc3Rh dGljIHZvaWQKIEx1YV9mdW5jdGlvbnMgKEZJTEUgKmluZikKIHsKLSAgcmVnaXN0ZXIgY2hh ciAqYnA7CisgIGNoYXIgKmJwOwogCiAgIExPT1BfT05fSU5QVVRfTElORVMgKGluZiwgbGIs IGJwKQogICAgIHsKQEAgLTQ4NDMsNyArNDg0NCw3IEBACiBzdGF0aWMgdm9pZAogUFNfZnVu Y3Rpb25zIChGSUxFICppbmYpCiB7Ci0gIHJlZ2lzdGVyIGNoYXIgKmJwLCAqZXA7CisgIGNo YXIgKmJwLCAqZXA7CiAKICAgTE9PUF9PTl9JTlBVVF9MSU5FUyAoaW5mLCBsYiwgYnApCiAg ICAgewpAQCAtNDg3Myw3ICs0ODc0LDcgQEAKIHN0YXRpYyB2b2lkCiBGb3J0aF93b3JkcyAo RklMRSAqaW5mKQogewotICByZWdpc3RlciBjaGFyICpicDsKKyAgY2hhciAqYnA7CiAKICAg TE9PUF9PTl9JTlBVVF9MSU5FUyAoaW5mLCBsYiwgYnApCiAgICAgd2hpbGUgKChicCA9IHNr aXBfc3BhY2VzIChicCkpWzBdICE9ICdcMCcpCkBAIC00OTA5LDcgKzQ5MTAsNyBAQAogc3Rh dGljIHZvaWQKIFNjaGVtZV9mdW5jdGlvbnMgKEZJTEUgKmluZikKIHsKLSAgcmVnaXN0ZXIg Y2hhciAqYnA7CisgIGNoYXIgKmJwOwogCiAgIExPT1BfT05fSU5QVVRfTElORVMgKGluZiwg bGIsIGJwKQogICAgIHsKQEAgLTQ5ODMsNyArNDk4NCw3IEBACiAJICBmb3IgKGtleSA9IFRF WF90b2t0YWI7IGtleS0+YnVmZmVyICE9IE5VTEw7IGtleSsrKQogCSAgICBpZiAoc3RybmVx IChjcCwga2V5LT5idWZmZXIsIGtleS0+bGVuKSkKIAkgICAgICB7Ci0JCXJlZ2lzdGVyIGNo YXIgKnA7CisJCWNoYXIgKnA7CiAJCWludCBuYW1lbGVuLCBsaW5lbGVuOwogCQlib29sIG9w Z3JwID0gRkFMU0U7CiAKQEAgLTUwNTgsNyArNTA1OSw3IEBACiBzdGF0aWMgdm9pZAogVEVY X2RlY29kZV9lbnYgKGNvbnN0IGNoYXIgKmV2YXJuYW1lLCBjb25zdCBjaGFyICpkZWZlbnYp CiB7Ci0gIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKmVudiwgKnA7CisgIGNvbnN0IGNoYXIgKmVu diwgKnA7CiAgIGludCBpLCBsZW47CiAKICAgLyogQXBwZW5kIGRlZmF1bHQgc3RyaW5nIHRv IGVudmlyb25tZW50LiAqLwpAQCAtNTk0OCw3ICs1OTQ5LDcgQEAKIHN0YXRpYyBib29sCiBu b2Nhc2VfdGFpbCAoY29uc3QgY2hhciAqY3ApCiB7Ci0gIHJlZ2lzdGVyIGludCBsZW4gPSAw OworICBpbnQgbGVuID0gMDsKIAogICB3aGlsZSAoKmNwICE9ICdcMCcgJiYgbG93Y2FzZSAo KmNwKSA9PSBsb3djYXNlIChkYnBbbGVuXSkpCiAgICAgY3ArKywgbGVuKys7CkBAIC01OTYx LDkgKzU5NjIsOSBAQAogfQogCiBzdGF0aWMgdm9pZAotZ2V0X3RhZyAocmVnaXN0ZXIgY2hh ciAqYnAsIGNoYXIgKipuYW1lcHApCitnZXRfdGFnIChjaGFyICpicCwgY2hhciAqKm5hbWVw cCkKIHsKLSAgcmVnaXN0ZXIgY2hhciAqY3AgPSBicDsKKyAgY2hhciAqY3AgPSBicDsKIAog ICBpZiAoKmJwICE9ICdcMCcpCiAgICAgewpAQCAtNTk5MiwxOCArNTk5MywxOCBAQAogICog YXBwZW5kZWQgdG8gYGZpbGVidWYnLgogICovCiBzdGF0aWMgbG9uZwotcmVhZGxpbmVfaW50 ZXJuYWwgKGxpbmVidWZmZXIgKmxicCwgcmVnaXN0ZXIgRklMRSAqc3RyZWFtKQorcmVhZGxp bmVfaW50ZXJuYWwgKGxpbmVidWZmZXIgKmxicCwgRklMRSAqc3RyZWFtKQogewogICBjaGFy ICpidWZmZXIgPSBsYnAtPmJ1ZmZlcjsKLSAgcmVnaXN0ZXIgY2hhciAqcCA9IGxicC0+YnVm ZmVyOwotICByZWdpc3RlciBjaGFyICpwZW5kOworICBjaGFyICpwID0gbGJwLT5idWZmZXI7 CisgIGNoYXIgKnBlbmQ7CiAgIGludCBjaGFyc19kZWxldGVkOwogCiAgIHBlbmQgPSBwICsg bGJwLT5zaXplOwkJLyogU2VwYXJhdGUgdG8gYXZvaWQgMzg2L0lYIGNvbXBpbGVyIGJ1Zy4g ICovCiAKICAgZm9yICg7OykKICAgICB7Ci0gICAgICByZWdpc3RlciBpbnQgYyA9IGdldGMg KHN0cmVhbSk7CisgICAgICBpbnQgYyA9IGdldGMgKHN0cmVhbSk7CiAgICAgICBpZiAocCA9 PSBwZW5kKQogCXsKIAkgIC8qIFdlJ3JlIGF0IHRoZSBlbmQgb2YgbGluZWJ1ZmZlcjogZXhw YW5kIGl0LiAqLwpAQCAtNjI3NSw3ICs2Mjc2LDcgQEAKIHN0YXRpYyBjaGFyICoKIHNhdmVu c3RyIChjb25zdCBjaGFyICpjcCwgaW50IGxlbikKIHsKLSAgcmVnaXN0ZXIgY2hhciAqZHA7 CisgIGNoYXIgKmRwOwogCiAgIGRwID0geG5ldyAobGVuICsgMSwgY2hhcik7CiAgIHN0cm5j cHkgKGRwLCBjcCwgbGVuKTsKQEAgLTYyOTAsOSArNjI5MSw5IEBACiAgKiBJZGVudGljYWwg dG8gUE9TSVggc3RycmNociwgaW5jbHVkZWQgZm9yIHBvcnRhYmlsaXR5LgogICovCiBzdGF0 aWMgY2hhciAqCi1ldGFnc19zdHJyY2hyIChyZWdpc3RlciBjb25zdCBjaGFyICpzcCwgcmVn aXN0ZXIgaW50IGMpCitldGFnc19zdHJyY2hyIChjb25zdCBjaGFyICpzcCwgaW50IGMpCiB7 Ci0gIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnI7CisgIGNvbnN0IGNoYXIgKnI7CiAKICAgciA9 IE5VTEw7CiAgIGRvCkBAIC02MzEwLDcgKzYzMTEsNyBAQAogICogSWRlbnRpY2FsIHRvIFBP U0lYIHN0cmNociwgaW5jbHVkZWQgZm9yIHBvcnRhYmlsaXR5LgogICovCiBzdGF0aWMgY2hh ciAqCi1ldGFnc19zdHJjaHIgKHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnNwLCByZWdpc3RlciBp bnQgYykKK2V0YWdzX3N0cmNociAoY29uc3QgY2hhciAqc3AsIGludCBjKQogewogICBkbwog ICAgIHsKQEAgLTYzMjYsNyArNjMyNyw3IEBACiAgKiBTYW1lIGFzIEJTRCdzIHN0cmNhc2Vj bXAsIGluY2x1ZGVkIGZvciBwb3J0YWJpbGl0eS4KICAqLwogc3RhdGljIGludAotZXRhZ3Nf c3RyY2FzZWNtcCAocmVnaXN0ZXIgY29uc3QgY2hhciAqczEsIHJlZ2lzdGVyIGNvbnN0IGNo YXIgKnMyKQorZXRhZ3Nfc3RyY2FzZWNtcCAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIg KnMyKQogewogICB3aGlsZSAoKnMxICE9ICdcMCcKIAkgJiYgKElTQUxQSEEgKCpzMSkgJiYg SVNBTFBIQSAoKnMyKQpAQCAtNjM0Niw3ICs2MzQ3LDcgQEAKICAqIFNhbWUgYXMgQlNEJ3Mg c3RybmNhc2VjbXAsIGluY2x1ZGVkIGZvciBwb3J0YWJpbGl0eS4KICAqLwogc3RhdGljIGlu dAotZXRhZ3Nfc3RybmNhc2VjbXAgKHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnMxLCByZWdpc3Rl ciBjb25zdCBjaGFyICpzMiwgcmVnaXN0ZXIgaW50IG4pCitldGFnc19zdHJuY2FzZWNtcCAo Y29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBpbnQgbikKIHsKICAgd2hpbGUgKCpz MSAhPSAnXDAnICYmIG4tLSA+IDAKIAkgJiYgKElTQUxQSEEgKCpzMSkgJiYgSVNBTFBIQSAo KnMyKQpAQCAtNjYxOSw5ICs2NjIwLDkgQEAKIC8qIERvd25jYXNlIERPUyBkcml2ZSBsZXR0 ZXIgYW5kIGNvbGxhcHNlIHNlcGFyYXRvcnMgaW50byBzaW5nbGUgc2xhc2hlcy4KICAgIFdv cmtzIGluIHBsYWNlLiAqLwogc3RhdGljIHZvaWQKLWNhbm9uaWNhbGl6ZV9maWxlbmFtZSAo cmVnaXN0ZXIgY2hhciAqZm4pCitjYW5vbmljYWxpemVfZmlsZW5hbWUgKGNoYXIgKmZuKQog ewotICByZWdpc3RlciBjaGFyKiBjcDsKKyAgY2hhciAqY3A7CiAgIGNoYXIgc2VwID0gJy8n OwogCiAjaWZkZWYgRE9TX05UCgo9PT0gbW9kaWZpZWQgZmlsZSAnbGliLXNyYy9oZXhsLmMn Ci0tLSBsaWItc3JjL2hleGwuYwkyMDEyLTAxLTE5IDA3OjIxOjI1ICswMDAwCisrKyBsaWIt c3JjL2hleGwuYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC01Myw3ICs1Myw3IEBA CiBpbnQKIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKLSAgcmVnaXN0ZXIgbG9u ZyBhZGRyZXNzOworICBsb25nIGFkZHJlc3M7CiAgIGNoYXIgc3RyaW5nWzE4XTsKICAgRklM RSAqZnA7CiAKQEAgLTE3NCw3ICsxNzQsNyBAQAogI2VuZGlmCiAJICBmb3IgKDs7KQogCSAg ICB7Ci0JICAgICAgcmVnaXN0ZXIgaW50IGksIGMgPSAwLCBkOworCSAgICAgIGludCBpLCBj ID0gMCwgZDsKIAogI2RlZmluZSBoZXhjaGFyKHgpIChpc2RpZ2l0ICh4KSA/IHggLSAnMCcg OiB4IC0gJ2EnICsgMTApCiAKQEAgLTIzMCw3ICsyMzAsNyBAQAogCSAgc3RyaW5nWzE3XSA9 ICdcMCc7CiAJICBmb3IgKDs7KQogCSAgICB7Ci0JICAgICAgcmVnaXN0ZXIgaW50IGksIGMg PSAwOworCSAgICAgIGludCBpLCBjID0gMDsKIAogCSAgICAgIGZvciAoaT0wOyBpIDwgMTY7 ICsraSkKIAkJewoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpYi1zcmMvbWFrZS1kb2NmaWxlLmMn Ci0tLSBsaWItc3JjL21ha2UtZG9jZmlsZS5jCTIwMTItMDUtMzAgMDM6NTk6NDIgKzAwMDAK KysrIGxpYi1zcmMvbWFrZS1kb2NmaWxlLmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApA QCAtMzk4LDcgKzM5OCw3IEBACiBzdGF0aWMgaW50CiByZWFkX2Nfc3RyaW5nX29yX2NvbW1l bnQgKEZJTEUgKmluZmlsZSwgaW50IHByaW50ZmxhZywgaW50IGNvbW1lbnQsIGludCAqc2F3 X3VzYWdlKQogewotICByZWdpc3RlciBpbnQgYzsKKyAgaW50IGM7CiAgIHN0cnVjdCByY3Nv Y19zdGF0ZSBzdGF0ZTsKIAogICBzdGF0ZS5pbl9maWxlID0gaW5maWxlOwpAQCAtNDg2LDcg KzQ4Niw3IEBACiBzdGF0aWMgdm9pZAogd3JpdGVfY19hcmdzIChGSUxFICpvdXQsIGNoYXIg KmZ1bmMsIGNoYXIgKmJ1ZiwgaW50IG1pbmFyZ3MsIGludCBtYXhhcmdzKQogewotICByZWdp c3RlciBjaGFyICpwOworICBjaGFyICpwOwogICBpbnQgaW5faWRlbnQgPSAwOwogICBjaGFy ICppZGVudF9zdGFydCBJRl9MSU5UICg9IE5VTEwpOwogICBzaXplX3QgaWRlbnRfbGVuZ3Ro ID0gMDsKQEAgLTY2Myw4ICs2NjMsOCBAQAogc2Nhbl9jX2ZpbGUgKGNoYXIgKmZpbGVuYW1l LCBjb25zdCBjaGFyICptb2RlKQogewogICBGSUxFICppbmZpbGU7Ci0gIHJlZ2lzdGVyIGlu dCBjOwotICByZWdpc3RlciBpbnQgY29tbWFzOworICBpbnQgYzsKKyAgaW50IGNvbW1hczsK ICAgaW50IG1pbmFyZ3MsIG1heGFyZ3M7CiAgIGludCBleHRlbnNpb24gPSBmaWxlbmFtZVtz dHJsZW4gKGZpbGVuYW1lKSAtIDFdOwogCkBAIC0xMDQ5LDcgKzEwNDksNyBAQAogc2Nhbl9s aXNwX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICptb2RlKQogewog ICBGSUxFICppbmZpbGU7Ci0gIHJlZ2lzdGVyIGludCBjOworICBpbnQgYzsKICAgY2hhciAq c2F2ZWRfc3RyaW5nID0gMDsKIAogICBpZiAoZ2VuZXJhdGVfZ2xvYmFscykKCj09PSBtb2Rp ZmllZCBmaWxlICdsaWItc3JjL21vdmVtYWlsLmMnCi0tLSBsaWItc3JjL21vdmVtYWlsLmMJ MjAxMi0wMS0xOSAwNzoyMToyNSArMDAwMAorKysgbGliLXNyYy9tb3ZlbWFpbC5jCTIwMTIt MDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTcxMCw3ICs3MTAsNyBAQAogcG9wbWFpbCAoY2hh ciAqbWFpbGJveCwgY2hhciAqb3V0ZmlsZSwgaW50IHByZXNlcnZlLCBjaGFyICpwYXNzd29y ZCwgaW50IHJldmVyc2Vfb3JkZXIpCiB7CiAgIGludCBubXNncywgbmJ5dGVzOwotICByZWdp c3RlciBpbnQgaTsKKyAgaW50IGk7CiAgIGludCBtYmZpOwogICBGSUxFICptYmY7CiAgIGNo YXIgKmdldGVudiAoY29uc3QgY2hhciAqKTsKCj09PSBtb2RpZmllZCBmaWxlICdsaWItc3Jj L3BvcC5jJwotLS0gbGliLXNyYy9wb3AuYwkyMDEyLTA1LTAyIDEwOjEyOjEzICswMDAwCisr KyBsaWItc3JjL3BvcC5jCTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTk5OSw3ICs5 OTksNyBAQAogICBrcmI1X2NjYWNoZSBjY2RlZjsKICAga3JiNV9wcmluY2lwYWwgY2xpZW50 LCBzZXJ2ZXI7CiAgIGtyYjVfZXJyb3IgKmVycl9yZXQ7Ci0gIHJlZ2lzdGVyIGNoYXIgKmNw OworICBjaGFyICpjcDsKICNlbHNlCiAgIEtURVhUIHRpY2tldDsKICAgTVNHX0RBVCBtc2df ZGF0YTsK --------------010202060104020205090600-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 03 10:26:37 2012 Received: (at 11617) by debbugs.gnu.org; 3 Jun 2012 14:26:38 +0000 Received: from localhost ([127.0.0.1]:55836 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbBlN-0001Ce-Oa for submit@debbugs.gnu.org; Sun, 03 Jun 2012 10:26:37 -0400 Received: from mtaout23.012.net.il ([80.179.55.175]:51560) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbBl2-0001C6-DP for 11617@debbugs.gnu.org; Sun, 03 Jun 2012 10:26:35 -0400 Received: from conversion-daemon.a-mtaout23.012.net.il by a-mtaout23.012.net.il (HyperSendmail v2007.08) id <0M5100I00P8ODD00@a-mtaout23.012.net.il> for 11617@debbugs.gnu.org; Sun, 03 Jun 2012 17:24:18 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.210.75]) by a-mtaout23.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M5100I2LPCH4W80@a-mtaout23.012.net.il>; Sun, 03 Jun 2012 17:24:18 +0300 (IDT) Date: Sun, 03 Jun 2012 17:24:24 +0300 From: Eli Zaretskii Subject: Re: bug#11617: Don't use 'register'; these days it's not needed. In-reply-to: <4FCAFED3.4080008@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <831ulwcw2v.fsf@gnu.org> References: <4FCAFED3.4080008@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 11617 Cc: 11617@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Sat, 02 Jun 2012 23:06:11 -0700 > From: Paul Eggert > > Attached is a patch to remove 'register' from the mainline > Emacs source code. FWIW, I see no compelling reason for this change, even after I've read the explanations. This keyword is a cue to the compiler, so it in general conveys non-trivial information. If today's compilers mostly ignore that, it doesn't mean this will always be the state of affairs. However, by removing this, we lose those cues forever. I guess I won't be convinced without seeing at least some data about the disadvantages, and not just a few extreme examples with some particular versions of some specific compilers. But this isn't my call, so perhaps you don't need to convince me. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 03 10:52:30 2012 Received: (at 11617) by debbugs.gnu.org; 3 Jun 2012 14:52:31 +0000 Received: from localhost ([127.0.0.1]:55885 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbCAQ-0002cN-0R for submit@debbugs.gnu.org; Sun, 03 Jun 2012 10:52:30 -0400 Received: from fencepost.gnu.org ([208.118.235.10]:49413 ident=Debian-exim) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbCA5-0002bw-AS for 11617@debbugs.gnu.org; Sun, 03 Jun 2012 10:52:28 -0400 Received: from cm162.gamma80.maxonline.com.sg ([202.156.80.162]:37581 helo=ulysses) by fencepost.gnu.org with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1SbC8E-0002gG-BN; Sun, 03 Jun 2012 10:50:15 -0400 From: Chong Yidong To: Eli Zaretskii Subject: Re: bug#11617: Don't use 'register'; these days it's not needed. References: <4FCAFED3.4080008@cs.ucla.edu> <831ulwcw2v.fsf@gnu.org> Date: Sun, 03 Jun 2012 22:50:02 +0800 In-Reply-To: <831ulwcw2v.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 03 Jun 2012 17:24:24 +0300") Message-ID: <87ipf8tpph.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -6.9 (------) X-Debbugs-Envelope-To: 11617 Cc: Paul Eggert , 11617@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) Eli Zaretskii writes: >> Attached is a patch to remove 'register' from the mainline >> Emacs source code. > > FWIW, I see no compelling reason for this change, even after I've read > the explanations. This keyword is a cue to the compiler, so it in > general conveys non-trivial information. If today's compilers mostly > ignore that, it doesn't mean this will always be the state of affairs. > However, by removing this, we lose those cues forever. I wonder how many of those register variables were actually added after profiling to see if they make any difference. My guess is none, i.e. those keywords are bogus. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 03 11:11:16 2012 Received: (at 11617) by debbugs.gnu.org; 3 Jun 2012 15:11:17 +0000 Received: from localhost ([127.0.0.1]:55912 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbCSa-00032V-JC for submit@debbugs.gnu.org; Sun, 03 Jun 2012 11:11:16 -0400 Received: from mtaout22.012.net.il ([80.179.55.172]:46650) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbCSX-00032I-Oi for 11617@debbugs.gnu.org; Sun, 03 Jun 2012 11:11:14 -0400 Received: from conversion-daemon.a-mtaout22.012.net.il by a-mtaout22.012.net.il (HyperSendmail v2007.08) id <0M5100600RD7D400@a-mtaout22.012.net.il> for 11617@debbugs.gnu.org; Sun, 03 Jun 2012 18:09:01 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.210.75]) by a-mtaout22.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M510057LRF0WJ80@a-mtaout22.012.net.il>; Sun, 03 Jun 2012 18:09:00 +0300 (IDT) Date: Sun, 03 Jun 2012 18:09:07 +0300 From: Eli Zaretskii Subject: Re: bug#11617: Don't use 'register'; these days it's not needed. In-reply-to: <87ipf8tpph.fsf@gnu.org> X-012-Sender: halo1@inter.net.il To: Chong Yidong Message-id: <83r4twbffw.fsf@gnu.org> References: <4FCAFED3.4080008@cs.ucla.edu> <831ulwcw2v.fsf@gnu.org> <87ipf8tpph.fsf@gnu.org> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 11617 Cc: eggert@cs.ucla.edu, 11617@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > From: Chong Yidong > Cc: Paul Eggert , 11617@debbugs.gnu.org > Date: Sun, 03 Jun 2012 22:50:02 +0800 > > Eli Zaretskii writes: > > >> Attached is a patch to remove 'register' from the mainline > >> Emacs source code. > > > > FWIW, I see no compelling reason for this change, even after I've read > > the explanations. This keyword is a cue to the compiler, so it in > > general conveys non-trivial information. If today's compilers mostly > > ignore that, it doesn't mean this will always be the state of affairs. > > However, by removing this, we lose those cues forever. > > I wonder how many of those register variables were actually added after > profiling to see if they make any difference. My guess is none, > i.e. those keywords are bogus. ??? I don't necessarily see the connection between profiling and the keyword uses. The way I see it, these are cues to the compiler, they tell which of the variables are accessed in the inner loops and more intensively, under the expected data flow. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 03 11:24:25 2012 Received: (at 11617) by debbugs.gnu.org; 3 Jun 2012 15:24:25 +0000 Received: from localhost ([127.0.0.1]:55923 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbCfJ-0003Ki-B4 for submit@debbugs.gnu.org; Sun, 03 Jun 2012 11:24:25 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:17001) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbCfI-0003KW-AY for 11617@debbugs.gnu.org; Sun, 03 Jun 2012 11:24:24 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAG6Zu09sr+UI/2dsb2JhbABEDrQDgQiCFQEBBAFWIwULCzQSFBgNJIgcBboJkEQDozOBWIIwVQ X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="187799399" Received: from 108-175-229-8.dsl.teksavvy.com (HELO pastel.home) ([108.175.229.8]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 03 Jun 2012 11:22:25 -0400 Received: by pastel.home (Postfix, from userid 20848) id EC3B259607; Sun, 3 Jun 2012 11:22:24 -0400 (EDT) From: Stefan Monnier To: Paul Eggert Subject: Re: bug#11617: Don't use 'register'; these days it's not needed. Message-ID: References: <4FCAFED3.4080008@cs.ucla.edu> Date: Sun, 03 Jun 2012 11:22:24 -0400 In-Reply-To: <4FCAFED3.4080008@cs.ucla.edu> (Paul Eggert's message of "Sat, 02 Jun 2012 23:06:11 -0700") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 11617 Cc: 11617@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) > Attached is a patch to remove 'register' from the mainline > Emacs source code. This is broken out of Bug#11604 > and I will also follow up there. Please don't bother. While `register' has been unnecessary for a while now, I don't see why it would hurt. Stefan From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 03 12:36:13 2012 Received: (at 11617) by debbugs.gnu.org; 3 Jun 2012 16:36:13 +0000 Received: from localhost ([127.0.0.1]:55957 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbDmm-0004th-H9 for submit@debbugs.gnu.org; Sun, 03 Jun 2012 12:36:13 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:50491) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbDmR-0004su-Pk for 11617@debbugs.gnu.org; Sun, 03 Jun 2012 12:36:11 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 0D210A60003; Sun, 3 Jun 2012 09:33:54 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mZson2+njn-I; Sun, 3 Jun 2012 09:33:53 -0700 (PDT) Received: from [192.168.1.10] (pool-71-189-109-235.lsanca.fios.verizon.net [71.189.109.235]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 8A282A60002; Sun, 3 Jun 2012 09:33:53 -0700 (PDT) Message-ID: <4FCB91E9.1060101@cs.ucla.edu> Date: Sun, 03 Jun 2012 09:33:45 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 MIME-Version: 1.0 To: Stefan Monnier Subject: Re: bug#11617: Don't use 'register'; these days it's not needed. References: <4FCAFED3.4080008@cs.ucla.edu> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 11617 Cc: 11617@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) On 06/03/2012 08:22 AM, Stefan Monnier wrote: > While `register' has been unnecessary for a while > now, I don't see why it would hurt. It hurts because it wastes developers' time, and has done so for many years. It'd be better to not continue to waste our time worrying about whether to use 'register', or even having to read the noise word 'register'. We should definitely not waste our time reading or maintaining comments like this: /* If we use `register' here, gcc-4.0.2 on amd64 using -DUSE_LISP_UNION_TYPE complains further down that we're getting the address of `force'. Go figure. */ This stuff is all bogus and our lives would be a tiny bit simpler if it vanished. I've put work into making it vanish, and I'd appreciate the chance to make that work useful for others. From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 04 09:08:48 2012 Received: (at 11617) by debbugs.gnu.org; 4 Jun 2012 13:08:48 +0000 Received: from localhost ([127.0.0.1]:56874 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbX1c-0003F5-HK for submit@debbugs.gnu.org; Mon, 04 Jun 2012 09:08:48 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:42766) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbX1b-0003Eu-0F for 11617@debbugs.gnu.org; Mon, 04 Jun 2012 09:08:47 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAG6Zu09sr+UI/2dsb2JhbABEDrQDgQiCFQEBBAFWIwULCzQSFBgNJIgcBboJkEQDozOBWIIwVQ X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="188569030" Received: from 108-175-229-8.dsl.teksavvy.com (HELO ceviche.home) ([108.175.229.8]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 04 Jun 2012 09:06:44 -0400 Received: by ceviche.home (Postfix, from userid 20848) id 0D21C660E0; Mon, 4 Jun 2012 09:06:42 -0400 (EDT) From: Stefan Monnier To: Paul Eggert Subject: Re: bug#11617: Don't use 'register'; these days it's not needed. Message-ID: References: <4FCAFED3.4080008@cs.ucla.edu> <4FCB91E9.1060101@cs.ucla.edu> Date: Mon, 04 Jun 2012 09:06:42 -0400 In-Reply-To: <4FCB91E9.1060101@cs.ucla.edu> (Paul Eggert's message of "Sun, 03 Jun 2012 09:33:45 -0700") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 11617 Cc: 11617@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) >> While `register' has been unnecessary for a while >> now, I don't see why it would hurt. > It hurts because it wastes developers' time, and has done so > for many years. No it doesn't and hasn't. > /* If we use `register' here, gcc-4.0.2 on amd64 using > -DUSE_LISP_UNION_TYPE complains further down that we're getting the > address of `force'. Go figure. */ Right, compilers have bugs, and we sometimes bump into them. If it's not with "register" it's with something else. > This stuff is all bogus and our lives would be a tiny bit simpler > if it vanished. In my world, the keyword "register" is just another kind of whitespace. So just like I don't want to install a patch that "cleans up the whitespace" I'd rather not install your patch. OTOH, just like for whitespace, it's perfectly fine for regular patches to remove "register" in the code they touch. Stefan From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 04 10:42:18 2012 Received: (at 11617) by debbugs.gnu.org; 4 Jun 2012 14:42:18 +0000 Received: from localhost ([127.0.0.1]:57200 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbYU5-0005Od-Co for submit@debbugs.gnu.org; Mon, 04 Jun 2012 10:42:18 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:59541) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SbYU3-0005OP-0v for 11617@debbugs.gnu.org; Mon, 04 Jun 2012 10:42:15 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id B9630A60006; Mon, 4 Jun 2012 07:40:11 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RBnVH7r+m6Cg; Mon, 4 Jun 2012 07:40:11 -0700 (PDT) Received: from [192.168.1.10] (pool-71-189-109-235.lsanca.fios.verizon.net [71.189.109.235]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 5BA70A60003; Mon, 4 Jun 2012 07:40:11 -0700 (PDT) Message-ID: <4FCCC8CB.2040604@cs.ucla.edu> Date: Mon, 04 Jun 2012 07:40:11 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 MIME-Version: 1.0 To: Stefan Monnier Subject: Re: bug#11617: Don't use 'register'; these days it's not needed. References: <4FCAFED3.4080008@cs.ucla.edu> <4FCB91E9.1060101@cs.ucla.edu> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 11617 Cc: 11617@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) On 06/04/2012 06:06 AM, Stefan Monnier wrote: > In my world, the keyword "register" is just another kind of whitespace. It's a funny kind of whitespace that triggers compiler bugs and makes code harder to read.... but I take your point and won't remove 'register' all at once. From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 04 12:24:22 2012 Received: (at control) by debbugs.gnu.org; 4 Jun 2012 16:24:22 +0000 Received: from localhost ([127.0.0.1]:57304 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sba4r-0007ee-QZ for submit@debbugs.gnu.org; Mon, 04 Jun 2012 12:24:22 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:48959) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sba4X-0007dt-Fm for control@debbugs.gnu.org; Mon, 04 Jun 2012 12:24:20 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id CCE8FA60006 for ; Mon, 4 Jun 2012 09:21:57 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BN4x-PGG8I88 for ; Mon, 4 Jun 2012 09:21:57 -0700 (PDT) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 7974AA60004 for ; Mon, 4 Jun 2012 09:21:57 -0700 (PDT) Message-ID: <4FCCE098.4000807@cs.ucla.edu> Date: Mon, 04 Jun 2012 09:21:44 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 MIME-Version: 1.0 To: control@debbugs.gnu.org Subject: don't mass-remove 'register' Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) tags 11617 wontfix thanks In the light of the previous messages, we won't install this patch. From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 04 15:33:15 2012 Received: (at 11617) by debbugs.gnu.org; 4 Jun 2012 19:33:15 +0000 Received: from localhost ([127.0.0.1]:57434 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sbd1f-0004II-IQ for submit@debbugs.gnu.org; Mon, 04 Jun 2012 15:33:15 -0400 Received: from chene.dit.umontreal.ca ([132.204.246.20]:34572) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sbd1L-0004HV-HU for 11617@debbugs.gnu.org; Mon, 04 Jun 2012 15:33:14 -0400 Received: from faina.iro.umontreal.ca (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id q54JUlE7018929; Mon, 4 Jun 2012 15:30:47 -0400 Received: by faina.iro.umontreal.ca (Postfix, from userid 20848) id 42C9FB4078; Mon, 4 Jun 2012 15:30:47 -0400 (EDT) From: Stefan Monnier To: Paul Eggert Subject: Re: bug#11617: Don't use 'register'; these days it's not needed. Message-ID: References: <4FCAFED3.4080008@cs.ucla.edu> <4FCB91E9.1060101@cs.ucla.edu> <4FCCC8CB.2040604@cs.ucla.edu> Date: Mon, 04 Jun 2012 15:30:46 -0400 In-Reply-To: <4FCCC8CB.2040604@cs.ucla.edu> (Paul Eggert's message of "Mon, 04 Jun 2012 07:40:11 -0700") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Level: X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0.2 X-NAI-Spam-Rules: 2 Rules triggered GEN_SPAM_FEATRE=0.2, RV4242=0 X-NAI-Spam-Version: 2.2.0.9309 : core <4242> : streams <764793> : uri <1125019> X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 11617 Cc: 11617@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.5 (---) >> In my world, the keyword "register" is just another kind of whitespace. > It's a funny kind of whitespace that triggers compiler bugs > and makes code harder to read.... I wish it were the only kind of whitespace with that property. Stefan From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 22 07:13:42 2012 Received: (at control) by debbugs.gnu.org; 22 Sep 2012 11:13:43 +0000 Received: from localhost ([127.0.0.1]:48147 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFNeY-0007Ue-Bt for submit@debbugs.gnu.org; Sat, 22 Sep 2012 07:13:42 -0400 Received: from mail-pb0-f44.google.com ([209.85.160.44]:35475) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TFNeV-0007UW-Us for control@debbugs.gnu.org; Sat, 22 Sep 2012 07:13:40 -0400 Received: by pbbjt11 with SMTP id jt11so7110457pbb.3 for ; Sat, 22 Sep 2012 04:11:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:subject:date:message-id:mime-version:content-type; bh=Wt/+CEWL+Af0dlWt9QqB9nXco3PraLS7tdtWw4IuM8k=; b=PBTIiBPAO039+psaSCo+mP/Mb/Y/ANqGYJap/fNXd1RVJKlUvLPajbKbMHK0c767A1 mzAzzmXOxjBlZJuGZgsaRsHXS5plvMToPoZ7QXPL39sj5x5yzL4hYggCPC8rlSUJ0L99 AdWs87JyvgTHgtspleJKMqOfWaasdemiRgBjE6qmydy7niXHkfliRgf9QJxnnlaPL/96 1bivNjd32gg0z2VbAbtMgj+pApPLdcwkbdG3fwnuNA1uFCCxvQvEjdIaC7g80OSQ48l7 ldL84DTvUt1K9KMiXERdjdHyeJH0DhQhVOZtSGwWEUSIClEEFWcwlFv0YoCtMwvK55vr MaSA== Received: by 10.66.86.133 with SMTP id p5mr19514764paz.35.1348312317179; Sat, 22 Sep 2012 04:11:57 -0700 (PDT) Received: from ulysses (cm162.gamma80.maxonline.com.sg. [202.156.80.162]) by mx.google.com with ESMTPS id bp7sm5573594pab.33.2012.09.22.04.11.54 (version=SSLv3 cipher=OTHER); Sat, 22 Sep 2012 04:11:56 -0700 (PDT) From: Chong Yidong To: control@debbugs.gnu.org Subject: close 11617 Date: Sat, 22 Sep 2012 19:11:52 +0800 Message-ID: <87pq5e2txj.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) close 11617 thanks From unknown Tue Sep 09 13:19:22 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sat, 20 Oct 2012 11:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator